Bloquea atacantes en tu VPS (que no te roben tu clave root)

  • Autor Autor jackl007
  • Fecha de inicio Fecha de inicio
jackl007

jackl007

Eta
Programador
Verificación en dos pasos activada
Hola amigos, resulta que hace unos meses mi servidor VPS estuvo compremetido en un ataque de Phishing y me lo habían cerrado. Luego de demostrar que yo no tenia nada que ver me volvieron a activar el VPS y todo quedó ahí. Como diablos fue mi VPS comprometido? pues alguien entró como root a mi VPS y lo modificó a su conveniencia. Yo pense que me habían robado la clave desde mi Pc, cambié todas las claves y lo deje ahí.

Mi servidor VPS anda consumiendo recursos y tenia sospechas de que me estaban atacando DDOS, e investigando encontré también una forma de protegerte de ataques de fuerza bruta y publicaron vi este comando:

Insertar CODE, HTML o PHP:
grep sshd /var/log/messages

Me quede impresionado al ver esto (voy a poner un fragmento porque es inmenso el archivo):

Insertar CODE, HTML o PHP:
Oct 15 14:59:13 doxserver sshd[3409]: Failed password for root from 122.96.148.114 port 53356 ssh2
Oct 15 20:59:13 doxserver sshd[3411]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 20:59:13 doxserver sshd[3410]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:15 doxserver sshd[3412]: Failed password for root from 122.96.148.114 port 53438 ssh2
Oct 15 14:59:15 doxserver sshd[3413]: Failed password for root from 122.96.148.114 port 53435 ssh2
Oct 15 20:59:15 doxserver sshd[3414]: Received disconnect from 122.96.148.114: 11: Bye Bye
...
Oct 15 14:59:19 doxserver sshd[3418]: Failed password for root from 122.96.148.114 port 53648 ssh2
Oct 15 20:59:19 doxserver sshd[3419]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:21 doxserver sshd[3420]: Failed password for root from 122.96.148.114 port 53767 ssh2
Oct 15 20:59:21 doxserver sshd[3421]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:22 doxserver sshd[3422]: Failed password for root from 122.96.148.114 port 53854 ssh2
Oct 15 20:59:23 doxserver sshd[3423]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:24 doxserver sshd[3424]: Failed password for root from 122.96.148.114 port 53975 ssh2
Oct 15 20:59:24 doxserver sshd[3425]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:26 doxserver sshd[3426]: Failed password for root from 122.96.148.114 port 54060 ssh2
Oct 15 20:59:26 doxserver sshd[3427]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:28 doxserver sshd[3428]: Failed password for bin from 122.96.148.114 port 54171 ssh2
Oct 15 20:59:28 doxserver sshd[3430]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:30 doxserver sshd[3431]: Failed password for root from 122.96.148.114 port 54278 ssh2
Oct 15 20:59:30 doxserver sshd[3432]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:32 doxserver sshd[3433]: Failed password for root from 122.96.148.114 port 54400 ssh2
Oct 15 20:59:32 doxserver sshd[3434]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:34 doxserver sshd[3435]: Failed password for root from 122.96.148.114 port 54502 ssh2
Oct 15 20:59:34 doxserver sshd[3436]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:36 doxserver sshd[3437]: Failed password for root from 122.96.148.114 port 54665 ssh2
Oct 15 20:59:36 doxserver sshd[3438]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:37 doxserver sshd[3439]: Failed password for root from 122.96.148.114 port 54784 ssh2
Oct 15 20:59:38 doxserver sshd[3440]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:39 doxserver sshd[3442]: Invalid user msr from 122.96.148.114
Oct 15 20:59:39 doxserver sshd[3443]: input_userauth_request: invalid user msr
Oct 15 14:59:39 doxserver sshd[3442]: error: Could not get shadow information for NOUSER
Oct 15 14:59:39 doxserver sshd[3442]: Failed password for invalid user msr from 122.96.148.114 port 54944 ssh2
...
Oct 15 20:59:41 doxserver sshd[3449]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:43 doxserver sshd[3451]: Failed password for root from 122.96.148.114 port 55192 ssh2
Oct 15 20:59:43 doxserver sshd[3452]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:45 doxserver sshd[3456]: Failed password for root from 122.96.148.114 port 55268 ssh2
Oct 15 20:59:45 doxserver sshd[3457]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:47 doxserver sshd[3458]: Failed password for root from 122.96.148.114 port 55394 ssh2
Oct 15 20:59:47 doxserver sshd[3459]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:49 doxserver sshd[3460]: Failed password for root from 122.96.148.114 port 55470 ssh2
Oct 15 20:59:49 doxserver sshd[3462]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:51 doxserver sshd[3463]: Failed password for root from 122.96.148.114 port 55590 ssh2
Oct 15 20:59:51 doxserver sshd[3464]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:52 doxserver sshd[3466]: Failed password for root from 122.96.148.114 port 55673 ssh2
Oct 15 20:59:53 doxserver sshd[3467]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 14:59:54 doxserver sshd[3468]: Failed password for root from 122.96.148.114 port 55799 ssh2
...
Oct 15 15:00:02 doxserver sshd[3478]: Failed password for bin from 122.96.148.114 port 56217 ssh2
Oct 15 21:00:02 doxserver sshd[3479]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:04 doxserver sshd[3480]: Failed password for root from 122.96.148.114 port 56295 ssh2
Oct 15 21:00:04 doxserver sshd[3481]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:06 doxserver sshd[3482]: Failed password for root from 122.96.148.114 port 56426 ssh2
Oct 15 21:00:06 doxserver sshd[3483]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:07 doxserver sshd[3486]: Failed password for root from 122.96.148.114 port 56502 ssh2
Oct 15 21:00:08 doxserver sshd[3487]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:09 doxserver sshd[3489]: Failed password for root from 122.96.148.114 port 56592 ssh2
Oct 15 21:00:10 doxserver sshd[3490]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:11 doxserver sshd[3491]: Failed password for root from 122.96.148.114 port 56709 ssh2
Oct 15 21:00:11 doxserver sshd[3492]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:13 doxserver sshd[3493]: Failed password for root from 122.96.148.114 port 56800 ssh2
Oct 15 21:00:13 doxserver sshd[3494]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:15 doxserver sshd[3495]: Failed password for root from 122.96.148.114 port 56914 ssh2
Oct 15 21:00:15 doxserver sshd[3496]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:17 doxserver sshd[3497]: Failed password for bin from 122.96.148.114 port 56981 ssh2
Oct 15 21:00:17 doxserver sshd[3498]: Received disconnect from 122.96.148.114: 11: Bye Bye
Oct 15 15:00:17 doxserver sshd[3501]: refused connect from 122.96.148.114 (122.96.148.114)
Oct 15 15:00:54 doxserver sshd[3535]: Did not receive identification string from 79.174.218.234
Oct 15 15:00:54 doxserver sshd[3536]: Did not receive identification string from 79.174.218.234

