web-dev-qa-db-ja.com

2要素認証を使用してシステムをさらにセキュリティで保護するにはどうすればよいですか?

タイトルはほとんどそれを言っています。私は、2要素認証、ワンタイムパスワード、ハードトークン、およびその他の改善されたセキュリティ機能についてもっと聞いています。パスワードだけを使用するとセキュリティが低下するため、Ubuntuのセキュリティをどのように改善できるかを知りたいと思います。 Unityで14.04 LTSを使用しています。

16
user323419

Google Authenticator と呼ばれる、Googleが作成したオープンソースのPluggable Authentication Module(PAM)を使用できます。このモジュールは、ソースからビルドできるように、GitHubからだけでなく標準リポジトリでも利用できます。同じ名前のAndroid、iOS、またはBlackberryアプリと組み合わせると、パスワードとともに認証用の時間ベースの時間依存コードが作成されます。 PAMモジュールであるため、ほとんどどこにでもドロップできます。始めましょう!

インストール中

開始するには、次を使用してPAMをインストールできます。

Sudo apt-get install libpam-google-authenticator

シンプル!

設定する:

インストール後、Android、iOS、またはBlackberry(モバイルプラットフォームに応じて)に対応するモバイルアプリケーションもインストールする必要があります。それぞれが他なしでは役に立たない。モバイルデバイスに必要なアプリケーションを入手したら、ターミナルで次のコマンドを実行します。

google-authenticator

これは、いくつかの質問をすることから始まります。最初の質問は、「はい」と答える必要がある唯一の質問であり、コードを時間ベースにするかどうかを尋ねます。その後、各質問を読んで、あなたにとって最も意味のある選択をしてください。

初期設定が完了すると、端末に非常に大きな大きなQRコードとその他の情報が表示されます。 「Your New Secret Key Is:」という行は、デバイスのペアリングにQRコードを使用したくない場合に非常に必要な行です。セットアップが完了するまでこのウィンドウを閉じないでください。モバイルデバイスを紛失した場合にログインに使用するものであるため、これが提供する「スクラッチコード」も重要です。それらを書き留めて、安全な場所に保管してください。

次に、モバイルデバイスでGoogle認証システムアプリケーションを開き、[アカウントのセットアップ]を選択します。生成されたQRコードをスキャンするか、「提供されたキーを使用する」を選択できます。 QRコードをスキャンすると、すべてが「your_user @ your_Host」という名前のアカウントで自動的に保存されます。ただし、「提供されたキーを使用」を選択した場合、トークンの名前、キー、およびタイプを手動で入力する必要があります。名前は任意に設定できます。キーは、以前に生成された秘密キーになります。タイプはデフォルトの時間ベースになります。設定すると、Google Authenticatorアプリのメインペインにアカウントが表示され、その横に円形のタイマーが表示されます。そのタイマーは30秒ごとに消耗し、新しいコードが生成されます。

それを可能にします!

ここに魔法があります。これはPAMモジュールであるため、さまざまな場所で使用できます。 Sudoリクエスト、SSHログイン、およびlightdmログインに認証を追加する手順を説明します。ただし、このチュートリアルを読んだ後は、同じテクニックに基づいて他の場所で有効にすることができます。

SSH

余分なステップがあるため、最初にこれを実行しています。最初に行う必要があるのは、SSH構成ファイルを編集することです。

gksudo gedit /etc/ssh/sshd_config

次の行を検索します。

ChallengeResponseAuthentication no

「いいえ」を「はい」に変更します。

次に、sshのPAMモジュールを編集する必要があります。

gksudo gedit /etc/pam.d/sshd

このファイルの最後に、次の行を追加します。

auth required pam_google_authenticator.so nullok

「nullok」引数は、ユーザーが2要素認証を設定していない場合、検証コードを要求するnotをシステムに指示します。編集後、先に進んでsshサービスを再起動します。

Sudo service ssh restart

Sudoリクエスト

SudoのPAMファイルを編集します。

gksudo gedit /etc/pam.d/Sudo

最後に次の行を追加します。

auth required pam_google_authenticator.so nullok

これで、すべてのSudoリクエストで、確認コードとパスワードが要求されます。

LightDM(GUIログイン)

LightDMのPAMファイルを編集します。

gksudo gedit /etc/pam.d/lightdm

最後に次の行を追加します。

auth required pam_google_authenticator.so nullok

それでおしまい! GUIからログインするたびに、パスワードの後に​​確認コードが要求されます。

システム全体およびTTYログイン

上記の方法を有効にしても、TTYに切り替えると、確認コードの入力は求められません。 CTRL+ALT+F#。これを修正するには、common-auth PAMファイルを編集します。

gksudo gedit /etc/pam.d/common-auth

最後に次の行を追加します。

auth required pam_google_authenticator.so nullok

注:このcommon-authファイルは他のすべてのauthタイプファイルに含まれているため、他のファイルからauth required行を削除する必要があります。それ以外の場合、確認コードを2回要求され、その後はログインできません。

要約

ご覧のとおり、この認証を追加するのは非常に簡単でした。LightDM以外のディスプレイマネージャーを使用している場合は、それに応じて上記のlightdm行を簡単に変更できます。モバイルデバイスとシステムはこの秘密キーを既に共有しているため、常に同期している必要があります。この設定では、Googleサーバーやその他のインターネットリソースとの相互作用はありません。両方のデバイスが完全にオフラインであっても、アプリケーションに表示される検証コードは正しいものになります。有効にしたいずれかの方法でログインする必要がある場合は、必ずモバイルアプリケーションを開き、現在の確認コードを取得してください。

楽しんで!!

30
user323419

FreeOTP は、Google PlayのGoogle Authenticator Androidアプリ(現在のコードはオープンソースではありません)のオープンソースの代替です。 FreeOTPは F-Droid (および Google Play )で利用できます。

1
Mihai Capotă