我一直在对如何保护 Linux Web 服务器进行“广泛”的研究。除了“基本”措施(删除未使用的服务、强化 ssh、iptables 等)之外,是否应该包括反 rootkit(Tripwire)和反病毒软件(ClamAV)?这些措施对于 Web 服务器来说是不是有点过头了?我知道这是一个非常模糊的问题,但我很想知道其他人的看法。
我未来的环境: - ubuntu 10.04 - fail2ban - nginx 0.8.x - php 5.3.x (suhosin、apc、memcached) - mongodb 1.6.x
可能的应用: - 网络服务 - 具有用户上传的网络应用程序(图片、pdf 等) - 典型网站(表格等)
如果您还有其他建议,欢迎补充!
谢谢
答案1
对于面向公众的服务器,我认为安装像 tripwire 这样的东西并不算过分。
ClamAV 则不同。如果您的访客将分享通过上传和下载您的网站来保护文件。PDF 可能包含漏洞。
在面向公众的服务器上,我让 SSH 不允许密码验证,只允许公钥验证。如果 SSH 只能从内部 LAN 进行,那么您可以放宽这一点。
如果可能的话,我会将服务器放在 DMZ 上,以便它无法与内部 LAN 上的任何其他计算机建立连接。
答案2
不,你走的还不够远。
1)你需要Web 应用程序防火墙mod_security并确保其配置为阻止攻击,而不仅仅是记录攻击。
2)使用以下方式锁定 phpphpsecinfo。
3)锁定您的Web应用程序的MySQL帐户,确保您的应用程序没有FILE
权限,这是MySQL中最危险的。
4)防火墙关闭所有 UDP 和所有不需要的 TCP。考虑使用端口敲击对于 ssh。禁止失败并不比获得零尝试。
答案3
您可以安全地安装助手在网络服务器上 - 添加和删除客户不会更改太多配置文件,并且您可能可以很容易地过滤掉正常的聊天。
但是,许多 Web 服务器安全指南都没有提到您应该在 /etc/fstab 中打开 /tmp 分区上的 noexec。如果您向公众提供托管服务,许多人会在您不知情的情况下安装不安全的 Web 应用程序(他们自己也不知道如何让应用程序保持最新状态),而您基本上是在永远追查这些错误。如果您确保攻击者可以保存软件的唯一位置是客户的主目录和 /tmp 目录,那么如果攻击者无法使用 /tmp 目录,他们就有风险向您展示他们入侵的位置。他们不喜欢这样做。
这样做解决了我们网络托管服务器上的绝大多数安全问题。