SPF - CaFeLUG

Transcripción

SPF - CaFeLUG
Antispam con
Postfix
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
Objetivos y motivación de la
charla
¿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
¿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
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
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.
Formas de atacar el spam (cont.)
●
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.)
●
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.
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?
¿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)
¿Por qué implementar un antispam
en el MTA? (cont.)
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.)
- 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
¿Por qué implementar un antispam
en el MTA? (cont.)
●
Eficacia
- Eliminación de mensajes perdidos sin aviso
- Los mensajes de spam no llegan al usuario
final
Ejemplo de una sesión SMTP
$ 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:<[email protected]>
250 2.1.0 Ok
rcpt to:<[email protected]>
250 2.1.0 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: esto es una prueba
.
250 2.0.0 Ok: queued as 93691D8293
Mecanismos
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
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
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
Mecanismos – Listas negras
Referencias
● Recursos sobre listas negras:
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
● The Spam Problem: Moving Beyond RBLs
http://www.whirlycott.com/phil/antispam/rbl-bad
/rbl-bad.html
Autenticación de e-mail
●
SPF (Sender Policy Framework)
●
DKIM (Domainkeys Identified Mail)
●
Sender ID
Autenticación de e-mail - SPF
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
Sintaxis
Autenticación de e-mail - SPF
Elementos de la sintaxis de SPF
●
●
●
●
Version
Mecanismos
Calificadores
Modificadores
Referencias
http://www.openspf.org/SPF_Record_Syntax
Autenticación de e-mail – SPF – Sintaxis
Versión
v=spf1
Actualmente la versión 1 es la única definida en el
estándar
Autenticación de e-mail – SPF – Sintaxis
Mecanismos de SPF
all | ip4 | ip6 | a | mx | ptr | exists | include
Autenticación de e-mail – SPF – Sintaxis - Mecanismos
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
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
a
Identifica a cualquier host del dominio
a
a/<máscara ip>: Si la ip del host no coincide
a:<dominio>
a:<dominio>/<máscara ip>
Ejemplo
“a:midominio.com.ar/24”
Autenticación de e-mail – SPF – Sintaxis - Mecanismos
mx
cualquier registro mx del dominio
mx
mx/<máscara ip>
mx:<dominio>
mx:<dominio>/<máscara ip>
Ejemplo
“mx”
Autenticación de e-mail – SPF – Sintaxis - Mecanismos
ptr
La resolución inversa de DNS de la ip del cliente da por
resultado un nombre de host perteneciente al dominio
ptr
ptr:<dominio>
Ejemplo
“ptr:miotrodominio.com.ar”
Autenticación de e-mail – SPF – Sintaxis - Mecanismos
exists
Verifica si un cierto dominio se puede resolver
exists:<dominio>
Ejemplo
exists:ciertodominio.com.ar
Autenticación de e-mail – SPF – Sintaxis - Mecanismos
include
Incluye las directivas SPF en otro dominio
Ejemplo
include:otrodominio.com.ar
Autenticación de e-mail – SPF – Sintaxis
Calificadores
+ Pass
- Fail
~ SoftFail
? Neutral
Autenticación de e-mail – SPF – Sintaxis
Modificadores
redirect | exp
Autenticación de e-mail – SPF – Sintaxis - Modificadores
redirect
Similar a include
Ejemplo
redirect=otrodominio.com.ar
Autenticación de e-mail – SPF – Sintaxis - Modificadores
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
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
Módulos de SPF para Postfix
●
Postfix-policyd-spf-perl (recomendado)
●
postfix-policyd-spf-python
●
tumgreyspf
●
Whitelister (recomendado sin reject)
Autenticación de e-mail - SPF
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
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
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
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 - DKIM
Ventajas
Estándar de internet
●
Provee autenticidad e integridad a los
mensajes
●
Autenticación de e-mail - DKIM
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
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 – Sender ID
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
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
Geolocalización de IPs
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
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
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
Referencias
Base de datos de IPs (compatible MySQL):
http://www.iplocationtools.com/databases/ipinfodb_one_table
●
Página man de tablas cidr en Postfix:
http://www.postfix.org/cidr_table.5.html
●
Extensión para soporte ACLs en Postfix:
http://www.apolicy.org/cgi-bin/moin.cgi/AclList
●
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)
●
Validez del remitente
Ventajas
●
Simplicidad
●
Eficacia
●
Eficiencia
Validez del remitente
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
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)
●
Análisis del parámetro del comando Helo
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
Greylisting
Módulos para Postfix
●
postgrey
●
tumgreyspf
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
Ejemplo de configuración en Postfix
Ejemplo de configuración en Postfix
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
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 (cont.)
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.)
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_access hash:/etc/postfix/usuarios_validos,
check_client_access hash:/etc/postfix/permitidos_servidores,
check_client_access hash:/etc/postfix/permitidos_dominios_puntuales,
check_client_access hash:/etc/postfix/bloqueados_bl_ip_manual,
check_client_access hash:/etc/postfix/bloqueados_dominios_puntuales
Ejemplo de configuración en Postfix (cont.)
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.)
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_access cidr:/etc/postfix/rangos_ip_argentina_manual,
check_client_access cidr:/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.)
/etc/postfix/usuarios_validos:
[email protected] DUNNO
[email protected] DUNNO
...
midominio.com.ar REJECT
Ejemplo de configuración en Postfix (cont.)
/etc/postfix/permitidos_servidores:
111.111.111.111 OK
google.com OK
yahoo.com
OK
yahoo.com.ar OK
hotmail.com OK
gov.ar
OK
gob.ar
OK