[apache] mod_reqtimeout模块
为了说明mod_reqtimeout模块的用途,需要先说明一下背景。
【背景】
客户端发送请求头(或者body)到web服务器,web服务器一直等待,直到它收到一个完整的请求头(或者body)。
客户端继续发送新的请求,打开新的连接再次发送不完整的请求头(或者body)。
这样可能导致大量的进程/线程等待客户端的数据,耗光了web服务器的资源,导致了正常请求无法得到处理。
这个漏洞在Apache 1.x、 2.x都存在,其他的服务器nginx、dhttpd、 GoAhead WebServer、IIS6.0、 IIS7.0、lighttpd我没有确认。
【解决方法】
apache这个漏洞,会导致拒绝服务攻击(DoS攻击),请大家注意啦。
可以通过HTTP DoS的工具“OWASP HTTP POST Tool”或者“Slowloris”来发起攻击,检查一下是否网站是否存在这个漏洞。
apache发生问题时,从servser-status的状态看,下面的进程/线程都正在读取请求,
----------------------------------------------------
64 requests currently being processed, 0 idle workers
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRWR
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
----------------------------------------------------
apache的mod_reqtimeout模块就是为了避免这个问题的出现。
【设定方法】
httpd.conf
LoadModule reqtimeout_module modules/mod_reqtimeout.so
<IfModule reqtimeout_module>
RequestReadTimeout header=5-40,MinRate=500 body=20,MinRate=500
</IfModule>
※header, body 单位:秒、Rate单位:Byte/秒。
附
相应的工具)
OWASP HTTP POST Tool
http://www.owasp.org/index.php/OWASP_HTTP_Post_Tool
Slowloris
http://ha.ckers.org/slowloris/
参考链接 http://httpd.apache.org/docs/2.2/en/mod/mod_reqtimeout.html