Abrindo "passagem" para clientes de correio

Este artigo é uma complementação a uma resposta que postei numa lista de discussão (Squid-br). Trata-se das configurações necessárias no iptables para que um cliente de correio (por exemplo, o Outlook), funcionando dentro de uma rede com IPs inválidos, se comunique com um provedor/servidor na Internet.

[ Hits: 23.417 ]

Por: Edson G. de Lima em 14/04/2005


Regras necessárias no iptables



Vamos imaginar o seguinte cenário (nosso proxy é Squid e nosso firewall é iptables, ambos rodando na mesma máquina:
  • Uma rede com IPs inválidos --- FW-Proxy --- Internet;
  • Diretor (também com IP inválido, mas com privilégios!) -- FW-Proxy -- Internet.

Vamos (ufa, finalmente!) às regras para a situação mais comum. Toda a rede poderá enviar e receber e-mail para qualquer domínio da Internet:

1- Permitir que as respostas às conexões iniciadas por nossa rede sejam aceitas:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

2 - Permitir que nossa rede faça consultas a DNS:

iptables -A FORWARD -p UDP -s $REDE --dport 53 -j ACCEPT

3 - Vamos deixar todas as solicitações da nossa rede com destino a porta 110, para baixarem e-mail de qualquer lugar:

iptables -A FORWARD -p tcp -s $REDE --dport 110 -j ACCEPT

4 - Vamos, também, deixar nossa rede enviar e-mail; para este caso nossa rede precisará se conectar a um Servidor SMTP:

iptables -A FORWARD -p tcp -s $REDE --dport 25 -j ACCEPT

Estas conexões precisam de um IP válido. Só que não é seguro deixar o POSTROUTING liberado para tudo que sai pela nossa eth_ext. Neste caso, iremos fazê-lo apenas para o que é realmente necessário:

iptables -t nat -A POSTROUTING -p UDP -s $REDE --dport 53 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE --dport 25 -j SNAT --to IP_placa_ligada_ao_modem


Se você não sabe o IP de sua placa ligada ao modem, use -j MASQUERADE.

Vamos imaginar agora, o seguinte:
  • Toda a nossa rede poderá receber e enviar e-mail APENAS para a matriz, PORÉM o diretor poderá receber e enviar para qualquer lugar:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p UDP -s $REDE --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -s $REDE -d www.matriz.com.br --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s $REDE -d www.matriz.com.br --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s $IP_DIRETOR --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s $IP_DIRETOR --dport 25 -j ACCEPT


Até agora fizemos o FORWARD, só que como os IPs de nossa rede são inválidos, precisamos fazer NAT, entretanto não faremos NAT para todas as saídas, porque senão o proxy vai virar água... faremos NAT apenas para o que é necessário (vamos pegar os exemplos que estão logo acima):

iptables -t nat -A POSTROUTING -p UDP -s $REDE --dport 53 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE -d www.matriz.com.br --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE -d www.matriz.com.br --dport 25 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $IP_DIRETOR --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $IP_DIRETOR -d www.matriz.com.br --dport 25 -j SNAT --to IP_placa_ligada_ao_modem


Se você usa pppoe, coloque -j MASQUERADE.

Xxoin
Página anterior    

Páginas do artigo
   1. Introdução
   2. Um resumo de como funciona um cliente de correio
   3. Regras necessárias no iptables
Outros artigos deste autor

Se o Linux fosse uma "marca"

Integrando Bind com Active Directory (AD)

Leitura recomendada

Balanceamento de carga entre 2 placas de rede

Firewall profissional

Firewall admin: administração do iptables

Firewall Linux - Roteamento avançado usando iproute2 e iptables (load balance)

Zentyal 2.0 - Solução completa de segurança open source

  
Comentários
[1] Comentário enviado por Oni em 15/04/2005 - 15:33h

muito bom esse eseu artiigo.....e é bom saber que tem um conterraneo meu aki no site.....Parabens.

[2] Comentário enviado por naoexistemais em 15/04/2005 - 23:00h

Parabens pelo artigo é bem didático, simples e objetivo.

Tomara que veremos mais artigos de sua autoria...

Falou,

[3] Comentário enviado por brunolimaq em 02/12/2005 - 09:39h

SO uma dúvida no final quando vc diz :

Se você usa pppoe, coloque -j MASQUERADE.


É para Adcionar a regra no final, ou substituilá?

Obrigado! :D

[4] Comentário enviado por Xxoin em 02/12/2005 - 11:01h

Boa pergunta!!

Substituir!
Ficando: onde se lê "-j SNAT --to..." leia-se "-j MASQUERADE"


Abraços.

[5] Comentário enviado por nilton1 em 31/01/2006 - 09:48h

ola bom dia .
Eu estou utilizar o ipcop numa maquina que tem 2 placas de rede um para rede interna e outra para rede externa.entao o que esta acontecer é que o ipcop permite dentro da rede interna enviar msn somente de http por exemplo nao deixa enviar como smtp.
e no FIRRWALL no rederecionamento de portos esta pedir ip de origem e ip de destino.
quais sao esses ip.
obrigado.

[6] Comentário enviado por aprendiz_ce em 15/12/2006 - 13:47h

Show de bola!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts