双因素认证
直接使用密码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
登录使用¶
见集群用户文档 校外登录。
本文阅读量 次本站总访问量 次