iptables
processa pacotes de acordo com todas as regras em ordem. Você está anexando a regra para aceitar o tráfego HTTP após a regra que rejeita todo o tráfego:
Chain INPUT (policy ACCEPT)
target prot opt source destination
...
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Se um pacote não corresponder a nenhuma das regras de e-mail, ele acaba aqui. Se for uma nova conexão TCP para SSH, ela corresponderá à primeira regra. Se não for (por exemplo, se for um pacote HTTP), prossegue para a próxima regra que rejeita qualquer tráfego que não tenha sido correspondido até este ponto. Por causa disso, a última regra nunca será correspondida, porque qualquer novo tráfego HTTP já terá sido rejeitado pela regra anterior.
Não tenho certeza de como o Oracle Linux recomenda que você configure suas regras de firewall (o Ubuntu, por exemplo, incentiva o uso de ufw
). Uma coisa simples é inserir a regra HTTP antes do REJECT
( iptables -I INPUT $INDEX
, em que $INDEX
é o índice da regra REJECT
). Outro, que está mais no "espírito" de iptables
, é remover a regra REJECT
explícita e alterar a política padrão para REJECT
. Isso faz com que a rejeição de pacotes seja feita implicitamente para qualquer pacote que não tenha sido combinado com uma regra, então você pode simplesmente anexar ACCEPT
s ao final e não se preocupar em colocá-los antes do explícito REJECT
.