Tenho certeza que isso é principalmente a minha má compreensão de como o iptables funciona, mas eu configurei algumas regras ...
-A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
E minha saída de iptables -L -n -v é:
Chain INPUT (policy ACCEPT 603K packets, 272M bytes)
pkts bytes target prot opt in out source destination
19382 1874K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED
1241K 205M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 628K packets, 120M bytes)
pkts bytes target prot opt in out source destination
22575 3769K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 state ESTABLISHED
1085K 888M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport sports 80,443 state ESTABLISHED
Infelizmente, com essa configuração, conexões como o FTP ainda podem se conectar. O que eu queria era que essas regras fossem as únicas opções disponíveis para conexão. Em outras palavras, basicamente negue qualquer coisa, exceto o acesso via SSH e portas comuns de servidores web.
Como eu modificaria minhas configurações para realizar esse tipo de configuração?