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.706 ]

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

Integrando Bind com Active Directory (AD)

Se o Linux fosse uma "marca"

Leitura recomendada

Endian Firewall - Solução completa para um servidor de internet

Como construir um firewall de baixo custo para sua empresa (parte 2)

Balanceamento de carga entre 2 placas de rede

Firewall bridge + iptables + layer7 + ipp2p

Instalando um firewall mínimo em Debian

  
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