CentOS 7にGoogle Authenticatorをインストールし、多要素認証 Multi-Factor Authentication(MFA)で認証を強化します。EPELリポジトリがあればインストールできます。
sudo yum -y install google-authenticator
PAMでパスワード認証をトークンに変更します。
sudo backup /etc/pam.d
sudo sed -i \
-e '/^auth substack password-auth$/aauth required pam_google_authenticator.so nullok echo_verification_code' \
-e '/^auth substack password-auth$/s/^/#/' \
/etc/pam.d/sshd
SSHで多要素認証を有効にします。公開鍵認証後に多要素認証を求めます。
sudo backup /etc/ssh/sshd_config
sudo sed -i -e '/^ChallengeResponseAuthentication no$/s/no/yes/' /etc/ssh/sshd_config
echo -e "\nAuthenticationMethods publickey,keyboard-interactive" \
| sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
ユーザ毎にGoogle Authenticatorを有効にします。アプリGoogle Authenticatorにトークンを設定するためのQRコードを表示するためのURLが表示されるので、コピーしてユーザに通知します。
sudo -u ${USER} google-authenticator
# Do you want authentication tokens to be time-based (y/n) y
# 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
# Do you want to do so? (y/n) y
# Do you want to enable rate-limiting? (y/n) y