マルチコア プロセッサと使いやすいパスワード クラッキング ツールの時代では、パスワードだけでコンピュータ (およびコンピュータに保持されているデータ) へのアクセスをロックすることは、もはや難しいことではありません。
コンピュータへの不正アクセスが本当に心配な場合は、認証レイヤーを追加する必要があります。
このような 2 段階認証を実装する最も簡単なメカニズムの 1 つは、既存のパスワード チャレンジを補う時間ベースの認証トークンを発行する Google Authenticator サービスです。
- あなたの PC で入手できる最高の Linux ディストリビューションへのカウントダウン
このサービスを Ubuntu ログインに統合すると、ログインを許可する前に、ユーザー パスワードに加えて、期限切れが近いトークンの 1 つを要求されます。
Google Authenticator は、Ubuntu マシン上のすべてのユーザーに対して設定されると、Android デバイス上でこれらの OTP を生成します。
多要素認証を実装するには、Google Authenticator PAM (Pluggable Authentication Module) が必要です。PAM は、さまざまな形式の認証を Linux コンピューターに組み込むために使用されるメカニズムです。
Google Authenticator PAM モジュールは、公式 Ubuntu ソフトウェア リポジトリで入手できます。Ubuntu にパッケージをインストールするには、ターミナルに移動して次のように入力します。
$ sudo apt-get install libpam-google-authenticator
パッケージがインストールされたら、2 要素認証で保護するユーザーとしてログインしていることを確認してください。次に、ターミナル ウィンドウで次のように入力します。
$ google-authenticator
これにより、多くの質問をしてユーザーの秘密キーを作成するプロセスが開始されます。
すべてに「はい」と答えるのは安全ですが、これらの選択肢はセキュリティと使いやすさのバランスをとるのに役立つため、最終的な選択をする前にそれぞれを理解することをお勧めします。
最初の質問はかなり安全な質問であり、「はい」と答えてコマンドによる Google Authenticator ファイルの更新を許可する必要があります。
次に、ログインの間に 30 秒間の待機を強制するトークンの使用を制限するかどうかを尋ねられます。
最初は不便に思えるかもしれませんが、最大限の保護を得るためにこの制限に同意する必要があります。次の質問は、トークンを使用できる時間枠をデフォルトの 1:30 分から 4:00 分に増やす許可を求めます。
問題を避けるためにこの質問に「はい」と答えることもできますが、セキュリティを最大限に高めるには「いいえ」と入力してください。後で問題に気付いた場合は、コマンドを再実行し、提案に従って有効期限を増やします。最後の 4 番目の質問では、認証コードの入力試行回数を制限するように求められます。
ブルートフォースログイン攻撃の防止に役立つため、このオプションを必ず有効にしてください。
コーデックスの本
それが完了すると、Google Authenticator は秘密キーといくつかの緊急スクラッチ コードを提示します。
これらの緊急スクラッチ コードを安全な場所に必ず書き留める必要があります。OTP を生成する Android スマートフォンを置き忘れた場合にログインするのに役立ちます。各コードは 1 回のみ使用できます。
google -authenticatorコマンドは、Android スマートフォンでスキャンできる QR コードも生成します。まだアプリをインストールしていないので、とりあえず16桁のコードをメモしておきます。
次に、コンピュータを使用するユーザー アカウントごとにこのプロセスを繰り返します。コンピュータを共有している全員に、アカウントにログインし、google-authenticator を実行して、それぞれの緊急スクラッチ コードと 16 桁のコードをメモするように依頼します。
すべてのユーザーの認証コードを生成したら、Google Authenticator で動作するようにログイン プロセスを構成します。1 つのファイルを編集して、すべてのログイン試行に 2 段階認証を追加するだけです。もう一度、ターミナルを起動して次のように入力します。
$ sudo nano /etc/pam.d/common-auth
ファイルの最後までスクロールし、次の行を追加します。
auth required pam_google_authenticator.so nullok
ローカル ログインの代わりに、リモート SSH ログインに対してのみ 2 要素認証を有効にすることを好む人もいます。
このためには、リモート ユーザーとしてログインするユーザーのコードが生成されていることを確認することから始めます。次に、sudo nano /etc/pam.d/sshdを使用して SSH の PAM 構成ファイルを編集し、SSH ログインに Google Authenticator を使用していることを確認します。
最下部までスクロールし、次の行をファイルに追加します。
認証が必要です pam_google_authenticator.so
ヌロック
メインのチュートリアルと同様に、最後の nullokワードは、この認証方法がオプションであることを PAM に伝えます。
これにより、Google 認証キーを持たないユーザーでも SSH キーを使用してログインできるようになります。これは、セットアップ プロセスで問題が発生した場合にロックアウトされるのを防ぐための単なるフェイルセーフであることに注意してください。
ただし、テストが成功したら、すべての SSH ユーザーのキーを生成し、この行の末尾からnullokを削除して、OTP 経由のログインを必須にします。
SSH の PAM ファイルを編集したら、この種の認証をサポートするように SSH を構成します。
sudo nano /etc/ssh/sshd_configを使用して編集する SSH 構成ファイルを開きます。
「ChallengeResponseAuthentication」という行を探し、その値を「yes」に設定します。行が存在しない場合は、必ず手動で追加してください。ファイルを保存して閉じ、SSH を再起動して、sudo service ssh restartを使用して設定ファイルをリロードします。SSH 経由でログインしようとするたびに、パスワードと Google Authenticator コードの両方の入力を求められるようになります。
次に、ファイルを保存して終了します。ここでは、すべてのログイン試行に Google Authenticator PAM モジュールを使用するように Ubuntu に依頼しました。
最後のnullokビットは、2 要素認証を設定するためのgoogle-authenticatorコマンドを実行していない場合でも、ユーザーにログインを許可するよう Ubuntu に要求します。そこで、amber と megan という 2 人のユーザーがいて、amber に対してのみ Google 認証を設定していると仮定します。
nullok のおかげで、アンバーは OTP に入力する必要がありますが、ミーガンはパスワードだけでログインできるようになります。
ただし、これは Google Authenticator をテストするときに便利な柔軟性ですが、すべてがスムーズに機能し、2 要素認証でのログインに問題がなくなったら、すべてのユーザーに Google Authenticator のみを介してログインを強制することをお勧めします。このコマンドの nullok ビットを削除します。
ゴーゴーガジェット
これで、Ubuntu インストールはすべて 2 要素認証用に設定されました。OTP を受信するには、Google Play ストアから Android 携帯電話に Google Authenticator アプリをインストールしておく必要があります。
アプリをインストールした後、Ubuntu インストールでgoogle-authenticatorコマンドを実行したすべてのユーザーのアカウントを追加する必要があります。
これを行うには、アプリを開き、メイン ウィンドウからメニュー ボタン (右上隅にある 3 つの縦のドット) をタップします。
ここで「アカウントのセットアップ」をタップし、提供される Enter キーのオプションを選択します。次に、google-authenticator ツールを実行した後にメモした 16 桁の秘密キーを入力します。
アカウントに名前を付けて (このアカウントのユーザー名を使用することをお勧めします)、[追加] ボタンをタップします。
これで、コンピュータに 2 要素認証が設定されました。Android アプリは 30 秒ごとに新しい 6 桁のコードを生成します。アカウントにログインするか、sudoコマンドを入力すると、Ubuntu はパスワードの入力を求め、認証コードの入力を求められます。
この時点で、Android アプリに現在表示されている数字を入力します。正常にログインしたら、必ず etc/pam.d/common-auth ファイルを編集し、Google 認証システムによるログインを強制する nullokオプションを削除してください。
また、Ubuntu インストール上のすべてのユーザーの Android アプリでアカウントを作成することも忘れないでください。
追加のセキュリティ プロンプトを実行するのは、特に構成ファイルをすばやく編集するためにsudoに切り替える必要がある場合、最初は面倒に思えるかもしれません。ただし、公共の場所でコンピュータを使用している場合は、2 要素認証メカニズムの利点がすぐにわかるでしょう。
- この記事は気に入りましたか? Linux の知識を広げ、コードからさらに多くのことを引き出し、Linux Format 内の最新のオープンソース開発を発見してください。今すぐサンプラーを読んで、その中の特典を活用してください。