[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Outras Dúvidas sobre Roteador com Iptables



Moksha.

São necessárias as duas coisas.

Quem realmente abre a porta é o programa servidor.
A regra de forward libera o tráfego passar, ou seja, atravessar o firewall que está no meio.
A regra de DNAT é necessária pois quem realmente está na internet é seu firewall.

Pra ficar mais claro. Caso o servidor com as portas abertas estivesse diretamente na internet, com uma interface de rede configurada com IP WAN e você estivesse fazendo as regras nele mesmo, não precisaria da regra de DNAT, bastaria uma regra de filter, nesse caso seria INPUT.

Outro exemplo. digamos que você tenha ssh nesse FIREWALL, e queria acessar de fora. Bastaria uma regra de INPUT e pronto, nada de NAT.

Sempre que tiver tráfego que atravesse o firewall com internet na jogada, vai precisar de DNAT ou SNAT dependendo da orientação do tráfego. Pelo menos enquanto estivermos usando ipv4 vai ser assim.

Você deve estar se perguntando, quando então vou usar forward sem uma regra de DNAT junto não é mesmo? Veja o que escrevi acima, precisa ser tráfego que atravesse o firewall E tenha internet. Pois ai estaríamos lidando com IPs públicos e privados juntos, por isso a necessidade de nat. Caso você por exemplo, vá liberar tráfego de sua LAN para sua DMZ, basta a regra de forward e habilitar o roteamento no kernel ( echo 1 > /proc/sys/net/ipv4/ip_forward ), não precisa de NAT.

Eden Caldas
Consultor de TI
eden@linuxfacil.srv.br
(81) 9747 4444
(81) 9653 7220
LINUX FÁCIL – Consultoria e Serviços em TI


Em 28 de abril de 2012 16:09, Moksha Tux <govatux@gmail.com> escreveu:
Nossa senhor Eden Caldas!

Muitíssimo obrigado por essa aula, sim o senhor está certo, seria para qualquer pessoa acessar esse servidor nas portas 80 e 3306 o meu medo seria que na minha especulação se eu não amarrasse origem e destino eu correria o risco de abrir todo o acesso da internet para essas portas indiscriminadamente mas agora pelo que entendi essas portas só serão abertas para o forward de pacotes para esse servidor. Agora... já que eu sou obrigado a abrir as portas pela regra de filtro então o senhor acha que seria obrigatório a declaração das portas na regra de redirecionamento e NAT?

Moksha 

Em 28 de abril de 2012 13:56, Eden Caldas <edencaldas@gmail.com> escreveu:

Complementando que esqueci. Sua segunda regra de forward não é necessária. E você não precisa especificar as interfaces de rede, porém é sempre bom especificar pra ficar mais amarrado.


Eden Caldas
Consultor de TI
eden@linuxfacil.srv.br
(81) 9747 4444
(81) 9653 7220
LINUX FÁCIL – Consultoria e Serviços em TI


Em 28 de abril de 2012 13:54, Eden Caldas <edencaldas@gmail.com> escreveu:

Moksha

A respeito dessa regra:

iptables -A FORWARD -p tcp -s 200.100.100.100 -d 172.100.100.100 -m multiport 80,3306 -J ACCEPT

Está quase certo.

Primeira, não deve ser usado aí o -s com o IP externo na sua regra de forward. O -s seria para tratar a origem do pacote e você está querendo que ele seja acessado por qualquer pessoa não é isso? Então basta omitir o -s ou colocar -s 0/0

Mais um exemplo disso que eu estou falando. Imagine que eu queira liberar o ssh numa máquina na minha rede apenas para uma certa filial da empresa cujo ip seja 200.200.200.200. Aí sim eu usaria o -s 200.200.200.200 na regra de foward. Se eu quiser que o acesso seja para qualquer IP, basta omitir.

Segundo, faltou completar o -m multiport. Precisa de --dports

Ficaria assim

iptables -A FORWARD -p tcp -d 172.100.100.100 -m multiport --dports 80,3306 -J ACCEPT

A propósito. Suas regras de DNAT estão corretas, porém lá também utilizam o módulo multiport porém com --dport, quando deveria ser --dports. É chatinho mesmo, mas só pra fixar:

-m multiport (singular)
--dports (plural)


Eden Caldas
Consultor de TI
eden@linuxfacil.srv.br
(81) 9747 4444
(81) 9653 7220
LINUX FÁCIL – Consultoria e Serviços em TI


Em 28 de abril de 2012 11:15, Moksha Tux <govatux@gmail.com> escreveu:

Boa noite e muito obrigado a Eden caldas, Júlio Henrique e André Luiz!

Sim a política padrão que estou adotando é DROP neste caso serei obrigado a criar uma regra na chain FORWARD liberando este acesso, mas eu gostaria de amarrar as portas a este acesso esmo se eu mais a frente tenha que abrir o porta 80 para outras servidores, será que a regra abaixo estaria coreta?


# Para liberar o WWW da DMZ para a WAN

iptables -t nat -A PREROUTING -p tcp -i $wan -d 200.100.100.100 -m multiport --dport 80,3306 -j DNAT --to-destination 172.100.100.100
iptables -t nat -A POSTROUTING -p tcp -s 172.100.100.100 -d 0/0 -m multiport --dport 80,3306 -o $dmz -j SNAT --to-source 200.100.100.100
iptables -A FORWARD -p tcp -s 200.100.100.100 -d 172.100.100.100 -m multiport 80,3306 -J ACCEPT
iptables -A FORWARD -p tcp -s 172.100.100.100 -d 0/0 -m multiport 80,3306 -J ACCEPT

E assim por diante, não sei se neste caso sou obrigado a identificar as interfaces nas regras de filtro, será que os senhores poderiam me informar se estaria certa essa minha especulação? Desde já obrigado,

Moksha

Em 27 de abril de 2012 22:07, Eden Caldas <edencaldas@gmail.com> escreveu:

Se a política padrão no seu script for DROP para as regras de forward, ou se tiver alguma regra bloqueando, sim, precisa liberar com uma regra de filter.

Eden Caldas
Consultor de TI
eden@linuxfacil.srv.br
(81) 9747 4444
(81) 9653 7220
LINUX FÁCIL – Consultoria e Serviços em TI


Em 27 de abril de 2012 18:34, Moksha Tux <govatux@gmail.com> escreveu:

Queridos amigos!

escrevendo o meu script de firewall me deparei com uma inquietante dúvida... Quando eu declaro uma regra de redirecionamento com DNAT e SNAT e especificando as portas somente isso já seria o suficiente para eu estabelecer a conexão ou eu sou obrigado a liberar esta conexão pelo filtro também? Ex:

# Para liberar o WWW da DMZ para a WAN

iptables -t nat -A PREROUTING -p tcp -i $wan -d 200.100.100.100 -m multiport --dport 80,3306 -j DNAT --to-destination 172.100.100.100
iptables -t nat -A POSTROUTING -p tcp -s 172.100.100.100 -d 0/0 -m multiport --dport 80,3306 -o $dmz -j SNAT --to-source 200.100.100.100

Será que eu também teria que criar uma regra na chain FORWARD liberando essa conexão? Abraços,

Moksha








Reply to: