|
企業では、従業員が自宅や出張先から会社のITリソースにアクセスできるようにするため、VPNリモートアクセスシステムがトレンドになっています。しかし、従業員のパスワード管理意識の低さや、攻撃者がソーシャルエンジニアリングデータベースを悪用するケースは、攻撃者にとって都合の良い経路を提供してしまうことがよくあります。二要素認証システムの導入は、パスワード検証を強化する非常に効果的な方法です。現在、このような安全な認証システムは数多く存在しており、RSAのセキュア認証システムはよく知られています。 RSAは包括的なID認証ソリューションを提供しており、特にRSA SecurID二要素認証ソリューションは、この分野のデファクトスタンダードとなっています。このソリューションは、導入の容易さ、成熟度、信頼性の高さから、情報セキュリティ分野において幅広い信頼を得ています。RSAの製品ラインナップは幅広く、従来のハードウェアトークンデバイスに加え、スマートデバイスで利用できるソフトウェアトークンも提供しており、高い利便性を実現しています。 しかし、中小企業にとって、RSAのような商用ID認証ソリューションの利用は法外な費用がかかります。IT予算が不足している場合、二要素認証ソリューションの選択肢が限られることも少なくありません。 Google Authenticator プロジェクトは、複数のモバイルプラットフォームでワンタイムパスワードを生成するためのソフトウェア実装であり、Pluggable Authentication Module(PAM)の実装も含まれています。OAuth とは異なり、オープンスタンダード Initiative for Open Authentication(OATH)に基づいてワンタイムパスワードを生成します。RFC 4226 で定義されている HMAC ベースのワンタイムパスワード(HOTP)アルゴリズムと、RFC 6238 で定義されている時間ベースのワンタイムパスワード(TOTP)アルゴリズムをサポートしています。 Google Authenticator が成熟し、OpenVPN と 2 要素認証システムを組み合わせることで、完全にオープンソース ソフトウェアに基づいた安全なリモート アクセス システムを構築できるようになりました。 OpenVPNは、暗号化された仮想プライベートネットワーク(VPN)トンネルを作成するための無料のオープンソースソフトウェアです。OpenVPNを使用すると、自宅、オフィス、ホテルなど、異なるネットワークアクセス拠点間で、ローカルエリアネットワーク(LAN)に似たプライベートネットワークトンネルを簡単に構築できます。 PAMでは、Google Authenticatorを使用して二要素認証(2F)が実装されています。しかし、その管理と保守は煩雑で、直感的ではありません。ユーザーはシステムアカウントである必要があり、PINコードの変更や新しいトークンの生成にはシステムにログインしてコマンドを実行する必要があるため、初心者ユーザーにとっては難しく、潜在的なセキュリティリスクをもたらします。管理者は、会社の既存のアカウントシステムを使用できず、認証システム上に別のアカウントシステムを構築・管理する必要があります。 PrivacyIDEAは、モジュール型の認証システムおよび認証サーバーです。PrivacyIDEAを使用すると、ローカルログイン、VPN、リモートアクセス、SSH接続を強化できます。また、認証中にウェブサイトやポータルにアクセスするための優れた二要素認証ソリューションとして、既存のアプリケーションのセキュリティを向上できます。当初は、OTP(ワンタイムパスワード)認証デバイスをOTPサーバーとして機能させるために使用されていましたが、チャレンジレスポンス、SSHキー、X.509証明書などの他の「デバイス」も利用可能です。Linuxシステムで動作し、完全にオープンソースです。 PrivacyIDEAは、ユーザーフレンドリーな管理インターフェースを備えています。管理者管理からユーザー自身による管理まで、Web経由で簡単に操作できます。PrivacyIDEAは、ローカルファイル、データベース、LDAPからユーザー情報を読み取ることができます。これにより、企業のアカウントシステムとのシームレスな統合が可能になり、非常に便利です。
PrivacyIDEAのHOTPとTOTPはGoogle Authenticatorを使用しています。そのため、スマートフォンでGoogle Authenticatorアプリを使用するのが非常に便利です。 PrivacyIDEAは、OpenVPNとの統合に3つの方法を提供します。1つ目は、PAMのprivacyidea_pam.pyモジュールを使用する方法です。OpenVPNはPAM認証を使用し、PAMはprivacyidea_pam.pyモジュールを呼び出してPrivacyIDEAによる検証を行います。2つ目は、OpenVPNとFreeRADIUSを直接統合する方法です。OpenVPNはRADIUS認証を使用し、FreeRADIUSはPrivacyIDEAによる検証を行います。3つ目は、OpenVPN内でRADIUS PAMモジュールを使用する方法です。 I. スキームの原則 あらゆる要素を考慮した結果、2番目のアプローチ、つまりOpenVPN + FreeRADIUS + PrivacyIDEAを選択しました。このソリューションはトラブルシューティングがはるかに容易で、汎用性も優れています。 概略図: オープンVPN 関連する手順は次のとおりです。まず、リモートユーザーが認証情報を提供してVPN接続を開始します。次に、OpenVPNはユーザーの認証情報を提供し、FreeRADIUSで認証を行います。次に、FreeRADIUSはPerlスクリプトを介してPrivacyIDEAで情報を検証します。PrivacyIDEAは検証結果をFreeRADIUSに送信し、FreeRADIUSは認証結果をOpenVPNに送信します。最後に、OpenVPNが結果を確認し、認証が成功した場合は接続が確立されます。認証に失敗した場合は、接続が閉じられ、失敗メッセージが送信されます。 II. ソフトウェアのインストールと設定 Ubuntu-Server14.04 オペレーティング システムで具体的な操作を実行します。 1. PrivacyIDEAをインストールして管理する 1.1 システム時間 TOTPは時間ベースのワンタイムパスワードであり、時間の整合性はトークンコードと認証の成否に直接影響します。そのため、端末(携帯電話)とPrivacyideaシステムの時計が同期している必要があります。 ローカルタイムゾーンを設定し、NTP サービスを有効にします。 1.2 PrivacyIDEAソースを追加 リポジトリは、コマンドを使用して追加することも、/etc/apt/sources.list に直接書き込むことで追加できます。
あるいは、`vi` を使用して `/etc/apt/sources.list` を編集し、リポジトリを追加します。
リポジトリのアップグレード: apt-get update。 1.3 PrivacyIDEをインストールする
インストールが成功したら、依存パッケージをインストールし、いくつかの Web ベースの証明書を生成する必要があります。 プライバシーアイデアシステム管理者を作成する
デフォルトのシステム管理ページは https://<ローカルIPアドレス> です。システムを管理するには、Webインターフェースにログインしてください。 インストールが完了したら、管理インターフェイスにログインして PrivacyIDEA を管理できます。 インターフェースのスクリーンショットの一部: 続く…… 2. FreeRADIUSをインストールして設定する PrivacyIDEAはFreeRADIUSのPrivacyIDEAバージョンを提供します。これは基本的に、FreeRADIUSにいくつかの設定変更を加えた改良版です。あるいは、FreeRADIUSを直接インストールして設定することもできます。ここではFreeRADIUSのPrivacyIDEAバージョンをインストールします。 2.1 privacyidea-radiusをインストールする
FreeRADIUS は認証に Perl プログラムを使用するように設定されており、PrivacyIDEA は POST を使用して Perl プログラムと対話します。 デフォルトの Perl プログラムは /usr/share/privacyidea/freeradius/privacyidea_radius.pm です。 FreeRADIUS 設定で確認できます。 2.2 FreeRADIUSの設定 RADIUS クライアント ファイルを構成します。
デフォルトでは、ローカルマシン 127.0.0.1 が RADIUS クライアントになります。他のデバイスがある場合は、クライアントリストに追加してください。 インストール後、RADIUS サービスが正常に動作しているかどうかをテストできます。 3. OpenVPN をインストールして設定します。 3.1 証明書の生成を容易にするために、ソフトウェア easy-rsa をインストールします。
証明書の生成を容易にするために easy-rsa をインストールします。 3.2 証明書の生成 # varsファイルを変更する /usr/share/easy-rsa/2.0/ を CD します。 vim変数 # 証明書情報を変更します。
# 環境変数を初期化する
# ルート証明書、ルートキー、サーバー証明書、サーバーキー、Diffie-Hellman キー、および ta.key ファイルを生成します。
生成された証明書ファイルは、現在のディレクトリのキー ディレクトリに配置されます。 3.3 OpenVPNの設定 # サーバー設定ファイルを /etc/openvpn にコピーします。
# 設定ファイルを編集する 必要に応じて、プロトコル、ネットワークセグメント、証明書キー、プッシュルート、DNSなどを変更します。以下を参照してください。
OpenVPN を起動し、起動できるかどうかをテストします。問題があれば早期に解決します。 3.4 パケット転送とファイアウォールの設定 3.4.1 パケット転送を有効にする
3.4.2 ファイアウォールの設定
必ず iptables を保存し、起動時に自動的に開始されるように設定してください。 4. Radiusプラグインをインストールする Radiusplugin は、RADIUS 認証をサポートする OpenVPN プラグインです。 http://www.nongnu.org から radiusplugin ソース コード パッケージをダウンロードします。 4.1 gcc、c++、libgcryptをインストールする
4.2 Radiusプラグインのコンパイル パッケージを解凍し、ディレクトリに入り、コマンド `make` を使用してコンパイルします。 4.3 Radiusプラグインの設定 ディレクトリから radiusplugin.cnf ファイルと radiusplugin.so ファイルを /etc/openvpn にコピーします。 radiusplugin.cnf ファイルを変更します。
sharedsecret は、freeradius clients.conf 内の sharedsecret と一致している必要があります。 5. OpenVPN 構成ファイルを再度変更します。 OpenVPN 構成ファイルを変更して、クライアントのユーザー名とパスワード認証を有効にします。OpenVPN は RADIUS 認証を使用します。 5.1 設定ファイル server.conf を変更する
6. サービスを再起動してテストします。 6.1 サービスを再起動する
6.2 OpenVPNクライアントの設定 OpenVPNクライアントをインストールします。ルート証明書ファイル(ca.crtとta.key)をOpenVPNインストールディレクトリのconfigディレクトリにダウンロードします。次に、クライアントファイル(xx.ovpn)を設定します。 情報は次のとおりです。
注:クライアントがWindowsシステムにインストールされている場合は、管理者権限で起動する必要があります。管理者権限がない場合、システムはVPNプッシュルートを追加しません。複数のVPNサービスがある場合は、ルート証明書ca.crt、ta.keyファイル、およびクライアントxx.ovpnファイルをすべてconfigディレクトリ配下の同じディレクトリに配置できます。 6.3 テスト PrivacyIDEA の使用に関する詳細な手順については、公式ドキュメントまたは私の編集物「PrivacyIDEA 管理」を参照してください。 以下の3つのステップでテストすることをお勧めします。1. PrivacyIDEAサービスが正常に動作し、トークン認証が成功しているかどうかをテストします。2. RADIUSサービスが正常に動作し、RADIUSとPrivacyIDEAの認証が成功しているかどうかをテストします。3. OpenVPN認証が成功しているかどうかをテストします。プロンプトに基づいて問題を特定し、解決できるはずです。 まず、スマートフォンにGoogle認証をインストールし、PrivacyIDEAでQRコードを生成します。次に、Google認証を開き、QRコードをスキャンしてアカウントを追加します。この時点で、30秒ごとに変化するトークンコードが表示されます。次に、PrivacyIDEAの「トークン」インターフェースで、トークンのPINコードまたはトークンコードが正しいことを確認します。以下をご覧ください。 FreeRADIUSとPrivacyIDEAが正しく機能しているかどうかを確認するには、`radtest`コマンドを使用してください。また、トラブルシューティングを容易にするために、FreeRADIUSのデバッグモードを使用してサービスを起動することもできます。 次に、OpenVPNクライアントを使用して認証の成功をテストします。問題が発生した場合は、OpenVPNのログを確認してください。 注意: CentOSではバージョンの問題によりRadiuspluginにエラーが発生する場合があります。別のバージョンでコンパイルしてみてください。 バージョンの違いにより、FreeRADIUSを直接インストールする場合は、まずFreeRADIUSの認証タイプをPerlプログラムに変更し、privacyidea_radius.pmファイルをダウンロードする必要があります。関連するFreeRADIUS設定を変更することをお勧めします。バージョン2.xと3.xは異なることに注意してください。 著者紹介 シャオ・レイは2014年に西安郵電大学を卒業しました。現在は360でネットワークエンジニアとして勤務し、オフィスネットワーク、無線ネットワーク、VPNを担当しています。ネットワーク技術とLinux技術に興味を持っています。 |