четверг, 22 мая 2014 г.

MikroTik. Борьба с DNS флудом.


Доброе время суток. Хочу поделиться своим опытом. Может быть кому нибудь будет полезным.


Началось всё с того, что позвонил пне представитель провайдера и сказал, что "С вашего IP валиться очень много очень много подозрительных пакетов. Проверьте - полезный ли это трафик."
Я полез смотреть...
Решил сначала глянуть, что валиться с внутреннего интерфейса на внешний.
Tools-Torch - в Interface выбираем интерфейс который у вас смотрит в локальную сеть и нажимаем Start.
В моём случае никакого подозрительного трафика я не обнаружил.

Решил посмотреть тем же методом, что твориться на внешнем интерфейсе.
Tools-Torch - в Interface выбираем интерфейс который у вас смотрит в интернет и нажимаем Start.

Тут я обнаружил, что много пакетов уходит на IP 72.131.89.46. Но не видно по какому порту.
Тогда в  Tools-Torch я поставил галочки Port и Protocol:









Теперь было отчётливо видно, что с моего внешнего IP уходят пакеты по 53 порту (DNS).

При этом загрузка процессора моего Mikrotik RB951G подпрыгивала до 90% (скриншоты с Mikrotik CCR1036-8g-2s+)

Написал правило, что бы дропалось всё что приходит на мой внешний IP.

 /ip firewall filter
add action=drop chain=input comment=smurf src-address=72.131.89.46



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





После прочтения нескольких статей я понял, что это не совершенное решение. Потому как мой DNS сервер открыт для интернета. Для закрытия доступа к нашему DNS серверу из внешки можно просто дропнуть всё, что приходит на dst-port 53, но это топорно и не интересно... По этому создаём два новых правила фильтра:

 /ip firewall filter
add action=add-src-to-address-list address-list="dns flood" \
    address-list-timeout=1h chain=input dst-port=53 in-interface=ether1 \
    protocol=udp
add action=drop chain=input dst-port=53 in-interface=ether1 protocol=udp \
    src-address-list="dns flood"

Где первое правило добавляет IP адрес с которого приходит пакет по 53 порту в Src.Adress List с именем dns flood на 1 час. Второе правило дропает пакеты приходящие по 53 порту с IP адресов входящие в группу dns flood.

После чего смотрим в Address List и видим там какие IP адреса нами подозреваются:













После этих действий загрузка процессора упала до 10%. Вроде бы как победил. Но мне было интересно, что же находиться в в приходящих пакетах. И я решил заснифить их. Для того-что бы заснифить пакеты по 53 порту у Mikrotik есть удобный инструмент.

Идём в:
Tools Packet Sniffer

Во вкладке General в поле File Name вводим название файла (какое вы хотите). Во вкладке Filter в поле Interfaces выбере ваш внешний интерфейс, а в поле Port введем 53. После чего нажимаем Start.


















После чего в Files появиться файл с заданным вами ранее именем. Его вы копируете к себе на компьютер и открываете любым анализатором трафика. Я открыл это файл с помощью Wireshark.

У меня получилось следующее:








Где фигурирует два адрес zing.zong.co.ua и magas.bslrpg.com. После чего я нагуглил вот это http://dnsamplificationattacks.blogspot.ru/2014_05_01_archive.html
И решил, что в свете последних событий в Украине ddos атаки актуальны.

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

Чем пользовался:
http://www.xakep.ru/magazine/xa/064/050/3.asp
http://forum.x-mu.net/topic18340.html
http://wiki.mikrotik.com/wiki/DoS_attack_protection
http://asp24.com.ua/blog/kak-vospoljzovatjsya-vozmozhnostyami-sniffera-v-mikrotik-routerboard