Você sente falta de algo como:
iptables -A INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
iptables -A OUTPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
para continuar aceitando pacotes após a conexão ser estabelecida. Quando isso acontece, a conexão é movida no lado do servidor para alguma porta aleatória > 1024, é por isso que aceitar pacotes nas portas 22 e 3389 não é suficiente.
Para permitir pesquisas de DNS:
iptables -A INPUT --proto udp --sport 53 --jump ACCEPT
iptables -A OUTPUT --proto udp --dport 53 --jump ACCEPT
iptables -A OUTPUT --proto tcp --dport 53 --jump ACCEPT
Para definir a regra para várias portas de uma vez (então --sports
ou --dports
) você precisa habilitar multiport
module. Caso contrário, o iptables irá reclamar sobre a opção desconhecida "--dports" . Então, para permitir conexões de entrada SSH e RDP em uma linha:
iptables -A INPUT --proto tcp -m multiport --dports 22,3389 --jump ACCEPT
Além disso, desde que você defina a política padrão como DROP, você não precisa das últimas duas linhas, nas quais também define DROP para conexões de entrada / saída. Eu entendo que eles fazem você se sentir mais seguro, mas é como configurar o hostname, e também o cron job para configurá-lo apenas no caso de cada minuto. Na verdade, isso pode levar a problemas no futuro, quando você esquecer essas duas linhas e acrescentar algumas outras regras, e ficará perplexo por que elas não funcionam.