O tcpdump ignora iptables?

39

Por engano, configurei o servidor DNS de resolução aberta, que foi logo usado para um monte de ataques DDoS originados em algum lugar de / para a rússia. Por essa razão, eu bloqueei completamente a porta 53 em ambos os servidores DNS para todos, exceto para os IPs confiáveis. Ele funciona, eu não consigo mais me conectar a eles, mas o que parece estranho para mim é que quando eu executo o tcpdump na eth1 (que é a interface no servidor com internet pública) eu vejo muitos pacotes de entrada do atacante para a porta 53.

É normal que o tcpdump exiba esses pacotes mesmo se o iptables os soltar? Ou eu configurei o iptables errado?

Por outro lado, não vejo nenhum pacote de saída do meu servidor, o que fiz antes, então suponho que o firewall esteja funcionando. Apenas me surpreende que o kernel não elimine totalmente os pacotes? Ou é tcpdump ligado ao kernel de uma forma que ele vê os pacotes antes mesmo de chegar ao iptables?

    
por Petr 08.06.2015 / 17:05

1 resposta

49

Esta é uma boa pergunta.

Na verdade, tcpdump é o primeiro software encontrado depois do fio (e do NIC, se você quiser) no caminho IN , e o último no caminho OUT .

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

iptables -> tcpdump -> NIC -> Wire

Assim, todos os pacotes chegam à sua interface e todos os pacotes saem da sua interface. Como os pacotes para a porta 53 não recebem uma resposta, como visto pelo tcpdump, você verificou com sucesso que as regras do iptables foram configuradas corretamente.

EDITAR

Talvez eu deva adicionar alguns detalhes. O tcpdump é baseado em libpcap , uma biblioteca que cria um socket de pacote . Quando um pacote normal é recebido na pilha de rede, o kernel primeiro verifica se existe um soquete de pacote interessado no pacote recém-chegado e, se houver, encaminha o pacote para esse pacote soquete. Se a opção ETH_P_ALL for escolhida, então os protocolos all passarão pelo soquete do pacote.

libpcap implementa um tal soquete de pacote com a opção ativada, mantém uma cópia para uso próprio e duplica o pacote de volta para a pilha de rede, onde é processado pelo kernel da maneira usual , incluindo passar primeiro para netfilter , a contraparte do espaço do kernel de iptables . A mesma coisa, na ordem inversa ( isto é, , primeiro netfilter, depois a passagem pelo soquete do pacote), na saída.

Isso é propenso a hackers? Mas é claro. Certamente, existem rootkits à prova de conceito usando o libpcap para interceptar as comunicações destinadas ao rootkit anterior ao qual o firewall pode colocar suas mãos sobre eles. Mas até isso é insignificante em comparação com o fato de que uma simples consulta do Google descobre o código working ocultando o tráfego mesmo de libpcap . Ainda assim, a maioria dos profissionais acha que as vantagens superam largamente as desvantagens, na depuração de filtros de pacotes de rede.

    
por 08.06.2015 / 19:00