martes, 21 de febrero de 2012

Básicos: Cosas que siempre quisiste saber sobre el correo electrónico y nunca te atreviste a preguntar (Parte 1)


La serie Básicos.

                Esta serie de artículos nace de la necesidad de tener una referencia que poder usar para dar una respuesta sencilla a las preguntas básicas que frecuentemente aparecen en los foros.

Introducción

                Desgraciadamente con frecuencia, las pequeñas y medianas empresas se enfrentan al reto de querer disponer de su propia infraestructura de correo sin tener los conocimientos adecuados, cuando finalmente han conseguido desplegar este servicio, se encuentran con los problemas relativos al relay, el spam y los virus.
                Por ultimo las pequeñas operaciones del día a día, también suponen un problema si no se cuenta con la formación adecuada.
                En este artículo espero que puedas encontrar las respuestas a algunas de tus preguntas, para las demás, yo y otros MVP y colaboradores de la comunidad te esperamos en los foros de la technet.

El funcionamiento del correo a alto nivel.

                Para poder entender como logran los servidores de correo de otros dominios dar con los nuestros es necesario que entandáis el concepto de los registros MX (Mail Exchangers o intercambiadores de correo)
¿Para qué sirven los MX?
                Los registros MX son un tipo especial de registro en la zona DNS de un dominio, estos registros identifican que servidores se encargan del correo de ese dominio.
                Los registros MX no especifican una IP, si no que en realidad hacen referencia a otro registro, será ese registro el que este asociado a una IP publica en internet, esta IP será la del servidor de correo o router/firewall que lo publique en Internet.
                Dado que el registro en la zona DNS apuntara a una IP, es imprescindible que este IP sea fija.
El correo de entrada desde otros dominios nos llega por el puerto 25 que es el del protocolo SMTP (Simple Mail Transfer Protocol o Protocolo Simple de Transferencia de Correo), por lo tanto necesitareis publicar o redirigir este puerto en vuestros firewalls o routers hacia el servidor que desempeñe esa función dentro de vuestra red.
Cuando un servidor de un dominio cualquiera quiere enviar correo a un usuario de nuestro dominio, lo primero que tratara de hacer es averiguar la IP de un servidor de correo de ese dominio, para eso se conectara al DNS y le solicitara los registros MX del dominio en cuestión.
El registro MX solo es válido para el dominio que lo contiene, esto significa que si tienes varios dominios, cada uno tendrá que tener su propio MX.
Un solo servidor con una sola IP puede ser el MX de tantos dominios como quieras, pero tendrás que configurar en tu servidor de correo que acepte los correos que entren de esos dominios.
Un dominio puede tener más de un MX, a cada MX se le asocia un peso o prioridad que es simplemente un numero, los servidores de correo siempre trataran de conectarse a los MX con menor peso, si no lo logran se conectaran al siguiente.
En empresas grandes es habitual que se coloquen varios MX y que los servidores que respondan a esas IPS se encuentren en diferentes puntos geográficos y con líneas de diferentes proveedores de comunicaciones, de esta forma las empresas se garantizan que en caso de que un servidor tuviera problemas de cualquier tipo, otro servidor recibiría el correo.
Muchos proveedores de correo, ofrecen como servicio poner sus servidores de correo como MX secundarios de forma que si tu servidor tiene problemas ellos recibirán el correo por ti, cuando tu servidor se recupere ellos te reenviaran todo el correo que hayan almacenado.
En el siguiente diagrama vemos gráficamente el funcionamiento de lo explicado hasta ahora.
Cuando el servidor de correo de la empresa A quiere mandar un correo a la empresa B sucede lo siguiente:
1)      El servidor de correo trata de conectarse con el servidor DNS que tenga configurado en la tarjeta de red del servidor de correo o en la configuración de Exchange, para esto necesitara que el firewall o router le dejen salir por el puerto 53 de TCP y UDP, una vez que se ha conectado pregunta al servidor DNS por los MX de la zona de la empresa B.
2)      El servidor DNS responde con los datos de los MX
3)      El servidor de correo de la empresa A trata de conectarse a la IP del MX por el puerto 25 TCP, el firewall de la empresa A tiene que dejar salir ese tráfico y el de la empresa B tiene que estar publicando el puerto 25 del servidor de correo en la IP publica a la que se haga referencia en el DNS.
¿Cómo crear un MX si no lo tengo y que necesito para poder crearlo?
Una vez que ya has registrado un domino, el siguiente paso es crear los registros MX.
                Cuando registras un dominio suele haber dos opciones.
