Proibindo um intervalo de IP de sair para a Internet no Red Hat / CentOS Linux

4

Eu tenho uma VPN e meu servidor envia dados com freqüência para um endereço IP privado que roteia pela VPN. Quando o OpenVPN é estabelecido ou morre, ele habilita / desabilita as rotas.

Eu quero desviar nulo esse intervalo de IP privado da interface principal da Internet (eth0). Existe uma maneira fácil de fazer isso sem interferir nos comandos de rota provenientes do software VPN?

O Iptables não faz isso. Eu tentei

iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT

Mas o iptables não funciona ao especificar uma interface na cadeia de saída.

Alguém sabe se existe uma maneira de adicionar uma rota fictícia somente a uma interface específica (eth0), sem interferir em outras interfaces que possam estar usando essa rota?

Ps- Estou ciente de que 192.168.0.0/16 não é roteavel pela INTERNET, mas por razões de segurança, quero garantir que nenhum dado saia na rara chance de outro servidor local ou dispositivo de rede começar a escutar na sub-rede privada.

    
por Crash Override 03.08.2016 / 23:48

3 respostas

5

Sua especificação de interface na regra iptables é retroativa.

Você especificou:

iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT

Usar -i corresponde ao tráfego que insere o sistema na interface nomeada.

Em vez disso, você deseja corresponder o tráfego deixando o sistema na interface nomeada, o que é feito com -o .

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.0.0/16 -j REJECT

(E você provavelmente não quer -p tcp lá, senão o tráfego não-TCP pode passar.)

    
por 03.08.2016 / 23:54
2

Além da resposta de Michael, acho que deve-se bloquear o tráfego na cadeia FORWARD , já que a cadeia OUTPUT se aplica apenas aos pacotes gerados localmente e saindo do firewall. Até onde sei, isso não se aplica a pacotes roteados.

    
por 04.08.2016 / 03:32
2

Você já tem a resposta que precisava para fazer isso com o iptables.

Se você quiser fazer isso com rotas, uma boa maneira é ter uma rota para 192.168.0.0/16 e fazer com que seu servidor vpn lhe envie duas rotas que são um pouco mais específicas, no seu caso as duas rotas seriam 192.168.0.0/17 e 192.168.128.0/17

A rota / 16 seria corrigida e com roteamento nulo:

ip route add blackhole 192.168.0.0/16

E o seu servidor vpn (ou script vpn-up) irá fornecer-lhe os outros:

ip route add 192.168.0.0/17 via <VPNGW>
ip route add 192.168.128.0/17 via <VPNGW>

Isso é realmente o que a opção def1 no OpenVPN faz para substituir o gateway padrão sem mexer nas rotas existentes.

    
por 09.08.2016 / 01:50