为 Linux 服务器设置双因素身份验证
为什么要在Linux服务器上使用双因素身份验证?
尽管 SSH 密钥安全性很高,但并非万无一失,尤其是在私钥泄露或存储不当的情况下。双因素身份验证 (2FA) 通过要求您提供已知信息(密码)和可用物品(手机)来降低这种风险。
双因素身份验证的优势:
- 可抵御暴力攻击
- 即使密码泄露,也能增加一层额外的保护。
- 易于实施,对性能影响极小。
步骤 1 – 安装 Google Authenticator PAM 模块
更新所有系统软件包,确保您的 Ubuntu 服务器是最新版本,并安装 Google Authenticator。
sudo apt update
sudo apt install libpam-google-authenticator
步骤 2 – 为您的用户配置 Google Authenticator
对每个需要启用双因素身份验证的用户运行以下命令:
谷歌身份验证器
您将被问到以下几个问题:
- 使用您的移动身份验证器应用程序扫描二维码
- 将紧急代码保存在安全的地方
- 选择是否更新.google_authenticator文件(输入 y)
- 选择 y 以获得基于时间的代币
- 请根据您的安全需求回答剩余提示(默认回答“是”即可)。
步骤 3 – 配置 PAM 以使用 Google Authenticator
打开 PAM SSH 配置文件:
须藤纳米 /etc/pam.d/sshd
在顶部添加以下一行:
需要 pam_google_authenticator.so 进行身份验证
保存并退出。
步骤 4 – 更新 SSH 配置
编辑 SSH 服务配置:
sudo nano /etc/ssh/sshd_config
请确保存在以下设置:
挑战响应认证:是 使用PAM:是
为了提高安全性,您也可以选择禁用密码验证,仅使用密钥 + 双因素身份验证:
密码验证否
保存并退出。
步骤 5 – 重启 SSH
重启 SSH 服务以应用更改:
sudo systemctl restart ssh
步骤 6 – 测试设置
打开一个新的终端或会话,然后尝试登录:
ssh youruser@yourserver_ip
系统会提示您输入:
- 您的 SSH 密钥口令或密码(如果已启用)
- 来自身份验证器应用程序的验证码
注意:在确认双因素身份验证 (2FA) 正常工作之前,请勿关闭现有的 SSH 会话。
注意:除了修改 /etc/pam.d/sshd 文件之外,您还可以通过检查组成员身份或使用命令行限制修改 .ssh/authorized_keys 文件来为特定用户配置 PAM。这种方法更高级,通常用于多用户环境。
其他提示:
- 备份您的 .google_authenticator 文件和恢复代码
- 使用 fail2ban 或类似工具阻止重复登录尝试
- 结合 SSH 密钥认证,可实现最高安全性
结论
为了显著提升 Linux 服务器的安全性,您可以采取简单而有效的措施——启用双因素身份验证。无论您管理的是个人 VPS 还是企业级基础架构,启用双因素身份验证都能有效防止未经授权的访问,即使您的凭据遭到泄露。