p0f

p0f es un sistema de de identificación de sistemas operativos (O. S. fingerprinting) que actúa en modo pasivo. Este sistema es capaz de identificar la versión de un sistema operativo a partir de los paquetes TCP/IP que analiza, de manera similar a

Utilización de p0f en el filtrado de correo

Amavis-new puede utilizar p0f al momento de filtrar un nuevo correo entrante, para identificar la versión del sistema operativo del sistema remoto que envío el correo y de esta manera pueda utilizar esa información a la hora de evaluar si el correo entrante es spam o no.

Instalación de p0f

En Gentoo Linux solo basta con ejecutar el siguiente comando para instalar net-analyzer/p0f:

emerge --ask --verbose net-analyzer/p0f

Es necesario crear los archivos /etc/conf.d/p0f-analyzer y /etc/init.d/p0f-analyzer, para ello refierase a http://bugs.gentoo.org/show_bug.cgi?id=173603

Una vez instalado es necesario editar el archivo /etc/conf.d/p0f-analyzer para configurar el puerto en el que escuchará p0f-analizer y luego ejecutar los siguientes comandos para iniciar el servicio:

rc-update add p0f-analizer default
/etc/init.d/p0f-analizer start

Configuración de Amavis-new

Para configurar Amavis-new para que funcione con p0f es necesario editar el archivo /etc/amavisd.conf y agregar la siguientes lineas:

$os_fingerprint_method = 'p0f:127.0.0.1:2345';

Luego es necesario reiniciar Amavis-new con el siguiente comando:

/etc/init.d/amavisd restart

Para verificar si la extensión "os_fingerprint_method" fue cargada correctamente debemos buscar la siguiente línea en el archivo /var/log/mail.log

Nov  8 15:20:42 localhost amavis[26316]: OS_Fingerprint code  loaded

Configuración de Spamassassin

Para que el sistema trabaje evaluando la información obtenida con p0f es necesario configurar spamassassing. Amavis envía la información obtenida mediante p0f a spamassassin añadiendo la cabecera X-Amavis-OS-Fingerprint al correo. Esta cabecera se utiliza internamente, con lo cual es necesario configurar en el archivo /etc/spamassassin/local.cf las siguientes líneas:

  #   Set score for different client OS
  #   Needs p0f-analyzer up and running
  header P0F_WindowsXP X-Amavis-OS-Fingerprint =~ /^Windows XP/
  header P0F_Windows   X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/
  header P0F_Unknown   X-Amavis-OS-Fingerprint =~ /^UNKNOWN/
  header P0F_Unix      X-Amavis-OS-Fingerprint =~ /^Linux|((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/

  score  P0F_WindowsXP 3.5
  score  P0F_Windows   1.7
  score  P0F_Unknown   0.8
  score  P0F_Unix     -0.5