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