ウェブサイト検索

Fedora で SSH の 2 要素認証をセットアップする方法


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

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

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

Fedora への Google Authenticator のインストール

まず、次の 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 Authenticator を使用するように 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 での 2 要素認証のテスト

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

$ ssh 

Verification code:

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

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

$ ssh 

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

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