Ubuntu Server 22.04でSSH 2FAを有効にする方法 - TechRepublic

Ubuntu Server 22.04でSSH 2FAを有効にする方法 - TechRepublic
二要素認証(2FA)のコンセプト。スマートフォンとノートパソコンでアクセスする際の仮想キーアイコンで、パスワードの検証、本人確認、生体認証技術によるサイバーセキュリティを実現します。
画像: tete_escape/Adobe Stock

LinuxサーバーをSSHログイン用に公開すると、誰かがサーバーに侵入して不正行為を行う可能性が常に存在します。これを防ぐ方法の一つは、サーバーで2要素認証を有効にすることです。有効にすると、適切に生成された2要素認証コード(と通常の認証情報)を持つユーザーのみがアクセスできるようになります。UbuntuサーバーでSSH 2要素認証を設定する方法を学びましょう。

参照: 知っておくべきオープンソースと Linux の用語 40 選 (TechRepublic Premium)

必要なもの

  • Ubuntu Server 22.04 の実行中のインスタンス。
  • sudo 権限を持つユーザー。

必要なソフトウェアのインストール方法

まず最初に、Google Authenticatorというパッケージをインストールします。これは、サーバーに2FA認証を追加できるコマンドラインツールです。

Ubuntu インスタンスにログインし、次のコマンドを発行します。

sudo apt-get install libpam-google-authenticator -y

次に、秘密鍵を作成するためのコマンドを実行する必要があります。そのコマンドは以下のとおりです。

google-authenticator

認証トークンを時間ベースにするかどうかを尋ねられます。希望する場合は、yキーボードで入力してEnterキーを押します。すると、2FAアプリケーションでスキャンできるQRコードが表示されます。

ただし、一つ注意点があります。問題の物理マシンのターミナルに直接ログインしている場合、コード全体を表示できない可能性があります。SSH経由でログインしてターミナルのサイズを変更し、QRコード全体を表示するのが最善策です(図A)。

図A

Google 認証アプリによって生成された(ぼやけた)QR コード。

2FAアプリ(Authyなど)でQRコードをスキャンするか、コードが長すぎてアプリがスキャンできない場合は秘密キーを入力してEnterキーを押します。すると、アカウントを確認するためにアプリからコードを入力するよう求められます。確認後、2FAの緊急コードが表示されます。これらのコードをコピーしてパスワードマネージャーなどの安全な場所に保存し、y~/.google_authenticatorファイルを更新するように求められたら入力してください。次に、同じ認証トークンの複数回使用を禁止するように求められます。y中間者攻撃を防ぐのに役立つため、これに同意して入力してください。プロンプトが表示されたら、y最後の質問に入力して、認証サーバーとクライアント間の最大30秒のタイムスキューを許可してください。

また、プロンプトが表示されたら「y」と入力してレート制限を有効にする必要があります。これにより、攻撃者によるログイン試行が 30 秒ごとに 3 回までに制限されます。

2FA用のSSHデーモンの設定方法

2FAのインストールと設定が完了したら、SSHデーモンも2FAを利用できるように設定する必要があります。以下のコマンドでSSHデーモンの設定ファイルを開きます。

sudo nano /etc/ssh/sshd_config

まず、次の行を見つけて、それが yes に設定されていることを確認します。

UsePAM yes

次に、次の行を見つけて、no を yes に変更します。

KbdInteractiveAuthentication no

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

注: Ubuntu 22.04 より前のリリースでは、上記の行は次のようになります。

ChallengeResponseAuthentication yes

次に、次のコマンドで PAM 構成ファイルを開きます。

sudo nano /etc/pam.d/sshd

@include common-auth 行の下に、次の行を追加します。

auth   required   pam_google_authenticator.so

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

次のコマンドで SSH デーモンを再起動します。

sudo systemctl restart sshd

次に、新しいターミナルウィンドウを開き、リモートマシンへのログインを試みます。最初にユーザーパスワードの入力を求められ、次に2FAコードの入力を求められます。2FAコードを正しく入力すると、サーバーへのアクセスが許可されます。

SSHキー認証で2FAを有効にする方法

SSHキー認証を使用する場合(そして使用すべきです)、追加の手順が必要です。サーバー上で、SSHデーモンの設定ファイルを以下のコマンドで開きます。

sudo nano /etc/ssh/sshd_config

そのファイルの下部に次の行を追加します。

AuthenticationMethods publickey,keyboard-interactive

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

次のコマンドで SSH を再起動します。

sudo systemctl restart sshd

SSH キー認証が機能することを確認したら、次のコマンドで SSH 構成を開いてパスワード認証を無効にすることができます。

sudo nano /etc/ssh/sshd_config

次の行を見つけます。

PasswordAuthentication yes

次のように変更します。

PasswordAuthentication no

次のコマンドで SSH を再起動します。

sudo systemctl restart sshd

おめでとうございます。Ubuntu Server 22.04 で、より安全な SSH ログインプロセスの設定が完了しました。この設定を行う際は、必ず別のターミナルウィンドウからテストを実行してください。そうすれば、何か問題が発生した場合でも元のターミナルにログインしたままにできます(設定をリセットすることも可能です)。この新たなセキュリティレイヤーをお楽しみください。

TechRepublic Academy の The Mastering Linux Development Bundle で Ubuntu について詳しく学びましょう。

Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。

Tagged: