Назад | Перейти на главную страницу

Пропускать запросы на собственный адрес в DNSmasq

Отлаживая сервер 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

Это специально отбрасывает этот запрос.