Cientos de intentos de conexión fallados diariamente, pues por FUERZA BRUTA están intentando obtener mi clave de mi VPS.
Entre los ultimos 4 dias tengo 6 IPs distintas que buscan obtener mi usuario.

Ahora he instalado el famoso programita: DenyHosts, el cual examina esos logs y bloquea las IPS que quieren conectarse al VPS.

Les recomiendo que instalen el DenyHosts y eviten que alguien les robe la clave, a mi me decifraron una clave de 10 dígitos con numeros y letras, seguro habrán tardado varios días en probar los cientos de miles de combinaciones hasta que la encontraron.

Espero que les sea de ayuda a los que tienen un VPS unmanagment como yo ...
 
Buen dato, no conocía esa herramienta. La probaré.
 
Wow, tengo un dedicado y pues el comando no me sirvio pero igualmente voy a ver como instalo ese DenyHosts, ​Muchas gracias.
 
Hola 🙂
Fail2ban como dicen por aquí también está muy bien, hay más opciones disponibles para otros servicios (como ftp y mail)
Si solo quieres evitar fuerza bruta en ssh denyhosts te solucionará el problema.

Lo lógico es usar un puerto distinto, así evitas los molestos zombies en busca de máquinas vulnerables.
(siempre complementandolo con denyhosts o fail2ban)

