LoginSignup
22
24

More than 5 years have passed since last update.

SSHログインで2段階認証

Last updated at Posted at 2014-09-09

RHEL 6.3に搭載されているOpenSSHで利用可能になった、2段階認証の設定方法をまとめます。

バージョン注意

要件

  • sshログイン時、公開鍵認証と、パスワード認証の両方を突破しないとログインできないようにすること

設定

以下の設定ファイルを編集します

/etc/ssh/sshd_config

対象の設定は RequiredAuthentications2 です。
manページ

RequiredAuthentications[12]
Specifies required methods of authentications that has to succeed before authorizing the connection. (RequiredAuthentication1 for Protocol version 1, and RequiredAuthentication2 for v2)

RequiredAuthentications1 method[,method...]
RequiredAuthentications2 method[,method...]

Example 1:
RequiredAuthentications2 password,hostbased
Example 2:
RequiredAuthentications2 publickey,password
Available methods:
password, keyboard-interactive, publickey, hostbased, gssapi-keyex, gssapi-with-mic

RequiredAuthentications2を有効化するためには以降の設定が必要となります

チャレンジレスポンス認証の許可

チャレンジレスポンス認証とは

sshd_config
ChallengeResponseAuthentication yes

上記設定のみでは、チャレンジレスポンス認証を行うことはできませんでした。
おそらくですが、/etc/login.confが存在しないためだと思います

ChallengeResponseAuthentication
Specifies whether challenge-response authentication is allowed (e.g. via PAM or though >authentication styles supported in login.conf(5)) The default is ''yes''.

チャレンジレスポンス認証はPAMを使うことで利用できるようになります

sshd_config
UsePAM yes

パスワード認証の許可

2段階認証にパスワード認証を利用する場合は、以下の設定が必要です

sshd_config
PasswordAuthentication yes

2段階認証設定

RequiredAuthentications2 の設定をします

鍵認証+パスワード認証

sshd_config
RequiredAuthentications2 publickey,password

鍵認証+チャレンジレスポンス認証

sshd_config
RequiredAuthentications2 publickey,keyboard-interactive

設定反映

# /etc/init.d/sshd restart
※設定に不備があるとログインできなくなります。最終的に動作確認がとれるまで、セッションを切らないように気を付けてください

Tera Termでログインしてみる

パスワード認証の場合

  1. Tera Termを立ち上げ、接続先を入力し、「OK」押下
  2. ユーザ名、鍵のパスフレーズ、鍵の指定をして「OK」押下
  3. ウィンドウのタイトルが「SSH認証を再試行中」になる
  4. 「プレインテキストを使う」を選択し、パスワードを入力「OK」押下
  5. ログインできたことを確認する

パスワード認証の場合

  1. Tera Termを立ち上げ、接続先を入力し、「OK」押下
  2. ユーザ名、鍵のパスフレーズ、鍵の指定をして「OK」押下
  3. ウィンドウのタイトルが「SSH認証を再試行中」になる
  4. パスワード認証の場合は、「プレインテキストを使う」を選択し、パスワードを入力「OK」押下
  5. チャレンジレスポンス認証の場合は「チャレンジレスポンス認証を使う」にチェックを入れ「OK」押下
  6. 「SSH認証チャレンジ」ウィンドウにパスワードを入力し「OK」押下
  7. ログインできたことを確認する

Tips

  • 認証の順番までは制御することはできないので、先にパスワード認証してから鍵認証でログインすることもできる
  • 全ユーザに2段階認証させたくない場合は、Matchを使って対象だけRequiredAuthentications2を設定できる
  • ただし、以下の設定でためしてみたところ、パスワード認証を行うことができなかった
sshd_config
PasswordAuthentication no
Match User username
    PasswordAuthentication yes
    RequiredAuthentications2 publickey,password

全体ではパスワードログインを禁止して、特定ユーザだけ2段階認証したかったが、ログインできなかった

イケてない部分

問題点

2段階認証を実現させるだけであれば、上記設定で完了だが、以下の問題が発生してしまう

  • 全ユーザ2段階認証にすると、リモートシェル実行が難しくなる
  • 特定ユーザだけ2段階認証にすると、他のユーザのログインを鍵認証に絞れない。

解決策

  1. ログイン用sshdをつくる 操作ユーザログイン専用のsshdを、別IPか別ポートで起動させることで、設定ファイルを分離させる。 AllowUserとかでログインできるユーザをしぼったりするとよりセキュアかも →作り方は後日まとめる
  2. 2段階認証したくないユーザの設定を入れる スクリプト実行ユーザのMatch設定で認証方法を1つに絞る(未検証)
sshd_config
RequiredAuthentications2 publickey,password
Match User scriptuser
    RequiredAuthentications2 publickey

設定もれするユーザも出てくるかもしれないので、運用が大変かもしれない

残課題

  • WinSCPとかの挙動を検証。場合によってはsftpだけ回避とかしないといけないかもしれない
  • TeraTarmマクロでログインできるか検証
  • パスワードを設定していないユーザーでログインできないことを確認する

参考

22
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
24