2023.01.16
Almalinux8に2段階認証を用いたSSHを設定する!
こんにちは。Maromaro 佐々木です。
とある案件でSSH接続に2段階認証を設定する・・・と話があり。
いや、そんなの聞いたことないな・・・と思っていたのですが、弊社G氏がググったらできるとのことで
試してみました!
今回はAlmalinuxで実施をしてみました。
1.google-authenticator をインストールする
rootでコンソールに入り、以下コマンドでインストール。
yum install google-authenticator
2.google-authenticator
google authenticatorを用いて2段階認証の設定を行います。
手元にスマートフォンを用意しましょう!
私はiPhoneにて、「Microsoft Authenticator」を利用しました。
下記コマンドを入力します。
google-authenticator
下記のような画面が出てくるので、yを押下。
Do you want authentication tokens to be time-based (y/n) y
以下のような画面になるので、URLをコピーしてブラウザに貼り付けるとQRコードが表示されます。
それをアプリで登録し、コードを生成しましょう。
Enter code from app (-1 to skip):と出ていますので、コードを入力します。
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/文字列が表示されている
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: ここにキーがでているので、手動入力でもOK
Enter code from app (-1 to skip):
下記のような画面が表示されるので、大切に保管しましょう!リカバリの際などに利用します。
Code confirmed
Your emergency scratch codes are:
何か数字
何か数字
何か数字
何か数字
何か数字
その後は全て「y」でも大丈夫です。
3.SSHの設定を変更
続いて、SSHの設定を変更します。
以下コマンドでファイルを編集しましょう。
vi /etc/ssh/sshd_config
下記の設定をyesに変更します。(パスワード認証をONにします)
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
こちらの設定は既存の記載がないと思うので、最下部に設定します。
※この設定だと全てのユーザーでパスワードと鍵認証が必須になります。
Match Userを利用すると、ユーザーごとに変更が可能です。
また、rootのみ2段階認証を行いたい場合
下記のようにすると設定がrootのみに設定できます。
Match User root
AuthenticationMethods publickey,keyboard-interactive
最後に「/etc/pam.d/sshd」を編集します。
vi /etc/pam.d/sshd
下記を追加します。
auth required pam_google_authenticator.so nullok echo_verification_code
鍵認証、パスワード認証、2段階認証の3段階認証となります。
最後にsshdを再起動します。
systemctl restart sshd
これで認証が可能になっていると思います。
SSHで試してみましょう!