Досилка

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