我试图找出如何保护我的服务器,以防止它似乎是一个僵尸networking(我只是猜测)
每天,越来越多的IP使用无效的请求来填充我的应用程序日志(例如:GET请求的URL应该只接收POST请求)
首先,我考虑logging所有这些IP基于以下两个方面:a)他们发出无效请求的事实和b)每单位时间的请求数量,然后运行一个抓取这些ip的cron并向iptables添加规则他们的包。
但是稍微阅读一下,我发现这种方法会产生很多问题:
有什么想法吗?
这是所有互联网连接的计算机所经历的互联网噪音的一部分,不幸的是,我们不住在一个完美的世界。 试图阻止它就像玩猫和老鼠的游戏。 您可以使用Iptables速率限制器来限制来自IP的传入请求的数量,但是有关它的问题。
而是确保您的应用程序和操作系统是安全的。 请尽可能跟上安全补丁程序,并遵循安全的编码准则。 还要正确configuration服务,最大的安全缺陷之一是configuration错误的服务。
不要打扰IP禁止规则 – 正如你所怀疑的,源IP可能是伪造的,自动禁止只会对你的主机创build另一个拒绝服务攻击向量。
在大多数情况下,您可以忽略无效的请求 – 这些蠕虫或自动脚本是盲目地试图利用可能存在或可能不存在的安全漏洞。 请遵守Sameer有关修补系统和应用程序的build议(尤其是您的PHP应用程序,因为它们通常很不正确,而且经常被利用)。 只有在影响服务器性能的情况下才会对stream量起作用(例如,大量非合法请求正在使用大量服务器资源)。 即使是大量的iptables规则也不会对现代硬件造成任何负担。
如果你想用iptables去IP禁止路由,那么使用fail2ban。 它会监视您的日志文件中的不良IP,并阻止它们一段时间。
看看Apache的mod_security这样的第7层防火墙。
最近我解决了一些客户的主要性能问题。 他们有超过7000个iptables规则来将各种IP列入黑名单。 删除这些固定的主要networking性能问题。 看来iptables不能处理更多的几千条规则。
为不需要的主机创build一个黑洞路由可能会更好。 这可能意味着有很多额外的小路线,但Linux处理罚款。