Como configuro la salida de puertos smtp y pop3 en iptables con un proxy transparente

Forums: 

Hola,

Necesito un poco de ayuda en la configuración de mi iptables pues lo que deseo es configurar el proxy mediante nat para que pueda recibir y enviar el correo que configuro desde el Microsoft Outlook.

mi eth0 es mi tarjeta externa, la eth1 es la interna 10.228.236.136/25 y uso el fedora 8, a como verán en la configuración de mi IPTABLES a continuación el proxy transparente ya esta configurado y funciona correctamente con el squid pero el detalle es que la configuración nat del correo no me esta funcionando y quería que alguien revisara y me dijera que error estoy cometiendo.

echo -n

iptables -F
iptables -X
iptables -Z
iptables -t nat -F

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#Aqui hacemos el proxy transparente

iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,110,25,995 -j REDIRECT --to-ports 3128

#Abriendo puertos del correo SMTP, POP3 y POP3 seguro

iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -o eth1 -p tcp --dport 25 -j ACCEPT

cuando le doy: iptables -L -n, me da la respuesta:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 10.228.236.128/25 0.0.0.0/0 tcp dpt:110
ACCEPT tcp -- 10.228.236.128/25 0.0.0.0/0 tcp dpt:995
ACCEPT tcp -- 10.228.236.128/25 0.0.0.0/0 tcp dpt:25

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Gracias por toda la ayuda que me puedan dar. :(

Tenias toda la razón edwin me

Tenias toda la razón edwin me faltaba cambiarles eht0 en la linea del enmascaramiento ahora funciona Muchas gracias a todos por sus aportes.

pero, hay un pelo en la sopa, con el puerto 110 recibe y el 25 envia bien pero hay cuentas que estan con otro servidor que usa SSL en pop3s con el puerto 995 que me envia el siguiente mensaje:

***La tarea Recibiendo MINED ha notificado el error (0X800CCC1A): el servidor no admite el tipo de cifrado de conexión especificado. Intente cambiar el método de cifrado. y que me ponga en contacto con el admin ó el ISP.***

Ahora si yo especifiqué en el iptables que ese puerto saliera por FORWARD de la misma forma que el 110 y el 25 porque me esta tirando el outlook este error.

actualmente el script esta

actualmente el script esta asi:

echo -n

iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#Aqui hacemos el proxy transparente

iptables -t nat -A POSTROUTING -s 10.228.236.136/25 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80 -j REDIRECT --to-ports 3128

#Abriendo puertos del correo SMTP Y POP3

iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 25 -j ACCEPT

***Funcionando los puertos 110 y 25 pero el puerto 995 me saca el error que les describo en el post anterior.***

Ok, por lo visto eso ya no es

Ok, por lo visto eso ya no es un problema de firewall porque el servidor si te está contestando, más bien puede ser un problema de configuración en el lado del cliente. Lamentablemente yo solo uso webmails por lo que no estoy muy familiarizado con las configuración de los clientes de correo, pero lo que si te aseguro es que no es un problema de firewall.

Con respecto a tu script para las reglas, no se si no lo estás mostrando todo (de pronto por seguridad), pero debo decirte que no veo ninguna regla restrictiva (DROP o REJECT) por lo que en realidad no estás bloqueando nada. Lo podrías comprobar quitando las 3 reglas de FORWARD que tienes:


iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 10.228.236.136/25 -i eth1 -p tcp --dport 25 -j ACCEPT

Si las quitas verás que aún puedes conectarte POP y SMTP. Si al quitarlas sigues teniendo conexion, puedes probar agregando al final una regla que rechace las otras conexiones, también sería bueno que especifiques la dirección de red interna y no la dirección de un host, en tu caso sería algo como:


iptables -A FORWARD -s 10.228.236.128/25 -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 10.228.236.128/25 -i eth1 -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 10.228.236.128/25 -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 10.228.236.128/25 -i eth1 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.228.236.128/25 -i eth1 -j REJECT

Saludos,

----
Edwin Boza
about.me/edwinboza

Amigo otra cosa no has

Imagen de nino1511

Amigo otra cosa no has hablado de tu servidor de correos, en ningún momento lo nombras, o acaso este servidor es externo? o esta en alguna dmz?.

Saludos

Vamos Ecuador, si se puede

el mismo problema lo tengo yo

este mismo problema me esta ocurriendo a mi, inclusive desactive el firewall para ver si por alli estaba el inconveniente pero nada todo se queda pegado y sigue apareciendo el mismo error de pop y smtp. cualquier ayuda gracias.

este es el codigo que debes

este es el codigo que debes poner en un archivo que vas a crear con la extensión sh, luego lo copias en el directorio sbin

para que esto te funcione tenes que apagar el servicio del iptables y el SeLinux

Con este ejemplo sencillo lo puedes hacer funcionar

podes nombrar el archivo de la siguiente forma: proxy-transparente.sh

IPTABLES="/sbin/iptables" # Ruta de iptables la sacas con
LAN_IP_RANGE="192.168.10.0/24" # Red de la LAN esta es la que pasaría a ser tu puerta de enlace
INET_IP="201.90.216.5" # IP publica con la que sales a internet corresponde a la tarjeta de red conectada directamente al router pero no es la puerta de enlace
echo "1" > /proc/sys/net/ipv4/ip_forward # Sin esto no puedes hacer forward, con el 1 lo activas

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

# Esta linea hace posible el enrutamiendo y hace lo que quieres
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE --jump SNAT --to $INET_IP

salis y lo ejecutas:

sh proxy-transparente.sh

Te deberia funcionar
Saludos

Páginas