Я использую tcpdump для захвата выходных пакетов для одного сервера, но мне также нужно заблокировать эти пакеты.
Если я использую iptables для их блокировки, то я тоже ничего не могу захватить.
Могу ли я блокировать пакеты с помощью iptables и при этом захватывать пакеты до того, как они будут отброшены?
Я бы использовал пассивный (неадресированный) интерфейс для захвата и второй (адресованный) интерфейс для блокировки.
Чтобы настроить интерфейс для захвата без адреса, необходимо: ifconfig eth0 up
Возможно, вам придется взломать свой коммутатор, чтобы все это заработало, но суть такова: зеркалируйте весь трафик на оба интерфейса (то есть порты коммутатора), а затем захватывайте на одном и фильтруйте на другом.
если я понимаю, вы хотите заблокировать соединение, но перехватить пакеты.
вы можете сделать это, используя МАРКИ
например, если вы хотите заблокировать соединение для хоста 192.168.10.1 с соединением 192.168.10.2 (* nix), вы можете сделать это
iptables -t mangle -A PREROUTING -s 192.168.10.1 -j CONNMARK --set-mark 1
iptables -t mangle -A POSTROUTING -m connmark --mark 1 -j DROP
Вы можете использовать довольно простой набор правил snort, чтобы "регистрировать" пакеты, а также отбрасывать или отклонять их: Фырканье. Однако есть несколько предварительных условий, и это еще один синтаксис, который нужно изучить, так что это накладные расходы. Snort :: Документы содержит краткие руководства для нескольких различных операционных систем.
Вы не можете блокировать пакеты на сыром сокете, потому что в настоящее время для него нет фильтра. Прежде всего, сырой сокет получает пакет, фактически даже копия пакетадо того, как IPv4 tap и iptables получат свои.