Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Досилка
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
|