Firewall do iptables com NAT

1

Aprendendo iptables para estudo, então nada muito crítico. Um firewall iptables deve ficar entre um roteador DHCP (internet) e uma LAN local com um PC cliente. O firewall permitirá a internet do cliente, mas irá bloquear o ftp e algumas outras portas, etc.

  • eth0 é para internet

  • eth1 é para a LAN (então, é claro, duas redes)

Estou trabalhando para entender melhor os comandos. Primeiro, usei as três linhas a seguir para permitir que iptables enviasse pacotes entre as duas redes. Esta abaixo parece funcionar e o PC cliente pode navegar na Internet agora. Não tenho certeza se foi a maneira mais elegante.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

A partir daqui não tenho certeza. Não muitos exemplos parecem usar o masquerade / NAT.

Fiquei com a impressão de que é melhor largar todos os pacotes e depois permitir o que é necessário especificamente. A ordem aparentemente importa.

Agora posso descartar todos os pacotes e depois permitir a porta 80? Como eu agora me aproximo para bloquear e permitir?

O baile de máscaras afeta como eu faço isso? Parece-me que todos os pacotes agora são encaminhados diretamente para outro cartão, então como posso dizer que somente a porta 80 é permitida?

Também não tenho certeza sobre entrada / saída (da perspectiva do cliente) em relação a quais portas. Permitir toda saída?

    
por tylerdurden 10.06.2017 / 04:47

1 resposta

1

Há algumas coisas que devem ser observadas aqui: a primeira é que, na prática, o NAT fornece um firewall que impede qualquer tráfego de entrada, EXCETO onde ele está associado ao tráfego de saída. Isso é o que você configurou acima. A primeira linha ativa a tradução de endereços, a segunda permite a entrada de pacotes associados aos de saída ea terceira linha permite a passagem de todos os pacotes de saída. OUTBOUND aqui significa tráfego da sua LAN para a INTERNET, INBOUND significa da INTERNET para sua LAN.

Se você quisesse apenas navegar na Web, há algumas maneiras de fazer isso. A primeira seria permitir somente solicitações de saída para a porta 80 (e aceitar as solicitações de entrada associadas). Você poderia fazer isso da seguinte maneira:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE    
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp -dport 80 -o eth0 -j ACCEPT
iptables -A FORWARD -j DROP

As duas primeiras regras são as mesmas, a terceira apenas permite que as solicitações da porta 80 saiam da rede e a quarta pode ou não ser necessária, dependendo de seus padrões - ela diz para descartar todos os outros tráfegos encaminhados.

Isso coloca alguns problemas em potencial. Para navegar em um site, você precisa fazer uma pesquisa de DNS para converter o nome de domínio em um endereço IP. Se o seu roteador está fornecendo DNS, então você está OK (as regras acima tratam apenas do tráfego que está sendo encaminhado através do roteador, não do tráfego originado ou terminado no roteador). Se você estiver usando servidores DNS externos, também precisará permitir o DNS. O DNS fala na porta TCP e UDP 53, então você precisa adicionar:

iptables -A FORWARD -i eth1 -p tcp --dport 53 -j ACCEPT 
iptables -A FORWARD -i eth1 -p ucp --dport 53 -j ACCEPT

Quando se trata de usar IPTABLES, você está certo que a ordem é importante. As regras são tratadas na ordem em que estão na tabela, portanto, se você tiver uma regra ACCEPT antes de uma regra DROP na qual as duas regras correspondam, o tráfego será processado. Você pode INSERIR regras no início de uma tabela usando iptables -I ou pode anexar regras ao final da tabela usando iptables -A .

Existem também vários caminhos, nem todos os pacotes passam por todos os caminhos. Isso pode ficar complexo, mas no caso simples acima você tem 3 caminhos para se preocupar: INPUT , OUTPUT e FORWARD . INPUT são solicitações destinadas ao roteador. OUTPUT são solicitações originadas no roteador. FORWARD são solicitações que entram e saem do roteador.

    
por 10.06.2017 / 05:04

Tags