No meu VPS (CentOS 7), o iptables padrão é:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Não consigo visitar meu site configurado usando Apache/2.4.6, o navegador exibe: "A conexão foi redefinida".
Se eu inserir uma regra para aceitar conexão tcp na porta 80 no iptables usando "iptables -I INPUT -p tcp --dport=80 -j ACCEPT", está tudo ok, o site pode ser visitado sem problemas. O iptables é:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Eu me pergunto por que eu deveria adicionar a regra porque no iptables antigo, a terceira regra é "ACCEPT all -- 0.0.0.0/0 0.0.0.0/0", o que significa que ele aceitará todas as conexões para todas as portas. Eu entendi errado alguma coisa?
Sim, você perdeu um detalhe importante. Mas não é sua culpa; isso é muito mal documentado e aparentemente não é bem conhecido.
O
iptables
comando tem uma falha de design significativa: na verdade, ele não exibe a regra de firewall completa, a menos que você use a-v
opção de linha de comando.Se você repetir o comando iptables e adicionar
-v
, verá que essa regra aceita todo o tráfego na interface chamadalo
, ou seja, todo o tráfego localhost.Como
iptables
agora está obsoleto, e a falha existe basicamente desde sempre, é improvável que isso seja alterado.