如何lockingUbuntu 12.04 Web服务器

我所有的服务器都被黑客入侵,现在我已经准备好开始locking我的networking服务器了。 他们目前正在运行Ubuntu 12.04

  • nginx 1.27
  • PHP5-FPM
  • PHP的5.4.14
  • MySQL 5.5
  • postgresql 9.1
  • Redis的
  • proftpd的
  • BIND9
  • SSH

我不知道他们是如何被黑客入侵的。 有什么build议来减less再次丢失我的服务器的机会?

当你有这么多的技术时,很难说出每个工具你应该注意的具体问题。 一般来说,对于每一个,做一个谷歌searchlock down <technology> ubuntu ,并通读了前五到十个结果。 采取这些行动为您的每个服务应该大大减less你的系统是多么脆弱。

以下是您可以考虑/做的一些毛毯的事情。 既然你的问题相当广泛,我想这已经是很多了。 保持对ServerFault和http://security.stackexchange.com/选项卡也将提高您的意识。

  • 您的networking服务的意识

完全了解所有暴露于外部世界的东西。 我注意到你没有提到ssh ,这可能表明你正在运行的其他服务,但没有提及。 运行netstat -lntp ,看看是否有任何你没有意识到的服务正在运行,如果没有必要的话,删除/ netstat -lntp它们。

  • 防火墙

学习iptables以便您可以控制进出机器的networkingstream量。 例如,如果您希望只有networkingstream量,则只能将端口80和443列入白名单。 与使用端口运行的每个服务相比,您获得更多的控制权,因为您可能需要使用端口和回送接口在同一台计算机上使服务彼此连接。

例如,php可能需要与redis进行通信,并且可以通过回送接口来完成。 您可以允许传入的连接仅在回送接口上重新发送,而不允许外部机器连接到redis的端口。

  • 沙箱

这涉及到纵深防御。 设置你的服务,使得一项服务的开发对其他服务或其他机器的影响很小。 您可以采取的一项措施是创build一个不同的用户帐户来运行每项服务。 如果一个入侵者打破了这个服务,使得他可以获得一个shell,他可能只能获得一个不是很有特权的用户的特权。 那些每个服务的locking指南将讨论如何做到这一点。

  • logging

与您在计算机上运行的所有服务的每次交互都应启用日志logging。 当你发生任何事情时,你需要通过你的日志,寻找任何不寻常的东西。 您可以对出现的任何问题做出反应和修补。

例如,您注意到某人已经入侵,并且文件已被修改,应该不被修改。 通过你的auth.log ,你会发现有几万次尝试通过sshlogin你的机器,最终以成功的login结束。 那是当你意识到你的密码只有五个字符长,你应该改变它。

  • 入侵检测和入侵防御

类似的日志将帮助你,但更自动化。 对IDS和IPS软件进行一些研究,如http://www.snort.org/http://www.tripwire.com/ 。 当你有工具向你尖叫,你正在受到攻击时,这很好。

希望这些一般性的技巧能够帮助你,并且要知道你还可以做很多其他的事情来保护自己(如果你经常访问serverfault和itsecurity,你将会意识到随着时间的推移)。