En resumen
Todo servidor de correo expuesto a internet recibe intentos de adivinar contraseñas a diario. La fuerza bruta prueba muchas contraseñas contra una cuenta; el password spraying prueba pocas contraseñas comunes contra muchas cuentas, lentamente, para no activar bloqueos. Se detectan contando los fallos de autenticación en /var/log/maillog y /var/log/exim_mainlog, y se frenan con cPHulk, conexiones solo cifradas y contraseñas fuertes obligatorias.
Tres formas de adivinar una contraseña
| Ataque | Cómo funciona | Cómo se ve en los logs |
|---|---|---|
| Fuerza bruta | Cientos de contraseñas contra una sola cuenta | Muchos fallos seguidos para el mismo usuario desde pocas IPs |
| Password spraying | Pocas contraseñas comunes ("Verano2026", "Empresa123") contra muchas cuentas | Uno o dos fallos por usuario, en muchos usuarios, desde IPs que rotan |
| Credential stuffing | Pares usuario/contraseña filtrados de otros sitios | Pocos intentos, a veces con éxito al primer intento |
El password spraying es el más peligroso para un hosting: como cada cuenta recibe muy pocos intentos, los bloqueos por cuenta no se activan, y basta que un solo usuario tenga una contraseña común para que el atacante entre.
Cómo detectarlos en los logs
Dovecot (IMAP y POP3) registra los fallos en /var/log/maillog con líneas como imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=<ventas@dominio.cl>, method=PLAIN, rip=203.0.113.25. Exim registra los fallos de autenticación SMTP en /var/log/exim_mainlog como dovecot_login authenticator failed.
# IPs con más fallos de inicio de sesión IMAP/POP3
grep "auth failed" /var/log/maillog | grep -o "rip=[0-9a-f.:]*" | sort | uniq -c | sort -rn | head
# Usuarios con más fallos (un patrón parejo en muchos usuarios = spraying)
grep "auth failed" /var/log/maillog | grep -o "user=<[^>]*>" | sort | uniq -c | sort -rn | head -30
# Fallos de autenticación SMTP
grep "authenticator failed" /var/log/exim_mainlog | grep -o "set_id=[^)]*" | sort | uniq -c | sort -rn | headFíjate en dos patrones: una IP con cientos de fallos (fuerza bruta, fácil de bloquear) y decenas de usuarios distintos con uno o dos fallos cada uno en la misma ventana de tiempo (spraying, más difícil). Si después de una ola de fallos aparece un inicio de sesión correcto desde una IP extranjera, trata esa cuenta como comprometida.
Configurar cPHulk
cPHulk es la protección contra fuerza bruta incluida en cPanel. Cubre cPanel, WHM, webmail, IMAP, POP3 y SMTP. Se configura en WHM › Security Center › cPHulk Brute Force Protection:
- Agrega tu IP y la de tu oficina a la lista blanca antes de nada, para no bloquearte a ti mismo.
- Activa la protección por usuario y la protección por IP. La primera bloquea cuentas atacadas; la segunda, IPs atacantes.
- Usa umbrales moderados: por ejemplo, 5 fallos por IP en 15 minutos y un bloqueo de varias horas tras fallos repetidos.
- Si tus clientes están solo en algunos países, considera bloquear países desde los que nunca deberían iniciar sesión (Countries Management).
cPHulk cuenta intentos por IP y por usuario. Contra un spraying distribuido, con muchas IPs y pocos intentos por cuenta, ayuda poco. Por eso las medidas del siguiente apartado son igual de importantes.
Si usas ConfigServer Security & Firewall (CSF), sus opciones LF_POP3D, LF_IMAPD y LF_SMTPAUTH bloquean en el firewall las IPs con demasiados fallos, y LF_DISTATTACK detecta ataques distribuidos contra una misma cuenta.
Cerrar las puertas que aprovechan
- Desactiva la autenticación en texto plano: en WHM › Service Configuration › Mailserver Configuration, deja "Allow Plaintext Authentication" en No. Así ninguna contraseña viaja sin cifrar.
- Contraseñas fuertes obligatorias en WHM › Security Center › Password Strength Configuration. Las contraseñas que usa el spraying son justamente las débiles y comunes.
- Contraseñas únicas. Una contraseña reutilizada y filtrada en otro sitio se prueba con éxito al primer intento.
- Revisa las cuentas que nadie usa. Buzones de exempleados o de pruebas, con contraseñas antiguas, son el blanco favorito.
| Puerto | Uso | Recomendación |
|---|---|---|
| 25 | Entrega entre servidores | Abierto, sin autenticación de usuarios |
| 465 | Envío de clientes con TLS implícito | Recomendado |
| 587 | Envío de clientes con STARTTLS | Recomendado |
| 110 | POP3 sin cifrar | Cerrar o exigir STARTTLS |
| 995 | POP3 con TLS | Recomendado si usan POP3 |
| 143 | IMAP sin cifrar | Cerrar o exigir STARTTLS |
| 993 | IMAP con TLS | Recomendado |
Si un ataque tuvo éxito
Cambia la contraseña, revisa reenviadores y filtros del buzón y comprueba si la cuenta empezó a enviar spam. El procedimiento completo está en cuenta de correo comprometida. Recuerda que, además de la fuerza bruta, la otra gran vía para robar contraseñas es el phishing de credenciales, que ningún bloqueo por intentos fallidos puede detener.
Preguntas frecuentes
¿Qué es el password spraying?
Un ataque que prueba unas pocas contraseñas muy comunes contra muchas cuentas, de forma lenta y desde IPs distintas, para no activar los bloqueos por intentos fallidos.
¿cPHulk puede bloquear a mis propios usuarios?
Sí, si alguien configura mal su programa de correo y reintenta con una contraseña vieja. Por eso conviene poner en la lista blanca las IPs de oficina y revisar los bloqueos en WHM antes de culpar al usuario.
¿Debo cerrar los puertos 110 y 143?
Lo ideal es que los clientes usen 995 y 993 con TLS. Si no puedes cerrarlos, al menos desactiva la autenticación en texto plano para que ninguna contraseña viaje sin cifrar.
¿La autenticación en dos pasos de cPanel protege el correo?
Protege el acceso a cPanel y WHM, pero no a IMAP, POP3 ni SMTP. Para el correo, lo que cuenta son contraseñas fuertes y únicas, cPHulk y las conexiones cifradas.
Protege el correo entrante de todo tu servidor
Además de la fuerza bruta, las contraseñas se roban con phishing. Clisec bloquea esos correos en todo tu servidor cPanel antes de que lleguen al buzón.