A primeira regra é necessária para aceitar todo o tráfego que chega à interface de loopback (tráfego de outro host - LAN ou internet - chega à NIC física real)
Mas! Suas regras não estão completas. Se você tiver a política de saída padrão, solte tudo:
iptables -P OUTPUT DROP
Sua interface de loopback pode aceitar tráfego, mas seu sistema não pode enviar tráfego de loopback porque a política de saída não permite isso.
Por causa disso, você precisa definir a política de saída:
iptables -P OUTPUT ACCEPT
Ou defina apenas a regra para a interface de loopback:
iptables -A OUTPUT -o lo -j ACCEPT
A segunda regra é necessária para descartar pacotes que não sejam interfaces de loopback (por exemplo, da interface LAN ou da Internet) e que possuam endereço de origem como loopback. Esta é uma proteção anti-falsificação.
Se o seu host tiver interfaces diretamente conectadas à internet, você poderá adicionar regras que impedem o recebimento de pacotes com endereços de origem privados para essas interfaces.
Exemplo para 192.168.0.0/16
network:
iptables -A INPUT -s 192.168.0.0/16 -j DROP
Respostas para suas perguntas adicionais:
- No artigo em www.linode.com há um capítulo Veja suas regras atuais do iptables . Neste capítulo diz:
This means that all incoming, forwarded and outgoing traffic is
allowed. It’s important to limit inbound and forwarded traffic to only
what’s necessary.
Ok. Por padrão, permitimos todo o tráfego (saída, entrada, encaminhamento). Mas e se o seu sistema não usar regras padrão? E se você foi alterado as regras padrão e esquecer isso? Por isso é recomendado para configurar regras padrão em cada script do iptables:
iptables -P OUTPUT ACCEPT
De acordo com a prática recomendada do iptables, é recomendado configurar a política padrão para ACCEPT all e negar (se necessário) todo o tráfego na última regra.
- Sim. Isso é exatamente o que eu disse. No script deste artigo, é usada a política padrão para rejeitar todo o tráfego:
# then reject them.
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT