As regras do iptables têm controle sobre pacotes de soquete brutos?

As regras do iptables têm controle sobre pacotes de soquete brutos?

Um programa que uso gera algumas conexões TCP usando o modo de pacotes brutos. Digamos que eu executei esses dois comandos:

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

É seguro presumir que nenhum pacote será enviado para essa rede?

Responder1

Parece que infelizmente não funciona. Veja como eu verifiquei. Vamos usar dois servidores - 1.1.1.1 e 2.2.2.2. 1.1.1.1 irá enviar pacotes, 2.2.2.2 irá escutar.

Primeiro, vamos configurar o sniffing no 2.2.2.2:

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

Agora, vamos enviar um pacote pela porta 995 para esse IP:

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

Como esperado, estamos vendo tráfego da versão 1.1.1.1 para a versão 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

Agora, vamos tentar bloquear isso em 1.1.1.1 e repetir a investigação:

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

Infelizmente, estamos vendo mais alguns dados do tcpdump. Isso significa que não funcionou.

Acabei resolvendo o problema em uma camada diferente, usando a funcionalidade de firewall do meu provedor de nuvem.

informação relacionada