1 Antispam con Postfix
2 Sobre el disertante Efraim Wainerman Títulos Universitarios ● Licenciado en Sistemas de Información, Universidad Nacional de Luján, 2005. ● Analista Programador en Computación, Facultad de Ingeniería, Universidad Nacional de la Pampa, 2001 Actividad laboral ● Administración de redes y sistemas, docencia universitaria Participación en LUGs ● cafelug ● unlux. e-mail: efraim_y_mi_dominio_es_linuxmail.org
3 Objetivos y motivación de la charla
4 ¿Qué es el spam? Según Wikipedia Se llama spam, correo basura o sms basura a los mensajes no solicitados, habitualmente de tipo publicitario, enviados en grandes cantidades (incluso masivas) que perjudican de alguna o varias maneras al receptor
5 ¿Que es Postfix? Postfix es un MTA (agente de transporte de correo) de acuerdo a la terminología de SMTP RFC 5321, SMTP: http://tools.ietf.org/html/rfc5321
6 Responsabilidades de un MTA ● Enviar y recibir mensajes de correo electrónico a través de internet ● Realizar el delivery local ● Puede actuar como relay y redireccionar mensajes
7 Formas de atacar el spam ● Analizando el contenido de los mensajes - En el servidor: DSPAM, spamassassin, postfix, etc. - En el cliente: mozilla thunderbird (icedove), otros clientes usando spamassassin, spambayes, etc.
8 ● Analizando el origen de los mensajes - Listas negras: de dominios, de IPs, etc - Mecanismos de autenticación de e-mail (estándares o propuestas): - SPF - DKIM (Domainkeys) - SenderID Formas de atacar el spam (cont.)
9 ● Otros criterios - Validez del remitente (campo from, puede chequearse el dominio o adicionalmente el usuario) - Validez de la ip de origen (reverse DNS) - Helo requerido y Helo válido por DNS - Que el servidor reintente el envío (greylisting) rfc 5321 - Geolocalización de los clientes - etc. Formas de atacar el spam (cont.)
10 Criterios de implementación de un filtro antispam ¿Es tolerable tener falsos positivos en un servidor que rechaza los mensajes de spam? ¿y si utilizara un filtro que sólo los marcase?
11 ¿Por qué implementar un antispam en el MTA? ● Seguridad - Mitiga los ataques vía e-mail al servidor corporativo o a los usuarios finales. - Puede ayudar a mejorar la reputación de nuestro dominio al reducir el spam que suplanta nuestra identidad hacia otros dominios y evitando que nuestro servidor genere rebotes hacia terceros (backscatter)
12 ● Eficiencia - Menor costo computacional de los chequeos - Cola de mensajes más reducida - Ahorro de ancho de banda externa al no permitir el delivery de los mensajes de spam proveniente de clientes remotos - Ahorro de ancho de banda interna al no realizarse el delivery de los mensajes de spam hacia los servidores corporativos y la posterior descarga hacia las estaciones de trabajo ¿Por qué implementar un antispam en el MTA? (cont.)
13 - Ahorro de espacio de almacenamiento al no realizarse el delivery local o hacia los servidores corporativos del spam - Reducción de costo computacional derivado de la reducción del tráfico analizado por los filtros de contenido ● Claridad en la política antispam
14 ● Eficacia - Eliminación de mensajes perdidos sin aviso - Los mensajes de spam no llegan al usuario final ¿Por qué implementar un antispam en el MTA? (cont.)
15 $ telnet mail.midominio.com.ar 25 Trying a.b.c.d... Connected to mail.midominio.com.ar. Escape character is '^]'. 220 Este es el servidor de mail de midominio.com.ar helo mail.dominiocliente.com.ar 250 mail.midominio.com.ar mail from: 250 2.1.0 Ok rcpt to: 250 2.1.0 Ok data 354 End data with. Subject: esto es una prueba. 250 2.0.0 Ok: queued as 93691D8293 Ejemplo de una sesión SMTP
16 Mecanismos
17 Mecanismos – Listas negras Listas negras Pueden ser listas de - IPs / subredes - Dominios: se puede usar para chequear el campo mail from, para chequear el parámetro en el helo o para identificar a conjuntos de IPs mediante reverse DNS - remitentes - palabras o claves en el cuerpo del mensaje o en campos determinados
18 Mecanismos – Listas negras Listas negras (cont.) Tipos de chequeo Online RBL (Real-time Blackhole List, Block List o Blacklist) o DNSBL (DNS-based Blackhole List, Block List o Blacklist) Offline Tablas hash en formato Berkeley DB
19 Mecanismos – Listas negras Ventajas - Eficiencia - Simplicidad - Efectividad Desventajas (aplicable sobre las bases de datos masivas) - Confiabilidad dudosa sobre las políticas de inclusión y exclusión de servidores - Inclusión de subredes IP pertenecientes a ISPs que permiten enviar spam a sus clientes
20 Mecanismos – Listas negras Referencias ● Recursos sobre listas negras: ● http://spamlinks.net/filter-bl.htm http://spamlinks.net/filter-bl.htm ● Posición de la EFF (Electronic Frontier Foundation) sobre la implementación de antispam: ● http://w2.eff.org/spam/position_on_junk_email.php http://w2.eff.org/spam/position_on_junk_email.php ● The Spam Problem: Moving Beyond RBLs http://www.whirlycott.com/phil/antispam/rbl-bad /rbl-bad.html
21 Autenticación de e-mail ● SPF (Sender Policy Framework) ● DKIM (Domainkeys Identified Mail) ● Sender ID
22 SPF (Sender Policy Framework) ● Permite corroborar que el remitente de un mensaje es válido porque proviene una ip autorizada por la organización o de lo contrario rechazarlo o marcarlo como spam. ● Utiliza chequeos en un registro especial de DNS (TXT) ● Estandarizado por la IETF, última definición en la RFC 4408 Autenticación de e-mail - SPF
23 Sintaxis
24 Autenticación de e-mail - SPF Elementos de la sintaxis de SPF ● Version ● Mecanismos ● Calificadores ● Modificadores Referencias http://www.openspf.org/SPF_Record_Syntax
25 Autenticación de e-mail – SPF – Sintaxis Versión v=spf1 Actualmente la versión 1 es la única definida en el estándar
26 Mecanismos de SPF all | ip4 | ip6 | a | mx | ptr | exists | include Autenticación de e-mail – SPF – Sintaxis
27 all Identifica a todos los hosts y generalmente va al final Ejemplo Denegar a cualquier host “-all” Autenticación de e-mail – SPF – Sintaxis - Mecanismos
28 ip4 e ip6 Especifica una dirección o subred IP Ejemplo “ip4:111.111.0.0/16” Autenticación de e-mail – SPF – Sintaxis - Mecanismos
29 a Identifica a cualquier host del dominio a a/ : Si la ip del host no coincide a: a: / Ejemplo “a:midominio.com.ar/24” Autenticación de e-mail – SPF – Sintaxis - Mecanismos
30 mx cualquier registro mx del dominio mx mx/ mx: mx: / Ejemplo “mx” Autenticación de e-mail – SPF – Sintaxis - Mecanismos
31 ptr La resolución inversa de DNS de la ip del cliente da por resultado un nombre de host perteneciente al dominio ptr ptr: Ejemplo “ptr:miotrodominio.com.ar” Autenticación de e-mail – SPF – Sintaxis - Mecanismos
32 exists Verifica si un cierto dominio se puede resolver exists: Ejemplo exists:ciertodominio.com.ar Autenticación de e-mail – SPF – Sintaxis - Mecanismos
33 include Incluye las directivas SPF en otro dominio Ejemplo include:otrodominio.com.ar Autenticación de e-mail – SPF – Sintaxis - Mecanismos
34 Calificadores +Pass -Fail ~SoftFail ?Neutral Autenticación de e-mail – SPF – Sintaxis
35 Modificadores redirect | exp Autenticación de e-mail – SPF – Sintaxis
36 redirect Similar a include Ejemplo redirect=otrodominio.com.ar Autenticación de e-mail – SPF – Sintaxis - Modificadores
37 exp permite brindar un mensaje de error personalizado para el rechazo del mensaje incluyendo un string en el registro TXT de otro dominio Ejemplo exp=miotrodominio.com.ar Autenticación de e-mail – SPF – Sintaxis - Modificadores
38 Ejemplos - "v=spf1 mx -all" - "v=spf1 ip4:x.y.z.r ~all" - "v=spf1 a mx ip4:a.b.c.d ~all” - “v=spf1 include:miotrodominio.com.ar ?all" Autenticación de e-mail – SPF – Sintaxis
39 Autenticación de e-mail - SPF Módulos de SPF para Postfix ● Postfix-policyd-spf-perl (recomendado) ● postfix-policyd-spf-python ● tumgreyspf ● Whitelister (recomendado sin reject)
40 Ventajas ● Estándar de internet ● Fácil de implementar ● Implementación liviana (usa consultas DNS) ● Evita los rebotes masivos (backscatter) y puede preservar la reputación de nuestro dominio. ● En general no debería presentar falsos positivos porque usa una configuración explícita del dominio del cliente Autenticación de e-mail - SPF
41 Desventajas ● Puede causar falsos positivos dependiendo de la implementación/configuración, por ejemplo chequeo de helo (recomendado en la RFC), errores de sintaxis en el registro TXT ● Si tenemos el registro de SPF definido en nuestro dominio: debemos prever las posibles contingencias (por ejemplo tener que usar una IP alternativa, todas las posibles IPs deberían estar contempladas previamente porque los registros DNS no se pueden cambiar rápidamente) Autenticación de e-mail - SPF
42 Desventajas (cont.) ● Si tenenmos chequeo de SPF en el cliente: puede causar falsos positivos cuando otro dominio tiene una contingencia ● Los grandes de la industria y otros implementan definiciones con softail (“?all”) o neutral (“~all”) ● Bajo nivel de implementación Autenticación de e-mail - SPF
43 DKIM (DomainKeys Identified Mail) - Provee autenticación e integridad a los mensajes - Utiliza búsquedas en DNS y criptografía asimétrica Estandarizado por la IETF - RFC 4870: Domain-Based Email Authentication Using Public Keys Advertised in the DNS (DomainKeys) - RFC 4871: DomainKeys Identified Mail (DKIM) Signatures Autenticación de e-mail
44 Ventajas ● Estándar de internet ● Provee autenticidad e integridad a los mensajes Autenticación de e-mail - DKIM
45 Desventajas ● Mayor costo computacional que sus contrapartes basadas en DNS ● Posibilidad de falsos positivos debido a problemas de interoperabilidad con filtros de contenido ● Complejidad de implementación -> bajo nivel de adopción -> baja eficacia Autenticación de e-mail - DKIM
46 Sender ID - Es un proyecto experimental de Microsoft de fusionar Caller ID (otro proyecto de Microsoft) con SPF - Definiciones en los borradores RFC 4406, 4405, 4407 y 4408 (SPF) - Funcionalidad similar a SPF pero mayor complejidad Autenticación de e-mail
47 Sender ID (cont.) - Incosistencias técnicas (conflicto con otras RFCs) - Resistido por los mayores representantes del software libre (Debian, Apache, Postix, etc) por no ser implementable sin violar varias patentes de Microsoft - Aprobación como estándar de la IETF denegada Autenticación de e-mail – Sender ID
48 Chequeo de IP de origen Existencia de resolución inversa de DNS (reverse DNS) Ventajas ● Fácil de implementar ● Implementación liviana (usa consultas DNS) Desventajas ● Alto nivel de falsos positivos por mala configuración de DNS en enlaces corporativos ● No detecta hosts de ISPs que tienen configuración de reverse DNS para sus clientes con IP dinámica
49 Permite bloquear, redirigir a un filtro de contenido (por la característica de las tablas de Postfix) o aceptar tráfico según la ubicación geográfica de un cliente SMTP Geolocalización de IPs
50 Tipos de chequeo Online a través de la librería geoip Offline a través de una tabla con rangos de redes ip (cidr) Geolocalización de IPs
51 Ventajas ● Permite aplicar políticas diferenciadas según la localización geográfica de los clientes ● Permite reducir los falsos positivos, retrasos o costo computacional generados por otros mecanismos Desventajas ● falsos positivos por inexactitud de las bases de datos ● No detección de organizaciones que terciarizan su servicio de relay de correo Geolocalización de IPs
52 Referencias ● Base de datos de IPs (compatible MySQL): http://www.iplocationtools.com/databases/ipinfodb_one_table_ full_country.sql.bz2 http://www.iplocationtools.com/databases/ipinfodb_one_table_ full_country.sql.bz2 ● Página man de tablas cidr en Postfix: http://www.postfix.org/cidr_table.5.html http://www.postfix.org/cidr_table.5.html ● Extensión para soporte ACLs en Postfix: http://www.apolicy.org/cgi-bin/moin.cgi/AclList http://www.apolicy.org/cgi-bin/moin.cgi/AclList Geolocalización de IPs
53 Validez del remitente Se pueden chequear dos componentes del campo from (Envelope From) ● Existencia del dominio (reject_unknown_sender_domain) ● Existencia de la cuenta de usuario (reject_unverified_sender)
54 Ventajas ● Simplicidad ● Eficacia ● Eficiencia Validez del remitente
55 Desventajas ● Generación de tráfico DNS ● En el caso del chequeo de la cuenta de usuario - demora del chequeo - abuso de los recursos del cliente -> bloqueo Validez del remitente
56 Análisis del parámetro del comando Helo Tipos de restricciones ● Que el comando Helo sea obligatorio (smtpd_helo_required) ● Que el parámetro pasado en el Helo sea un FQDN válido (reject_non_fqdn_hostname) ● Que el parámetro pasado en el Helo sea un nombre DNS válido (reject_invalid_hostname) ● Que el parámetro pasado en el Helo sea un host DNS existente (reject_unknown_hostname) ● Que el parámetro pasado en el Helo no pertenezca a una lista negra (check_helo_access)
57 Ventajas ● Simplicidad ● Eficacia ● Eficiencia Desventajas ● En caso de exigir que el parámetro sea un FQDN, host DNS válido o existente genera falsos positivos por malas configuraciones de los MTAs (problema compartido con un punto recomendado en la definición de SPF) ● En caso de exigir que el parámetro sea host DNS existente: generación de tráfico DNS Análisis del parámetro del comando Helo
58 Greylisting Módulos para Postfix ● postgrey ● tumgreyspf
59 Greylisting (cont.) Ventajas ● Simplicidad de implementación ● Muy alta eficacia ● Eficiencia ● Casi inexistencia de falsos postivos Desventajas ● Demora de mensajes ● Ampliación de colas en los clientes -> aumento de consumo de recursos
60 Ejemplo de configuración en Postfix
61 Archivo /etc/postfix/master.cf: # Política de SPF creación del demonio con socket spfcheck unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/postfix-policyd-spf-perl Ejemplo de configuración en Postfix
62 Archivo /etc/postfix/main.cf:... myhostname = mail.midominio.com.ar … # Permitir localhost y la red interna mynetworks = 127.0.0.0/8 10.0.1.0/16 # Opción 2: configuración cerrada permitiendo sólo host autorizados # mynetworks = 127.0.0.0/8 10.0.1.1/32... mydestination = midominio.com.ar relay_domains = $mydestination … smtpd_banner = Este es el servidor de mail de midominio.com.ar # Configuración para relay: definición de usuarios válidos local_recipient_maps = hash:/etc/postfix/usuarios_permitidos Ejemplo de configuración en Postfix
63 Archivo /etc/postfix/main.cf (cont.): # No verificar usuario del from disable_vrfy_command = yes # Necesario para SPF policy_time_limit = 3600 smtpd_delay_reject = yes # Chequeos de Helo smtpd_helo_required = yes smtpd_helo_restrictions = check_helo_access hash:/etc/postfix/bloqueados_dominios_puntuales, check_helo_access hash:/etc/postfix/bloqueados_helo Ejemplo de configuración en Postfix (cont.)
64 Archivo /etc/postfix/main.cf (cont.): smtpd_recipient_restrictions= # Evitamos que el servidor sea un relay abierto permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, # Chequeo de listas blancas/negras internas check_recipient_accesshash:/etc/postfix/usuarios_validos, check_client_accesshash:/etc/postfix/permitidos_servidores, check_client_accesshash:/etc/postfix/permitidos_dominios_puntuales, check_client_accesshash:/etc/postfix/bloqueados_bl_ip_manual, check_client_accesshash:/etc/postfix/bloqueados_dominios_puntuales Ejemplo de configuración en Postfix (cont.)
65 Archivo /etc/postfix/main.cf (cont.): smtpd_recipient_restrictions= # Continuación # Whitelister (puede aceptar, dejar pasar,desactivamos el reject) check_policy_service inet:127.0.0.1:10000, # Chequeo de greylisting (puede demorar con 450 o dejar pasar) check_policy_service inet:127.0.0.1:60000, # Chequeo de SPF (puede aceptar, rechazar con 550 o dejar pasar) check_policy_service unix:private/spfcheck, Ejemplo de configuración en Postfix (cont.)
66 Archivo /etc/postfix/main.cf (cont.): smtpd_recipient_restrictions= # Continuación # Geolocalización: acepto redes ip de Argentina si pasaron los chequeos # anteriores check_client_accesscidr:/etc/postfix/rangos_ip_argentina_manual, check_client_accesscidr:/etc/postfix/rangos_ip_argentina_masivo, # Configuración de prueba: listas negras masivas offline warn_if_reject check_client_access hash:/etc/postfix/bl_masiva1 warn_if_reject check_client_access hash:/etc/postfix/bl_masiva2, warn_if_reject check_client_access hash:/etc/postfix/bl_masiva3 Ejemplo de configuración en Postfix (cont.)
67 /etc/postfix/usuarios_validos: [email protected] DUNNO [email protected] DUNNO... midominio.com.ar REJECT Ejemplo de configuración en Postfix (cont.)
68 /etc/postfix/permitidos_servidores: 111.111.111.111OK google.comOK yahoo.comOK yahoo.com.arOK hotmail.comOK gov.arOK gob.arOK Ejemplo de configuración en Postfix (cont.)