Regra Iptables para loopback

5

Alguém pode explicar a seguinte regra para filtrar o tráfego para loopback interface?

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

A maneira como eu interpreto:

  1. aceite todos os pacotes recebidos para loopback .

  2. rejeite todos os pacotes recebidos de 127.x.x.x.x que não são para loopback .

Quais são os usos práticos para essas regras? No caso de 1, isso significa que todos os pacotes para loopback não precisam passar por filtragem adicional? É possível que um pacote de entrada para loopback seja de uma fonte externa?

    
por Joey 30.09.2017 / 17:20

2 respostas

4

O que as regras significam é exatamente o que você está descrevendo,

1) todos os pacotes acessados pela interface de loopback.
2) Nenhum pacote com o endereço de loopback aceito de outras fontes.

Isso não significa que os dados provenientes da interface de loopback precisam passar por filtragem adicional; o que isso significa é que a regra 2) está tentando evitar pacotes falsos / falsificados com o endereço de loopback vindo de outras interfaces.

    
por 30.09.2017 / 17:47
1

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:

  1. 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.

  1. 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

    
por 30.09.2017 / 18:37