Como Permitir o SMTP de saída no iptables Debian Linux

11

Se eu optar por permitir que todo o tráfego na cadeia de OUTPUT ( iptables -P OUTPUT ACCEPT ) envie corretamente. Assim que eu bloqueio meu servidor com essas regras, as mensagens de saída param de funcionar. Todo o resto funciona, o que é estranho.

Alguém vê alguma coisa aqui que impediria o envio do meu email de saída? Estou perplexo, olhei essas regras várias vezes e tentei várias versões diferentes.

 iptables -F
 iptables -P INPUT DROP
 iptables -P FORWARD DROP
 iptables -P OUTPUT DROP


 iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

 iptables -A INPUT  -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A INPUT  -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
 iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT

 iptables -A OUTPUT  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

 iptables -A OUTPUT  -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT  -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT

 iptables -A OUTPUT -p udp  --dport 53 -j ACCEPT
 iptables -A INPUT -p udp  --sport 53 -j ACCEPT

 iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
 iptables -A INPUT -p tcp --dport 443 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT


 iptables -N LOGGING
 iptables -A INPUT -j LOGGING
 iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
 iptables -A LOGGING -j DROP
    
por 916 Networks 13.12.2013 / 02:36

1 resposta

17

Você tem uma regra para liberar o tráfego, mas não tem uma regra para permitir o retorno do tráfego.

Suponho que você quis dizer que essas duas regras seriam -A INPUT :

iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT

No entanto, usar a porta de origem como um método de permitir o tráfego de retorno é uma maneira ruim de proteger o sistema. Tudo o que alguém precisa fazer é usar uma dessas portas de origem e o conjunto de regras do seu firewall se torna inútil.

Uma ideia muito melhor seria remover todas as regras de -A INPUT ... --sport e usar apenas essa regra única:

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

A maneira como essa regra funciona é que, quando o sistema faz uma conexão de saída, o kernel registra a conexão em uma tabela de rastreamento. Então, quando os pacotes do sistema remoto retornam, ele verifica se esses pacotes estão associados a alguma conexão na tabela de controle. O ESTABLISHED bit é o que permite o tráfego diretamente relacionado à sessão. Isso será pacotes TCP voltando no fluxo.
O RELATED bit permite o tráfego relacionado à conexão, mas não faz parte da conexão propriamente dita. Isso pode ser coisas como pacotes ICMP, como "ICMP não pode fragmentar". Esses pacotes não fazem parte do fluxo TCP, mas são de vital importância para manter o fluxo ativo (o que também é outra coisa que seu conjunto de regras não cobre, e sem o qual você verá problemas e perdas de conexão estranhos).

Esta regra também funciona para o tráfego UDP, mas como o UDP é sem estado, não é exatamente o mesmo. Em vez disso, o kernel precisa controlar os pacotes UDP que saem, e apenas assume que quando os pacotes UDP retornam na mesma combinação host / porta, e dentro de um curto período de tempo, eles estão relacionados.

    
por 13.12.2013 / 03:37