Uma regra iptables como essa funciona bem
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:156]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
A primeira regra DROP por padrão toda a conexão de entrada o segundo DROP por padrão todos os encaminhamento o terceiro ACEITO a saída, por que aceitar? Não é muito inseguro para fazer abrir as conexões de saída, feche ele pode tornar a configuração do firewall um pouco difícil.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Aceite a conexão com estado ESTADO RELACIONADO e estabelecido
o resto é fácil
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
aceita 22 tcp, aceita 587 tcp e proíbe todas as outras conexões, você pode salvar no arquivo e depois fazer
iptables-restore < firewall.file
E verifique com nmap -sS
seu host