Логирование причин банов в PF

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Логирование причин банов в PF

Непрочитанное сообщение Dmitriy_K » 2012-04-19 13:07:06

Большая просьба поделиться опытом своих расследований причин банов в PF. Можно ли как-то записывать в лог превышения лимитов типа max-src-conn, max-src-conn-rate ?
У меня есть такая строка в конфиге:

Код: Выделить всё

options="(max-src-conn 200, max-src-conn-rate 2000/20, overload <ddos>)"
Вроде бы весьма свободный лимит (как раз хотелось его урезать), но периодически (до 5-10 раз в день) возникают баны, причины которых непонятны.
Я сделал простой кроновский контрольный скрипт, чтобы проверять наличие явных злоупотреблений при банах. Там в качестве дополнительной информации выдаётся частота в минуту запросов с забаненных адресов на 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 "-"
Я не могу понять есть ли при этом какие-то другие злоупотребления типа сканов портов (хотя там всё дропается кроме 80 и 443). Каким образом превышаются лимиты?
Буду благодарен за идеи как можно получить ещё полезную информацию о причинах банов.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Логирование причин банов в PF

Непрочитанное сообщение Alex Keda » 2012-08-14 19:57:38

а в messages или security не пишется?
ipfw в security пишет...
Убей их всех! Бог потом рассортирует...