Наши DNS-серверы W2K3, кажется, подвергаются какой-то атаке DOS, но я не могу найти никакого описания или обоснования атаки.
Три конкретных удаленных хоста бомбардируют два из трех наших DNS-серверов такими строками:
8937 891.093750 91.205.43.25 ns2.me.com DNS DNS: QueryId = 0xDA7C, QUERY (Standard query), Query for of type NS on class Internet
8938 891.218750 91.205.43.25 ns2.me.com DNS DNS: QueryId = 0xA504, QUERY (Standard query), Query for of type NS on class Internet
8939 891.219727 91.205.43.25 ns1.me.com DNS DNS: QueryId = 0x4E3F, QUERY (Standard query), Query for of type NS on class Internet
8940 891.370117 69.197.181.26 ns1.me.com DNS DNS: QueryId = 0xA8CC, QUERY (Standard query), Query for of type NS on class Internet
8941 891.372070 69.197.181.26 ns2.me.com DNS DNS: QueryId = 0xC808, QUERY (Standard query), Query for of type NS on class Internet
8942 891.476562 91.205.43.25 ns2.me.com DNS DNS: QueryId = 0xCC37, QUERY (Standard query), Query for of type NS on class Internet
8943 891.478516 91.205.43.25 ns1.me.com DNS DNS: QueryId = 0xEDEC, QUERY (Standard query), Query for of type NS on class Internet
Их было около 10 в секунду в течение нескольких дней. Каждый злоумышленник пробует оба атакованных сервера в быстрой последовательности, хотя они никогда не пробуют наш третий сервер.
Вот образец деталей каждого пакета:
Frame:
+ Ethernet: Etype = Internet IP (IPv4)
+ Ipv4: Next Protocol = UDP, Packet ID = 20114, Total IP Length = 45
+ Udp: SrcPort = 23909, DstPort = DNS(53), Length = 25
- Dns: QueryId = 0xEDEC, QUERY (Standard query), Query for of type NS on class Internet
QueryIdentifier: 60908 (0xEDEC)
- Flags: Query, Opcode - QUERY (Standard query), RD, Rcode - Success
QR: (0...............) Query
Opcode: (.0000...........) QUERY (Standard query) 0
AA: (.....0..........) Not authoritative
TC: (......0.........) Not truncated
RD: (.......1........) Recursion desired
RA: (........0.......) Recursive query support not available
Zero: (.........0......) 0
AuthenticatedData: (..........0.....) Not AuthenticatedData
CheckingDisabled: (...........0....) Not CheckingDisabled
Rcode: (............0000) Success 0
QuestionCount: 1 (0x1)
AnswerCount: 0 (0x0)
NameServerCount: 0 (0x0)
AdditionalCount: 0 (0x0)
- QRecord: of type NS on class Internet
QuestionName:
QuestionType: NS, Authoritative name server, 2(0x2)
QuestionClass: Internet, 1(0x1)
В настоящее время у нас настроен наш брандмауэр, чтобы просто отбрасывать запросы от трех злоумышленников, но если я разрешаю им пройти, наш сервер отвечает длинным ответом, в котором перечислены имена (но не адреса) всех корневых серверов подсказок, и, похоже, он делает это независимо от того, включена ли рекурсия.
Кто-нибудь знает, о чем это? Могу ли я остановить входящий трафик, или я все еще блокирую его на брандмауэре, пока им не надоест?
Спасибо за любую информацию,
Павел
Это может не быть DoS против вас - гораздо более вероятно, что ваши машины используются для отправки пакетов кому-то другому.
Это называется «атакой усиления». Они отправляют вам 25-байтовый DNS-запрос - вы отправляете обратно ~ 500 байтов корневых ссылок.
В этом случае исходные IP-адреса фактически подделаны, и они используют ваш большой ответ, чтобы усилить эффект их DoS против этих поддельных IP-адресов.
Отбрасывание пакетов на брандмауэре, вероятно, лучшее, что вы можете сделать на данный момент.
Однако реальным решением в долгосрочной перспективе является настройка вашего DNS-сервера для возврата REFUSED
код ответа для любого запроса, для которого сервер не является авторитетным. Если вы сделаете это, то ваш сервер больше не будет полезным инструментом для будущих атак на других людей.
Возможно, вторя Альнитак, Я не понимаю назначение ваших DNS-серверов.
Они публичные авторитетные серверы предоставляете информацию о ваших доменах? В таком случае нет необходимости отвечать ни на какие другие запросы, кроме тех, для которых они являются полномочными. 10 запросов в секунду - это не то, о чем вам следует беспокоиться, если вы все равно не отправляете ответы.
Это внутренний рекурсивный / кеширующий сервер, предоставляя услуги для внутренних пользователей? Если да, то должен быть view
это может match-clients
(в синтаксисе BIND) и не получать запросы из-за пределов вашей сети. Если он у вас уже есть и запросы поступают из контролируемых вами сегментов, что ж, выследите этих клиентов!
Вы не можете контролировать поведение других. Даже если вы исправите этот ответ на своем сервере, они могут решить пойти дальше и изменить свою атаку, вместо того, чтобы просто «скучать». Поскольку вы знаете, где они сейчас находятся, я думаю, что их полная блокировка на вашем брандмауэре, вероятно, является вашим лучшим и самым безопасным вариантом.
Тем не менее, вы также хотите исправить ответ своего сервера, чтобы защитить его от будущих атак или даже если ваши текущие злоумышленники просто переключают IP-адреса. Но кто-то другой может помочь с этой частью вопроса лучше меня.