vejamos essas duas regras do iptables que são frequentemente usadas para permitir o DNS de saída:
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535
-m state --state ESTABLISHED -j ACCEPT
Minha pergunta é: como exatamente devo entender o estado ESTABELECIDO no UDP? O UDP é sem estado.
Aqui está a minha intuição - eu gostaria de saber se ou onde isso está incorreto:
A página do manual me diz isso:
Estado
Este módulo, quando combinado com o rastreamento de conexão, permite o acesso ao estado de rastreamento de conexão para este pacote. --Estado ...
Portanto, o iptables basicamente lembra o número da porta que foi usada para o pacote de saída (o que mais ele poderia lembrar para um pacote UDP?) E , em seguida, permite o primeiro pacote recebido que é enviado de volta em um curto período de tempo? Um invasor teria que adivinhar o número da porta (isso seria realmente muito difícil?)
Sobre como evitar conflitos:
O kernel controla quais portas estão bloqueadas (por outros serviços ou por pacotes UDP de saída anteriores), para que essas portas não sejam usadas para novos pacotes DNS de saída dentro do prazo? (O que aconteceria se eu tentasse acidentalmente iniciar um serviço nessa porta dentro do prazo - essa tentativa seria negada / bloqueada?)
Encontre todos os erros no texto acima :-) Obrigado,
Chris
fonte
echo "net.netfilter.nf_conntrack_udp_timeout = 180" >> /etc/sysctl.conf
Nota: esta resposta foi editada.
Apesar do que as páginas de manual dizem,
ESTABLISHED
parece significar "stateful". Para UDP, isso significa simplesmente (como você sugere) lembrar cada pacote UDP de saída (a tupla "src ip, src port dst ip, dst port") por um tempo e reconhecer suas respostas.FWIW, minhas regras normais para o tráfego DNS seriam algo como isto:
ou seja, controlar o tráfego na
OUTPUT
cadeia e, em seguida, deixar que osiptables
módulos de estado tratem de tudo o mais naINPUT
cadeia.Veja também esta questão relacionada .
fonte
RELATED
pacotes UDP podem existir para o RTP.Os desenvolvedores do iptables consideraram que um estado "ESTABELECIDO" era a situação em que os pacotes eram vistos nas duas direções, independentemente do protocolo entre dois clientes.
a extensão do estado faz parte do conntrack. O kernel entende o estado da tabela
Exemplo de estados iptable para UDP na tabela nf_conntrack do ponto de vista do remetente. Vamos imaginar que você envie uma consulta DNS no UDP
Um pacote foi enviado. Não respondeu e, oh, a tabela possui os dados para o que é esperado em retorno (o pacote para a resposta DNS).
A resposta chegou, o sinalizador não respondido desapareceu, significa que essa conexão UDP está no estado ESTABELECIDO por um pequeno período de tempo definido em seu sistema.
fonte