
几天前,我在服务器上跑了一个很常规的日志分析命令:

结果很“热闹”。 一台暴露在公网的 Windows 远程登录服务器,在 24 小时内被尝试登录六百多次。
用户名从 admin 到 testuser,密码都是些“123456”“Password@123”这种水平的。 典型的暴力破解。
但所有日志结尾都是一句话:
❝An account failed to log on.
没错,全部失败。因为这台服务器启用了 2FA(二步验证)。
我们常说“换个复杂密码就安全”,但现实并非如此。
在如今的网络环境下,单一密码的防御力几乎等于零:
密码,只是证明“你知道什么”。 二步验证增加了“你拥有的东西”——一台绑定的设备。
那次攻击之后,我决定在跳板机上正式启用 2FA。
1.注册 Duo 账户(https://duo.com/pricing )

2.在服务器上安装 Duo Authentication for Windows Logon;(下载https://dl.duosecurity.com/duo-win-login-latest.exe )

3.勾选“Require 2FA for RDP logons”;

4.手机端安装 Duo Mobile 扫码绑定;

5.测试登录。
此后即使密码泄露,攻击者也无法通过第二步验证。

日志依旧有爆破行为,但再没有成功登录的记录。
Windows 加固完成后,我们又把目光投向 Linux 服务器。 这类系统往往承担关键任务,暴露 SSH 端口后成为常见攻击目标。
这次,我们在 CentOS 7 上部署了 Google Authenticator PAM 模块。
1️⃣ 安装模块
sudo yum install epel-release -y
sudo yum install google-authenticator -y


2️⃣ 为用户生成密钥执行:
google-authenticator

命令会生成一个二维码、密钥及若干备用验证码。 使用手机上的 Google Authenticator、Authy 等 App或第三方小程序 扫描二维码绑定。
建议选择以下设置:
.google_authenticator 文件3️⃣ 修改 PAM 配置文件编辑:
sudo vi /etc/pam.d/sshd
在文件顶部添加:
auth required pam_google_authenticator.so

4️⃣ 修改 SSH 配置编辑:
sudo vi /etc/ssh/sshd_config
确保以下配置生效:
ChallengeResponseAuthentication yes
UsePAM yes


5️⃣ 重启 SSH 服务
sudo systemctl restart sshd

6️⃣ 测试登录重新连接时,会先输入密码,然后系统提示输入动态验证码:
Verification code:

输入手机上的六位数字后,才能成功登录系统。
启用 2FA 后,我们持续监控 /var/log/secure。 攻击脚本依旧活跃,但所有尝试都停留在第一步。
从那天起,异常登录告警从偶尔一次,变成了永远为零。
部署 2FA 并不复杂,但要注意几个关键点:
安全从不是绝对的,但可以让入侵者放弃。
密码会泄露,系统会被探测,端口会被扫描, 但当第二步验证出现在你的手机上时, 攻击者也只能无奈地放弃尝试。
- EOF -