P.D: No me gusta ver el hosts.deny "lleno" en 4 días..

Saludos.
 
Wow, tengo un dedicado y pues el comando no me sirvio pero igualmente voy a ver como instalo ese DenyHosts, ​Muchas gracias.

Hoy nadie te estará atacando pero mañana podría que si y ni cuenta te das. Claro, ahora que lo sabes mas vale prevenir.
 
Wow, tengo un dedicado y pues el comando no me sirvio pero igualmente voy a ver como instalo ese DenyHosts, ​Muchas gracias.


SI tienes cpanel y tienes activado cphulk no te hace falta, ese te hace la función de bloquear cualquier intento fallido de contraseña por ssh, cpanel, whm etc.

Lo recomendable es cambiar el puerto de root y deshabilitar el acceso de este, crear un usuario nuevo y listo, se puede pasar años buscando por donde y con que usuario acceder 😛
 
Muy buen aporte.

Muchas gracias. Me he ido en seguida a instalar el DenysHosts a mi VPS y... problema: es un Centos 6.3 y he estado leyendo cómo hacerlo: me bajo el rpm, el yum install etc. pero... ¡error de dependencias! porque mi versión de Python es más reciente que la que pide. Por ahí leo a más gente que le pasa lo mismo. También leo que no tiene importancia ya que, como es lógico, en las versiones siguientes de Python también funciona. Lo que no consigo encontrar es cómo 'ignorar' este error para que me deje instalarlo. ¿Alguna idea?
 
Muy buen aporte.

Muchas gracias. Me he ido en seguida a instalar el DenysHosts a mi VPS y... problema: es un Centos 6.3 y he estado leyendo cómo hacerlo: me bajo el rpm, el yum install etc. pero... ¡error de dependencias! porque mi versión de Python es más reciente que la que pide. Por ahí leo a más gente que le pasa lo mismo. También leo que no tiene importancia ya que, como es lógico, en las versiones siguientes de Python también funciona. Lo que no consigo encontrar es cómo 'ignorar' este error para que me deje instalarlo. ¿Alguna idea?

Mientras averiguas como resolver tu problema, te aconsejo crear otro usuario y darle acceso "sudo", bloquear el acceso root, y cambiar puerto ssh. Eso es básico.
 
Muchas gracias por la info, probaré Denyhost.
 
Mientras averiguas como resolver tu problema, te aconsejo crear otro usuario y darle acceso "sudo", bloquear el acceso root, y cambiar puerto ssh. Eso es básico.

Gracias, tomo nota!
 
Muy buen aporte.

Muchas gracias. Me he ido en seguida a instalar el DenysHosts a mi VPS y... problema: es un Centos 6.3 y he estado leyendo cómo hacerlo: me bajo el rpm, el yum install etc. pero... ¡error de dependencias! porque mi versión de Python es más reciente que la que pide. Por ahí leo a más gente que le pasa lo mismo. También leo que no tiene importancia ya que, como es lógico, en las versiones siguientes de Python también funciona. Lo que no consigo encontrar es cómo 'ignorar' este error para que me deje instalarlo. ¿Alguna idea?

Bajate la versión 2.4 o 2.5 del Python.

Después de la instalación leete el README.txt que está en los ficheros del DenyHosts.

