侵害やパスワードの侵害が増加しているため、可能な限り多くのセキュリティレイヤーが必要です。
セキュリティを強化する1つの方法は、認証の層を追加することです。 多要素認証 (MFA)は、身元を証明するために複数の資格情報を要求する方法です。
MFAとは何ですか?
通常、アカウントまたはデバイスにサインインすると、ユーザー名とパスワードの入力を求められます。 LinuxマシンにSSHで接続すると、SSHキーペアの入力を求められる場合があります。多要素認証では、アカウントまたはLinuxホストに対して正常に認証するために、ユーザーが複数の情報を提供する必要があります。追加情報には、SMSまたはGoogle Authenticator、Twilio Authy、FreeOTPなどのアプリからの資格情報を介して携帯電話に送信されるワンタイムパスワード(OTP)が含まれる場合があります。
Pluggable Authentication Modules(PAM)は、Linuxで使用される認証メカニズムです。この記事では、Google PAMモジュールを使用してMFAを有効にし、ユーザーが時間ベースのワンタイムパスワード(TOTP)コードを使用してログインできるようにします。
Google認証モジュールを実装する
まず、LinuxマシンにGoogle認証モジュールをインストールします。これを行うには、ターミナルウィンドウを開き、次のコマンドを実行します。
# sudo dnf install google-authenticator -y
次に、google-authenticator
を設定します OTPコードを生成します。次のコマンドを実行して、構成プロセスを開始します。
# google-authenticator
このツールは一連の質問をします。これらの質問のほとんどについて、「はい」と答えてください( y )、デフォルト以外のものが必要な場合を除きます。
Do you want authentication tokens to be time-based (y/n) y
これにより、画面上にQRコード、秘密鍵、および回復コードが生成されます。スマートフォンでGoogle認証システムなどの認証システムアプリを使用して、上記のコマンドから生成されたQRコードをスキャンします。残りの質問に答えて、プロセスを完了します。
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, a new token is generated every 30 seconds by the mobile app. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. This allows for a time skew of up to 30 seconds between authentication server and client. If you experience problems with poor time synchronization, you can increase the window from its default size of 3 permitted codes (one previous code, the current code, the next code) to 17 permitted codes (the 8 previous codes, the current code, and the 8 next codes). This will permit for a time skew of up to 4 minutes between client and server.
Do you want to do so? (y/n) y
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than three login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y
OTPコードの入力を求めるようにSSHを設定する
いくつかのSSH構成ファイルを編集して、二要素認証としてOTPコードを要求します。
お気に入りのテキストエディタを使用して、/etc/pam.d/sshd
を開きます 編集用:
# sudo vi /etc/pam.d/sshd
次の構成行を追加します。
auth required pam_google_authenticator.so nullok
この構成行により、PAMは前の手順でインストールしたGoogle認証システムPAMモジュールを使用できるようになります。
nullok
を使用 行のエントリ、SSHは、MFA用に構成されていないマシン上のユーザーのOTPコードを必要としません。このオプションを完全に削除して、すべてのユーザーにこのシステムでMFAを使用するように強制します。
次に、次の行をコメントアウトして、ログインのパスワード認証を無効にします。
#auth substack password-auth
ファイルを保存して閉じます。
次の手順では、SSH構成を変更して、SSHキーペア認証が成功した後にOTPコードのプロンプトを表示します。
お気に入りのテキストエディタを使用して、/etc/ssh/sshd_config
を開きます。 編集用:
# sudo vi /etc/ssh/sshd_config
ChallengeResponseAuthentication noの行を見つけてコメントアウトします 新しい構成行を追加しますChallengeResponseAuthenticationyes 。この行により、SSHはチャレンジレスポンスを要求できます 。この場合、SSHキーベースの認証が成功した後の応答はOTPコードです。行は次のとおりです:
#ChallengeResponseAuthentication no
ChallengeResponseAuthentication yes
最後に、SSHに両方を要求するように通知します SSHキーと認証コード。 SSHはSSHキーペア( publickey )をチェックします )、次にOTPコード(キーボードインタラクティブ )。ファイルの最後に、次を追加します。
AuthenticationMethods publickey,keyboard-interactive
特定のユーザーに対してのみSSHキーペアとOTP認証を有効にするには、代わりに次のようなものを追加します。
Match user <username>
AuthenticationMethods publickey,keyboard-interactive
ファイルを保存して終了します。 SSHサービスを再起動して、変更を有効にします。
# sudo systemctl restart sshd
構成をテストする
セットアップをテストしてみましょう。ターミナルウィンドウを開き、LinuxホストにSSHで接続します。認証システムアプリからOTPコードの入力を求められます。
SSHキーペアとOTPコードの横にあるパスワードの入力を求められる場合は、/etc/pam.d/ssd
を開きます。 この行を編集およびコメント解除するためのファイル:
auth substack password-auth
次に、/etc/ssh/sshd_config
を開きます 編集用のファイルともう1つの認証方法を追加します:
AuthenticationMethods publickey,password publickay,keyboard-interactive
これらの変更を行った後、SSHを再起動することを忘れないでください。
まとめ
MFAを使用して、別の認証レイヤーを追加し、システムをより安全にします。従来のユーザー名とパスワードベースの認証に加えて、SSHキーペアやTOTP(Google Authenticator)などのより安全な方法を使用してシステムにログインします。これらの対策を実施することで、システムのセキュリティを向上させ、Linuxデバイスへの侵入を困難にします。
[セキュリティについてもっと知りたいですか? ITセキュリティとコンプライアンスのチェックリストを確認してください。 ]