Mi servidor está bajo ataque. Estoy registrando este tipo de intentos:
Sep 22 06:39:11 s1574**** sshd[16453]: Failed password for invalid user amber from 64.215.17.4 port 35182 ssh2
Sep 22 04:39:11 s1574**** sshd[16454]: Received disconnect from 64.215.17.4: 11: Bye Bye
Sep 22 06:39:11 s1574**** sshd[16457]: Invalid user amber from 64.215.17.4
Sep 22 04:39:11 s1574**** sshd[16458]: input_userauth_request: invalid user amber
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): check pass; user unknown
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=dns2.rsd.com
Sep 22 06:39:11 s1574**** sshd[16457]: pam_succeed_if(sshd:auth): error retrieving information about user amber
Sep 22 06:39:14 s1574**** sshd[16457]: Failed password for invalid user amber from 64.215.17.4 port 35842 ssh2
Sep 22 04:39:14 s1574**** sshd[16458]: Received disconnect from 64.215.17.4: 11: Bye Bye
¿Qué puedo hacer para bloquear este tipo de intentos de acceso, algo así como bloquear la ip cuando hay más de 3 denegaciones?
Respuesta1
Puede limitar el número de intentos de inicio de sesión por minuto con
iptables
. Dichas reglas bloquearán la IP durante un minuto después de tres intentos de inicio de sesión (tomado deDiario de un geek: mitigación de ataques de fuerza bruta SSH utilizando Netfilter y elrecent
módulo):iptables -A ENTRADA -p tcp --dport 22 -m estado --estado NUEVO -m reciente --set --name SSH iptables -A ENTRADA -p tcp --dport 22 -m estado --estado NUEVO -j SSH_WHITELIST iptables -A ENTRADA -p tcp --dport 22 -m estado --estado NUEVO -m reciente --actualización --segundos 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force iptables -A ENTRADA -p tcp --dport 22 -m estado --estado NUEVO -m reciente --actualización --segundos 60 --hitcount 4 --rttl --nombre SSH -j DROP
Si quieres un sikytion más configurable, puedes usarfalla2banoDenegar hostspara analizar registros SSHd y bloquear direcciones IP sospechosas.
Respuesta2
La mejor forma práctica es bloquear todos los puertos innecesarios con iptables y configurar su ssh para usar una clave privada para iniciar sesión. Sé que Putty y MobaXterm (ambos clientes ssh gratuitos) admiten el inicio de sesión con clave privada. luego dentro de su /etc/ssh/sshd_config elimine el
PermitRootLogin yes
y añadir:
PermitRootLogin without-password
esto hará que incluso si conoce la contraseña de root no le permitirá iniciar sesión con ella.
Puedes usar las reglas de iptables para acelerarlos y que no atasquen tu servidor también.
Respuesta3
Instale el software Denyhosts. Automáticamente enumerará dichas IP de piratas informáticos en hosts.deny. El paquete está disponible en el repositorio de epel.