Имеют ли правила iptables контроль над пакетами сырых сокетов?

Имеют ли правила iptables контроль над пакетами сырых сокетов?

Программа, которую я использую, генерирует некоторые TCP-соединения, используя режим сырых пакетов. Допустим, я выполнил эти две команды:

/sbin/iptables -A INPUT -s 8.0.0.0/8 -j DROP
/sbin/iptables -A OUTPUT -d 8.0.0.0/8 -j DROP

Можно ли с уверенностью предположить, что в эту сеть не будут отправляться пакеты?

решение1

Похоже, что это, к сожалению, не работает. Вот как я проверял. Давайте используем два сервера - 1.1.1.1 и 2.2.2.2. 1.1.1.1 будет отправлять пакеты, 2.2.2.2 будет слушать.

Для начала настроим сниффинг на 2.2.2.2:

➜  ~ sudo tcpdump -vv 'src 1.1.1.1'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

Теперь давайте отправим пакет на порт 995 на этот IP:

$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1

Как и ожидалось, мы видим трафик с 1.1.1.1 на 2.2.2.2:

11:18:49.330632 IP (tos 0x0, ttl 250, id 54321, offset 0, flags [none], proto TCP (6), length 40)
    1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [S], cksum 0x5e8a (correct), seq 4248475135, win 65535, length 0
11:18:49.331688 IP (tos 0x0, ttl 59, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [R], cksum 0x5e87 (correct), seq 4248475136, win 0, length 0

Теперь попробуем заблокировать это на 1.1.1.1 и повторить проверку:

$ /sbin/iptables -A OUTPUT -d 2.2.2.2  -j DROP
$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1

К сожалению, мы видим больше данных tcpdump. Это означает, что это не сработало.

В конце концов я решил проблему на другом уровне, воспользовавшись функционалом брандмауэра моего облачного провайдера.

Связанный контент