В настоящее время я испытываю атаку отражения DNS на мой сервер. Я получаю огромное количество ответов через UDP с порта 53, которые мой сервер никогда не запрашивал:
02: 53: 57.626156 IP (tos 0x0, ttl 50, id 0, смещение 0, флаги [DF], протокол UDP (17), длина 267) REFLECTING.OPEN.DNS.SERVER.domain> mydomain.com.11803: 30781 - q: RRSIG? . 0/13/1 нс:. NS A.SOMENAMESERVER.NET.,. [| Домен]
02: 53: 57.626382 IP (tos 0x0, ttl 50, id 0, смещение 0, флаги [DF], протокол UDP (17), длина 267) REFLECTING.OPEN.DNS.SERVER.domain> mydomain.com.11803: 30781 - q: RRSIG? . 0/13/1 нс:. NS B.SOMENAMESERVER.NET.,. [| Домен]
02: 53: 57.627804 IP (tos 0x0, ttl 50, id 0, смещение 0, флаги [DF], протокол UDP (17), длина 267) REFLECTING.OPEN.DNS.SERVER.domain> mydomain.com.24188: 30781 - q: RRSIG? . 0/13/1 нс:. NS C.SOMENAMESERVER.NET.,. [| Домен]
Итак, контрмера, о которой я подумал, - это ограничение количества входящих пакетов с исходным портом 53. Не должно быть проблем с iptables, верно?
Итак, я собрал это вместе с моими небольшими навыками работы с iptables:
-A INPUT -s A.TRUSTED.NAMESERVER -j ACCEPT
-A ВВОД -s B.ДОВЕРЕННЫЙ.NAMESERVER -j ПРИНЯТЬ
-A ВВОД -s C.ДОВЕРЕННЫЙ.NAMESERVER -j ПРИНЯТЬ
-A INPUT -p udp -m udp --sport 53 -m limit --limit 10 / min -j LOG --log-prefix "53 DENY FROM:" --log-level 7
-A INPUT -p udp -m udp --sport 53 -m limit --limit 10 / min --limit-burst 20 -j ACCEPT
Регистрация атаки и разрыв ее, когда ее становится слишком много. Я бы не стал писать здесь, если бы получилось.
Что-то должно быть не так, и я не могу понять, что. Он регистрирует правильно, но не УДАЛЯЕТ никакие пакеты, даже если число> предела пакета.
Я очень благодарен за помощь.
Приветствует Марселя
Я не вижу DROP в ваших правилах. Возможно, вы хотите добавить
-A INPUT -p udp -m udp --sport 53 -j DROP
в конце ваших правил?
Если отраженные пакеты отправляются на закрытый порт UDP, то ядро на принимающей стороне будет генерировать сообщение об ошибке ICMP. Эта обработка довольно дешевая, поэтому время обработки, необходимое для обработки пакета UDP и отправки ошибки ICMP, вероятно, будет наименьшей из ваших проблем.
В некоторых сценариях пропускная способность восходящего потока, потребляемая ошибками ICMP, может быть реальной проблемой. В таких сценариях может потребоваться ограничение скорости ошибок ICMP.
Однако не рекомендуется молча отбрасывать все UDP-пакеты без отправки ошибки ICMP. Ошибки ICMP - это единственный сигнал владельцев задействованных DNS-серверов, который может сообщить им, что их DNS-сервер участвует в отражающей атаке. Другими словами, молча отбрасывая пакеты, вы скрываете атаку от тех самых людей, которые могли бы ее смягчить.
Технически возможно создать DNS-сервер с автоматическим подавлением атак отражения. Однако такое смягчение последствий должно полагаться на сообщения об ошибках ICMP. Если такие методы смягчения последствий получат широкое распространение, вы станете более легкой мишенью для DDoS-атаки, молча сбросив весь трафик атаки.
Если отраженные пакеты UDP будут поступать на открытый порт UDP, то обработка этих отраженных пакетов станет более затратной с точки зрения процессорного времени. В таких сценариях было бы целесообразно использовать правила iptables для ОТКЛОНЕНИЯ пакетов с исходным портом 53 или любыми другими, используемыми службами, часто используемыми в атаках отражения, и чей порт назначения совпадает с портом службы, которую вы запускаете. Я бы все равно не БРОСИЛ их, а лучше использовал REJECT
target вызвать ошибку ICMP, идентичную той, что наблюдается на закрытом порту.