De repente, algunas personas o computadoras intentan iniciar sesión en mi servidor Linux DirectAdmin.
Los últimos días recibo muchos mensajes de ataques de fuerza bruta para Exim2 en Direct Admin.
Ya instalé Fail2Ban y Block_IP.SH está en el servidor.
Entonces, si el usuario falla 15 veces al iniciar sesión, la dirección IP se bloqueará.
¿Cómo puedo evitar que los ataques continúen para que las computadoras ya no intenten iniciar sesión?
Respuesta1
Este es un bot distribuido mal escrito. Por lo que puedo decir, estos hosts están intentando autenticarse a través de una conexión no cifrada. Si necesita una conexión segura para autenticarse, incluso fallarán. Sin embargo, parece que está permitiendo la autenticación en conexiones no cifradas.
De forma predeterminada, fail2ban
no se cumplirá esta condición, pero se bloqueará después de 3 intentos en 10 minutos. Puede crear un jail.local
archivo para ajustar la cantidad de fallas necesarias para ser prohibido fail2ban
o aumentar el tiempo de prohibición. fail2ban-client
También le permite ajustar la configuración mientras el servidor está en ejecución. Es posible que necesite crear un exim.local
archivo que filter.d
coincida con las líneas que se están generando. He incluido el contenido de mi exim.local
. Puede usarlo fail2ban-regex
para probar expresiones regulares (deberá reemplazar las inclusiones de Python en la expresión regular).
[Definition]
host_info = H=([\w.-]+ )?(\(\S+\) )?\[<HOST>\](:\d+)? ?(I=\[\S+\]:\d+ )?(U=\S+ )?(P=e?smtp )?
failregex = ^%(pid)s %(host_info)s [^:]+: Sender host address is listed in zen.spamhaus.org
^%(pid)s %(host_info)s sender verify fail for <\S+>: (?:Unknown user|Unrouteable address|all relevant MX records point to non-existent hosts)\s*$
^%(pid)s (plain|login) authenticator failed for (\S+ )?\(\S+\) \[<HOST>\]: 535 Incorrect authentication data( \(set_id=.*\)|: \d+ Time\(s\))?\s*$
^%(pid)s %(host_info)s F=(<>|[^@]+@\S+) rejected RCPT [^@]+@\S+: (relay not permitted|Sender verify failed|Unknown user)\s*$
^%(pid)s SMTP protocol synchronization error \([^)]*\): rejected (connection from|"\S+") %(host_info)s(next )?input=".*"\s*$
^%(pid)s SMTP call from \S+ \[<HOST>\](:\d+)? (I=\[\S+\]:\d+ )?dropped: too many nonmail commands \(last was "\S+"\)\s*$
\[<HOST>\]: 535 Incorrect authentication data
^%(pid)s %(host_info)s Warning: smtp used a hostname$
^%(pid)s no MAIL in SMTP connection from (\([^)]+\) )?\[<HOST>\] D=\d+(m\d+)?s( C=.*)?$
^%(pid)s SMTP protocol synchronization error \(input sent without waiting for greeting\): rejected connection from %(host_info)s
ignoreregex =