it-swarm-es.com

¿Prevenir ataques de fuerza bruta contra ssh?

¿Qué herramienta o técnica utiliza para evitar ataques de fuerza bruta contra su puerto ssh? Noté en mis registros de Seguridad, que tengo millones de intentos para iniciar sesión como varios usuarios a través de ssh.

Esto está en un cuadro de FreeBSD, pero imagino que sería aplicable en cualquier lugar.

49
grieve

Aquí hay un buen post sobre ese tema por Rainer Wichmann.

Explica los pros y los contras de estos métodos para hacerlo:

  • Contraseñas seguras
  • Autenticación RSA
  • Usando 'iptables' para bloquear el ataque
  • Usando el registro sshd para bloquear ataques
  • Usando tcp_wrappers para bloquear ataques
  • Golpe de puerto
25
paulgreg

Uso fail2ban que bloqueará una IP después de varios intentos fallidos durante un período de tiempo configurable.

Combine esto con la prueba de seguridad de la contraseña (usando john (John the Ripper)) para garantizar que los ataques de fuerza bruta no tengan éxito.

39
Brent

Una pequeña cosa que puedes hacer es usar algo como DenyHosts:

http://denyhosts.sourceforge.net/

Utiliza los hosts.allow/hosts.deny integrados para bloquear a los abusadores de SSH.

24
hernan43
  • Cambiar el puerto utilizado (como Trent mencionado)
  • Requiere claves de cifrado en lugar de contraseñas. http://novosial.org/openssh/publickey-auth/
  • Lista negra atacante ips
  • Lista blanca usuarios conocidos para evitar listas negras accidentales. (como mencionó Samiuela)
16
Chris Ballance

Una de las formas más fáciles de evitar estos ataques es cambiar el puerto en el que sshd escucha

15
trent

Como señala Chris, use claves de cifrado en lugar de contraseñas.

Añadir a eso:

  • use una lista blanca cuando sea posible.

¿Cuántas personas o ubicaciones (con IP públicas flotantes) realmente necesita para acceder a sus conexiones ssh públicas?

Dependiendo de la cantidad de hosts ssh públicos que esté manteniendo y si puede reducir sus criterios de conexión generales, puede ser una configuración más simple y fácil de mantener para limitar el acceso a unos pocos hosts externos.

Si esto funciona para usted, realmente puede simplificar sus gastos generales de administración.

12
samt

Además de las otras buenas sugerencias, una cosa realmente fácil de hacer es limitar la velocidad de las conexiones entrantes. Límite de 3 conexiones por minuto por IP:

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
11
sherbang

Use la opción "AllowUsers" en sshd_config para asegurarse de que solo un pequeño grupo de usuarios pueda iniciar sesión. Todos los demás serán rechazados, incluso si su nombre de usuario y contraseña son correctos.

Incluso puede restringir a los usuarios a inicios de sesión desde un Host particular.

p.ej.,

AllowUsers user1 [email protected]

Esto reducirá el espacio de búsqueda y evitará aquellos usuarios antiguos que accidentalmente se hayan quedado acostados o habilitados (aunque, por supuesto, estos deberían deshabilitarse de todos modos, esta es una manera fácil de evitar que se usen para una entrada basada en SSH).

Esto no detiene por completo los ataques de fuerza bruta, pero ayuda a reducir el riesgo.

6
David Gardner

Use algo así con PF:

la tabla <ssh-brute> persiste
bloque en registro rápido de la etiqueta ssh_brute
pasar $ ext_if proto tcp a ($ ext_if) puerto ssh modulate state \
(max-src-conn-rate 3/10, descarga de sobrecarga global)

3
CycyX

Port-knocking es una forma bastante sólida de evitar este tipo de cosas. Ligeramente complicado, a veces molesto, pero definitivamente hace que el problema desaparezca.

2
Luke

Además de sugerencia de limitación de velocidad de sherbang , la duración del retraso es importante. Al aumentar el retraso entre grupos de 3 intentos de inicio de sesión de 2 minutos a 20 minutos, la cantidad de direcciones IP diferentes que hicieron más de tres intentos de inicio de sesión disminuyó, comparando dos períodos de una semana en una máquina mía, de 44 intentos a 3 Ninguna de esas tres direcciones siguió intentándose durante más de 11 horas.

Muy anecdótico, pero auth.log se volvió mucho más legible para mí ...

2
Charles Stewart

El contexto es importante, pero recomendaría algo así:

  • Como está usando FreeBSD, considere ejecutar el firewall PF y usar sus sólidas funciones de limitación de velocidad de conexión. Esto le permitirá enviar a los fuerza brutas a una lista negra si se conectan con frecuencia.
  • Si se debe acceder a este cuadro desde el mundo exterior, considere usar una regla PF rdr para no permitir el tráfico al puerto 22, sino para redirigir algún puerto oscuro hacia él. Es decir, debe conectarse al puerto 9122 en lugar de 22. Es oscuro, pero mantiene alejados a los llamadores.
  • considere la posibilidad de pasar a la autenticación basada en claves solamente, lo que hace que los ataques de diccionario sean inútiles
2
Michael Gorsuch

Simplemente no me importa. Déjelos alejarse en el puerto, no van a forzar una llave con fuerza bruta.

1
womble

instalar OSSEC. no solo monitorea los inicios de sesión repetidos, sino que ingresará un bloque temporal con iptables para la ip infractora. Y al final le enviará un informe indicando los detalles. registra todo, lo cual es bueno. Somone intentó una vez más de 8000 nombres de inicio de sesión para iniciar sesión. analicé los registros y obtuve una lista de usuarios de Nice fuera de oferta;)

1
Marcin