31 diciembre 2012

El Muro de la Vergüenza

Antes que nada, disculpas a todos por no haber actualizado mi blog la última semana con la entrada sobre Arduino y la Raspberry PI. Como se imaginarán la última semana del año siempre es algo movida, sin embargo espero abrir el 2013 con la nueva entrada aprovechando que tengo algunos días libres del trabajo.

Para cerrar el año, es traigo un pequeño "Muro de la Verguenza". Desde que dejé la Raspberry PI en línea (hace 7 días) con el puerto SSH abierto he tenido numerosos intentos de acceso no autorizados vía SSH.

Realmente la RasPI no tiene nada interesante, sin embargo para un SPAMMER una máquina con acceso a Internet siempre es algo valioso. Ahora, es muy difícil que accedan a la RasPI si no es con un Exploit 0-Day ya que los logins de usuario/password están desactivados, sin embargo es divertido verlos intentar. Por eso les dejo "El Muro de La Vergüenza" en la siguiente dirección:


La lista de accesos fallidos se "pre-procesa" por medio de comandos de consola antes de pasar al script PHP por medio de este comando:
$ /bin/cat /var/log/auth.log* \
    | /bin/grep "Invalid user" \
    | /usr/bin/sort -r
Encontraran la lista de usuarios utilizados con su IP junto con la estadística de accesos fallidos. Le he llamado el Muro de la Vergüenza porque primero es una vergüenza que estén intentando acceder a una humilde Raspberry PI y segundo porque es una vergüenza que sigan intentando hacer un ataque de fuerza bruta sabiendo que los logins de user/pass están deshabilitados.

Si estan interesados en el código de la página pueden descargarlo aquí. Solo recuerden ejecutar el siguiente comando para que el log pueda ser leído por el script PHP:

$ sudo chmod o+r /var/log/auth.log*

+Modificado 31/12/12: El sueño me hizo ayer una mala jugada y había puesto en el link la IP interna de la RasPI, ya he corregido el link. :)

+Agregado 31/12/12: Para los que esten interesados he incluido el script en PHP que lee los logs y calcula el número de intentos de acceso fallidos.

9 comentarios:

Aldo Gómez dijo...

si la direccion del link no apuntara a la 192.168.0.3 fuera de gran ayuda XD

Marco dijo...

Ah que bien... trataba de conectarme a la tablet!!!

felipem dijo...

¿cómo realizas el log de intentos fallidos? estoy en tu mismo caso y tengo curiosidad por si sucede lo mismo.
¿El atacante sabe que es un RPi?

Mario Gómez dijo...

¡Listo! El sueño me hizo una mala jugada ayer, el link esta arreglado :)

Mario Gómez dijo...
Este comentario ha sido eliminado por el autor.
Mario Gómez dijo...

@felipem El log del SSHD se guarda en /var/log/auth.log, las líneas con intentos de acceso fallidos contienen el texto "Invalid User", para extraer los errores de login ocupo el comando "/bin/cat /var/log/auth.log* | /bin/grep "Invalid user", luego extraigo la fecha de acceso el usuario y la IP con expresiones regulares en PHP. Dudo mucho que el "atacante" tenga conocimiento que es una Raspberry PI ya que en ningun momento han utilizado el usuario por defecto "pi" de la distribución. Se me hace que más bien son spambots que simplemente intentan obtener acceso a lo que se les cruce enfrente.

Gonzalo Cao Cabeza de Vaca dijo...

Pues a raíz de tu post se me ocurrió investigar un poco el tema y me parece que aún te quedas corto en la evaluación porque sólo coges los usuarios inválidos. Hay usuarios que sí que existen en tu sistema como "root".
Prueba ampliando la búsqueda a:

cat /var/log/auth.log | grep 'invalid user\|Failed'

Puede que te lleves alguna sorpresa como he hecho yo.

Gonzalo Cao Cabeza de Vaca dijo...

En mi blog he dejado algunos consejos para proteger un poco la RPI
http://cuadernodelviaje.blogspot.com.es/2013/01/protegiendo-un-poco-nuestra-raspberry.html

Mario Gómez dijo...

¡Hola Gonzalo!

Efectivamente, hay otros intentos de acceso, pero realmente me interesaban mas los intentos de ataque por "fuerza bruta" porque son los más simples y usualmente son ejecutados por spambots o similares.

Lo interesante de la lista es que te da una idea de los usuarios que utilizan los spammers para intentar atacar sistemas con servicio SSH.

Lástimosamente no le di continuidad a esta entrada, valdría la pena que hiciera una como la tuya donde explique cómo está asegurada la RasPI.

En mi caso los "logins" con password están deshabilitados. Para asegurar la terminal utilizo una llave asimétrica. Tengo una copia cifrada de la llave en mi laptop y una copia más en mi smartphone. Crear la llave es un proceso que requiere solo de un par de comandos y copiar la llave privada a un lugar seguro. Luego cada vez que te conectas te pregunta la "frase clave" y listo no es más difícil que usar un password de toda la vida y es un poco más seguro porque para acceder a la RasPI solo podrías hacerlo sí:

1-Existiera algún exploit del tipo 0-day que permitiera el acceso remoto sin tener ni el password ni la llave privada (algo que todos nos daríamos cuenta por las implicaciones de ello).

2-Tuvieras acceso físico a mi laptop y/o a mi smartphone.

3-Conocieras la frase clave con que está cifrada la llave privada.

4-Utilizar la opción fácil propuesta por XKCD.