最近经常遇到攻击,总结一下常用方法来处理吧.web server 为 apache2.2
一.单个IP
tail -1000 log |perl -a -ne'print "$F[0]\n"'|sort |uniq -c |sort -n
这个命令行可以根据访问量对IP排序.在此假设攻击IP地址为 A.B.C.D
(1)在服务器上用iptables阻截该IP
iptables -A INPUT -s A.B.C.D -j REJECT
注意:drop将忽视该请求,reject将拒绝该请求.使用drop,web前端的LB将继续保持这个session;使用reject将明确告诉客户端拒绝该请求.LB也将释放session.所以需要使用 reject.
(2)在web server上阻截该IP
Order Deny,allow
Deny from A.B.C.D
注意:不要把访问限制加到段里面,因为段优先级最高,将最后处理,并覆盖前面设置的访问限制.
二.单个URL
tail -1000 log |perl -a -ne'$F[6]=~s/(\?|").*/\n/;print $F[6]' |sort |uniq -c |sort -n
这个命令行可以根据访问次数对URL排序.
然后可以用apache的Rewrite模块对特定的URL做一些限制.
(1)对虚拟主机的限制
RewriteCond %{HTTP_HOST} ^www\.abc\.com$ [NC]
RewriteRule .* - [F]
(2)对请求参数的限制
RewriteCond %{QUERY_STRING} ^query_string$
RewirteRule .* - [F]
(3)对请求文件的限制
RewirteRule ^/index.html$ - [F]
三.mod_evasive 介绍
LoadModule evasive20_module /path/mod_evasive20.so
DOSHashTableSize 7000 定义哈希表大小
DOSPageCount 2 在Page计数器间隔内,IP能访问同一网页的最大次数
DOSSiteCount 50 在Site计数器间隔内,IP能访问全站的最大数
DOSPageInterval 1 Page访问计数器间隔
DOSSiteInterval 1 Site访问计数器间隔
DOSBlockingPeriod 10 加入黑名单后拒绝访问时间(返回403)
DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP" IP加入黑名单后执行的系统命令
DOSLogDir "/tmp" 日志目录
DOSWhiteList 127.0.0.* 白名单
DOSEmailNotify
linuxty@gmail.com 有IP加入黑名单后通知管理员
阅读(1097) | 评论(0) | 转发(0) |