Documente Academic
Documente Profesional
Documente Cultură
INDICE
1 2 3 4 5
OBJETIVOS.................................................................................................................................. 3 DIAGRAMA DE RED .................................................................................................................. 4 INSTALACIN DEL SISTEMA ................................................................................................ 5 INSTALACIN DE SERVIDOR DNS BIND9 .......................................................................... 5 INSTALACIN DE POSTFIX.................................................................................................... 6 5.1 INSTALAMOS SASL PARA AUTENTICACIN DE USUARIOS .................................... 6 5.2 5.3 5.4 CONFIGURACIN DE POSTFIX PARA AUTENTICACIN CON SASL ....................... 8 AADIR TLS A POSTFIX .................................................................................................... 9 REENVIAR TODO EL CORREO AL EXCHANGE .......................................................... 11
6 7 8
FILTRO DE CONTENIDOS PARA POSTFIX....................................................................... 12 6.1 COMO HACER QUE SPAMASSASSIN APRENDA......................................................... 14 AADIENDO SEGURIDAD A POSTFIX ............................................................................... 17 NOTAS ......................................................................................................................................... 18
_____________________________________________________________________________ 2/18
OBJETIVOS
El objeto del presente documento es detallar la Instalacin de un servidor Mail Gateway para
Exchange Server integrado en un dominio con Active Directory y con filtro AntiSpam. El principal objetivo de este proyecto es aadir seguridad de un servidor de correo Exchange Server publicado en Internet. Para ello instalaremos un sistema de correo ms seguro delante del Exchange que tenga propiedades de firewall, y filtro de contenidos. Estas medias tambin podran implementarse en un sistema Windows, pero optamos por un sistema Linux por su robustez , sus implementaciones contrastadas de seguridad y su bajo coste. Todas las herramientas necesarias para la implantacin del sistema sern gratuitas, bajo licencia GNU. Como requisito imprescindible tendremos el no realizar ninguna modificacin en la configuracin de los usuarios para enviar y recibir correo, ni realizar ninguna modificacin en el servidor de Exchange. Para ello, el nuevo servidor de correo debe reenviar los correos al servidor de Exchange, y cualquier usuario que necesite enviar correo deber autenticarse con sus credenciales del Dominio de midominio.com. Aadiremos seguridad en el envo y recepcin de correos con la instalacin de un servidor de certificados que pueda hacer que el intercambio entre el usuario y el servidor de correo se haga a travs de una conexin segura cifrada a travs de certificados de servidor. Nuestro servidor de correo es tambin nuestro servidor de DNS primario en Internet. Por esto debemos migrar tambin el servicio de DNS al nuevo servidor. Para ello utilizaremos el servidor Bind9, previamente como servidor Secundario de todas las zonas de midominio.com y posteriormente ponindolo como Primario para estas mismas zonas.
_____________________________________________________________________________ 3/18
DIAGRAMA DE RED
INTERNET ISP
IP-EXTERNA Respuestas DNS, SMTP, POP3
DMZ
IP: 10.10.1.1
DMZ
ACCEPT net:10.10.1.20 loc:192.168.1.104 tcp 25,110 (smpt,pop3) ACCEPT net:10.10.1.20 loc:192.168.1.114 tcp 389 (ldap a CONTROLADOR DOMINIO) (ldap a CONTROLADOR DOMINIO) (ldap a CONTROLADOR DOMINIO)
ACCEPT net:10.10.1.20 loc:192.168.1.114 udp 389 ACCEPT net:10.10.1.20 loc:192.168.1.114 tcp 3268
IP: 192.168.1.9 Peticiones SMTP, POP3, IMAP Respuestas SMTP, POP3, IMAP IP: 192.168.1.104 Respuestas SMTP, POP3, IMAP
LAN
Peticiones SMTP, POP3, IMAP
_____________________________________________________________________________ 4/18
Instalamos el sistema base de Debian 4.0 Etch, sin entorno grfico ni servidores. Instalamos los siguientes paquetes necesarios: - openssh-server - vsftpd - libnet-ssleay-perl - webmin
Cambiamos la configuracin de WEBMIN: Cambiamos lenguaje: ESPAOL Configuracin de RED: nombre mquina: smtp.midominio.com IP: 192.168.1.103/24 GW: 192.168.1.124
configuraremos previamente un servidor de DNS secundario de nuestro primario en la IP-Externa y posteriormente lo pasaremos a primario.
Instalamos Bind9:
_____________________________________________________________________________ 5/18
Configuramos Bind9 para que sea servidor de nombres secundario de midominio.com: Creamos una nueva zona secundaria en BIND cuyo servidor master sea IP-Externa. Debemos indicar al DNS de Windows para que permita la transferencia de zona al IP-Interna del servidor.
INSTALACIN DE POSTFIX
Instalamos los paquetes necesarios, necesitamos soporte ssl (para certificados) y ldap para
autenticarnos:
apt-get install postfix: En la instalacin de postfix nos har una serie de preguntas: Tipo de servidor: "sitio de Internet". Nombre del servidor: "smtp.midominio.com". Resto de opciones por defecto.
apt-get install postfix-ldap apt-get install postfix-doc apt-get install postfix-pcre apt-get install postfix-tls (me dice que ya se ha instalado con postfix).
NOTA: Al instalar postfix, se instala tambin el soporte TLS. Para ello se instala automticamente Openssl y ssl-cert - probamos que el servidor contesta: telnet smtp.midominio.com 25.
5.1
libsasl2-modules-sql libsasl2-modules--gssapi-mit
Nosotros queremos usar SASL para autenticacin de usuarios contra un Active Directory. Para ello necesitamos que SASL soporte LDAP. Instalamos por tanto libsasl2-modules-ldap
Para que SASL funcione con LDAP debemos crear el siguiente fichero /etc/saslauthd.conf (vi /etc/saslauthd.conf) con el siguiente contenido:
ldap_servers: ldap://192.168.1.1/ \\ servidor donde est el servicio LDAP ldap_bind_dn: ldap@midominio.com ldap_bind_pw: password ldap_version: 3 ldap_search_base: CN=Users,DC=MIDOMINIO,DC=COM ldap_filter: (&(objectclass=user)(sAMAccountName=%u)) \\ usuario con permisos de consulta en la BD
Nos falta decirle al demonio de saslauthd que se ejecute al inicio, Para ello debemos cambiar el fichero /etc/default/saslauthd:
START=yes
y que se ejecute con soporte LDAP. Para ello debemos cambiar el fichero /etc/default/saslauthd, donde pone "pam" cambiamos a "ldap":
MECHANISMS="ldap"
Comprobamos que el demonio est corriendo con soporte ldap. para ello usamos ps -ax | grep sasl y debe aparecer: _____________________________________________________________________________ 7/18
Ss S S S S S+
0:00 /usr/sbin/saslauthd -a ldap -c -n 5 0:00 /usr/sbin/saslauthd -a ldap -c -n 5 0:00 /usr/sbin/saslauthd -a ldap -c -n 5 0:00 /usr/sbin/saslauthd -a ldap -c -n 5 0:00 /usr/sbin/saslauthd -a ldap -c -n 5 0:00 grep sasl
Realizamos una prueba para consultar en la base de datos de LDAP del Active Directory:
Si cambiamos el password nos debe dar error. Tambin podemos usar un sniffer en el controlador de dominio para ver si le estn llegando peticiones LDAP.
5.2
Quitamos el CHROOT a postfix para que pueda coger toda la configuracin de /etc. Para editamos el fichero /etc/postfix/master.cf y cambiamos la lnea smtp y en el campo chroot ponemos "n":
# ============================================================= ============= # service type private unpriv chroot wakeup maxproc command + args # # ============================================================= ============= smtp inet n n smtpd (yes) (yes) (yes) (never) (100)
Tipo de servidor: "sitio de Internet". correo para superusuario: "root@midominio.com" Nombre del servidor: "smtp.midominio.com" _____________________________________________________________________________ 8/18
Redes locales: "127.0.0.0/8 192.168.1.0/24" entrega local: "usar procmail" resto de opciones por defecto
Aadimos soporte SASL a postfix. Para ello utilizamos el comando postconf -e:
postconf -e "smtpd_sasl_local_domain =" postconf -e "smtpd_sasl_auth_enable = yes" postconf -e "smtpd_sasl_security_options = noanonymous" postconf -e "broken_sasl_auth_clients = yes" postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks, reject_unauth_destination" postconf -e "inet_interfaces = all"
Despus aadimos el fichero smtpd.conf para que postfix tome el tipo de autenticacin:
echo "pwcheck_method: saslauthd" >> /etc/postfix/sasl/smtpd.conf echo "mech_list: plain login" >> /etc/postfix/sasl/smtpd.conf
Con esto debemos poder enviar correo autenticado contra un servidor LDAP con Active Directory.
5.3
Para aadir seguridad a postfix debemos hacer que el intercambio de credenciales sea seguro. Para ello se implementar un tunel TLS a travs de certificados de Servidor que podremos usar en cualquier cliente SMTP con soporte SSL:
- Nos cambiamos de a ese directorio y utilizamos las rutinas de openssl para crear los certificados. Nos pedir una clave cada vez que generemos la clave pblica. Siempre usaremos la clave "mipassword"
cd /etc/postfix/ssl/ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
postconf -e 'smtpd_tls_auth_only = no' postconf -e 'smtp_use_tls = yes' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtp_tls_note_starttls_offer = yes' postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' postconf -e 'smtpd_tls_loglevel = 1' postconf -e 'smtpd_tls_received_header = yes' postconf -e 'smtpd_tls_session_cache_timeout = 3600s' postconf -e 'tls_random_source = dev:/dev/urandom'
_____________________________________________________________________________ 10/18
5.4
vi transport
midominio.com
smtp:192.168.1.104
postconf -e "transport_maps=hash:/etc/postfix/transport"
Debemos realizar unos cambios para que POSTFIX acepte correo que no sea para ningn usuario local (debemos recordar que todo el correo debe enviarse al Exchange y que por tanto el postfix no tendr dados de alta los usuarios que reciben el correo). Para ello debemos aadir en /etc/postfix/main.cf:
local_recipient_maps =
Al dejar esta directiva vaca, postfix aceptar todo el correo que sea de Internet. Ahora solo queda revisar los dominios que acepta postfix. Esto lo veremos en la directiva MYDESTINATION. Aqu debemos incluir todos los dominios que acepta postifx, tanto a nivel de mquina como a nivel de dominio. Debe quedar as:
_____________________________________________________________________________ 11/18
travs de POSTFIX, incluyendo la seguridad (a travs de TLS) instalaremos un filtro de contenidos para evitar el SPAM. Para poder filtrar por contenidos debemos instalar una aplicacin que interactue entre Postfix y el filtro de contenidos. Para ello usaremos Mailscanner como intermediario y Spamassassin como filtro de contenidos.
- Instalamos SPAMASSASSIN.
- Debemos cambiar algunos parmetros en su fichero de configuracin. Para ello nos vamos a /etc/mail/spamassasin/local.cf:
Nos hace falta un componente que interactue entre Postfix y Spamassassin. Para ello instalaremos MAILSCANNER. Previamente debemos parar postfix:
Cambiamos los siguientes parmetros del fichero de configuracin de MailScanner para que funcione con Postfix:
Run As User=postfix Run As Group=postfix Incoming Queue Dir=/var/spool/postfix/hold Outgoing Queue Dir=/var/spool/postfix/incoming MTA=postfix
_____________________________________________________________________________ 12/18
Debemos asegurarnos de que el usuario postfix puede escribir en todos los ficheros de configuracin de MailScanner. Para ello cambiamos el propietario y el grupo de los siguientes directorios de la siguiente forma:
NOTA: Cuando arranquemos MailScanner veremos como nos dice que el usuario no es correcto para varios directorios ms. Solamente tenemos que utilizar chown para cambiar el propietario y el grupo de todos los que nos pida.
Ahora solamente nos queda hacer una modificacin en Postfix para que MailScanner pueda funcionar correctamente. Si observamos en las lneas anteriores le hemos dicho a MailScanner que la cola de entrada (Incoming Queue) es la cola Hold de Postfix, y que la cola de salida de MailScanner es la cola de incoming de Postfix. Esto es as porque cualquier correo que reciba Postfix, lo pondr en su cola HOLD. De aqu lo coger MailScanner, lo analizar y lo pondr en la cola de incoming de Postfix, que seguir su proceso normal.
Para decirle a Postfix que ponga todos los correos recibidos en la cola HOLD debemos hacer lo siguiente:
/^Recived:/
HOLD
header_checks=regexp:/etc/postfix/header_checks
Para probarlo nos enviamos un mail y en las cabeceras debemos ver entradas de MailScanner. Cualquier correo que identifique como SPAM lo marcar cambiando el subjet por {Spam?}. _____________________________________________________________________________ 13/18
6.1
Ahora nos queda ver como Spamassassin puede aprender que correos son buenos y cuales no. Para ello tenemos que indicarle durante un tiempo que correos son SPAM y cuales HAM (buenos). En el entorno donde nosotros estamos haciendo la instalacin vemos que no tenemos usuarios locales. Todos los usuarios son del EXCHANGE. Por ello nos vamos a crear un usuario que pueda leer un buzn donde iremos metiendo correo SPAM y correo HAM. Para ello seguiremos los siguientes pasos:
adduser mailrd
- creamos en el Exchange el usuario ham con password password, y dos carpetas en el buzn del usuario, una carpeta llamada spam (donde iremos metiendo correo basura) y otra carpeta llamada ham (donde iremos metiendo correos buenos). - creamos y damos los permisos necesarios a los directorios que hemos establecido: _____________________________________________________________________________ 14/18
mkdir Mail mkdir Mail/Inbox chown -R mailrd.mailrd Mail/ chmod -R 710 Mail/
Para probar si funciona enviamos un correo desde un usuario local al usuario mailrd, por ejemplo desde root hacemos lo siguiente:
En el crontab de mailrd, nos creamos un scritp que recoja el correo del buzn de HAM y lo enve a Spamassassin para que aprenda. El script sera:
#################################################
date
while [ "$INBOXSIZE" != "$NEWSIZE" ] do INBOXSIZE="$NEWSIZE" sleep 5 NEWSIZE=`ls -l ~/Mail/Inbox | awk '{ print $5 }'` _____________________________________________________________________________ 15/18
done
while [ "$INBOXSIZE" != "$NEWSIZE" ] do INBOXSIZE="$NEWSIZE" sleep 5 NEWSIZE=`ls -l ~/Mail/Inbox | awk '{ print $5 }'` done
sa-learn --sync
5****
Es importante destacar que para que fetchmail pueda recoger el correo del Exchange debe hacer uso de postfix. Por ello debemos decirle que para el usuario que estamos usando (mailrd) cualquier correo se entregue en local. Debemos modificar por tanto el transport de Postfix.
_____________________________________________________________________________ 16/18
parte del correo basura. Para ver el significado de cada una de las etiquetas debemos revisar la web de postfix en http://www.postfix.org/uce.html. Para aadir estas restricciones, abrimos el fichero /etc/postfix/main.cf y aadimos las siguientes etiquetas:
smtpd_recipient_restrictions = reject_invalid_hostname, # reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client dul.dnsbl.sorbs.net, reject_rbl_client dnsbl.sorbs.net, permit
_____________________________________________________________________________ 17/18
8
1:
NOTAS
reject_non_fqdn_hostname lo tengo que quitar porque si no desde equipos que se llamen
EQUIPO1, EQUIPO2, CORREO, que son nombres de host no FQDN no se puede enviar correo.
2: Cambio en MailScanner la etiqueta SpamScore Number Instead Of Stars = yes para que muestre en formato numrico la puntuacin que le da SpamAssassin al correo en vez de mostrar "S".
3: cambio esto para que no aparezca disarmed en el asunto de estos correos Disarmed Modify Subject = no
_____________________________________________________________________________ 18/18