A saída iptables-save
mostra este bit de informações adicionais para a regra 3 não mostrada com iptables -L
:
A partir de iptables -L
output, pode-se pensar que o tráfego all é aceito:
ACCEPT all -- anywhere anywhere
mas iptables-save
mostra:
-A INPUT -i lo -j ACCEPT
, o que significa que iptables
de fato aceita todo o tráfego ... mas somente da interface de loopback ( lo
).
E esse é o motivo pelo qual o tráfego HTTP nunca chega ao servidor da Web: o único tráfego permitido é estabelecer conexões na regra 1, ICMP (por exemplo ping
) na regra 2: -A INPUT -p icmp -j ACCEPT
e SSH na regra 4: -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
.
Em seguida, tudo é rejeitado na regra 5: -A INPUT -j REJECT --reject-with icmp-host-prohibited
.
Ou seja, todo o tráfego HTTP é rejeitado antes mesmo de atingir a regra 6: -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Para corrigir , elimine a regra 6 ( -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
):
iptables -D INPUT 6
e insira-o (opção -I
) como regra 5:
iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
ou importe isto:
# Generated by iptables-save v1.4.6 on Thu Nov 8 16:46:28 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [40:5423]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -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 tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Nov 8 16:46:28 2012
salvando-o em um arquivo e executando iptables-restore < file
.
EDIT: O OP notou que as novas regras são perdidas após o reinício de iptables
.
Como explicado aqui: link , sempre que atualizarmos as regras, precisamos salvá-las. :
# /sbin/service iptables save
para tornar as alterações permanentes. Agora as regras modificadas serão carregadas por iptables
.