Menú Principal
Lo más leído
Consigue Firefox
Usuarios
957 registrados
1 hoy
1 esta semana
58 este mes
Último: czar...
Formulario de acceso



... Regenerar clave
... Registro
Inslación de SPF bajo postfix Imprimir E-Mail
viernes, 02 de marzo de 2007

SPF (Sender Policy Framework) es un protocolo relativamente reciente que tiene como principal objetivo evitar la falsificación de direcciones de correo electrónico. Si bien puede creerse que dicho protocolo es una herramienta más contra el spam, nada más lejos de la realidad. SPF permitirá un control bastante exhaustivo de los gusanos de correo electrónico y será una herramienta bastante eficaz en la lucha contra el phising y demás timos que suelen utilizar el correo como plataforma de lanzamiento. 


Funcionamiento

El protocolo SMTP (Simple Mail Transfer Protocol) es el encargado, en un sistema informático, de procesar todas las peticiones que el cliente de correo electrónico solicita cuando se trata de envío de correo. Dicho protocolo actúa desde dos puntos diferentes: el servidor de envío o remitente y el servidor de transmisión o destinatario. El primero se encarga de conectar con el segundo para el envío del mensaje mientras que el segundo servidor, una vez aceptada la transmisión, se encarga de entregar el mensaje en la cuenta del destinatario. Posteriormente, mediante protocolos como IMAP o POP, el destinatario podrá acceder a los buzones y leer su mensaje.

Como es de suponer, el protocolo SMTP imposibilita una autenticación correcta entre todos los servidores de correo y cualquier servidor remitente puede identificarse, sin control alguno, como el transportista de cualquier dominio que se nos ocurra. Esto deja una puerta abierta a casi cualquier persona con un mínimo de conocimientos para suplantar el nombre del dominio que le venga en gana y poder así mandar cuantos correos necesite con identidades falsas. Ejemplos clarísimos de ocultación de identidad podemos encontrarlos a diario en los correos publicitarios, los contenedores de virus o los correos cuya finalidad última es el phising o robo de contraseñas.

SPF viene a aportar una extensión al protocolo SMTP y a corregir los deficientes sistemas anti-spam, basados en su mayor parte en listas negras, que en muchas ocasiones se convierten en una fuente de problemas y de quebraderos de cabeza para remitentes que nada tienen que ver con el envío de spam y que son incluídos arbitrariamente en alguno de esos sistemas de listas. La idea consiste en que cada dominio de Internet debe publicar, a través de DNS, información sobre las máquinas con permiso para enviar correo de un dominio determinado. Esto es, que la identificación de la máquina remitente se haga por dirección IP traducida y corra a cargo del dominio receptor del correo. Una vez quedan marcadas las distintas máquinas para el envío desde un dominio, todo aquello que se salga de la lista de autorizaciones será rechazado por los servidores implicados en la transacción, ya que el servidor de correo destinatario se encargará de comprobar, vía registro DNS, si el correo proviene de una máquina autorizada por el remitente o no.

Aunque es evidente que SPF no podrá eliminar el spam de forma automática (la publicidad en si misma es ya un arma subjetiva), si que, combinado con otros mecanismos, reducirá drásticamente el envío y recepción de este tipo de correos basura. Ya de entrada, el remitente será filtrado de forma automática por cualquier usuario, lo que hará que muchos se lo piensen dos veces antes de mandar correos no deseados.


Integración de SPF con Postfix

Aunque existen numerosos parches que implementan el protocolo SPF en el gestor de correo Postfix, hemos querido decantarnos por una extensión escrita en Perl que nos permita su prueba sin tener que recompilar el programa de correo. Dicha extensión se llama postfix-policyd-spf-perl y podemos encontrarla en la página oficial desarrolladora del protocolo (Opensf.org). A la hora de  escribir este artículo, la última versión del programa era la 2.002.


Instalación del software

postfix-policyd-spf-perl necesita instalados en el sistema ciertos módulos de Perl para su correcto funcionamiento. Realizaremos dicha instalación mediante la shell de Perl (si nunca hemos accedido a la shell de Perl, aceptaremos los valores que el programa nos propone por defecto la primera vez que se ejecuta y elegiremos los repositorios de CPAN más cercanos a nosotros cuando se nos pregunte al respecto):

[root@annie]# perl -MCPAN -e shell

cpan shell -- CPAN exploration and modules installation (v1.7602)

cpan> _

Tres son las dependencias a instalar: Mail::SPF, NetAddr::IP y Net::DNS::Resolver::Programmable . Para instalarlas, introduciremos el código siguiente en la shell:

cpan> install Mail::SPF
CPAN: Storable loaded ok
CPAN: LWP::UserAgent loaded ok
[...........]
Writing /usr/lib/perl5/site_perl/5.8.8/ i386-linux-thread-multi/auto/Mail/SPF/.packlist
  /usr/bin/make install  -- OK

cpan> _

Es probable, si nunca hemos compilado nada bajo el entorno de Perl, que sea necesario instalar el módulo Module::Build. Si se nos pregunta al respecto, contestaremos afirmativamente y continuaremos. Con la instalación de Mail::SPF quedarán resueltas el resto de dependencias y, si no están instaladas, se nos pedriá la correspondiente autorización. Una vez instaladas las dependencias, dejaremos la consola con el comando quit.

