1- "greet_pause" como forma de prevenir el spam

Imagen de Epe

También conocida como greeting pause, es una técnica que se puede usar en sendmail para espantar a los spammers que no cumplan con una sencilla condición de respeto.

Veamos algo, cuando haces telnet al puerto 25 de tu máquina te sale algo así:

[code]
telnet IPDEMISERVER 25
Trying IPDEMISERVER...
Connected to mail.xyz.com (1.2.3.4).
Escape character is '^]'.
[/code]

La sesión no se ha iniciado completamente todavía, esto es, el servidor no te ha enviado el greet o bienvenida. La bienvenida es un mensaje que el servidor envía cuando ya está listo y dice así:

[code]
220 mail.xyz.com ESMTP Wed, 7 Feb 2007 14:23:26 -0500
[/code]

Ahora, entre el primer cuadro y la bienvenida (segundo cuadro), pasan algunos segundos.

Un spammer no tiene tiempo para estar esperando varios segundos hasta que aparezca la bienvenida, y qué hace? Pues comienza a enviar los comandos antes de que aparezca la bienvenida. De esta forma ahorra tiempo.

Recuerda que el spammer no está enviando tu correo a 10 personas sino a decenas, cientos, quizá miles o millones de correos. Cada segundo que pierda es negocio malo para él, puesto que cada segundo que pierde aumenta la posibilidad de que le detecten y bloqueen.

Es por esto que los spammers no esperan al mensaje 220 conocido como greeting.

Los sistemas de correo SMTP legales, esperan pacientemente el tiempo que sea necesario hasta que aparezca el mensaje 220 y sólo entonces comienzan a enviar sus correos.

[b]Qué podemos hacer?[/b]

Podemos indicarle a nuestro sendmail que se moleste en demorar el inicio de sesión, el mensaje de bienvenida unos segunditos. Por ejemplo digamos 5 segundos.

Así que cuando abran una sesión al puerto 25, el sendmail nuestro demorará ese tiempo. Si alguien intenta escribir algún comando antes de ese tiempo, el sistema le dirá que no está permitido, le emitirá un fallo.

De esta forma muchos correos de spam sencillamente no llegarán, pues los spammers tienen sus sistemas de bulking preparados para enviar rapidamente y no esperar.

Ahora, qué puede suceder a futuro? Que los spammers comiencen a respetar el mensaje 220 y a esperar. Eso igual les afectará, por qué? porque si están enviando 10millones de mensajes y por cada uno tienen que esperar 5 segundos, entonces demorarán muchísimo tiempo lo que hará poco rentable el envío. El demorarles es efectivo en cualquier variante.

[b]Cómo implementarlo?[/b]

edita [i]/etc/mail/sendmail.mc[/i] y busca esta linea:[code]
FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl
[/code]

Puede que en tu caso la linea varíe, pero la idea es que diga: access_db de feature.

Justo [b]debajo[/b] de ésta linea pon:
[code]
FEATURE(`greet_pause', `5000')
[/code]

Salva el archivo (sendmail.mc) y procede a recompilar el sendmail.cf; Nunca está de más hacer una copia previa del /etc/mail/sendmail.cf por si acaso algo te falla.

[code]
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
[/code]

Reinicia tu sendmail.

Ahora verás que si haces un telnet al puerto 25 de tu máquina, el sendmail demorará unos 5 segs en aparecer con su greeting pause. Si escribes algo antes de esos 5 segs te dará un error, veamos el ejemplo:

[code]# telnet mail.xyz.com 25
Trying 67.15.12.90...
Connected to mail.xyz.com (1.2.3.4).
Escape character is '^]'.
[b]ehlo epe[/b]
554 mail.xyz.com ESMTP not accepting messages
250-mail.xyz.com Hello [200.63.231.203], pleased to meet you
250 ENHANCEDSTATUSCODES
mail from: unadireccion@undominio.com
550 5.0.0 Command rejected
[/code]

Es decir, antes del 220 emití un comando (ehlo) y el sistema entonces me cerró, me emite un 554 un mensaje de error. Tengo que cerrar la sesión y abrirla de nuevo.. y eso no le conviene a los atacantes.

[b]Qué tiempo de demora sugerimos?[/b]

no 5 segs, quizá 2 ó 3 segs.. este valor puedes acomodarlo según necesites.

Fijate que se mide en milesimas: 5000 es 5segs, 2000 es 2 segs.

[b]Cómo quitar la pausa para localhost?[/b]

Editamos [i]/etc/mail/access[/i] y agregamos esta linea:
[code]
GreetPause:localhost 0
[/code]

reiniciamos sendmail.

localhost casi nunca envía spam (somos nosotros mismos). por eso es bueno ponerlo como 0 espera pues lo usa el squirrelmail. Podrías listar otra red si necesitas. La idea es:
[code]
GreetPause:red tiempo
[/code]
La red se lista como se acostumbra en el access de sendmail ([b]192.168.1[/b] por ejemplo, sería para la red 192.168.1.0/24)

Vamos, no es que el spam desaparezca con esto, lo que síte quitarás decenas quizá miles de máquinas impertinentes que envían locamente el spam.

Luego veremos otras medidas.

Comentarios

Hola EPE como vas? Me parece

Imagen de NEO

Hola EPE como vas?
Me parece super buena sugerencia.

Pero a mi me sale este error el rato de pasarle el m4

[root@ns1 mail]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/mail/sendmail.mc:84: m4: Cannot open /usr/share/sendmail-cf/feature/greet_pause.m4: No existe el fichero o el directorio
[root@ns1 mail]#

Estoy haciendo algo mal?

Saludos
NEO

Hola NEO el sendmail debe

Imagen de Epe

Hola NEO

el sendmail debe ser 8.13.0 o superior.

Debes tener instalado el paquete sendmail-cf

[code]
yum install sendmail-cf
[/code]

Saludos
epe
--
EcuaLinux.com
Ecuador: +(593) 9 9246504, +(593) 2 3412402
USA: +1 404 795 0321

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre