我最近在我的一些服务器上看到了一些问题,其中一个帐户通过过时的脚本被黑客入侵,并且黑客在帐户内上传了一个 cPanel / FTP Brute 强制 PHP 脚本。
PHP 文件读取 /etc/passwd 以获取用户名,然后使用 passwd.txt 文件尝试暴力破解它进入 127.0.0.1:2082。
我正在想办法阻止这种情况。除了“GET /path/phpfile.php”之外,它不会发布任何内容,所以我不能使用 mod_security 来阻止它。
我一直在考虑可能将 /etc/passwd 的权限更改为 600,但是我不确定这将如何影响我的用户。
我也在考虑限制 localhost 与 :2082 的连接,但我担心 mod_proxy 会受到影响。
有什么建议么?
运行某种形式的身份验证,它不会查看 /etc/passwd 的用户名,例如 LDAP。此外,我建议激活 SELinux,以便此类黑客攻击在第 1 步就中断(httpd 无法使用默认规则读取 /etc/passwd),但 cPanel 讨厌任何高级尝试锁定系统。
所以第一件事是修复/删除过时的脚本,这些过时的脚本让黑客首先获得了上传 cPanel / PHP 脚本的特权和能力。之后的一切都是围绕着真正的问题跳来跳去的bodge(不好的修复),你将继续遇到各种问题,直到得到纠正。
系统期望
/etc/passwd
是世界和组可读的(即644
,或者444
但可能仍然会破坏事物),而/etc/shadow
存储密码哈希的地方应该限制为600
(所有者读/写,组和每个人都无权访问o+rw,g-,a-
)。没有使用cPanel的经验,不知道是否可以通过PAM认证模块进行限制,从而限制密码检查尝试,从而使密码暴力破解尝试无效。我想到的 PAM 模块被称为
pam_faildelay
减慢多次尝试的速度。我不知道使用Apache 和 mod_security的tarpit样式解决方案是否会成为限制对 cPanel 登录的访问的一种手段。
首先启用cPHULK,它将帮助保护 cPanel 免受暴力破解。 永远不要更改 /etc/passwd 和 /etc/shadow 的权限,它们的设置方式是有原因的。SELinux 将添加额外的安全层并阻止漏洞获取代码执行,但它可能无法阻止这种攻击。将端口号从 2082 更改为 2083 或类似的东西,他们使用的脚本可能不是那么聪明。
mod_security 很棒,但它不会做任何事情来阻止这种攻击。
您还可以执行更好的密码规则。尝试使用 THC-Hydra 暴力破解自己,如果有任何帐户被破坏,请禁用它们并强制用户选择更好的密码。