Досилка
Sergej Kandyla
sk.paix at gmail.com
Thu Jan 17 11:18:53 MSK 2008
Alex Vorona wrote:
> Elifan пишет:
>
>> Кроме того интересно - допустим есть лог формата '$remote_addr'
>>
>> Как правильно парсить его и добавлять в firewall чтобы они не
>> дублировались и тп?
>>
>> У меня лог растет 200кб/секунду...
>>
>> Может есть чем поделится?
>>
>>
>>
> #!/bin/bash
> FN=/root/ddos_ips
> FNNEW=/root/ddos_ipsnew
> /usr/bin/sort /var/log/nginx/ban|/usr/bin/uniq > $FNNEW
> IPS=$(<$FN)
> for i in `diff $FN $FNNEW|grep "^>"|cut -c 3-`;do
> echo $i >> /root/ddos.log
> /sbin/ipfw table 1 add $i
> echo $i >> $FN
> done
> /usr/bin/sort $FN > ${FN}2
> mv ${FN}2 $FN
>
> корявенько, но по крону раз в минуту с локом - и скорость роста лога
> резко уменьшится :)
>
>
>
У меня так, правда тоже корявенько, но работает ;)
### forming uniq ips
cat /var/db/ddosips|sort -u > /tmp/ddosisp; cat /tmp/ddosisp >
/var/db/ddosips;
/sbin/pfctl -T load -f /etc/pf.fw
Самое интересное, это как отделить айпишники ботов от нормальных
айпишников...
Немного кастальный способ, но тоже рабочий
# ip kotorye bolee 20 raz poluchili 503 er
cat /var/log/nginx/mydomian.log | grep 'GET \/ HTTP\/1.1 \"503\" '|awk
'{print $1}'|sort|uniq -c|sort -nr|awk '{ i
f ($1 >20) print $2}'>>/var/db/ddosips
+
block in quick on $ext_if proto tcp from <www-ddos2> to ($ext_if)
pass in quick on $ext_if proto tcp to {$me2} port {80,81,443} flags
S/SA keep state \
( max 200, max-src-nodes 20, max-src-states 20,
max-src-conn-rate 15/2, overload <www-ddos2> flush global)
В принципе такие вот поделки небольшие досы позволяют пережить....за
пару дней в блеклистах 40к ботов,
что, в прочем, тоже неплохо....
PS. может кто подскажет оптимальный алгоритм отделения ботов от
нормальныйх айпишек?
Таккже в варианте если запрашуются динамические страницы...?
--
Wbr, SK
More information about the nginx-ru
mailing list