插件窝 干货文章 如何使用双因素身份验证保护CentOS服务器的访问安全

如何使用双因素身份验证保护CentOS服务器的访问安全

配置 Authenticator SSH sshd 774    来源:    2025-04-15

在CentOS服务器上配置双因素身份验证(2FA)保护SSH访问

双因素身份验证(2FA)为服务器访问提供了额外的安全层,即使密码泄露也能防止未授权访问。以下是在CentOS服务器上实现SSH双因素身份验证的详细步骤:

方案一:Google Authenticator (TOTP)

1. 安装必要的软件包

sudo yum install epel-release
sudo yum install google-authenticator qrencode

2. 为每个用户配置Google Authenticator

# 切换到需要配置的用户
su - yourusername

# 运行配置工具
google-authenticator

按照提示操作: - 输入"y"生成新密钥 - 输入"y"更新~/.google_authenticator文件 - 输入"y"禁止多次使用同一令牌 - 输入"y"允许30秒的令牌时间窗口 - 输入"y"启用速率限制

3. 配置SSH使用PAM模块

编辑/etc/pam.d/sshd文件:

sudo vi /etc/pam.d/sshd

添加以下行:

auth required pam_google_authenticator.so

4. 修改SSH配置

编辑/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

确保以下设置:

ChallengeResponseAuthentication yes
UsePAM yes

5. 重启SSH服务

sudo systemctl restart sshd

方案二:使用SSH密钥+密码组合

1. 确保SSH密钥认证已启用

编辑/etc/ssh/sshd_config

PubkeyAuthentication yes
PasswordAuthentication yes
AuthenticationMethods publickey,password

2. 重启SSH服务

sudo systemctl restart sshd

方案三:使用Duo Security

1. 添加Duo仓库

sudo yum install https://dl.duosecurity.com/duo_unix-latest.x86_64.rpm

2. 配置Duo

编辑/etc/duo/pam_duo.conf

[duo]
; Duo integration key
ikey = YOUR_INTEGRATION_KEY
; Duo secret key
skey = YOUR_SECRET_KEY
; Duo API hostname
host = YOUR_API_HOST

3. 配置PAM

编辑/etc/pam.d/sshd,添加:

auth required pam_duo.so

4. 修改SSH配置

编辑/etc/ssh/sshd_config

ChallengeResponseAuthentication yes
UsePAM yes

5. 重启SSH服务

sudo systemctl restart sshd

测试与故障排除

  1. 测试配置:在另一个终端保持SSH连接打开的情况下测试新配置
  2. 备份恢复码:确保保存好Google Authenticator的恢复码
  3. 日志查看:检查/var/log/secure了解认证问题

最佳实践

  1. 为root用户和所有具有sudo权限的用户启用2FA
  2. 保持备用SSH连接以防配置错误被锁定
  3. 定期更新认证应用和服务器软件
  4. 考虑使用硬件安全密钥(YubiKey等)作为更安全的替代方案

通过实施这些措施,您的CentOS服务器将获得显著增强的安全保护,有效防御凭证泄露和暴力破解攻击。