41

Я по ошибке настроил DNS-сервер с открытым разрешением, который вскоре был использован для множества DDoS-атак, происходящих где-то из / в России. По этой причине я полностью заблокировал порт 53 на обоих DNS-серверах для всех, кроме доверенных IP-адресов. Это работает, я больше не могу подключаться к ним, но мне кажется странным, что когда я запускаю tcpdump на eth1 (это интерфейс на сервере с общедоступным Интернетом), я вижу множество входящих пакетов от атакующего на порт 53.

Это нормально, что tcpdump отображает эти пакеты, даже если iptables их отбрасывает? Или я неправильно настроил iptables?

С другой стороны, я не вижу никаких исходящих пакетов с моего сервера, что я делал раньше, поэтому я предполагаю, что брандмауэр работает. Меня просто удивляет, что ядро не отбрасывает пакеты полностью? Или tcpdump подключен к ядру таким образом, что он видит пакеты еще до того, как они попадают в iptables?

1 ответ1

52

Это хороший вопрос.

В самом деле, ТСРйитр является первым программным обеспечением найден после того, как провода (и NIC, если вы будете) на пути IN, а последний на пути выхода.

Wire -> NIC -> tcpdump -> netfilter/iptables

iptables -> tcpdump -> NIC -> Wire

Таким образом он видит все пакеты, достигающие вашего интерфейса, и все пакеты, покидающие ваш интерфейс. Поскольку пакеты на порт 53 не получают ответа, как это видно из tcpdump, вы успешно убедились, что ваши правила iptables были правильно настроены.

РЕДАКТИРОВАТЬ

Возможно, я должен добавить несколько деталей. tcpdump основан на libpcap, библиотеке, которая создает сокет пакета. Когда в сетевой стек поступает обычный пакет, ядро сначала проверяет, есть ли сокет пакета, заинтересованный во вновь поступившем пакете, и, если он есть, пересылает пакет в этот сокет пакета. Если выбрана опция ETH_P_ALL, то все протоколы проходят через сокет пакета.

libpcap реализует один такой сокет пакета с активированной опцией, сохраняет копию для собственного использования и дублирует пакет обратно в сетевой стек, где он обрабатывается ядром обычным способом, включая его первую передачу в netfilter, ядро космический аналог iptables. То же самое, в обратном порядке (т. Е. Сначала сетевой фильтр, а затем последний проход через сокет пакета) при выходе.

Это склонно к взлому? Но конечно. Безусловно, существуют руткиты с проверкой концепции, использующие libpcap для перехвата сообщений, предназначенных для руткита, до того, как брандмауэр сможет на них положиться. Но даже это меркнет по сравнению с тем фактом, что простой запрос Google обнаруживает работающий код, скрывающий трафик даже из libpcap. Тем не менее, большинство специалистов считают, что преимущества отладки фильтров сетевых пакетов значительно перевешивают недостатки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .