Restringindo a saída para permitir somente o host local usando iptables

1

Eu gostaria de restringir o tráfego de saída apenas para localhost usando iptables. Eu já tenho uma política DROP padrão em OUTPUT e uma regra REJEIÇÃO de todo o tráfego. Eu preciso adicionar uma regra acima na cadeia OUTPUT.

Eu já vi alguns exemplos diferentes para esse tipo de regra, sendo a mais comum:

-A OUTPUT -o lo -j ACCEPT

e

-A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

Existe algum motivo para usar o último em vez do primeiro? Os pacotes em lo podem ter um endereço diferente de 127.0.0.1?

    
por Dave Forgac 22.03.2012 / 17:29

3 respostas

2

Se a sua máquina tiver várias interfaces e você tentar se comunicar com o IP em uma dessas outras interfaces, o tráfego realmente ultrapassará a interface lo . O Linux é inteligente o suficiente para descobrir que esse tráfego é destinado a si mesmo e não tenta usar a interface real.

A regra -A OUTPUT -o lo -j ACCEPT permitirá esse outro tráfego, enquanto a regra -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT a rejeitará.

.

Você pode ver tudo o que o kernel irá rotear através da interface de loopback executando

ip route show type local table all

(apenas observe o primeiro valor, que é um IP ou uma rede / máscara)

    
por 24.03.2012 / 07:23
2

Sim, pode ter outros endereços. Você pode ver algo de 127.0.0.0/8 em uso. Em sistemas Debian / Ubuntu, os endereços no intervalo 127.0.0.0/8 são usados para lidar com um problema do Apache.

Outros endereços também podem ser atribuídos, mas isso é muito raro.

    
por 22.03.2012 / 17:36
0

I already have a default DROP policy on OUTPUT and a rule REJECTing all traffic

Isso não faz sentido; eles alcançam o mesmo fim. A política padrão para DROP é suficiente.

A regra que você está procurando provavelmente é

iptables -A OUTPUT -o lo -j ACCEPT

Mas um pouco mais de experiência com o iptables irá (esperançosamente) ensiná-lo a não fazer isso; use regras de entrada.

    
por 22.03.2012 / 17:34