Cisco AnyConnectクライアントの2要素認証。 FreeRadiusとGoogle認証システム





前の記事で、 Active DirectoryおよびMicrosoft Azure Multi-Factor Authentication Server(MFAS)に基づいてCisco AnyConnectを介して企業リソースに接続するための2要素ユーザー認証の設定について説明しました 。 今日は、FreeRadiusとGoogle Authenticatorの使用を検討することをお勧めします。



このオプションの利点のうち、このソリューションが無料であることのみが注目されます。

短所には次が含まれます:



コンポーネントのインストール



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
      
      



どこで:



結果は次のとおりです。

 radtest mfatest Pass_123731923 localhost 18120 testing123
      
      





すべてが正しくセットアップされていれば、次のようなものが得られます。





CISCO ASAを設定して下さい



ASAでは、ローカル認証を使用してAnyConnect VPNゲートウェイをセットアップすることをお勧めします。 接続が機能していることを確認してから、Radiusによる認証の設定に進みます。



RADIUSを構成します。

  1. 設定/リモートアクセスVPN / AAA /ローカルユーザー/ AAAサーバーグループに移動し、グループを作成します。





  2. サーバーをグループに追加します。



    サーバー名またはIPアドレスがFreeRadiusのアドレスである場合、サーバーシークレットキーはクライアント用に構成したキーです。



  3. RADIUSサーバーでの束のテスト:



    パスワードは、ユーザーのパスワード+ Google認証システムのコードです



テストが成功すると、以前に設定した「AnyConnect接続プロファイル」で、認証をローカルからFreeRadグループに変更します。





これで設定は完了です。 すべてが機能することを確認するには、テスト接続を開始します。





これは、私が話した非自明性が現れるところです。 FreeRadiusは段階的な認証を使用せず、Google認証のコードを個別に要求する方法(少なくとも私は見つけられませんでした)を知りません。 したがって、テストのように認証を成功させるために、パスワード行にパスワード+コードを入力します。 経験の浅いユーザーにとって、これはサービスの快適な使用に対する障害になる可能性があります。



このスキームは汎用的であり、Radiusプロトコルを使用した認証をサポートするすべてのサービスに実装できます。

残りの記事http://servilon.ru/stati/



All Articles