前の記事で、 Active DirectoryおよびMicrosoft Azure Multi-Factor Authentication Server(MFAS)に基づいてCisco AnyConnectを介して企業リソースに接続するための2要素ユーザー認証の設定について説明しました 。 今日は、FreeRadiusとGoogle Authenticatorの使用を検討することをお勧めします。
このオプションの利点のうち、このソリューションが無料であることのみが注目されます。
短所には次が含まれます:
- ADとの統合。 もちろん、LDAPを介してFreeRadiusとADを統合することもできますが、このソリューションのアーキテクチャは、ユーザープロファイルをFreeRadiusサーバーにローカルに保存することを可能にします。
- 認証の1つのタイプのみが、時間ベースのワンタイムパスワード(TOTP)です。
- 2番目の要素を使用する必要性の非自明性(記事の説明)。
コンポーネントのインストール
FreeRaduisをインストールするには、仮想マシンでDebian Jessie 8.0を使用しました。
TOTPは認証に使用されるため、サーバーの時刻は正確でなければなりません。 時刻を同期する最良の方法は、NTPをインストールすることです。
sudo apt-get update sudo apt-get install ntp
次に、FreeRadiusと必要なモジュールをインストールします。
sudo apt-get install build-essential libpam0g-dev freeradius libqrencode3 git
Google認証システムをダウンロードしてインストールします。
cd ~ git clone https://code.google.com/p/google-authenticator/ cd google-authenticator/libpam/ make make install
認証が不要になったユーザー用のグループも必要です。
addgroup radius-off
FreeRadiusを構成する
FreeRadiusはすべてのユーザーディレクトリの.google_authenticatorトークンにアクセスできる必要があるため、 ルート権限が必要です。 権限を付与するには、ファイル/etc/freeradius/radusd.confを編集します。
次の行を見つけます。
user = freerad group = freerad
そして次のものに置き換えます:
user = root group = root
ここで、将来的には、変更を保存することを忘れないでください。
次に、 / etc / freeradius / usersを編集します 。 以前に作成したradius-offグループをユーザーグループのアクセス拒否セクションに追加する必要があります。
行の後:
# Deny access for a group of users. # # Note that there is NO 'Fall-Through' attribute, so the user will not # be given any additional resources. #
追加:
DEFAULT Group == "radius-disabled", Auth-Type := Reject Reply-Message = "Your account has been disabled." DEFAULT Auth-Type := PAM
/ etc / freeradius / sites-enabled / defaultを編集します 。
私たちは見つけます:
# Pluggable Authentication Modules. # pam
そして、 pamで行のコメントを外します
/etc/pam.d/radiusdを編集します。 FreeRadiusに、ローカルUNIXパスワード+ Google認証システムコードの原則に基づいてユーザーを認証するよう指示します。
ここでは、@で始まるすべての行をコメント化する必要があります。
#@include common-auth #@include common-account #@include common-password #@include common-session
追加します:
auth requisite pam_google_authenticator.so forward_pass auth required pam_unix.so use_first_pass
次に、FreeRadiusがCISCO ASAからの要求を処理できるように、Radiusクライアントを追加する必要があります。 ファイル/etc/freeradius/clients.confに以下を追加します。
Client 192.168.110.6 { secret = Password shortname = ASA }
ユーザー設定
ユーザーを作成します。
adduser mfatest
google-authenticatorを作成します:
cd /home/mfatest/ su mfatest google-authenticator
応答として、QRコードを取得します。
その後、FreeRadiusサービスを再起動する必要があります。
sudo service freeradius restart
Google Authenticatorアプリ( iOSおよびAndroidのリンク)をモバイルデバイスにインストールする必要があります。
Google Authenticatorアプリケーションを使用してQRコードをスキャンします。 その結果、mfatestアカウントはモバイルデバイスに関連付けられます。
認証のテスト:
radtest <username> <unix_password><google_auth> localhost 18120 testing123
どこで:
- <unix_password> <google_auth>は、UNIXパスワード+アプリケーションの1行のコードです。 この場合、パスワードはPass_123、コードは731923です。
- localhost 18120 testing123-これらは標準ローカル半径クライアントのパラメーターです。
結果は次のとおりです。
radtest mfatest Pass_123731923 localhost 18120 testing123
すべてが正しくセットアップされていれば、次のようなものが得られます。
CISCO ASAを設定して下さい
ASAでは、ローカル認証を使用してAnyConnect VPNゲートウェイをセットアップすることをお勧めします。 接続が機能していることを確認してから、Radiusによる認証の設定に進みます。
RADIUSを構成します。
- 設定/リモートアクセスVPN / AAA /ローカルユーザー/ AAAサーバーグループに移動し、グループを作成します。
- サーバーをグループに追加します。
サーバー名またはIPアドレスがFreeRadiusのアドレスである場合、サーバーシークレットキーはクライアント用に構成したキーです。
- RADIUSサーバーでの束のテスト:
パスワードは、ユーザーのパスワード+ Google認証システムのコードです
テストが成功すると、以前に設定した「AnyConnect接続プロファイル」で、認証をローカルからFreeRadグループに変更します。
これで設定は完了です。 すべてが機能することを確認するには、テスト接続を開始します。
これは、私が話した非自明性が現れるところです。 FreeRadiusは段階的な認証を使用せず、Google認証のコードを個別に要求する方法(少なくとも私は見つけられませんでした)を知りません。 したがって、テストのように認証を成功させるために、パスワード行にパスワード+コードを入力します。 経験の浅いユーザーにとって、これはサービスの快適な使用に対する障害になる可能性があります。
このスキームは汎用的であり、Radiusプロトコルを使用した認証をサポートするすべてのサービスに実装できます。
残りの記事http://servilon.ru/stati/