На днях, мне позвонил знакомый с «конторы» где я когда то работал и попросил помощи.

Картина была следующая.
Интернет еле загружаеться внутри локалки, divert, который еще с тех времен — загружает процессор на 100%. Ну, подумал я и решил сразу же перейти на внутренний NAT ipfw. Но не тут то было, ситуация сразу же поменялась загрузкой процессора на 180% (процессор xeon 2 ядра) службой named. «Понятно….», сказал я протяженно и полез смотреть логи. И что же я увидел:

# tail -f /var/log/named/queries
05-Dec-2013 13:31:32.345 queries: info: client 66.130.97.63#47303 (a.packetdevil.com): query: a.packetdevil.com IN A +E (*.*.*.*)
05-Dec-2013 13:31:32.345 queries: info: client 66.130.97.59#28865 (a.packetdevil.com): query: a.packetdevil.com IN A +E (*.*.*.*)
........................................................
..................................................
...........................................

DDosят, сделал я вывод значит нужно сделать бота, который бы помог от этого дела отбиться.

Нусс, приступим. И понеслалсь, за минут 30 получилось вот такое дело:

Первое что было сделано — это обновлен Bind до 9.9.4 и добавлена секция:

rate-limit {
            responses-per-second 5;
            slip 1;
            min-table-size 5;
};

Но это не сильно помогло, нагрузка на процессор от nameda всё еще была 30-40%.

Далее, в существующий фаервол была добавлена строка:

${ipfw} add 2 deny all from "table(2)" to me 53 in via ${ext}
${ipfw} table 2 flush
${ipfw} table 2 add 66.130.97.63

В любимую директорию «scripts» был помещён вот такой маленький скриптик:

# cat /usr/local/etc/scripts/blocked_ip.sh
#!/bin/sh
#####
/usr/bin/tail -f /var/log/named/queries | /usr/bin/grep 'packetdevil.com' | /usr/bin/awk '{print $6}' | /usr/bin/sed -e '/#.*/s//\/24 /' | /usr/bin/awk '{ if ($1!="") {system("/sbin/ipfw table 2 add "$1"")} }' > /dev/null &

Сделал его автозапускаемым и после его запуска, спустя 1-2 минуты всё нормализовалось. В логах крагне редко стала появляться подобная запись:

# tail -f /var/log/named/queries
05-Dec-2013 13:31:32.345 queries: info: client 66.130.97.63#47303 (a.packetdevil.com): query:

Загрузка named составляет: 0.00% — 0.01%.
Вот так вот восторжествовала справедливость ;).

А я получил в качестве вознаграждения сникерс и баночку кофе с чаем.

Я надеюсь что кому то поможет данная статья..

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/2901


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

2 комментария

  1. SHADOW-13 @ 2014-02-10 17:16

    Добрый день. Подскажите пожалуйста, возможно ли (и как если да) реализовать аналогичную схему используя pf ?

  2. Уверен, что да. Но я с PF работаю не часто. А ковырять специально сейчас катастрофически не хватает свободного времени.
    Будет задача — буду решать 🙂

Add your comment now

Please note: JavaScript is required to post comments.