我所有的服务器刚刚被黑,现在我准备开始锁定我的网络服务器。他们目前正在运行 Ubuntu 12.04
- nginx 1.27
- php5-fpm
- PHP 5.4.14
- MySQL 5.5
- postgresql 9.1
- 雷迪斯
- proftpd
- 绑定9
- ssh
我不知道他们是如何被黑客入侵的。有哪些建议可以减少再次丢失服务器的可能性?
我所有的服务器刚刚被黑,现在我准备开始锁定我的网络服务器。他们目前正在运行 Ubuntu 12.04
我不知道他们是如何被黑客入侵的。有哪些建议可以减少再次丢失服务器的可能性?
当您拥有如此多的技术时,很难说出您应该注意每种工具的具体问题。一般来说,对于其中的每一个,做一个谷歌搜索
lock down <technology> ubuntu
,并通读前五到十个结果。对每项服务采取这些措施应该会大大降低系统的脆弱性。以下是您可以考虑/做的一些笼统的事情。由于您的问题非常广泛,我认为这已经是很多工作了。密切关注 ServerFault
http://security.stackexchange.com/
也会提高您的意识。完全了解暴露于外界的一切。我注意到您没有提到
ssh
,这可能表明您正在运行但没有提到的其他服务。运行netstat -lntp
并查看是否有任何您没有意识到自己正在运行的服务,如果不需要,则删除/杀死它们。学习
iptables
以便您可以控制进出计算机的网络流量。例如,如果您希望只有网络流量,则可以仅将端口 80 和 443 列入白名单。与关闭所有使用端口运行的服务相比,您可以获得更多的控制权,因为您可能需要使用端口和环回接口让同一台机器上的服务相互连接。例如,php 可能需要与 redis 通信,您可以通过环回接口执行此操作。您可以允许传入连接仅通过环回接口连接到 redis,而不允许外部机器连接到 redis 的端口。
这与纵深防御有关。设置您的服务,以便利用一项服务影响其他服务或您机器的其余部分的可能性很小。您可以采取的一项措施是创建不同的用户帐户来运行每项服务。如果入侵者破坏了该服务以致于他可以获得一个 shell,他可能只能获得一个不是非常有特权的用户的特权。每项服务的锁定指南将讨论如何执行此操作。
与您在计算机上运行的所有服务的每次交互都应该启用日志记录。当您发生任何事情时,您需要查看日志并寻找任何异常情况。您可以做出反应并修补出现的任何问题。
例如,您注意到有人闯入,修改了不应该修改的文件。通过您的
auth.log
,您注意到有数万次尝试通过 ssh 登录您的机器,最终以成功登录告终。这时您才意识到您的密码只有五个字符长,您可能应该更改它。类似于日志记录将为您提供的帮助,但自动化程度更高。对 IDS 和 IPS 软件进行一些研究,例如
http://www.snort.org/
或http://www.tripwire.com/
。当您拥有可以向您尖叫您受到攻击的工具时,这很好。希望这些一般提示有所帮助,并注意您可以采取许多其他措施来保护自己(如果您经常访问 serverfault 和 itsecurity,随着时间的推移您会意识到这一点 :))。