Credit image

¿Te gusta el diseño web? ¡Echa un vistazo a la documentación de LenguajeCSS.com!

Ver intentos de conexión al servidor

Una buena práctica, dentro de la administración de servidores, es la revisión periódica de los registros de seguridad. Veamos como examinar los intentos de conexión a nuestro servidor web.

Una buena práctica, dentro de la administración de sistemas, es la revisión periódica de los registros (logs) de seguridad de nuestro servidor dedicado.

Los servidores, por norma general, guardan en un fichero de texto llamado registro o log, la lista de eventos ocurridos (generalmente problemas o fallos) para una posible revisión posterior, detección y solución de problemas, etc.

En nuestro caso, vamos a basarnos en un servidor linux dedicado. En algunos servidores compartidos también es posible examinar logs, sin embargo no es lo más común. Echa un vistazo a este artículo si no sabes la diferencia entre servidores dedicados y compartidos.

Debemos saber que en los sistemas linux hay dos ficheros de registro principales:

  • /var/log/secure: Registra los accesos al servidor que tienen relación con procesos de autentificación.
  • /var/log/messages: Registra los mensajes de información o nivel superior. Similar al anterior, pero incluyendo otro género de mensajes.

El funcionamiento de estos registros puede ajustarse en el fichero /etc/syslog.conf y suele venir acompañado del uso de un programa llamado logrotate (/etc/logrotate.conf), que se encarga de comprimir los registros cuando ocupan demasiado o ha pasado bastante tiempo.

Asumiendo que todo está como acabo de decir (suele ser lo más común en los servidores en producción), vamos a centrarnos en el fichero /var/log/secure, que es el que tiene la información de los accesos de seguridad y ver una secuencia de comandos para mostrarnos los intentos de conexión que se han efectuado:

Concatenaremos estas tres partes en una sola para llevarla a cabo (recordar, que debemos hacer un sudo o ser usuario con privilegios para leer los logs del sistema):

zgrep -hi "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -n

Esto nos mostrará un listado de los intentos de conexión (al servidor ssh, al servidor ftp, etc...) desglosado por número de intentos, ip y nombre de usuario utilizado respectivamente.

Veamos algunos fragmentos de la lista:

21 207.36.196.14 roberts
21 207.36.196.14 rodriguez
21 207.36.196.14 scott
21 207.36.196.14 taylor
38 190.144.81.150 patrick
41 207.36.196.14 amanda

Si se fijan, muchos de los intentos de conexión, tienen el mismo número de repeticiones (21). Esto no es casualidad, sino que generalmente se trata de ataques por fuerza bruta utilizando un diccionario de nombres comunes (ingleses).

38 58.246.63.10 root
41 190.144.81.150 amanda
50 190.144.81.150 mysql
54 216.228.254.211 admin
60 190.144.81.150 oracle
178 190.144.81.150 admin
225 190.144.239.44 root
355 222.41.213.238 root

Es muy común también el intento de utilizar nombres de usuario de software como mysql, oracle, samba intentando buscar vulnerabilidades conocidas. Como se puede imaginar, el acceso al nombre de usuario root es de los más frecuentes.

1 117.135.9.34 apple
1 117.135.9.34 arianna
1 117.135.9.34 ashley

Conviene prestar atención a los accesos menos frecuentes, que aunque son los más numerosos, son los que más probablemente sean de algún usuario malicioso (y no de un sistema automático que realiza barridos buscando servidores vulnerables).

83 216.228.254.211 test

Para saber más información sobre un atacante, podemos realizar un host 216.228.254.211 (o usando el comando dig o nslookup) y así conocer el nombre de host y más información sobre el atacante.

# host 216.228.254.211
211.254.228.216.in-addr.arpa domain name pointer cs.211.cs.byuh.edu

Aquí podemos ver que la Brigham Young University (Hawaii) tiene probablemente alguna botnet que están utilizando sin consentimiento (suele ser lo más común) o algún usuario travieso utilizando algún software de ataques por fuerza bruta.

Bloquear accesos

Como siempre, existen varias vías para bloquear accesos que no queremos que estén autorizados, ya sea porque no nos interesa o porque representan un riesgo de seguridad para nuestro servidor.

  • Iptables: Es la manera más bruta de bloquearlo. Esto haría que no pueda intentar acceder mediante ssh, ftp, no podría cargar la página web, hasta podríamos bloquear los ping que pudiera hacer.
  • Lista blanca: En el fichero /etc/hosts.allow podemos establecer una lista blanca de ips desde donde podremos conectar a servicios como ssh o ftp.
  • Lista negra: En el fichero /etc/hosts.deny podemos establecer una lista negra de ips que no queremos que puedan intentar realizar conexiones a servicios ssh o ftp.

En estas dos últimas opciones aunque se deniegue el acceso a servicios ssh o ftp, se puede seguir accediendo a la página web. Este sería el código a insertar en el fichero /etc/hosts.deny:

ALL: 216.228.254.211
ALL: 117.135.9.34

Quizás, la mejor opción para tener controlado el acceso, sería utilizar DenyHosts.

También es una buena idea tener presentes técnicas de seguridad para servidores como Mod Evasive, Mod Security o Port Knocking.

Escrito por Manz, el , en seguridad. Comentarios recibidos: 7.

7 comentarios de lectores
BlogInn
BlogInn
1

Buenisimo el post, justo ahora tenia que mirar los logs de un par de servidores de un amigo y no sabia por donde empezar :-) Ahora ya tengo alguna cosilla clara Saludos

Xelso
Xelso
2

Si señor, gran articulo. Veo un gran nivel en tu dominio en la terminal de comandos. jejeje Sigue Así! ¿Se haran ataques porque se aburren o mas que nada por superarse? jaja Saludos

Luis
Luis
3

Muy buen articulo, sin embargo nada de esto puedo hacer pues tengo un blog alojado en blogger.com, Sera que por casualidad no tienes algo sobre como bloquear usuarios desde blogger?

el orador
el orador
4

Muy bueno el artículo. Sirve de gran ayuda. Estaría bien que en otra ocasión profundizaras en programas como fail2ban u otros... Un manual de seguridad en servidores no vendría nada mal.

sergio
sergio
5

Buen articulo, yo personalmente para bloquear ips "maliciosas" uso apf y no me puedo quejar. Un saludo.

Fernando
Fernando
6

Muy bueno amigo Como dicen , excelente manejo de la consola y comandos de linux Yo uso ConfigServer Security & Firewall , anda muy bien y podes bloquear cada cosa por separado ideal para esos sistemas alojados en VPS que nos entregan sin ninguna proteccion ni equipo delante

Pedro Perez
Pedro Perez
7

Buenas tardes Necesito saber en los servidores de mi red que otros servidores tienen relacion, es decir que otros servidores se conectan para algun servicio. he mirado con el netstat pero necesito un informe mas concreto Mil gracias,

Publica tu opinión

Si lo deseas, puedes utilizar el siguiente formulario para publicar tu opinión o responder a alguna de las existentes:

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.