miércoles, 12 de noviembre de 2014

Servidor Mail Seguro parte IV

Chequeadores de contenido (Anti Spam & Anti Virus)

 Esta cuarta parte de la guía pretende instalar y configurar en nuestro servidor de correo (Que ya debería contar con MySQL para usuarios virtuales, Postfix como agente de correo y Courier como servicio de IMAP) el anti virus ClamAV, las medidas de protección contra spam SpamAssassin y Postgrey y la gestión e implementación en el servidor por parte de Amavisd.

Amavis:

 Vamos a empezar con Amavisd que permitirá interaccionar a nuestro agente de correo con las herramientas de seguridad dentro de nuestro servidor. Es decir, permitirá transportar el correo de un servicio a otro y canalizarlo después para dejarlo en nuestros buzones de correo.
sudo apt-get install amavisd-new
 La configuración por defecto en Ubuntu nos vale perfectamente así que nos limitaremos a leer su documentación para entender cómo funciona y echaremos un vistazo sus opciones predefinidas con un cat:
cd /etc/amavis/conf.d/
 En este directorio podemos ver archivo por archivo la configuración de Amavis pero en principio, nos valen los valores tal como están. Sólo uno de ellos será modificado:
sudo nano /etc/amavisd/50-user
 Añadimos antes de las 2 lineas finales:
@local_domains_acl = qw(.);
$log_level = 2;
$syslog_priority = 'debug';
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
$final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default
# $final_spam_destiny = D_BOUNCE; # debian default
# $final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked
 Ahora hemos de permitir a Amavis el acceso a los correos para que pueda chequearlos así que nos vamos a reconfigurar Postfix:
sudo nano /etc/postfix/master.cf
 Añadimos las siguientes líneas al final del archivo. Antes conviene asegurarse de que no estén ya presentes. ¡Ojo! Antes de las opciones -o existen dos espacios.
amavis  unix    -       -       -       -       2       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20

127.0.0.1:10025 inet n  -       -       -       -       smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o mynetworks=127.0.0.0/8
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
 En el mismo archivo buscamos el servicio pickup y añadimos dos líneas, quedándose así:
pickup    unix  n       -       -       60      1       pickup
  -o content_filter=
  -o receive_override_options=no_header_body_checks
 En el otro archivo de configuración de Postfix:
sudo nano /etc/postfix/main.cf
 Añadimos la siguiente línea:

content_filter = amavis:[127.0.0.1]:10024
 Con esta configuración Amavis debería poder tener acceso al correo. Antes de activar el anti virus y el anti spam deberíamos probar que realmente lo tiene. Primero reiniciamos el servicio con un sudo /etc/init.d/amavis restart Ahora hemos de enviar un correo al servidor y buscar en los logs que amavis cumple su función. Recomiendo seguir el Anexo I, en concreto la prueba para ver si Postfix recibe correo conectándonos por telnet y después comprobar syslog con un:
cat /var/log/syslog | grep 'amavisd-new, port 10024'

 Si aparece algún resultado, es que Amavis está recibiendo el correo para su chequeo. Si todo va bien, el paso siguiente es activar las opciones del anti virus y del anti spam en su configuración.
sudo nano /etc/amavis/conf.d/15-content_filter_mode

 Dónde quitaremos el comentario de las siguientes líneas dejándolo como sigue:
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Si ya hemos hecho la comprobación de funcionamiento de Amavis y todo va como debe, podemos proceder a bajar el nivel de registro que alteramos anteriormente:
sudo nano /etc/amavis/conf.d/50-user
 El bloque de configuración que añadimos casi al final cambiará a éste:
@local_domains_acl = qw(.);
$log_level = 1;
$syslog_priority = 'info';
#$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
#$final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default
# $final_spam_destiny = D_BOUNCE; # debian default
 $final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked
 Hemos terminado con Amavis. Reiniciamos servicio y pasamos a lo siguiente:
sudo /etc/init.d/amavis restart

