¿Cómo bloquear todos los intentos de inicio de sesión raíz utilizando denyhosts y / o fail2ban?

8

Actualmente bloqueo todos los inicios de sesión ssh usando root. Pero quería hacer un esfuerzo adicional y bloquear la dirección IP del cliente que intentó iniciar sesión como root. Actualmente tengo la configuración y el trabajo de denyhosts y fail2ban, ¿puedo usar denyhosts o fail2ban para bloquear las direcciones IP de aquellos que intentan iniciar sesión como root?

samwell
fuente

Respuestas:

2

Dependiendo de su distribución, edite /etc/fail2ban/jail.conf Actualice la [ssh]sección para mostrar algo como esto

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

Cambie los parámetros según sea necesario. No bloqueará específicamente la raíz, pero cada intento que falla. Tenga cuidado con maxretryy el bantime. Si falla con su propia contraseña, mientras se maxtretryestablece en baja, se bloquea para el bantime. Reinicie fail2ban.

No trataría de bloquear la IP para siempre, ya que muchos intentos provienen de IP dinámicas que podrían bloquear a algunos usuarios legítimos en un momento posterior.

(Algunas distribuciones ofrecen un archivo jail.options para sus modificaciones. Este es el lugar preferido para colocar sus cambios, ya que no debería verse afectado por las actualizaciones que sobrescriben la configuración).

Chris
fuente
44
buena información, pero creo que quería saber cómo bloquear todos los inicios de sesión utilizando la raíz del usuario ... no puedo ver eso en su respuesta. Tal vez lo hayas olvidado.
Mose
17

Copie este código en un nuevo archivo /etc/fail2ban/filter.d/sshd-root.conf:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

TENGA EN CUENTA que puede que tenga que editar el failregex para identificar con precisión los intentos fallidos de inicio de sesión raíz: use:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

para probar que identifica las entradas de registro correctas.

Luego debe editar su jail.local para utilizar el nuevo filtro; agregue algo como:

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

Obviamente, debe ajustar estos valores según sus necesidades. La configuración anterior eliminará todos los paquetes entrantes de la dirección IP infractora después de tres intentos de iniciar sesión como root, y liberará la IP nuevamente después de una semana.

ChrisG
fuente
1
Esto realmente merece ser la respuesta aceptada, ya que en realidad responde la pregunta.
peelman
Esta es definitivamente la respuesta correcta. Lo mejor es deshabilitar los inicios de sesión raíz en la configuración sshd y luego establecer maxretry en 1 en jail.conf.
anteatersa
1

Dado que el valor predeterminado /etc/fail2ban/filter.d/sshd.confya tiene una expresión regular para AllowUsers y DenyUsers ...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

Lo siguiente será:

  • Permitir conexiones desde exampleusernameIP externas
  • Y / rooto cualquier conexión en la red local (192.168.0. *)

La línea `/ etc / ssh / sshd_config ':

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

Y en /etc/fail2ban/jail.conf:

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999
jmunsch
fuente
0

¿Cómo bloqueaste los inicios de sesión de ssh? / bin / false o la opción sshd_config DenyUsers?

No puedo pensar en una respuesta fuera de mi cabeza, pero IIRC denyhosts analiza el archivo de registro, así que solo vea si obtiene una entrada fallida en el archivo de registro después de que alguien intente iniciar sesión para rootear con él deshabilitado

MitziMeow
fuente
2
Edité el archivo de configuración ssh /etc/ssh/sshd_config, y cambié PermitRootLoginde sí a no. No sé si esto es relevante, pero tengo instalado rssh para permitir que ciertos usuarios inicien sesión usando sftp pero no permitir ssh.
samwell
¿verificó los archivos de registro ssh si tiene el intento fallido de inicio de sesión del usuario?
MitziMeow
Sí, puedo ver que hay muchos intentos fallidos de inicio de sesión de usuario por parte de muchas direcciones IP diferentes, que no reconozco.
samwell
entonces denyhosts debería funcionar
MitziMeow