Pues la noche pasada me toco un server que le estaban tupiendo con ataques de spam tipo diccionario, un ataque distribuido llamados “ddos”. cientos de servers distintos abriendo conexiones y enviando correo a cuentas existentes, pero en el dominio del server. los cuales alenta el sistema y en veces le llenaban la cola de conexiones, dejando de recibir nuevas conexiones incluso a los usuarios, ataque acompañado de syn floods.

Como mitigar un poco el ataque:

GREYLISTING AL RESCATE

Se instala Greylisting

Se configura el SMTP con algunas mejoras para tratar alto trafico

unknown_local_recipient_reject_code = 550
smtpd_error_sleep_time = 0s
smtpd_hard_error_limit = 2
smtpd_soft_error_limit = 1 

smtpd_recipient_restrictions =
         reject_non_fqdn_sender
         reject_unknown_recipient_domain
         permit_mynetworks
         permit_sasl_authenticated
         reject_unauth_destination
         check_policy_service inet:127.0.0.1:10023
         check_helo_access pcre:/etc/postfix/helo 

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_rbl_client list.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rhsbl_sender dsn.rfc-ignorant.org, reject_unknown_client

El archivo de verificacion de HELO es el siguiente:

# regex checks against helo
/^[[:digit:]\.-]*$/
         REJECT Unacceptable hostname in helo
/^localhost$/
         REJECT Unacceptable hostname in helo 

- Para que se reciba la opcion “check_policy_service inet:127.0.0.1:10023″ necesita ser una version acualizada de postfix

En vesiones viejas da el error:

fatal: unsupported dictionary type: inet

El show fue la necesidad de actualizar el BerkeleyDB, pues le pegaba al SASL y al Spamassassin, y al ser slackware, la actualizacion fue a pata todo

Y por ultimo un escriptin bash que revise el log y bloquee con iptables los ips con hosts invalidos buscando el texto “cannot find your hostname” y agregue al bloqueo algunos bloques de ips asiaticos y europeos para no dejarlos llegar al Postfix y bajarle un poco el procesamiento.