Image

ナレッジベース → Centos 7 で Google Authenticator を使用して SSH で 2 要素認証を設定する

[仮想サーバー]
公開日: 29.11.2022

SSHサービスはパスワードの総当たり攻撃を最も受けやすく、新しくサーバーを起動したばかりでも、数時間後にはログに不明なIPアドレスからの接続試行が記録されていることがあります。試行回数を減らすために、まずsshdの設定でポート番号を変更することをお勧めします。また、文字、記号、数字を含む強固なパスワードを設定しましょう。Linuxサーバーの場合、通常は一般ユーザー用のパスワードとroot用のパスワードの2つを覚えておく必要があります。複数のサーバーを管理している場合は、ホスト、ログイン、パスワードなどのセッション設定を保存するアプリケーションを使うのが一般的ですが、これらの情報があなたのワークステーションにアクセスできる第三者に漏れるリスクがあります。信頼できる対策を講じることが重要です。

二要素認証では、ログインとパスワードに加えて、時間とユニークなキーに基づいてコードを生成するスマートフォンアプリケーションを使用します。ログインとパスワードを入力した後に、Google Authenticatorアプリで確認コードを入力するよう求められます。

必要なパッケージのインストール

yum install pam pam-devel google-authenticator

モバイルアプリのインストール

設定

デフォルトでは、ユーザーのログインをsshdの設定で無効にするのが望ましいです。新しいサーバーを設定する場合、まずユーザーを作成し、パスワードを設定して、そのユーザーでログインします。以下のコマンドを使用します。

adduser ユーザー名
passwd ユーザー名
su ユーザー名


二要素認証を設定するユーザーで次のコマンドを実行してください。

google-authenticator

最初のメッセージで「y」を押して./google_authenticatorファイルを更新しますかと尋ねられたら、「y」を押します。他のユーザーがコードを再使用できないように、繰り返し使用を禁止するかどうかのプロンプトで再度「y」を押します。他のオプションについても、すべて「y」を押すことでソフトウェアの効率が向上します。

秘密鍵とリカバリーコードを紙に書き留めてください。この情報はオフラインで保管することをお勧めします。たとえ第三者がこの情報を入手しても、ホスト、ログイン、パスワードを知らない限り、アクセスすることはできません。

次に、PAMの設定を行い、SSHサービスに二要素認証を適用します。これらの操作はrootユーザーで実行する必要があります。

vi /etc/pam.d/sshd

ファイルの最初に以下の行を追加して、設定を次のようにしてください。

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so

他の行はそのまま残し、ファイルを保存します。その後、SSHサービスの設定に移りましょう。

vi /etc/ssh/sshd_config

「ChallengeResponseAuthentication no」という設定を見つけ、「no」を「yes」に変更します。変更を保存し、サービスを再起動してください。

service sshd restart

次に、スマートフォンのアプリを設定します。「手動でキーを入力する」オプションを見つけてタップし、先ほどメモした秘密鍵を入力して保存します。これで、パスワード入力後に表示されるVerification code欄に入力するコードが表示されます。

変更方法:

  • 入力順序の変更:

デフォルトではログイン、パスワード、次に確認コードを入力するように設定していますが、まず確認コードを入力し、その後パスワードを入力したい場合は、ファイルの最初の行を削除し、以下のようにしてください。

#%PAM-1.0
auth required pam_google_authenticator.so
  • rootログイン時の二要素認証

例えば、一般ユーザーでログインしてからsuコマンドでrootに切り替える際に、rootのパスワードとアプリのコードを要求するように設定したい場合は、rootで./google_authenticatorコマンドを実行し、設定します。その後、以下のファイルを編集します。

vi /etc/pam.d/su

ファイルの先頭に以下の行を追加してください。

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so


これで完了です。この設定では、サービスの再起動は不要です。rootに切り替える際には、アプリの認証コードが要求されます。


P.S. 設定が正しいか確認するために別のSSHセッションでテストを行うことをお勧めします。エラーがあった場合は、元に戻して修正することが可能です。





No Comments Yet