Доки, маны, напоминалки

основы iptables

Posted on Январь 28, 2011

Принцип работы

Брандмауэр (файрвол) предназначен для фильтрации и обработки пакетов, проходящих через сеть. Когда пакет прибывает, брандмауэр анализирует заголовки пакета и принимает решение, “выбросить” пакет (DROP), принять пакет (ACCEPT, пакет может пройти дальше) или сделать с ним что-то еще более сложное.

скрипт на bash против http флуда

Posted on Январь 10, 2011

скрипт на bash против http флуда контент-граберами, loic и прочей ересью.

Создаем в /root два файла:

1) ban.sh с правами 755:

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/etc/apf
LOG="/root/ban.log"
WHITE_IP="/root/white.IP"
LIMIT=$1
cp -f $WHITE_IP /tmp/~ban.white
echo $2 | tr ',' '\n' >> /tmp/~ban.white
netstat -nt | grep tcp | grep -v ffff | grep ":80" | awk {'print $5'} | cut -d: -f 1 | sort | uniq -c | sort -rk 1 > /tmp/~ban.con
for ip in `cat /tmp/~ban.con | awk '{print $2}'` ; do
if [ `grep "$ip" /tmp/~ban.con | awk '{print $1}'` "-gt" "$LIMIT" ]
then
if [ ! `grep $ip /tmp/~ban.white` ]    then
iptables -I INPUT -s $ip -j DROP
/etc/init.d/iptables save
echo "`date +%s` `grep $ip /tmp/~ban.con | awk '{print $1}'`        $ip" >> $LOG
echo "`date +%s` `grep $ip /tmp/~ban.con | awk '{print $1}'`        $ip"
fi
fi
done
rm -f /tmp/~ban.*

2) white.IP куда пишем 127.0.0.1 и адреса, которые не надо проверять. По одному в строку

Проверить, что iptables запущен и имеет цепочку INPUT:

iptables -nL

Если цепочку нету, то создаем:

iptables -N INPUT

Запуск кроном:

*/5 * * * *      sh /root/ban.sh 10

Каждые 5 минут проверка на не больше 10 коннектов

Посмотреть забаненые:

iptables -nL

Посмотреть количество текущих соединений с каждого IP можно командой:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Общее количество текущих подключений к серверу:

netstat -nt|grep ESTAB|wc -l