Чи tcpdump обходить iptables?


48

Я помилково налаштував відкритий DNS-сервер, який невдовзі використовувався для купівлі DDOS-атак, що походять десь з / у Росію. З цієї причини я повністю заблокував порт 53 на обох серверах DNS для всіх, крім надійних IP-адрес. Це працює, я більше не в змозі підключитися до них, але те, що мені здається дивним, це те, що коли я запускаю tcpdump на eth1 (це інтерфейс на сервері з публічним Інтернетом), я бачу безліч вхідних пакетів від атакуючого до порту 53.

Чи нормально, що tcpdump відображає ці пакети, навіть якщо iptables скидає їх? Або я неправильно налаштував iptables?

З іншого боку, я не бачу жодних вихідних пакетів з мого сервера, що я робив раніше, тому я вважаю, що брандмауер працює на зразок. Мене просто дивує, що ядро ​​не скидає пакети повністю? Або tcpdumpпідключено до ядра таким чином, що воно бачить пакети ще до того, як вони дістаються до iptables?

Відповіді:


61

Це приємне запитання.

Насправді, tcpdump - це перше програмне забезпечення, знайдене після дроту (і NIC, якщо ви хочете) на шляху IN , а останнє - у вихід .

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

iptables -> tcpdump -> NIC -> Wire

Таким чином, він бачить, що всі пакети доходять до вашого інтерфейсу, а всі пакети залишають ваш інтерфейс. Оскільки пакети до порту 53 не отримують відповіді, як це бачить tcpdump, ви успішно перевірили, що ваші правила iptables були правильно налаштовані.

EDIT

Можливо, я повинен додати кілька деталей. tcpdump заснований на libpcap , бібліотеці, яка створює сокет пакету . Коли в мережевий стек надходить звичайний пакет, ядро спочатку перевіряє, чи є пакет пакетів, зацікавлених у новоприбутому пакеті, і, якщо він є, він пересилає пакет до цього пакету пакетів. Якщо обрана опція ETH_P_ALL , то всі протоколи йдуть через сокет.

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

Це схильне до злому? Але, звичайно. Звичайно, існують руткіти з підтвердженою концепцією, які використовують libpcap для перехоплення комунікацій, призначених для rootkit, перш ніж брандмауер може покласти руку на них. Але навіть це зменшується порівняно з тим, що простий запит Google розкопує робочий код, приховуючи трафік навіть від libpcap . Тим не менш, більшість професіоналів вважають, що переваги значно перевищують недоліки в налагодженні мережевих пакетних фільтрів.


Чи є спосіб його відобразити, щоб я міг бачити, які пакети були дозволені, а які відкинуті?
Петро

2
@Petr ви можете записати пакети, які випали iptables, thegeekstuff.com/2012/08/iptables-log-packets
MariusMatutiae
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.