我最近在运行一个网络服务器,网上有很多信息,但都可能有点混乱。我最近打开了我的 logwatch 日志,发现我经常受到各种机器人的攻击。
现在我对列出我现在绝对应该注意的事情以及预防它们的可能方法很感兴趣。我读过关于服务器因洪水而崩溃、电子邮件崩溃以及各种疯狂事件的故事。
我已经做过的事情:
我最近封锁了我所有的端口,除了 http 和电子邮件端口。
我禁用了 IPv6,这给了我很多命名错误
我已打开垃圾邮件 DNS 黑洞列表来对抗垃圾邮件
- sbl.spamhaus.org;
- zen.spamhaus.org;
- b.barracudacentral.org;我在 apache 上安装并配置了 mod_security2
无法远程访问我的数据库
这就是我到目前为止所做的一切,此外我不知道任何其他威胁。我想知道是否必须保护以下内容。
- 我会被电子邮件淹没吗?我该如何防止这种情况
- 我的数据库是否会出现中断或泛滥?
- 是否有诸如http洪水之类的东西
- 在我公开我的服务器之前,我还应该知道其他任何事情吗
我还想知道是否有某种具有必备安全保护的清单。我知道编写好的 Web 应用程序的 OWASP 列表,是否有用于配置服务器的东西。
服务 X 可以被淹没吗?
是的。您必须确保对服务进行配置,以便在它们被淹没时,您的系统资源(CPU、内存等)不会被过度使用。由于您使用的是 mod_security,我假设您正在运行 Apache 和 MySQL。
对于 Apache,您需要查看每个 Apache 进程的平均内存利用率。调整 MaxClients 设置,以便...
MaxClients * 平均内存利用率 < 总物理内存 - 系统开销
如果数据库服务在同一个系统上,那么您需要考虑到这一点。如果你使用 MySQL,我的一个朋友写了MySQLTuner。虽然肯定不是万能的,但它将为您提供调整 MySQL 配置以适应内存限制的起点。
使用 MySQL/Apache,您需要确保让它们在正常负载下运行一两天,以便内存利用率稳定在您认为的正常生产水平。随着时间的推移,您还需要监控系统,因为代码的更改和流量的增加将对您的资源利用率产生各种影响。
所有这些都与安全性相关,因为它与服务可用性相关。在大多数情况下,安全性并不难。保持你的东西打补丁,使用好的密码,不要紧张。更多时候,这将是杀死你的蛮力东西,并且通过适当的资源规划,可以在一定程度上减轻这种情况。
我同意 Rugmonster 的观点,但是,对于一些随意的阅读。;)
http://msdn.microsoft.com/en-us/library/aa302351.aspx http://windows.stanford.edu/docs/IISsecchecklist.htm
我在这里用一些一般的安全最佳实践回答了一个类似的问题:
用于生产的安全 LAMP 服务器