我很确定我是在Slowloris攻击下。 我build立了一个iptables规则来限制与我的networking服务器的最大连接,但是我想知道如何确定它是否是一个Slowloris攻击,如果是的话,我如何find攻击者的IP地址。 我真的想把日志传递给他的ISP。
谢谢
Slowloris攻击的工作是尽可能慢地发送请求数据。 因此,如果您可以测量每个IP地址的带宽使用情况,那么如果它低于某个阈值(通过测量已知slowloris攻击中的带宽发现),则知道您正在受到攻击。
为了防止攻击,我build议切换您的networking服务器软件。 我使用的是默认configuration的耐磨的切诺基。 我无法确定nginx是否易受攻击,但是lighttpd是。 我也不能确定使用一个耐用的web服务器作为代理将有所作为。
以下是更多信息: http : //ha.ckers.org/blog/20090617/slowloris-http-dos/
等级1:简单的slowloris DOS
要findslowloris攻击者的IP地址,我使用下面的命令行:
netstat -ntu -4 -6 | awk '/^tcp/{ print $5 }' | sed -r 's/:[0-9]+$//' | sort | uniq -c | sort -n
这将为您提供每个连接的IP的活动连接数
如果你受到简单的DOS攻击,一个拥有一个或几个IP的小孩,拥有50-100个连接(或更多)的小孩,最有可能是一个你可以丢失的slowloris攻击者。
如果在攻击过程中连接到服务器上,这是为了检测并删除(使用iptables或您的首选hlfw)它们“实时”。
在apache日志中添加处理时间(%D或%T参数)还可能通过分析日志来帮助检测slowloris“postmortem”攻击,如果您没有在日志中logging此信息,则无法find任何有趣的内容。 有关日志configuration,请参阅http://httpd.apache.org/docs/current/mod/mod_log_config.html 。
等级2:真正的大slowloris DDOS
netstat(使用watch netstat刷新)仍然可以帮助你看到一些IP只是总是连接
为了在apache上与slowloris作斗争,安装reqtimeout模块并设置它,例如:
在那之后,你在access_log中看到的每一个408都是99.999%,肯定是slowloris攻击者的ip。
使用reqtimeout apache模块,您可以很容易站在一个体面的专用服务器上数以千计ips和数千包/秒
iptables也可以帮助一些像这样的东西:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP