Happy new year! (And a hacker tale)

Pues sí, aunque no haya escrito en el weblog, he estado activo estos días de vacaciones. Por ejemplo, se me ocurrió conectarme nochevieja sobre las 23:40 y me llevé la sorpresa de que no sé qué cocd rporación me envió un correo electrónico amenazándome porque uno de mis ordenadores estaba haciendo "scans" sobre el puerto del ssh en sus máquinas. En efecto, me conecté a ese ordenador (una máquina UNIX) y vi que había cientos de procesos con nombres extraños que no recuerdo exactamente. Esos procesos eran lanzados con un script que hacía algún sleep (también lo veía ejecutando) y volvía a lanzarse para atracar otra IP. Dada la hora y día (recordemos, nochevieja, justo antes de las uvas), mi familia me requería, ya que siempre vamos a la plaza de Mula (mi ciudad), no tuve más remedio que apagar la máquina para poder estudiarla después. Quedaban entonces varias incógnitas, que siempre están presentes cuando un hacker entra en una máquina:

* Cómo ha entrado (encontrar el punto de entrada suele ser lo más excitante, porque hay que conocer muy bien la máquina y dónde buscar información en los logs)
* Cómo eliminar todo lo que ha creado.
* Cómo proteger la máquina para que no se vuelva a producir la entrada.

Cuando tuve un rato para comprobar la máquina, me encontré varias cosas curiosas. En primer lugar, respondí a la corporación que me envió el mensaje diciéndole que los "intentos de conexión" no se consideran delito (¿qué pasa por ejemplo si un usuario escribe la IP y se equivoca en el número?). En fin, seguía con las cosas curiosas:

* No había "casi" nada sospechoso en los logs del ordenador.
* No había registro en los ficheros ".bash_history".
* No he podido encontrar los programas que se estaban ejecutando en ese ordenador (he buscado de mil maneras, pero no los he encontrado).

Efectivamente, había algo sospechoso en los logs de login:



El acceso del 13 de diciembre parece el que hizo un programa intruso (quizá uno igual que los que se estaban ejecutando, que hacía pruebas de ssh). El caso es que entró. Pensé en un primer momento que por algún fallo de seguridad de ssh, pero estuve buscando fallos recientes de ssh y no vi ninguno... Simplemente la explicación más simple se daba: uno de los usuarios de mi máquina había puesto una clave muy sencilla, y el hacker simplemente había entrado. Después instaló otros programas ahí que hacían pruebas en otras IPs y con otros usuarios.

Una cuestión que surge es ¿por qué no encontré esos programas? Pueden pasar dos cosas: que estén escondidos por el disco (por favor, necesito ayuda en esto, si alguien tiene idea) o que los instalara en el directorio /tmp, que se borra automáticamente al iniciar el sistema de nuevo. Mala suerte.

El caso es que acabo de recordar el nombre del programa. Era pscan2, y con este dato, encuentro aquí un ejemplo de lo que pasó.

Eso me confirma otra cosa que sabía: no ha instalado un rootkit, lo cual está bien, porque no hay que restaurar ningún fichero.

Bien, el caso es que eso me ha servido para aumentar la seguridad de las máquinas bajo mi cargo (no hay mal que por bien no venga, como dicen). No es que la hubiera descuidado (en realidad no ha sido un fallo de seguridad ni un agujero, sino que la gente a la que he dado cuenta no ha tenido la decencia de poner una clave decente a su cuenta). El caso es que muestro lo que he hecho para asegurar los ordenadores. Me ha hecho investigar un poco en maneras de tener más controlados los ordenadores, en el caso de que, como es mi caso, tengas que administrar varios de ellos, y además, no sea ese tu principal cometido en la empresa o universidad donde trabajes. He aquí una lista de cosas que he hecho (los comentarios son bienvenidos):

* He actualizado el núcleo de todos los ordenadores al último disponible (normalmente las actualizaciones de núcleos arreglan fallos de seguridad).
* He eliminado todos los usuarios del sistema que no eran estrictamente necesarios. En adelante tomo nota mental de que tengo que obligar a que los usuarios pongan una clave decente. Otros sistemas como Red Hat obligan a que la clave no sea sencilla, pero no sé por qué Debian no lo lleva por defecto. Tendré que investigar cómo poner eso para que los ordenadores donde tengo cuentas de alumnos no tengan usuarios con claves fáciles.
* He eliminado todos los servicios que no eran estrictamente necesarios. Normalmente soy reticente a eliminar servicios aunque no hagan falta estrictamente. El tener un puerto "abierto" no significa que sea "inseguro", sino que simplemente tengo un servicio funcionando. Odio a los administradores que basan su seguridad en cerrar puertos. Los puertos no son malos, ni las aplicaciones vulnerables por el simple hecho de estar ahí en un puerto, porque el servidor web siempre está funcionando y tiene su puerto como el resto de aplicaciones... En fin. Esto lo he hecho cuando no sabía exactamente qué había pasado con ese ordenador.
* He instalado logcheck (disponible en el almacén de paquetes de Debian). Analiza los logs y envía un correo con las líneas sospechosas. He tenido que modificar el cron del paquete porque mandaba un correo cada hora (!). Ahora envía cada día. Tampoco seamos tan paranóicos :P
* He instalado snort (también de los paquetes de Debian). Muy versátil, comprueba situaciones de escaneos de puertos, conexiones sospechosas, etc. El único problema es que ocupa mucha memoria y estoy seguro de que enlentece el sistema... Sea todo por la seguridad.
* Quizá se me haya escapado algo de lo que he estado haciendo para hacer más seguro el sistema. Si me acuerdo de algo más, actualizaré la entrada.

Todos estos elementos han dado su fruto, y ya en el primer informe del snort veo cosas curiosas como esta:



gentileza de logcheck... Como siempre, me gustaría saber vuestros comentarios, ideas, etc. Y que al menos esto sirva para poner más a salvo los sitemas que administreis.

blog comments powered by Disqus