Отлаживая сервер DNSmasq с использованием его журналов, я нахожу МНОГО:
dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP
Все законные запросы кажутся более конкретными, например:
dnsmasq: query[A] specificdomain.com from KNOWN-IP
РЕДАКТИРОВАТЬ: это НЕ предназначен как общедоступная служба DNS
Мы хотим создать DNS-фильтр из белого списка, он должен ТОЛЬКО ответ на список указанных доменов. Типичные атаки с усилением влияют только на наш сервер, ни на кого больше. Мы просто хотим, чтобы более чистый журнал работал лучше.
Предполагаемая операция:
Как мы можем этого добиться? Обрабатывать только те запросы, которые соответствуют нашему белому списку, все остальное отклонять.
. ANY
- это хорошо известный запрос, который запрашивает в кэше все типы записей, которые связаны с корневым узлом (AKA.) DNS. В больших объемах это, несомненно, показатель злонамеренного поведения. К сожалению, эти запросы почти наверняка являются UDP, а исходный IP-адрес является поддельным исходным адресом потерпевший.
Эта проблема должна быть решена путем определения того, почему злоумышленники могут делать эти запросы к вашему серверу, и не заблокировав сам запрос. Злоумышленники могут так же легко использовать любое количество запросов, которые, как известно, возвращают большие наборы результатов, некоторые из которых вообще не используют тип записи ЛЮБОЙ.
В большинстве случаев это индикатор того, что вы используете открытый резолвер. Вашим первым приоритетом должно быть подтверждение этого и устранение уязвимости системы безопасности. Если вы не являетесь открытым резолвером, значит, в вашей сети есть зараженное устройство. Это становится труднее отслеживать, поскольку вам нужно отслеживать MAC-адрес по одному переходу за раз до исходного устройства.
Хотя, как указал Эндрю, существует много проблем с безопасностью службы DNS в общедоступном IP-адресе, решением было следующее правило iptables:
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|0000ff|" --algo bm -j DROP
Это специально отбрасывает этот запрос.