iptables+ipset

valsha
На сайте с 07.09.2008
Offline
107
3785

Добрый день.

Возможно найду тут помощь по такому вопросу.

Подскажите как правильно настроить правила для iptables+ipset для DDoS защиты.

Интересует именно сам процесс, построения таких павил и принцип добавления в blacklist ip адресов атакующих.

connlimit + iptables уже использовал и вменяемые примеры есть.

А вот по iptables+ipset мало что нашел.

Connlimit + iptables хорош для ограничения, а вот iptables+ipset хотелось бы использовать уже именно для блокировки ботов, что бы они уже не приходили на связку connlimit + iptables. Думаю понятно объяснил что я хочу :)

Спасибо.

N
На сайте с 06.05.2007
Offline
419
#1

К этому делу нужна еще какая-то программа-сенсор.

Проще всего вывод netstat парсить и считать число соединений.

тоньше и оперативнее - читать access.log с анализом url или tcpdump.

Кнопка вызова админа ()
zexis
На сайте с 09.08.2005
Offline
388
#2

Каким то анализатором логов фиксируете IP адреса ботов и заносите их в фаервол iptables

Как раз в этом месяце столкнулся с проблемой ддоса.

Написал на с++ программу, которая запускается по крону раз в минуту и анализирует лог файл апача access.log.

Находит в нем IP адреса ботов и заносит в iptables.

Атаку из 900 ботов с помощью этой программы заблокировал.

Если вас сейчас ддосят, то могу вам поставить и настроить мою программу.

Заодно программу еще раз бы протестировал.

Если надо пишите в личные сообщения.

M
На сайте с 16.09.2009
Offline
278
#3
valsha:

Подскажите как правильно настроить правила для iptables+ipset для DDoS защиты.
Интересует именно сам процесс, построения таких павил и принцип добавления в blacklist ip адресов атакующих.

если по синтаксису вопрос - все подробно в man iptables, man ipset написано.

как-то так:

-->8--

ipset -N ban iphash

ipset -A ban ip1

ipset -A ban ip2

...

iptables -A INPUT -m state --state NEW -m set --set ban src -j DROP

-->8--

сам процесс отлова нужных ip - творческий :D для небольшого DDoS, когда

защита на уровне сервера имеет смысл _в_принципе_ - фильтруют по критериям

на уровне вебсервера. сильно достающих "отправляем" на статику с какой-то

ошибкой (403 или 503). таких можно затем (опционально) забанить на файервол

по логам вебсервера.

банить сразу часто не выгодно - нарушится любимое многими

СНГ-датацентрами "соотношение трафика".

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
crosone
На сайте с 28.03.2008
Offline
73
#4

iptables --new-chain car

iptables --append car -m limit --limit 5/sec --jump RETURN

iptables --append car --jump DROP

cd /var/log/httpd/

touch a.sh

tail -n 1500000 access.log | grep 'GET / ' | cut -d ' ' -f 1 | sort -n | uniq -c | sort -n > stat.txt

touch a.php

<?PHP
$cont='';
$a=file('stat.txt');
foreach($a as $temp){
$temp = str_replace(array(" ", " ", " "), false, $temp);
$temp=explode(" ",trim($temp));
if($temp[0]>150){
$list = explode(".",$temp[1]);
$cont.='iptables -I INPUT -s '.$list[0].'.'.$list[1].'.0.0/16 -j DROP'."n";
}
}
$cont.='iptables-save > /etc/sysconfig/iptables';
$handle=fopen('ban.sh','w');
fwrite($handle,$cont);
fclose($handle);
?>

sh a.sh - получаем stat.txt (список конектов и адресов)

php a.php - получаем ban.sh (выбираем особо активных и пишем правила)

iptables -I INPUT -s 181.42.0.0/16 -j DROP
iptables -I INPUT -s 85.95.0.0/16 -j DROP
iptables -I INPUT -s 112.136.0.0/16 -j DROP
iptables -I INPUT -s 211.65.0.0/16 -j DROP
iptables-save > /etc/sysconfig/iptable

такого вида.

sh ban.sh

архивим и удоляем лог аксесса.

service iptables restart

apache restart

курим, ждем новых записей... чтобы не зафильтровать нормальных юзеров играемся с if($temp[0]>150), мне кажется 150 оптимальным.

zexisу респект за полную автоматизацию процесса (можно в личку увидеть сие произведение?), но руками работать тоже бывает интересно и делать все по очереди, особенно когда фильтруешь школьнигов :)

٩(๏̯͡๏)۶
valsha
На сайте с 07.09.2008
Offline
107
#5

Добрый день.

Спасибо всем за ваши советы/примеры, действительно много прояснилось.

valsha добавил 24.11.2009 в 14:27

zexis:
Каким то анализатором логов фиксируете IP адреса ботов и заносите их в фаервол iptables

Как раз в этом месяце столкнулся с проблемой ддоса.
Написал на с++ программу, которая запускается по крону раз в минуту и анализирует лог файл апача access.log.
Находит в нем IP адреса ботов и заносит в iptables.
Атаку из 900 ботов с помощью этой программы заблокировал.
Если вас сейчас ддосят, то могу вам поставить и настроить мою программу.
Заодно программу еще раз бы протестировал.
Если надо пишите в личные сообщения.

Вопрос такой.

У меня система работает таким образом:

1. выделенный сервер

2. на сервере установлен nginx, он работает как прокси и отправляет все запросы на другой выделеный сервер (веб сервер).

3. так же настройки у nginx, по ограничению:

limit_req_zone $binary_remote_addr zone=qglob:10m rate=3r/s;

limit_zone cglob $binary_remote_addr 10m;
и
limit_conn cglob 10;

4. на этом же сервере фаервол настроен с iptables +connlimit

5. то есть система примерно как и у систем очистки трафика, на мой веб сервер приходит уже "по идеи" уже чистый трафик.

Соответственно и вопрос.

Как вот ваша система будет анализировать лог файл nginx access.log и банить на фаерволе ботов (нормально ли будет все работать)?

Спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий