Здравствуйте.
Исходя из статьи на habrahabr.ru об атаке DNS Amplification, там пишется: "Атака строится на отправке DNS запроса к какому либо DNS серверу с подставленным ip адресом источника, равным ip адресу жертвы."
Я не силен в сетевой части, на каком уровне происходит подмена IP адреса? Я не думаю, что это делается на сетевом уровне, в следствии этого мне представляется такая схемка:
1. Запрос от злоумышленника идет на 53 порт моего сервера, по правилам iptables срабатывает "--state NEW" для сервера злоумышленника, соединение принимается и передается на DNS сервис.
2. Далее DNS сервис разбирает полученные данные, "кушает" подставной IP (или я на этом этапе не прав?) и пытается отправить ответ на подставной сервер.
Собственно, исходя из этой схемы есть в iptables два правила:
-A INPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
Вследствие iptables разрешит принять запрос на 53 порт с сервера злоумышленника, а вот далее при отправке ответа на подставной сервер iptables сбросит ли соединение? Ответ ведь разрешен только на тот сервер, с которым установлено соединение.
Я понимаю, что для защиты от этого типа атаки необходимо запретить recursion и transfer в настройках BIND и обновить ПО до последних версий, а также обновить NTP до последней версии. Проблема в том, что это всё было выполнено на момент выполнения атаки.
Сейчас весь UDP трафик разрешен только до DNS от Google, до ограниченного числа NTP серверов. Остается правило, которое предоставлено выше. Можно ли его использовать как дополнительный вид защиты? Или оно не защитит от описанной схемы?