Opción 1) Dejar que la empresa que te vende el dominio se encargue de los DNS; en esta modalidad no tienes que montar un DNS, la empresa en la que has registrado el dominio se encarga de proporcionarte uno, normalmente tendrán una página web en la que podrás gestionar los registros en la zona del dominio que has registrado, así que este caso solo tendrás que entrar en esa página con el usuario y contraseña que te han dado e introducir un nuevo registro MX con la IP que tengas.
Imagen 1, ejemplo de pagina web de administración de los MX de una zona.
Opción 2) Tener tus propios DNS; una vez que has registrado un dominio, es posible indicarle que quieres que los servidores DNS encargados de ese dominio sean los tuyos, usualmente no recomiendo que se haga esto, ya que aunque aporta más flexibilidad es una gran responsabilidad, si los servidores DNS fallan, nadie podrá acceder a ningún servicio prestado en el mismo.
Dentro de las zonas DNS es posible tener un servidor primario y varios servidores secundarios, los secundarios replican la información del primario por si este dejara de funcionar, es posible tener el primario a nuestro cargo en nuestros servidores y que el secundario lo tenga el proveedor o que este en otros servidores nuestros.
Los servidores DNS de una zona se especifican con registros de tipo NS.
Si nosotros tenemos el DNS es importante que nunca lo pongamos en un servidor unido al dominio de Windows, especialmente si es un DC, los DC contienen información muy valiosa en términos de seguridad, dado que los servidores DNS han de exponer su puerto 53 (TCP y UDP) en internet son siempre un punto inicial para un ataque, por esta razón es recomendable que los DNS que tengamos en Internet estén completamente aislados de la red interna.
Veamos ahora como configuraríamos el registro MX en un servidor DNS de Windows 2003 Server en caso de tener en un servidor nuestro la zona del DNS.
Imagen 2, creación del registro A que representa al servidor de correo.
Imagen 3, Creación del registro A y asociación a la IP publica en Internet.
Imagen 4, Creación del registro MX.
Imagen 5, Creación del registro MX asociándolo al registro de tipo A creado anteriormente.
¿Cómo saber cuál es mi MX o mis servidores DNS?
                Hay dos formas de realizar estas averiguaciones.
                Opción 1) La forma fácil; podemos usar alguna pagina como http://www.dnsstuff.com desde la cual podemos sacar un informe de nuestra zona DNS
Imagen 6, Pidiendo a dnsstuff.com un informe sobre la zona DNS de Microsoft.com
7, Servidores NS (servidores DNS) mostrados en el informe de dnsstuff.com.
Imagen 8, Servidores MX mostrados en el informe de dnsstuff.com
Opción 2) La difícil; Yo prefiero esta opción la razón es que la puedo ejecutar desde mi propio servidor de correo y esto me ayuda cuando tengo problemas al enviar correo a otros dominios, ejecutando este proceso desde un servidor de correo, podréis averiguar si es capaz de encontrar los MX de otros dominios.
Usaremos el comando nslookup para conectarnos al DNS, el servidor DNS usado por un servidor de tipo Exchange tiene que poder ser capaz de responder a preguntas sobre zonas en internet, pero también tiene que ser capaz de permitirle ser miembro del directorio activo, una de las posibles soluciones a este problema la podéis encontrar en este otro artículo:http://geeks.ms/blogs/dmatey/archive/2007/01/16/basicos-configuraci-n-de-dns.aspx
Imagen 9, entrando en nslookup y preguntando por los registros NS de Microsoft.com
Imagen 10, preguntando por los servidores MX de Microsoft.com
 
Como veis la información obtenida es la misma, pero nos garantizamos que es exactamente como nuestro servidor la ve.
                Es posible conectarnos a servidores DNS específicos usando el comando "server IP" desde el comando nslookup y cambiando IP por la IP del servidor dns al que nos queramos conectar.
¿Cómo probar el servidor de correo que escucha en un MX?
Una vez que sabemos cuál es el registro MX de una zona, podemos probarlo simplemente haciendo telnet al puerto 25 de ese servidor concreto, si no obtenemos respuesta de ninguno de los MX del dominio significara que no podremos enviar correo a ese dominio, si lo intentamos hacer contra un servidor nuestro, es importante no hacerlo desde el mismo servidor.
De esta forma podemos saber si otros servidores se pueden conectar contra el nuestro.
Para probarlo contra un servidor de Microsoft ejecutaremos el siguiente comando.
Imagen 11, conectando a un servidor MX de Microsoft.com
Imagen 12, Recibimiento del MX de Microsoft.com.
Si os fijáis veréis que aunque hemos hecho un telnet a maila.microsoft.com nos ha recibido un servidor llamado mail04, esto se debe a que en las empresas grandes es común que se usen balanceos de carga de varios servidores para responder a cada MX, especialmente al de mas bajo peso que será el que más correo reciba.      

