IPTables e SNAT para apenas duas portas

1

Desejo configurar algumas políticas de NAT para que determinadas máquinas tenham acesso somente a http / https. Eles não devem poder fazer varreduras de porta ou qualquer outra coisa de sua máquina.

Atualmente, minhas regras de NAT são:

-A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 10.10.1.10
-A POSTROUTING -s 10.10.1.10 -j SNAT --to-source 1.2.3.4

E eu tenho essa regra compartilhada:

-A POSTROUTING -o eth0 -j MASQUERADE

1.2.3.4 é um IP público e 10.10.1.10 é um IP interno.

Isso permite todo o acesso de entrada e saída ao NAT diretamente.

Eu tentei a seguinte regra POSTROUTING em vez da acima:

-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80

No entanto, isso não parece funcionar. Depois de adicionar essa regra, eu ainda poderia usar o RDP da estação de trabalho.

Para recapitular, meu objetivo é permitir que determinadas estações de trabalho tenham apenas acesso http / https à Internet. Todo o outro tráfego de saída deve ser bloqueado. Todo o tráfego deve ser permitido. Eu quero que todas as outras estações de trabalho na rede usem a política de NAT existente para permitir que todo o tráfego de saída seja NAT.

Atualizar Com base na resposta do @ Zoredache, agora tenho as seguintes regras de pós-graduação.

-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 443 -j SNAT --to-source 1.2.3.4:443
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 53 -j SNAT --to-source 1.2.3.4:53
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m udp --dport 53 -j SNAT --to-source 1.2.3.4:53
-A POSTROUTING -s 10.10.1.10/32 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Eles ainda não funcionam, mas estão chegando perto. Mais na minha resposta para @Zoredache abaixo.

    
por Scott Forsyth - MVP 23.01.2014 / 06:01

1 resposta

5

A chave para o iptables é o primeiro jogo.

Supondo que a máquina cliente é 10.10.1.10 , você só precisa observar essas regras na ordem. Se a primeira regra não corresponder, a regra MASQ será correspondida.

-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -o eth0 -j MASQUERADE

Se você adicionar outra regra antes que a regra final MASQUERADE faça com que o NAT não aconteça. Já que os pacotes de 10.10.1.10 não serão destinados a tcp / 80 ou tcp / 443 irão corresponder à regra ACCEPT, significando que eles não serão traduzidos pelas regras SNAT / MASQ.

-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -s 10.10.1.10 -p tcp --dport 443-j SNAT --to-source 1.2.3.4:443
-A POSTROUTING -s 10.10.1.10 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
    
por 23.01.2014 / 07:13

Tags