跳转至

双因素认证

直接使用密码ssh登录服务器,存在一定风险,特别是用户自行更改了弱口令,非常容易被暴力破解。

因此在风险比较高的场景中,经常使用双因素认证(Two-factor authentication)来保障系统安全,即用户密码+动态口令。

这里展示被广泛使用的Google authenticator为系统配置双因素认证。

Info

系统为CentOS7

关闭selinux

安装配置前需要注意关闭selinux,否则可能会出现如下报错。

sshd(pam_google_authenticator)[1537]: Failed to read "~/.google_authenticator"

  • 临时关闭

    使用命令 setenforce 0

  • 永久关闭

    /etc/selinux/config文件中的SELINUX=enforcing更改为SELINUX=disabled,然后重启系统。

编译安装

git clone https://github.com/google/google-authenticator-libpam.git
cd ./google-authenticator-libpam/
./bootstrap.sh
./configure && make && make install

基本配置

修改/etc/pam.d/sshd,在第一行添加如下代码。

/etc/pam.d/sshd
auth required pam_google_authenticator.so 
# 如果不生效,则使用
auth required /usr/local/lib/security/pam_google_authenticator.so

修改/etc/ssh/sshd_config,然后重启ssh服务 systemctl restart sshd

/etc/ssh/sshd_config
UsePAM yes
ChallengeResponseAuthentication yes # 允许使用提示应答式认证
PubkeyAuthentication no #禁止秘钥登录

白名单配置

在集群中,内网机器间ssh可以不启用二次验证登录。配置如下所示。

ssh pam配置

$ head /etc/pam.d/sshd
#%PAM-1.0
auth [success=1 default=ignore] pam_access.so accessfile=/etc/google-auth.conf
auth        required /usr/local/lib/security/pam_google_authenticator.so

新建 /etc/google-auth.conf 文件,按如下格式分3种情况启用IP或用户白名单。

$ cat /etc/google-auth.conf
# 所有用户从内网其它机器ssh过来不启用二次验证
+ : ALL : 192.168.1.0/24
+ : ALL : LOCAL

# 用户 user1 user2 从任何地方登录都不启用二次验证
+ : user1 user2 : ALL

# 用户 user1 user2 从192.168.2.0/24这个网段登录不启用二次验证
+ : user1 user2 : 192.168.2.0/24

登录使用

见集群用户文档 校外登录

本文阅读量  次
本站总访问量  次