Precauciones antes de poner un servidor en internet.

Como habéis visto una vez que publiquemos nuestro correo en internet, cualquiera podrá conectarse al puerto 25 de nuestro servidor, en este puerto escuchara nuestro sistema de correo, por ejemplo Exchange, si Exchange tuviera algún fallo de seguridad un atacante con los conocimientos adecuados podría intentar hacerse con el control del servidor.
Este problema es común a todos los servidores de correo ya sean Linux, Windows, Solaris, etc.
Por esta razón es siempre muy importante mantener actualizado nuestro servidor y tratar de exponer lo menos posible el servidor al exterior, si montamos y publicamos mas servicios en el mismo servidor estaremos multiplicando exponencialmente el riesgo.
A la hora de defender nuestra red, es clave pensar detenidamente donde pondremos nuestro servidor o servidores SMTP.
En medianas y grandes empresas es usual que si se usa Exchange 2003, se disponga de servidores denominados Front-End, dichos servidores se encargan del acceso de los usuarios a su correo por Web, POP3, Imap y también prestan los servicios de SMTP.
Mucha gente sostiene que estos servidores Front-End al estar expuestos a Internet se tienen que situar en la DMZ o zona desmilitarizada.
La DMZ es una red que se suele configurar entre Internet y la red local.
Podemos encontrar infinitos modelos de DMZ, los más comunes serian.
Imagen 13, Diferentes configuraciones de DMZ.
En el caso de las empresas más pequeñas, nos podemos encontrar que no hay firewall, en ese caso simplemente contaremos con el router para poder filtrar los puertos abiertos, algunos routers cuentan con bocas especiales para crear una DMZ.
Yo sostengo que no se deben poner los servidores de Front-End de Exchange en la DMZ, mis argumentos se basan en que Exchange requiere ser miembro del dominio y trabajar estrechamente con los controladores de dominio, por esta razón es necesario abrir demasiados puertos en los firewalls perimetrales, además parte de este tráfico a permitir es de tipo RPC, los protocolos de tipo RPC requieren de un rango dinámico de puertos para funcionar, es cierto que es posible cambiar este comportamiento reduciendo el rango de puertos dinámicos, aun así, creo que si alguien lograra conquistar un Front-End en la DMZ podría usar estos puertos abiertos y el hecho de que el servidor sea miembro del dominio, para lograr penetrar en la red interna.
Bajo mi forma de ver este problema creo que hay dos posibles variantes de diseños, los expresare bajo el modelo de back to back simple aunque obviamente se puede extrapolar a cualquier configuración de firewalls que cuente con una DMZ.
Variante 1.
Imagen 14, variante 1 del emplazamiento del SMTP dentro de una arquitectura de correo.
En esta variante, confiamos en el filtro de aplicación SMTP de los firewalls y usamos IPSEC para garantizar que si alguien consiguiera el control del Front-End no lograría salir de ese grupo y reglas, a esta configuración se la llama server isolation.
Variante 2
Imagen 15, variante 2 del emplazamiento del SMTP dentro de una arquitectura de correo.
En esta variante colocamos en la DMZ un servidor SMTP con el antivirus y el Antispam, este servidor no forma parte del dominio y simplemente filtra todo el correo entrante y lo reenvía hacia el Front-End, este será el servidor del que publicaremos su puerto 25 en internet, aun asi usaremos IPSEC, dado que también será necesario publicar en internet los puertos del correo por web (OWA) y siempre existe el riesgo de un ataque.
Este servidor no tiene por qué tener Exchange, se puede usar el servidor SMTP de Windows 2003.
En Exchange 2007 existe un tipo especial de rol de servidor de Exchange denominado Edge Services, estos servidores están pensados para hacer lo mismo que expreso en esta variante de diseño, podéis leer mas sobre este rol en mi artículo sobre el diseño de arquitecturas con Exchange 2007 en: http://geeks.ms/blogs/dmatey/archive/2007/01/16/ejemplo-de-dise-o-de-arquitectura-de-mensajeria-con-exchange-2007.aspx
Insisto en la importancia de mantener actualizados todos los servidores de la solución, para ello lo mejor es contar con servidores de actualización del tipo de WSUS, también recomiendo usar MBSA (http://www.microsoft.com/technet/security/tools/mbsahome.mspx)y Exchange Best Practice Analyzer (http://www.microsoft.com/exchange/downloads/2003/exbpa/default.asp)
Exchange cuenta con un producto gratuito denominado IMF que esta incluido dentro de Exchange y que nos ayudara a reducir el Spam.
Como sistema de Antivirus recomiendo usar ForeFront de Microsoft que es uno de los pocos antivirus de correo que permite usar varios motores de detección simultáneos garantizándonos así que tendremos la máxima protección.

El problema del Relay.


¿Qué es el relay?
                El relay consiste en reenviar correo de un servidor a otro, de por si no es malo, pero sin embargo si lo es y mucho cuando ni el dominio origen ni el destino es nuestro.
Todos somos víctimas del SPAM o correo no deseado, hemos visto que podemos utilizar herramientas como IMF para evitar que nos entre SPAM, pero desgraciadamente el problema va mas allá, las personas que se dedican a hacer SPAM suelen usar servidores vulnerables al Relay para enviar estos miles de correos, estos servidores se ven atacados por miles de correos que consumen sus recursos y ancho de banda.
El problema puede ser aun peor, ya que para evitar el SPAM muchas organizaciones indican a sus servidores de correo que validen en unas listas conocidas como listas negras si los servidores que les intentan mandar correo están en dichas listas o no.
De tal forma que si por alguna razón nuestro servidor ha hecho relay y alguna lista negra lo ha detectado y listado, es posible que otros servidores de correo rechacen nuestros envíos pensando que son SPAM.
¿Cómo saber si hago relay?
Hay páginas en Internet que pueden hacernos un test de relay probando varias técnicas, en esta que os pongo de ejemplo y que podeis encontrar en:  http://www.abuse.net/relay.html , podeis considerar que no haceis relay si pasais las 8 primeras pruebas con éxito.
Imagen 16, pagina para hacer un test de relay.
Una forma fácil y rápida de comprobar si hacemos relay o no, es conectarnos desde otro punto a nuestro servidor de correo por telnet al puerto 25.
Imagen 17, conexión al SMTP de un servidor de correo de Microsoft.
Imagen 18, intento de hacer relay.
Como podemos ver si tratamos de usar el servidor de correo de Microsoft para hacer relay ósea enviar un correo de alguien que no es de Microsoft a alguien que no es de Microsoft, el servidor no responderá con un "unable to relay" indicándonos que no podremos hacer esto en su servidor.
Microsoft al igual que otras empresas usan una técnica denominada tarpit que hace que una vez que el servidor de correo detecta un intento de relay empieza cada vez a responder mas lento al atacante, de esta forma los que intentan hacer el spam dejan de intentarlo ya que no les resulta productivo, podéis leer mas sobre esta técnica en: http://support.microsoft.com/kb/842851
¿Cómo evitar hacer relay con Exchange 2003?
Editaremos las propiedades del servidor SMTP de Exchange que tengamos publicado.
Imagen 19, editando el servidor SMTP publicado.
Imagen 20, configurando el relay en el servidor SMTP.
Imagen 21, configurando el relay en el servidor SMTP.
Una vez hecho esto, probar vosotros mismos con el telnet a hacer relay.
                Si por alguna razón necesitáis hacer relay desde el interior de vuestra red, es posible añadir estos servidores a las excepciones mostradas en la imagen 21, aunque yo prefiero crear otro servidor virtual de SMTP desde la consola de Exchange.
¿Cómo saber en qué listas negras estoy metido?
                Si creéis que estáis metidos en alguna lista negra, hay paginas en internet que os pueden ayudar a interrogar varias listas negras.
Imagen 22, viendo si Microsoft.com está en alguna lista negra desde dnsstuff.com
Imagen 23, resultados del informe.
Si buscáis en google por "relay blacklist database" encontrareis otros sitios donde poder consultar estas bases de datos.
¿Qué hacer si estoy en una lista negra?
Esta pregunta no tiene fácil respuesta, lo primero es aseguraros de que no hacéis relay o si lo hacéis corregirlo, luego tendréis que buscar la web de la lista negra en la que estáis listados y tratar de poneros en contacto con ellos para que os quiten, en algunos casos es rellenando un formulario en la web, en otros casos solicitan "donativos" para quitaros o simplemente no aceptan solicitudes de quitar de las listas, afortunadamente cada vez es menor las empresas que usan estas listas, ya que en algunos casos se están convirtiendo en fuentes de problemas, falsos positivos y estafas.
Conclusiones
                Espero que este articulo os haya servido para aprender un poco más sobre el funcionamiento del correo electrónico, en siguientes artículos de la serie básicos tratare el tema del IMF, y las operaciones del día a día con Exchange tales como listas de distribución, usuarios, desvíos de correo, etc.    

No hay comentarios:

Publicar un comentario