iptables nat apenas a porta 25?

4

estou tentando configurar um firewall. Tem que interfaces de rede, eth0 (lan) e eth1 (wan).

allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.2.2
gateway 192.168.2.1
netmask 255.255.255.0

allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255

Por trás da eth1 é um roteador que me fornece um ip dinâmico.

Eu sou a mesma máquina, existe um web-proxy. Na verdade, o computador na lan só pode acessar a web usando o proxy. Agora, preciso de máquinas na lan para acessar servidores SMTP e POP3 pela Internet. Então, eu preciso NAT, mas apenas para a porta 25 e 110. Eu não quero nat outros portos.

Você pode me ajudar a configurar o iptables passo a passo (estou realmente no no iptables)?

Atenciosamente

    
por Liam 30.09.2011 / 00:10

3 respostas

4

O código abaixo fará o trabalho. O Iptables é fácil o suficiente para trabalhar - você só precisa ser explícito sobre como informar o que fazer com o tráfego proveniente ou que vai para locais específicos em portas específicas. Embora você tenha solicitado apenas as portas 25 e 110, incluí também opções para SMTP seguro e POP3 seguro.

O que eu recomendo abaixo leva em conta as regras de firewall que você tem em vigor e coloca as regras que você solicitou mais altas na ordem de processamento do que qualquer outra coisa. O Iptables processa as regras na ordem em que elas correspondem a elas, portanto, caso você já tenha outras regras no firewall que possam bloquear o SMTP ou o POP3, usei o comando insert e especifiquei as regras que devem ser colocadas no topo da lista. Se você não tiver outras regras de firewall, poderá substituir "-I" por "-A" e soltar os números de linha após as tabelas "FORWARD" e "POSTROUTING".

Eu recomendo implementar o rastreamento de conexão sempre que puder e a primeira regra de iptables abaixo ativar isso. Se você está rodando em um kernel realmente antigo, então você pode ter problemas com esses comandos, mas se eles funcionam para você, então ótimo. Se não o fizerem, abandone a primeira linha e solte a porção "-m tcp" de todas as outras linhas.

#Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#Turn on connection tracking
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#Allow SMTP traffic out to the internet. This includes regular and authenticated SMTP
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 465 -j ACCEPT
iptables -I FORWARD 3 -i eth1 -p tcp -m tcp --dport 587 -j ACCEPT

#Allow POP3 traffic out to the internet. This includes regular and SSL secured POP3
iptables -I FORWARD 4 -i eth1 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -I FORWARD 5 -i eth1 -p tcp -m tcp --dport 995 -j ACCEPT

#NAT the traffic leaving your router for the allowed forwarded ports above
iptables -t nat -I POSTROUTING 1 -o eth0 -p tcp --dport 25 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -o eth0 -p tcp --dport 465 -j MASQUERADE
iptables -t nat -I POSTROUTING 3 -o eth0 -p tcp --dport 587 -j MASQUERADE
iptables -t nat -I POSTROUTING 4 -o eth0 -p tcp --dport 110 -j MASQUERADE
iptables -t nat -I POSTROUTING 5 -o eth0 -p tcp --dport 995 -j MASQUERADE

#Optionally, block any other forwarded traffic
iptables -I FORWARD 6 -i eth1 -j REJECT
    
por 30.09.2011 / 04:28
1

Easy squeeze limão:

iptables -t nat -A POSTROUTANDO -p TCP --dport 25-j MASCARADA

iptables -t nat -A POSTROUTING -p TCP --dportar 110-j MASCARADA

:)

    
por 09.12.2011 / 17:47
0

Primeiras coisas primeiro:

allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255

Está errado (ou um erro de digitação;)). broadcast deve ser 192.168.16.255 .

Considerando que todo computador tem como gateway padrão esta caixa linux ( 192.168.16.6 ), é apenas uma questão de configurar o encaminhamento de ip:

 # Enable ip forward:
 echo 1 > /proc/sys/net/ipv4/ip_forward
 # The same cam be achieved by:
 #  sysctl -w net.ipv4.ip_forward=1

 # Forwarding traffic between interfaces:
 iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 25 -j ACCEPT
 iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 110 -j ACCEPT
 # This rule prevents other traffic to be dropped
 iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -j DROP

 # Masquerade traffic to the outside world:
 # If the public ip is a dynamic one use MASQUERADE
 iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j MASQUERADE

 # If the public ip is a static one, use SNAT
 iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j SNAT --to-source <pub_ip>

Quando a conexão pública aparecer, se ela criar um link ppp, você terá que substituir eth1 por ppp0 .

BEAWARE : isso não é um firewall strong, é apenas um conjunto mínimo de regras para fazer o que você quer.

    
por 30.09.2011 / 03:29