
Quero configurar o firewall usando iptables.
O servidor está operando o serviço httpd (httpd) O sistema operacional é Centos7, e as informações abaixo são após instalar o iptables-services e iniciar o iptables sem modificar nada.
[root@iptables ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
COMO você pode ver, na cadeia INPUT, Linha num3, parece que qualquer servidor está aberto.
Mas o acesso à página web via navegador não está funcionando.
Há algo que eu preciso definir?
como saída de iptables-save
(retirado do comentário):
# Generated by iptables-save v1.4.21 on Thu Sep 16 13:41:53 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [527:50260]
-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 -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Sep 16 13:41:53 2021
Responder1
Como eu suspeitava, iptables -L
escondi o fósforo adicional, mas iptables-save
mostrei a verdade nua e crua. Sua regra nº 3 corresponde apenas a lo
- uma interface de loopback. Este firewall só aceita conexões externas com tcp/22 (SSH).
A resolução mais simples será:
iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT
Além disso, você pode filtrar com conntrack e combinar as duas regras em uma única com multiporta:
iptables -I INPUT 4 -m conntrack --ctstate NEW -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment "HTTP/HTTPS service"
Observe também o comentário que adicionei. Use comentários paracadaregra e algum dia depois você me agradecerá por este conselho, se o seu firewall crescer para dizer mais de 50 regras.
Não use -m state
. Isso está obsoleto. Ele realmente usa -m conntrack
os bastidores e é mais transparente escrevê-lo explicitamente.
Não use iptables -L
. Como você viu, seu resultado parece "mais bonito", e aqui acabam as vantagens, mas também não apresenta todos os detalhes necessários. A saída de iptables-save
parece menos bonita, mas mostra todos os detalhes mais sutis, então sempre use o último.