SpamAssassin:

 SpamAssassin, como su nombre indica, cumple la misión de identificar y eliminar gestionar por nosotros el correo no deseado. Procedemos a instalarlo con:
sudo apt-get install spamassassin spamc
 La configuración por defecto, una vez más, está bien para empezar y si no deseamos rompernos demasiado la cabeza, la dejaremos tal cual. No obstante, si alguien quiere ir más allá recomiendo un vistazo a su documentación y a la página web del proyecto que he enlazado arriba.
 Vamos a configurarlo para que arranque al inicio.
sudo nano /etc/default/spamassassin
 Dónde cambiamos ENABLED para dejarlo como sigue:

ENABLED=1

 

ClamAV:

 ClamAV será nuestro anti virus. Comprobará que nuestros correos estan limpios de malware y otras amenazas (Claro está, en la medida que puede hacerlo un anti virus). Instalamos:
sudo apt-get install clamav clamav-base libclamav6 clamav-daemon clamav-freshclam
 ClamAv tampoco necesitas grandes cambios. Podemos ver su configuración en /etc/clamav/ pero en principio será más por curiosidad. Freshclam en cambio quizá necesite un pequeño ajuste. Es el servicio que se encarga de la actualización de la base de datos de virus y por defecto viene configurado para hacerlo una vez cada hora (24 por día) lo cual es algo excesivo.
sudo dpkg-reconfigure clamav-freshclam
 Esta línea nos llevará a un asistente de configuración en el que podremos cambiar la tasa a 1 así como elegir un servidor cercano y definir las opciones de conexión.

 Si estamos animados y con ganas quizá interese usar el asistente de configuración de clam-base para definir opciones pero no es necesario:
sudo dpkg-reconfigure clamav-base
 Vamos a añadir el usuario clamav a Amavis para que pueda escanear los ficheros temporales.
sudo adduser clamav amavis
 Con esto está todo. Seguimos con Postgrey.

Postgrey:

Postgrey  es una pequeña herramienta que nos ayudará a evitar correo no deseado con el simple acto de retener los correos entrantes de remitentes no conocidos durante 5 minutos. Normalmente, los servidores de correo legítimo reintentarán mandar el correo unas cuantas veces antes de devolver un error, cosa que en un servidor de envío masivo de spam que genera de manera automática las direcciones de remite falsificadas o usa enormes listas de direcciones, no ocurrirá. Esto puede tener el inconveniente de que quizá ciertos correos de confirmación de alta o similares se retrasen un poco pero es un precio muy bajo por mantener lejos el spam.
sudo apt-get install postgrey
 Dejamos la configuración por defecto y nos vamos a Postfix para añadir normas de interacción con esta nueva herramienta:
sudo nano /etc/postfix/main.cf
 Y ahí buscamos la linea recipient_restrictions y la dejamos como sigue (Una única línea):
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit
 Listo.

 Ahora disponemos de un servidor de correo electrónico avanzado que comprueba los correos en busca de amenazas o spam. No está mal, pero falta algo. A mi juicio lo más importante, el cifrado y la autenticación. En el siguiente post hablaremos sobre ello. Por ahora recomiendo comprobar que todo funciona como debe antes de seguir y dar tiempo a que venga el próximo...
¡Saludos!

2 comentarios:

  1. Yo de servidores no sé pero tengo un script útil para el invierno:

    cd carpeta-con-300-pngs-high-res
    for resize in {30..70..10}; do
    for quality in {30..70..10}; do
    mkdir $resize-$quality
    parallel "convert {} -resize $resize% -quality $quality $resize-$quality/{.}.jpg" ::: *.png &&
    cd $resize-$quality &&
    ls -1v | tr "\n" " " | sed 's/$/\out.pdf' | xargs convert #LENTO: 8GB RAM => SWAP
    done
    done

    Ejecutas lo anterior en tu portátil, lo pones cerca o sobre las piernas y te calientas las próximas ¿3? ¿6? horas. Cuando acabe eliges el pdf que más te guste y a dormir calentito.

    ResponderEliminar