[CentOS-es] IPTables, DNS y postfix

Guitart Francesc francesc.guitart en enise.fr
Vie Jun 22 06:48:48 EDT 2012


Primero perdón por no responder desde el mensaje original. Hace tiempo 
que había desactivado los mensajes de la lista, hoy los he vuelto a 
activar y he visto este mensaje en el archivo de la lista.


AraDaen aradaen en gmail.com
Jue Jun 21 19:17:45 EDT 2012

 >Hola,
 >He instalado un servidor con Centos 6.2 para alojar varias webs que
 >tengo, para lo que, entre otras cosas tengo bind configurado como
 >servidor DNS y postfix con dovecot para el servicio de correo (pop3,
 >pop3s, imap, imaps, smtp+tls).
 >El sistema funciona perfectamente,sin habilitar iptables, pero cuando lo
 >habilito,  los correos que envío a dominios que no están alojados en mi
 >servidor (gmail por ejemplo). Deduzco que se trata de la reglas para DNS
 >cuando pregunta a otro servidor DNS, o de otra cosa que se me escapa.
 >
 >Este es el log de mail:
 > Jun 21 13:48:45 server postfix/smtp[13917]: connect to
 >mx3.hotmail.com[65.54.188.94]:25: Connection timed out
 > Jun 21 13:48:45 server postfix/smtp[13918]: connect to
 >mx1.hotmail.com[65.55.37.72]:25: Connection timed out
 > Jun 21 13:49:15 server postfix/smtp[13917]: connect to
 >mx2.hotmail.com[65.54.188.72]:25: Connection timed out
 > Jun 21 13:49:15 server postfix/smtp[13918]: connect to
 >mx2.hotmail.com[65.54.188.110]:25: Connection timed out
 > Jun 21 13:49:45 server postfix/smtp[13917]: connect to
 >mx3.hotmail.com[65.54.188.110]:25: Connection timed out
 > Jun 21 13:49:45 server postfix/smtp[13918]: connect to
 >mx2.hotmail.com[65.54.188.126]:25: Connection timed out
 > Jun 21 13:50:15 server postfix/smtp[13917]: connect to
 >mx2.hotmail.com[65.55.37.104]:25: Connection timed out
 > Jun 21 13:50:15 server postfix/smtp[13917]: 8E2F954286D5:
 >to=<aradaen en hotmail.com>, relay=none, delay=62560,
 >delays=62410/0.11/150/0, dsn=4.4.1, status=deferred (connect to
 >mx2.hotmail.com[65.55.37.104]:25: Connection timed out)
 >
 >Cualquier ayuda, será bienvenida.
 >La política por defecto en iptables es DROP, y este es el script de
 >iptables:
 >
 >
 > #!/bin/sh
 >
 > iptables -F
 > iptables -X
 > iptables -Z
 > iptables -t nat -F
 >
 > echo "Política por defecto DROP"
 > iptables -P INPUT DROP
 > iptables -P FORWARD DROP
 > iptables -P OUTPUT DROP
 >
 > #Conexiones Locales
 > echo "Habilitando acceso:"
 > echo "- Conexiones locales"
 > iptables -A INPUT -i lo -j ACCEPT
 > iptables -A OUTPUT -o lo -j ACCEPT
 >
 > #DNS
 > echo "- DNS (53)"
 >  iptables -A OUTPUT -p ALL  -m state --state ESTABLISHED,RELATED
 >-j ACCEPT
 > iptables -A OUTPUT -p tcp -d 0.0.0.0/0  --destination-port 53 -m state
 >--state NEW  -j ACCEPT
 > iptables -A OUTPUT -p udp -d 0.0.0.0/0  --destination-port 53 -j ACCEPT
 >
 > iptables -A INPUT -p ALL  -m state --state ESTABLISHED,RELATED      -j
 >ACCEPT
 > iptables -A INPUT -p tcp -s 0.0.0.0/0 --destination-port 53 -m state
 >--state NEW -j ACCEPT
 > iptables -A INPUT -p udp -s 0.0.0.0/0 --destination-port 53 -j ACCEPT
 >
 > #YUM
 > echo "- YUM"
 > # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 > # iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 >
 > iptables -A OUTPUT -p tcp -m tcp -m state --state NEW --dport 80 -j 
ACCEPT
 > iptables -A OUTPUT -p tcp -m tcp -m state --state NEW --dport 443 -j 
ACCEPT
 >
 > #WEB
 > echo "- WEB (80)"
 > iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
 > iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
 >
 > #SSH
 > echo "- SSH (2233)"
 > iptables -A INPUT -p tcp --dport 2233 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 2233 -j ACCEPT
 >
 >
 > # CORREO
 > echo "- MAIL";
 > echo "   - POP3,POP3S (110,995)"
 > iptables -A INPUT -p tcp --dport 110 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 110 -j ACCEPT
 > iptables -A INPUT -p tcp --dport 995 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 995 -j ACCEPT
 >
 > echo "   - IMAP,IMAPS (143,993)"
 > iptables -A INPUT -p tcp --dport 143 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 143 -j ACCEPT
 > iptables -A INPUT -p tcp --dport 993 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 993 -j ACCEPT
 >
 > echo "   - SMTP,SMPTS (25,465)"
 > iptables -A INPUT -p tcp --dport 25 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
 > iptables -A INPUT -p tcp --dport 465 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 465 -j ACCEPT

El problema esta aquí. Las reglas INPUT son correctas pero las OUTPUT 
no. Las conexiones SMTP que tu servidor realiza no salen por el puerto 
25 sino que van dirigidas al puerto 25. La regla correcta seria:

iptables -A OUTPUT -p tcp dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp dport 465 -j ACCEPT

 > echo "   - Submission (587)"
 > iptables -A INPUT -p tcp --dport 587 -j ACCEPT
 > iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT
 >

Y acabo de darme cuenta que has cometido el mismo error en otras reglas: 
POP3, IMAP, SMTP...

Ademas, para WEB, POP3, IMAP y SMTP no te hacen falta las reglas OUTPUT 
gracias a primera regla "iptables -A OUTPUT -p ALL  -m state --state 
ESTABLISHED,RELATED" que permite toda conexión de salida que que 
previamente haya sido establecida por el cliente.

Espero haberme explicado.


-- 
Francesc Guitart
Service CRI
ENISE



Más información sobre la lista de distribución CentOS-es