Terminada la parte de Perl, procedemos a la instalación de postfix-policyd-spf-perl, que requiere únicamente ser descargado y extraído a un directorio para su posterior configuración. Elegiremos el directorio /usr/sbin/ para tal fin:

[root@annie]# cd /tmp
[root@annie tmp]#wget www.openspf.org/blobs/postfix-policyd-spf-perl-2.002.tar.gz
Resolviendo www.openspf.org... 67.52.51.36
Connecting to www.openspf.org|67.52.51.36|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 12216 (12K) [application/x-tar]
Saving to: `postfix-policyd-spf-perl-2.002.tar.gz'

100%[===========================>] 12.216  17,5K/s in 0,7s

17:50:33 (17,5 KB/s) - `postfix-policyd-spf-perl-2.002.tar.gz' saved [12216/12216]

[root@annie tmp]# tar xvfz postfix-policyd-spf-perl-2.002.tar.gz
postfix-policyd-spf-perl-2.002/
postfix-policyd-spf-perl-2.002/postfix-policyd-spf-perl
postfix-policyd-spf-perl-2.002/LICENSE
postfix-policyd-spf-perl-2.002/README
postfix-policyd-spf-perl-2.002/CHANGES
postfix-policyd-spf-perl-2.002/INSTALL
[root@annie tmp]# cd postfix-policyd-spf-perl-2.002/
[root@annie postfix-policyd-spf-perl-2.002]# cp postfix-policyd-spf-perl /usr/sbin/
[root@annie postfix-policyd-spf-perl-2.002]# cd /tmp
[root@annie tmp]# rm -fr postfix-policyd-spf-perl-2.002*


Configuración de Postfix

La carga del programa postfix-policyd-spf-perl tiene que quedar indicada en el fichero /etc/postfix/master.cf mediante las líneas siguientes, que pueden ser añadidas al final del fichero (respetar los espacios al comienzo de la segunda línea):

policy  unix  -       n       n       -       -       spawn
  user=nobody argv=/usr/bin/perl /usr/sbin/postfix-policyd-spf-perl

Seguidamente, agregaremos, siempre y cuando no lo están ya, la órden reject_unauth_destination seguida de check_policy_service unix:private/policy (siempre siguiendo este mismo órden) a la directiva smtpd_recipient_restrictions del fichero /etc/postfix/main.cf :

smtpd_recipient_restrictions = 
  reject_invalid_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,
  check_policy_service unix:private/policy,

  check_helo_access hash:/etc/postfix/helo_check

La configuración queda completada con el reinicio del programa Postfix:

[root@annie]# /etc/init.d/postfix restart
Apagando postfix:          [  OK  ]
Iniciando postfix:         [  OK  ]


Comprobando el funcionamiento

El programa postfix-policyd-spf-perl proveé un modo consola que nos permitirá comprobar si el protocolo SPF está bien implantado en nuestro sistema. Para entrar en el modo consola, sólo tenemos que ejecutar el programa a través del intérprete de Perl:

[root@annie]# perl /usr/sbin/postfix-policyd-spf-perl

Comprobemos ahora una situación típica: se mandará un correo desde la dirección Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla desde el servidor liberaliatempus.com y la dirección 83.129.102.96. El servidor liberaliatempus.com tiene una directiva permisiva con el envío de correos desde la dirección IP 83.129.102.96 a través de su servidor de correo. Copiaremos las líneas siguientes sobre la consola y pulsaremos dos veces la tecla intro:

request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
helo_name=liberaliatempus.com
queue_id=FF67F2ABBB
sender= Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla
recipient= Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla
client_address=83.129.102.96
client_name=funny.server.net

Obtendremos entonces una salida parecida a la siguiente, quedando autorizado el envío:

action=PREPEND Received-SPF: pass (liberaliatempus.com: 83.129.102.96 is authorized to use ' Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla ' in 'mfrom' identity (mechanism 'ip4:83.129.102.96' matched)) receiver=mind_free.liberaliatempus.com; identity=mfrom; envelope-from=" Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla "; helo=liberaliatempus.com; client-ip=83.129.102.96

Si probamos a cambiar el contenido de algunas líneas, podemos observar como el protocolo SPF empieza a rechazar ciertos envíos no autorizados. Por ejemplo, observemos la salida de la consola si dejamos en blanco la parte del remitente (sender=) y poniendo parámetros falsos en otras líneas:

request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
helo_name=liberaliatempus.com
queue_id=FF67F2ABBB
sender=
recipient= Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla
client_address=100.70.70.70
client_name=www.free.net

action=PREPEND Received-SPF: softfail (liberaliatempus.com: Sender is not authorized by default to use 'liberaliatempus.com' in 'helo' identity, however domain is not currently prepared for false failures (mechanism '~all' matched)) receiver=mind_free.liberaliatempus.com; identity=helo; helo=liberaliatempus.com; client-ip=100.70.70.70

Abandonaremos la consola pulsando las teclas Control y C al mismo tiempo.


Llegada al destinatario

El control de correo fraudulento en la parte del destinatario se hará mediante el chequeo de la cabecera, que contendrá algo parecido a esto si ha sido pasado a través del protocolo SPF:

Received-SPF: pass (domain of  Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla designates 83.129.102.96 as permitted sender)


Enlaces de interés


Comentario[s]

Sólo los usuarios registrados pueden escribir comentarios.
Por favor, valídate o regístrate.

Powered by AkoComment 2.0!

 
< Anterior   Siguiente >