Luego vas a editar el fichero, y agregas: el numero de la versión después de donde diga "python", en la primera linea (#!/usr/bin/env python) y luego en la linea 18 ( ... = "/usr/bin/env python").

Quedaría así para la versión 2.5:

Insertar CODE, HTML o PHP:
#!/usr/bin/env python2.5
# denyhosts     Bring up/down the DenyHosts daemon
#
# chkconfig: 2345 98 02
# description: Activates/Deactivates the
#    DenyHosts daemon to block ssh attempts
#
###############################################

###############################################
#### Edit these to suit your configuration ####
###############################################

DENYHOSTS_BIN   = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK  = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG   = "/usr/share/denyhosts/denyhosts.cfg"

PYTHON_BIN      = "/usr/bin/env python2.5"

En mi caso, cambie la variable a : DENYHOSTS_BIN = "/usr/local/bin/denyhosts.py"

Luego a mi me dio un error de importación del zlib, lo solucioné poniendo en comentario la linea donde importaba ese paquete. Si tienes ese error, ubica el archivo y linea donde se hace una importación tipo: "import zlib". No recuerdo cual era el archivo, pero si te da error alli dice el nombre del archivo y linea. Ese paquete del zlib es para descomprimir los logs cuando estan compresos.

Nos cuentas si lograste instalarlo correctamente ...

Saludos.
 
Última edición:
Muchas gracias por el consejo.
 
No van ni 2 días y ya tengo muchas IPs bloqueadas:
Insertar CODE, HTML o PHP:
sshd: 114.255.20.157
sshd: 93.62.48.179
sshd: 211.169.127.86
sshd: 122.96.148.114
sshd: 71.6.34.42
sshd: 159.226.94.34
sshd: 121.8.100.10
sshd: 223.4.147.148
sshd: 223.252.15.101
sshd: 188.132.183.70
sshd: 64.251.21.104
sshd: 209.105.245.143
sshd: 200.46.29.37

Por eso mi servidor se paraba cayendo, y también ya una vez me robaron la clave, aquí el hilo respectivo:
http://forobeta.com/vps/114013-se-metieron-a-mi-vps-y-name-com-me-bloqueo.html
 
Muchas gracias jackl007

El caso es que ya cambié puerto ssh y demás y al ver los intentos en el log me asuste y fui, ante los problemas con el denyhosts, fui corriendo a instalar el fail2ban. Qué además puede vigilar otros servicios (el ftp es un agujero negro) y... en principio sin problemas pero... me pasa algo muy curioso: funciona, está activado, me apunta direcciones como baneadas, en incluso me manda correo avisándome, pero ¡me sigue dejando entrar! (Y no, no tengo puesta mi propia ip como excluida) Estoy flipando...
 
Pones el acceso ssh mediante certificados, cambias de puerto y ya está.
 
Como menciona [MENTION=3679]wsoulrc[/MENTION] CSF te detiene esos ataques, pues hace lo mismo que el otro que mencionan, y suele incluirse por defecto en los vps. Si buscan en Seguridad de su panel de control casi seguro lo van a encontrar



Enviado desde mi Samsung S Advance usando Tapatalk 2
 
Muchas gracias jackl007

El caso es que ya cambié puerto ssh y demás y al ver los intentos en el log me asuste y fui, ante los problemas con el denyhosts, fui corriendo a instalar el fail2ban. Qué además puede vigilar otros servicios (el ftp es un agujero negro) y... en principio sin problemas pero... me pasa algo muy curioso: funciona, está activado, me apunta direcciones como baneadas, en incluso me manda correo avisándome, pero ¡me sigue dejando entrar! (Y no, no tengo puesta mi propia ip como excluida) Estoy flipando...

A ti es normal que te deje entrar.. si pones mal la clave varias veces y no estás en ninguna "lista blanca" no debería dejarte pasar a ti tampoco 🙂
Saludos.

Edito: ¿A cuanto tiempo tienes puesto el baneo? (igual expiró el tiempo)
 
yo por eso jamas dejo el puerto 22 del SSH siempre es otro puerto bastante alto! 🙂
 
A ti es normal que te deje entrar.. si pones mal la clave varias veces y no estás en ninguna "lista blanca" no debería dejarte pasar a ti tampoco 🙂
Saludos.

Edito: ¿A cuanto tiempo tienes puesto el baneo? (igual expiró el tiempo)

No, el baneo está bastante alto, horas y la ventana de find también. El problema es otro: por lo que veo en los logs me banea el fail2ban me encuentra en los logs como que ya he intentado acceder sin éxito dentro de la ventana de tiempo definida, me banea sin problemas, pero cuando intenta escribir la entrada correspondiente en iptables para que el ban sea efectivo, le da error...:grumpy:
 
Atrás
Arriba