SysRq: la tecla mágica de doble filo

Publicado el 04 marzo 2016 por Drassill
En esta ocasión os vengo con un pequeño pero muy interesante articulo relacionado con la seguridad en Linux; todos sabemos que todo sistema cuenta con muchas funcionalidades y características; unas más útiles y versátiles que otras, pero igualmente interesantes. En este articulo quiero hablaros de una funcionalidad que de por sí NO está pensada para perjudicar al usuario, pero que puede usarse con malas intenciones y hacer verdaderas calamidades; una funcionalidad que no es conocida por muchas personas, pero que está ahí y que puede ser usada para bien o para mal. Esta funcionalidad está relacionada con una tecla denominada también como tecla mágica, llamada SysRq.

Esa tecla, en caso de ser precedida por la tecla alt y seguida por otra tecla (la cual varía dependiendo de nuestras intenciones) es capaz de lanzar una serie de comandos especiales al equipo que no requieren ningún tipo de autenticación; es decir que lanza comandos sin impedimento alguno del sistema, hasta el punto de no requerir login alguno por parte del usuario. Esto es realmente útil en ocasiones en las que no puedes cambiar de consola, o cuando queremos hacer una serie de determinadas acciones que requieren que nos logueemos pero que, debido a que carecemos de las credenciales, nos es imposible. Esto obviamente es un arma de doble filo, ya que lo que puede usarse para sacarnos de algunos escenarios "espinosos" puede usarse para dejarnos sin servicio. Es por ello que hay que ser muy cuidadosos con esta función y que hay que pensar muy detenidamente si queremos que dicha función esté habilitada o no... Por defecto dicha función se encuentra habilitada, ya que es una función con muchas virtudes.
Para empezar habría que saber qué tecla es SysRq; algunos teclados muestran dicho nombre en la tecla en cuestión, pero muchos otros no (especialmente los de uso doméstico) con lo que más de uno puede sentirse frustrado en la búsqueda de dicha tecla.  Dicha tecla también es conocida como la tecla de impresión de pantalla (Impr Pant) si bien en mi opinión una imagen vale más que mil palabras con lo que he aquí una imagen con su posición exacta en el teclado:

¿Ahora bien, qué podemos hacer con esta tecla? ¿Qué podemos lograr combinando alt + SysRq + una tecla? ¿Qué combinaciones tenemos disponibles? He aquí algunas de las posibilidades que puede darnos la tecla mágica; no estarían todas, pero sí las más importantes:
  • alt + SysRq + b: Reinicia el sistema operativo.
  • alt + SysRq + o: Apaga de forma apropiada el sistema operativo. Esto es realmente útil cuando no se tienen las credenciales y se quiere apagar el equipo sin recurrir al botón físico (con sus posibles consecuencias).
  • alt + SysRq + c: Hace un "crash" del sistema; es decir que haría que el sistema se quedase "roto"
  • alt + SysRq + (número entre 0 y 9): Establece el nivel de log del sistema; dependiendo del nivel establecido los logs mostrarán unos mensajes u otros.
  • alt + SysRq + i: Manda la señal de terminación abrupta (SIGKILL) a TODOS los procesos a excepción del init. Sería lo equivalente a un kill -9 a todos esos procesos.
  • alt + SysRq + e: Manda la señal de terminación normal (SIGTERM) a TODOS los procesos a excepción del init.
  • alt + SysRq + s: Sincroniza TODOS los sistemas de archivos montados.
  • alt + SysRq + u: Remonta TODOS los dispositivos en modo solo lectura.
  • alt + SysRq + t: Mostrará una lista de todos los procesos activos junto con la información de éstos.

Como podéis observar, estas funciones en sí son muy útiles y nos pueden venir increíblemente bien en situaciones concretas, pero al mismo tiempo son una puerta abierta que deja que una persona con malas intenciones apague el equipo o "mate" a todos los procesos sin necesidad de conocer las credenciales; cosa increíblemente peligrosa. Es decir que la tecla mágica podría considerarse como una arma de doble filo que perfectamente se puede volver contra nosotros... Como nota importante con respecto a este punto es que la tecla mágica no funciona en conexiones ssh; es decir que la tecla mágica solamente puede ser usada localmente con el fin de evitar que se causen desastres remotamente.
Aquí uno debe decidir si compensa mantener dicha funcionalidad activa; en caso de querer deshabilitarla tendríamos que añadir esta línea al fichero /etc/sysctl.conf, fichero encargado de realizar cambios a nivel de kernel.
kernel.sysrq = 0
Para aplicar los cambios realizados en el fichero, habría que reiniciar el equipo o escribir sysctl -p; tras lo cual la tecla mágica perdería su "magia". Si en el futuro deseásemos restaurar dicha tecla mágica, habría que editar la línea anteriormente introducida y dejarla así:
kernel.sysrq = 1
Obviamente habría que aplicar los cambios de la misma forma que hemos hecho antes con el fin de poder usar la tecla mágica de nuevo.
Espero que os haya resultado útil.
Saludos.