前言
- 当下随着互联网技术的快速发展,网络安全问题愈加严重。在Linux系统中,SSH是一种广泛使用的远程登录工具,因此,保护SSH访问的安全性就变得尤为重要。
- 在SSH中启用多因素身份验证是一种有效的方式来加强SSH访问的安全性。
- 使用 google-authenticator-libpam 来为SSH启用多因素身份验证。它是基于TOTP算法的实现的一种工具。
- TOTP算法(Time-based One-time Password algorithm)是一种从共享密钥和当前时间计算一次性密码的算法。
- TOTP是基于散列的消息认证码(HMAC)的示例。 它使用加密哈希函数将密钥与当前时间戳组合在一起以生成一次性密码。 由于网络延迟和不同步时钟可能导致密码接收者必须尝试一系列可能的时间来进行身份验证,因此时间戳通常以30秒的间隔增加,从而减少了潜在的搜索空间。
服务器安装google-authenticator-libpam
ubuntu以及其它debian系:
sudo apt install libpam-google-authenticator
centOS系:
嘻嘻嘻,自己查一下吧,笔者已经将近4-5年没用过了。
移动端(手机)安装支持TOTP的认证软件
一般有如下几款:
腾讯身份认证器:
https://sj.qq.com/appdetail/com.tencent.authenticator
谷歌身份认证器:
https://baike.baidu.com/item/Google%20Authenticator/58350750
微软身份认证器:
https://www.microsoft.com/zh-cn/security/mobile-authenticator-app
FreeOTP:
https://github.com/freeotp
笔者用的是腾讯身份认证器,如图(隐蔽了一些敏感信息):
修改pam配置
运行命令:
vim /etc/pam.d/sshd
在文件最后加入:
auth required pam_google_authenticator.so
修改ssh配置
运行命令:
vim /etc/ssh/sshd_config
将 ChallengeResponseAuthentication 的值改为 yes, 如果没有则添加此配置。
ChallengeResponseAuthentication yes
重启ssh服务:
sudo systemctl restart sshd.service
在每个需要SSH多因子认证的用户下运行:google-authenticator 来生成密钥和其它配置信息。
1:运行命令:
google-authenticator
2:在移动端点击右上角加号,扫一扫扫码。扫码完成后出现一个新的“令牌”。如图:
3:此时会接着出来一些其它配置。一般来说无脑 y 就可以。大致如下
完成配置,尝试登录:
可以看到,我们除了输入密码外,还要输入一次性验证码。如下: