FedoraでSSH用の2要素認証を設定する方法


私たちのデータが危険にさらされている場所では毎日セキュリティ違反が数多く報告されているようです。 SSHはLinuxシステムへのリモート接続を確立するための安全な方法ですが、パスワードを無効にしたりSSH接続のみを許可したとしても、未知のユーザーがSSHキーを盗んだ場合でもLinuxマシンにアクセスできます。公開鍵と秘密鍵

この記事では、 Fedora LinuxディストリビューションでSSHに2要素認証( 2FA )を設定して Google Authenticator にアクセスする方法について説明します。モバイルデバイスの認証アプリケーションによってランダムに生成された TOTP タイムベースのワンタイムパスワード)番号を提供することで、より安全な方法でリモートLinuxシステムを構築できます。

モバイルデバイスには、 TOTP アルゴリズムと互換性のある双方向の認証アプリケーションを使用できます。 TOTP Google Authenticator をサポートするAndroidまたはIOS用の無料アプリは数多くありますが、この記事では例として Google Authenticator を使用します。

FedoraへのGoogle認証システムのインストール

まず、以下のdnfコマンドを使用してFedoraサーバーに Google Authenticator アプリケーションをインストールします。

$ sudo dnf install -y google-authenticator

Google Authenticator をインストールしたら、アプリケーションを実行できます。

$ google-authenticator

アプリケーションは多くの質問をあなたに促します。次のスニペットは、合理的に安全な設定に答える方法を示しています。

Do you want authentication tokens to be time-based (y/n) y Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y

アプリケーションは秘密鍵、確認コード、および回復コードを提供します。これらのキーは、モバイルデバイスを紛失した場合にサーバーにアクセスする唯一の方法であるため、安全な場所に保管してください。

携帯電話認証の設定

携帯電話で、アプリストアの[ Google Play ]または[ iTunes ]にアクセスし、[ Google Authenticator ]を検索してアプリケーションをインストールします。

携帯電話で Google Authenticator アプリケーションを開き、Fedora端末の画面に表示されているQRコードをスキャンします。 QRコードのスキャンが完了すると、認証アプリケーションによってランダムに生成された番号を取得し、Fedoraサーバーにリモートで接続するたびにこの番号を使用します。

Google認証システムの設定を終了する

Google Authenticator アプリケーションからさらに質問が表示されます。次の例では、安全な設定を行うための回答方法を示しています。

次に説明するように、SSHで新しい双方向認証を使用するように設定する必要があります。

Google認証システムを使用するようにSSHを設定する

オーセンティケーターアプリケーションを使用するようにSSHを設定するには、まず、SSH接続を無効にするため、公開SSHキーを使用して正常に機能するSSH接続を確立する必要があります。

サーバーで /etc/pam.d/sshd ファイルを開きます。

$ sudo vi /etc/pam.d/sshd

ファイル内の auth substack password-auth 行をコメントアウトします。

#auth       substack     password-auth

次に、ファイルの末尾に次の行を配置します。

auth sufficient pam_google_authenticator.so

ファイルを保存して閉じます。

次に、/etc/ssh/sshd_config ファイルを開いて編集します。

$ sudo vi /etc/ssh/sshd_config

ChallengeResponseAuthentication 行を検索し、それを yes に変更します。

ChallengeResponseAuthentication yes

PasswordAuthentication 行を検索し、 no に変更します。

PasswordAuthentication no

次に、ファイルの末尾に次の行を配置します。

AuthenticationMethods publickey,password publickey,keyboard-interactive

ファイルを保存して閉じ、SSHを再起動します。

$ sudo systemctl restart sshd

Fedoraで二要素認証をテストする

今すぐリモートでサーバーに接続しようとすると、確認コードを入力するよう求められます。

$ ssh [email protected]

Verification code:

認証コードは、認証アプリケーションによって携帯電話にランダムに生成されます。生成されたコードは数秒ごとに変わるので、新しいコードを作成する前にすばやく入力する必要があります。

間違った確認コードを入力すると、システムに接続できなくなり、次の許可拒否エラーが表示されます。

$ ssh [email protected]

Verification code:
Verification code:
Verification code:
Permission denied (keyboard-interactive).

この簡単な双方向認証を実装することで、システムに追加のセキュリティ層が追加され、未知のユーザーがサーバーにアクセスするのがさらに困難になります。