このガイドでは、多要素認証とは何かとその重要性を学び、最後にGoogle認証システムアプリを使用してLinuxでSSHの多要素認証を設定する方法を学びます。
はじめに
セキュリティは深刻なビジネスです。侵害の数は日々大幅に増加しており、2025年までにサイバー犯罪によって企業は10.5兆米ドルになると推定されています。
テクノロジースタックのすべてのレイヤーに強力なセキュリティレイヤーを実装することが重要です。この記事では、多要素認証を使用したsshのそのようなセキュリティ実装の1つを紹介します。
SSHはSecureShellの略で、ユーザーがリモートマシン(サーバー)に接続してリソースにアクセスできるようにするネットワークプロトコルです。
sshプロトコルは、2種類のセキュリティ、つまりパスワードベースの認証を実装します。 、およびキーベースの認証 。
キーベース(パブリック->プライベート)認証は、パスワードベースの認証と比較してより安全であると見なされ、ほとんどのSSH強化手順では、パスワードベースの認証を無効にし、キーベースの認証のみを有効にすることを推奨しています。
選択した認証メカニズムに関係なく、多要素認証の設定を実装することでsshをより安全にすることができます。
多要素認証とは何ですか?
多要素認証(まもなく MFA )は安全な認証プロセスであり、独立したカテゴリの資格情報から選択された複数の認証技術が必要です。
多要素認証は、「2要素認証(2FA)」とも呼ばれます。 。
あなたが誰であるかを検証することに関係する2つの要因があります。最初の要素は、ユーザーアカウントの作成時に作成されるパスワードです。
2番目の要素は、OTPを生成するアプリケーション、またはテキストメッセージを送信したり、デバイスに電話をかけたりするプロトコルです。
アプリケーションの実装方法に応じて、認証方法は異なります。 MFAに使用する一般的なツールは次のとおりです。
- トークンを生成するモバイルデバイスにインストールされたアプリケーション。
- Yubikeyのような外部デバイス。
- 指紋。
- 顔認識。
- テキストメッセージまたはコールインベースのOTPパスワード。
sshの多要素認証を有効にするために、「Google認証システム」を使用します OATH-TOTPプロトコルを使用するアプリ。 Twilio Authyのような他の代替ツールがあります またはFreeOTP インストールして試すことができます。
まず、サーバーとモバイルデバイスの両方にGoogle認証システムアプリをインストールし、MFAを有効にして検証します。
Google認証システムをインストールする
まず、プレイストアを介してAndroidまたはIOSデバイスにGoogle認証システムアプリをインストールします /iTunes 。
次に、LinuxシステムにGoogle認証システムアプリをインストールします。
ディストリビューションに応じて、次のインストールコマンドを実行します。
Ubuntu およびその微分分布は、次のコマンドを実行します。
$ sudo apt install libpam-google-authenticator
RHEL ベースのディストリビューションは次のコマンドを実行します。
$ sudo dnf install google-authenticator -y
アーチの場合 ベースの配布では、次のコマンドを実行します。
$ sudo pacman -S libpam-google-authenticator
ユーザーの初期トークンを生成する
MFAを設定する最初のステップとして、端末から次のコマンドを実行する必要があります。これにより、TOTPキーが生成されて初期設定が処理されます。このキーは、コマンドを実行しているユーザー用であり、システム内のすべてのユーザーに適用できるわけではありません。
$ google-authenticator
( y )でプロンプトが表示される一連の手順があります / n )オプション。
ステップ1 -時間ベースの認証トークンを選択するように求められます。時間ベースの認証トークンは、30秒ごとに新しいコードを生成します。 「y」を押します 続行します。
ステップ2 -シークレットトークンはQRコードとともに生成されます。 Google認証システムモバイルアプリを開き、QRコードをスキャンするか、秘密鍵を手動で入力してデバイスを登録します。完了すると、アプリは30秒ごとにトークンの生成を開始します。
ステップ3 -このステップでは、 .google_authenticator
を更新するように求められます ホームディレクトリの下のファイル。すべての秘密鍵、検証コード、緊急スクラッチコードがこのファイルに保存されます。 「y」を押します 続行します。
ステップ4 - "y"を選択する このステップでは、認証にトークンを使用するとすぐにトークンの有効期限が切れます。この場合、一部のハッカーがトークンを取得しても、有効期限が切れます。
ステップ5 -このステップでは、許可されるトークンの数と時間枠を決定します。 "n"を選択した場合 、90秒で3つのトークンが可能になります 窓。 「y」を押すと 、240秒で17トークンを許可します 時間枠。
ステップ6 -この手順では、レート制限を有効にするように求められます。レート制限により、攻撃者は30秒ごとに3回のログイン試行のみを試みることができます。 。トークンが間違っている場合は、 Nを待つ必要があります もう一度やり直してください。
最初のステップが完了しました。ファイルを開く~/.google_authenticator
そして、これらすべての手順で作成したすべての設定とシークレットコードを見つけることができます。
$ cat ~/.google_authenticator
google-authenticatorコマンドに引数を渡すこともできます。このコマンドは、この一連の手順を実行せずに、キーやその他の設定を作成します。
$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3
これらの引数が何をするかについては、Google認証システムのヘルプセクションを参照してください。
$ google-authenticator –-help
多要素認証用にSSHを構成する
MFAの使用を開始できるように、openSSHの構成を変更する必要があります。
注:
- ベストプラクティスとして、変更を加える前に必ず構成ファイルをバックアップしてください。何かが台無しになっている場合は、変更を元に戻すことができます。
- SSH構成ファイルに変更を加える場合は、セッションを個別に開いて、誤ってロックアウトされないようにしてください。
次のコマンドを実行して、SSH構成ファイルをバックアップします。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
まず、ChallengeResponseAuthentication
を設定して、SSHがMFAを使用できるようにします 「はい」のオプション 。
次に、/etc/pam.d/sshd
を編集します ファイル:
$ sudo vi /etc/pam.d/sshd
そして、ファイルの最後に次の行を追加します。
auth required pam_google_authenticator.so nullok auth required pam_permit.so
すべてのユーザーにMFAを必須にする場合は、 "nullok"という単語を削除します。 。
sshサービスを再起動して、変更を有効にします。
$ sudo systemctl restart sshd
2要素認証のテスト
行った変更が有効かどうかをテストするときが来ました。
SSH経由でサーバーに接続すると、次の画像に示すように、最初の要素としてパスワードの入力を求められ、次に2番目の要素の認証として確認コードが要求されます。
$ ssh [email protected]/IPaddress
SSHパスワードと確認コードを入力すると、ログインできるようになります。
すべてのユーザーに必須としてMFAを有効にしていないことを覚えていますか?それをテストして、トークンを生成および設定していない別のユーザーと接続できるかどうかを確認しましょう。
テストユーザーがいます 確認コードの入力を求めなくても正常に接続できます。
見る?確認コードがなくてもログインできます。
キーベースの認証のための多要素認証
キーベースの認証を設定している場合、パスワードまたは確認コードの昇格はありません。なぜですか?
デフォルトでは、sshは最初に公開鍵認証を使用し、鍵が見つかった場合はそれを使用して認証するためです。キーが見つからない場合は、パスワードベースの認証が使用されます。
冗長を使用できます これを確認するモード。
$ ssh -v [email protected]/IPaddress ## With verbose
一番下の/etc/ssh/sshd_config
に次の行を追加します ファイル:
AuthenticationMethods publickey,password publickey,keyboard-interactive
次に、/etc/pam.d/sshd
を開きます 次の行をコメントアウトします。
コメントアウトしていない場合"@include common-auth"
、次に、3つ以上の要素が認証できるようになります。最初にキーを使用して認証し、次にパスワードとトークンを使用して認証します。必要なのは認証用のキーとトークンだけなので、無効にします。
sshd
を再起動します サービスを提供し、変更が正常に機能するかどうかをテストします。
$ sudo systemctl restart sshd
接続しようとすると、認証の最初の要素として公開鍵が使用され、2番目の要素として検証コードが使用されます。
リカバリ手順
モバイルデバイスを紛失または変更する可能性があるシナリオがあります。その場合、トークンの生成を開始するには、google-authenticatorアプリケーションを再インストールし、秘密鍵を登録する必要があります。
システムからロックアウトされている場合は、システム管理者に連絡して、登録して使用するための新しい秘密鍵を提供する必要があります。ただし、ログインして自分でキーを生成できる別のアプローチがあります。
最初のステップで生成されたコードを覚えていますか? 緊急スクラッチコードを使用できます ログインするためのトークンとして。各スクラッチコードは1回だけ使用できます。 安全な場所に保存 そのため、最も必要なときに使用できます。
コードは~/.google_authenticator
に保存されます ファイル。
$ cat ~/.google_authenticator
次のコマンドを実行して、独自のキーを再生成できるようになりました。
$ google-authenticator
結論
この記事では、Google認証システムをインストールし、さまざまな構成でSSHの多要素認証を有効にする方法を説明しました。
管理者は、bashスクリプトを作成することもできます。 秘密鍵を生成してユーザーと共有するプロセスを自動化するため。また、MFAを設定する前にsshを強化して、システムの安全性を高める必要があります。それらについては別の記事で取り上げる予定です。しばらくお待ちください!
関連記事:
- LinuxでSSHキーベースの認証を構成する方法
- ユーザーがパスワードベースまたはキーベースのSSH認証を使用しているかどうかを確認する
- Linuxで特定のユーザーまたはグループへのSSHアクセスを許可または拒否する方法
- 特定のユーザーまたはグループのSSHパスワード認証を無効にする