東京都府中市、九段下のWEB制作会社Maromaroのブログです

2023.01.16

Sasaki

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で試してみましょう!