У меня есть такая строка в конфиге:
Код: Выделить всё
options="(max-src-conn 200, max-src-conn-rate 2000/20, overload <ddos>)"
Я сделал простой кроновский контрольный скрипт, чтобы проверять наличие явных злоупотреблений при банах. Там в качестве дополнительной информации выдаётся частота в минуту запросов с забаненных адресов на web-сервер и виды наиболее частых запросов.
Код: Выделить всё
#!/bin/sh
LOG=/usr/home/web/pf_show.log
N_LOG=/jails/web/var/log/nginx-access.log
REPORT=/usr/home/web/report.txt
SHOW_DDOS=`(pfctl -t ddos -T show 2>&1) |grep -v 'ALTQ' |awk '{print $1}'`
if test -z "$SHOW_DDOS"
then exit 0
fi
for IP in $SHOW_DDOS
do
tail -2 $LOG |grep -q $IP
CHECK=$?
if [ $CHECK -eq 1 ]
then
TIME=`date "+DATE: %Y-%m-%d TIME: %H:%M:%S"`
S_TIME=`date "+%s"`
L_TIME1=`date -v -1M "+%H:%M:"`
L_TIME2=`date -v -2M "+%H:%M:"`
IP_FR1=`tail -20000 $N_LOG |grep "$L_TIME1" |grep $IP |wc -l`
IP_FR2=`tail -20000 $N_LOG |grep "$L_TIME2" |grep $IP |wc -l`
COM_FR1=`tail -20000 $N_LOG |grep "$L_TIME1" |wc -l`
COM_FR2=`tail -20000 $N_LOG |grep "$L_TIME2" |wc -l`
echo "$IP $TIME $S_TIME $IP_FR1 $IP_FR2 $COM_FR1 $COM_FR2" >> $LOG
echo "$IP $TIME" > $REPORT
echo >> $REPORT
echo "Requests for 1min from IP = $IP_FR2/$IP_FR1" >> $REPORT
echo >> $REPORT
tail -20000 $N_LOG |grep "$L_TIME1" |grep $IP |tail -5 >> $REPORT
echo >> $REPORT
tail -20000 $N_LOG |grep "$L_TIME1" |grep $IP |awk '{print $2,$7,$11}' |sort |uniq -c |sort -r |head -5 >> $REPORT
echo "--------------------------------------" >> $REPORT
echo "Common requests for 1min = $COM_FR2/$COM_FR1" >> $REPORT
echo >> $REPORT
tail -20000 $N_LOG |grep "$L_TIME1" |awk '{print $1,$7,$9,$11}' |sort |uniq -c |sort -r |head -5 >> $REPORT
cat $REPORT |mail -s "Temporaly blocked IP" root
fi
done
exit 0
Код: Выделить всё
217.69.134.91 DATE: 2012-04-19 TIME: 13:04:00
Requests for 1min from IP = 118/ 54
217.69.134.91 www. - [19/Apr/2012:13:03:24 +0400] "GET /ru/pressa/analitic_comments/index.php?id4=14414 HTTP/1.0" 200 16800 "-" "Mozilla/5.0 (compatible; Mail.RU/2.0)"
217.69.134.91 www. - [19/Apr/2012:13:03:25 +0400] "GET /common/img/uploaded/Funds/legal-entity/Bankovskie_rekvizity.doc HTTP/1.0" 200 28672 "-" "Mozilla/5.0 (compatible; Mail.RU/2.0)"
217.69.134.91 www. - [19/Apr/2012:13:03:25 +0400] "GET /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6480 HTTP/1.0" 200 23813 "-" "Mozilla/5.0 (compatible; Mail.RU/2.0)"
217.69.134.91 www. - [19/Apr/2012:13:03:26 +0400] "GET /ru/pressa/analitic_comments/index.php?id4=14413 HTTP/1.0" 200 13941 "-" "Mozilla/5.0 (compatible; Mail.RU/2.0)"
217.69.134.91 www. - [19/Apr/2012:13:03:26 +0400] "GET /ru/trading/Comments_experts/printable.php?id4=33861&print=1 HTTP/1.0" 200 3285 "-" "Mozilla/5.0 (compatible; Mail.RU/2.0)"
1 www. /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6524 "-"
1 www. /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6523 "-"
1 www. /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6522 "-"
1 www. /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6521 "-"
1 www. /ru/issuers-news/index.php?amp;afrom4=14.03.2012&ato4=14.04.2012&page4=23&id4=6520 "-"
--------------------------------------
Common requests for 1min = 1647/ 1393
3 188.234.192.175 /images/loadingAnimation.gif 404
2 93.88.22.13 / 301 "-"
2 93.88.22.13 / 200 "-"
Буду благодарен за идеи как можно получить ещё полезную информацию о причинах банов.