我该如何检测Slowloris?


14

我很确定自己受到Slowloris的攻击。我设置了一个iptables规则来限制与我的Web服务器的最大连接,但是我想知道如何确定这是否真的是Slowloris攻击,如果是,那么如何找到攻击者的IP地址。我真的很想将日志传递给他的ISP。

谢谢

Answers:


5

Slowloris攻击通过尽可能慢地发送请求数据来起作用。因此,如果您可以测量每个ip地址的带宽使用量,那么如果它低于某个阈值(通过测量已知的Lowloris攻击中的带宽即可找到),那么您就知道自己正在受到攻击。

为防止受到攻击,建议您切换网络服务器软件。我使用切诺基,它的默认配置具有抵抗力。我无法确定nginx是否容易受到攻击,但是lighttpd是易受攻击的。我也不确定使用抗性的Web服务器作为代理是否会有所作为。

这是更多信息:http : //ha.ckers.org/blog/20090617/slowloris-http-dos/


10

1级:简单的lowloloris DOS


要查找slowloris攻击者的IP地址,我使用以下命令行:

netstat -ntu -4 -6 |  awk '/^tcp/{ print $5 }' | sed -r 's/:[0-9]+$//' |  sort | uniq -c | sort -n

这将为您提供每个已连接IP的活动连接数

如果您遭受的是简单的DOS攻击,那么一个拥有一个或几个IP的小孩子,一个拥有50-100个连接(或更多个IP)的IP,很可能是您可以丢下的慢速攻击者。

如果您在攻击过程中连接在服务器上,则这是“实时”检测并丢弃(使用iptables或您首选的hlfw)。

在您的apache日志中添加处理时间(%D或%T参数)还可以通过分析日志来帮助检测慢速龙虾攻击“事后调查”,如果您的日志中没有此信息,则您将找不到任何有趣的信息。有关日志配置,请参见http://httpd.apache.org/docs/current/mod/mod_log_config.html

第2级:真正的大慢速龙DDOS


netstat(使用watch netstat进行刷新)仍然可以帮助您看到某些IP始终处于连接状态

要对抗慢速龙,请在apache上安装reqtimeout模块并进行设置,例如:

http://pastebin.com/3BNNwfyb

之后,您在access_log中看到的每个408都确保有99.999%的慢速攻击者ip。

使用reqtimeout apache模块,您可以轻松地在体面的专用服务器上承受数千个ips和数千个数据包/秒。

iptables也可以提供一些帮助:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.