Jos*_*ett 6 iptables centos ddos apache-2.2
我想知道是否可以使用简单的 IP 表规则来防止小型 (D)DoS 攻击?
小我的意思是他们用来自一两个 IP 地址的大约 400 多个请求淹没了我的 Web 服务器。在我注意到 IP 地址开始攻击我的 Web 服务器后,我可以删除它们,但 IP 表通常需要几分钟才能针对该 IP 启动,然后开始完全删除它,以免影响该 Web 服务器.
我使用以下命令删除 IP:
iptables -I INPUT -s "IP HERE" -j DROP
然后显然保存它:
/etc/init.d/iptables save
我通常使用以下命令找出攻击 IP 地址:
netstat -plan|grep :80|awk '{print $5}'|cut -d: -f 1|sort|uniq -c|sort -n
这样做的问题是我必须在那里,并且需要我事后采取行动。是否有 IP 表规则可用于在达到 150 个连接后立即删除 IP 地址?这样我就不必担心它会压倒 Web 服务器,而且我也不必在那里阻止它。
顺便说一句,如果重要的话,我在 CentOS 上使用 Apache。
感谢您的时间。
cyb*_*x86 13
对于提供灵活性的东西,请查看最近(和限制)模块。最近将跟踪 IP 在给定时间范围内建立的连接数,并可用于触发特定规则。最近的模块(相对)占用大量 CPU - 但与加载动态页面相比,可以完全接受。
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -m recent --update --seconds 3600 --name BANNED --rsource -j DROP
-A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ATTK_CHECK
-A ATTACKED -m limit --limit 5/min -j LOG --log-prefix "IPTABLES (Rule ATTACKED): " --log-level 7
-A ATTACKED -m recent --set --name BANNED --rsource -j DROP
-A ATTK_CHECK -m recent --set --name ATTK –-rsource
-A ATTK_CHECK -m recent --update --seconds 600 --hitcount 150 --name ATTK --rsource -j ATTACKED
-A ATTK_CHECK -m recent --update --seconds 60 --hitcount 50 --name ATTK --rsource -j ATTACKED
-A ATTK_CHECK -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
本质上,上述相当于:
有关更详细的解释以及我使用的上述分层版本,请参阅这篇文章
请记住,ipTables 根本无法解决网络拥塞问题,而且对任何分布式攻击都相当无效——它的优势在于安全性和减少服务器负载。