pam_abl
pam_abl 提供了另一层安全保护,以防御暴力破解 SSH 密码。它允许您设置在给定时间段内最大允许的失败登录尝试次数,超过此次数后,主机和/或用户将被列入黑名单。一旦主机/用户被列入黑名单,即使密码正确,所有身份验证尝试都会失败。停止尝试登录指定时间段的主机/用户将从黑名单中移除。
安装
安装 pam_ablAUR 软件包。
配置
将 pam_abl 添加到 PAM 认证堆栈
以 root 身份在您选择的编辑器中打开 /etc/pam.d/system-remote-login
。在所有其他行之上添加以下行
/etc/pam.d/system-remote-login
auth required pam_abl.so config=/etc/security/pam_abl.conf
假设您没有进行任何其他修改,您的 /etc/pam.d/system-remote-login
现在应该如下所示
/etc/pam.d/system-remote-login
#%PAM-1.0 auth required pam_abl.so config=/etc/security/pam_abl.conf auth include system-login account include system-login password include system-login session include system-login
编辑 pam_abl.conf
编辑 /etc/security/pam_abl.conf
以自定义规则和其他设置。
详情请参阅 man pam_abl.conf
。
管理黑名单数据库
检查黑名单主机/用户
以 root 身份,只需运行
# pam_abl
手动从黑名单中移除主机或用户
以 root 身份,只需运行
# pam_abl -w -U <user>
或
# pam_abl -w -H <host>
在上述两个命令中都允许使用 * 作为通配符来匹配多个主机/用户。
手动将主机或用户添加到黑名单
以 root 身份,只需运行
# pam_abl -f -U <user>
或
# pam_abl -f -H <host>
清除旧的用户/主机条目
由于 pam_abl 不作为守护进程运行,它对黑名单执行“惰性清除”。换句话说,在发生身份验证尝试之前,它不会从黑名单中删除旧的用户/主机条目。这不会影响功能,尽管在检查黑名单主机/用户时,经常会导致显示额外的失败项。要强制清除,请运行
# pam_abl -p
其他 pam_abl 命令
像几乎所有 Linux 实用程序一样,可以使用 manpage 查看所有选项
$ man pam_abl
已知问题
截至当前版本 (1.0),pam_abl 存在一个问题,可能会影响其在特定条件下将主机加入黑名单的能力。
由于 sshd 的运行方式以及 pam 模块传递信息的方式,给定尝试的失败只有在进行第二次尝试或连接关闭后才会被记录。这意味着只要攻击者每个连接只进行一次尝试,并且从不关闭任何连接,就不会记录任何失败。
在实践中,sshd_config 设置 "MaxStartups" (默认为 10) 和较小程度上的 "LoginGraceTime" (默认为 120 秒) 限制了这种方法的可行性,但它仍然可以用来挤出比您指定的更多的尝试次数。
与此同时,解决方法是将 "MaxAuthTries" 设置为 1 (或者预期可能会在您在 pam_abl 配置中指定的次数之上额外进行 "MaxStartups" 次尝试)。