Bloquear pantalla

abr. 14, 2012·
Julio Batista Silva
Julio Batista Silva
· 6 min de lectura

Dejar el ordenador logueado con programas corriendo es algo bastante rutinario para mí. Los uptimes de varias semanas no son raros.

Sin embargo, dejar el X o una terminal abierta en tu ausencia puede representar un riesgo de seguridad y privacidad — alguien malintencionado con acceso físico al equipo puede hacer un buen estropeo si lo encuentra logueado en tu cuenta (o peor, ¡en root!), como mirar las contraseñas almacenadas en tu navegador (¡nunca guardes contraseñas en el navegador!), acceder a archivos confidenciales o simplemente trolear tu Facebook.

Por suerte existen programas justamente para esa finalidad. En este post comentaré un poco sobre esos programas y algunas técnicas de screen locking.

tl;dr: vlock -as es la forma más segura de bloquear el ordenador.

Métodos ingenuos

Gestores de ventanas poco convencionales

Es curioso cómo, por desconocimiento de sistemas Unix-like, la mayoría de las personas no consigue usar mi equipo incluso sin estar bloqueado =].

En casa, puedo dejar el equipo iniciado con Awesome, PekWM, Xmonad, DWM u otro gestor de ventanas que no sea similar a Windows y ya es suficiente para que tarden bastante en entender qué está pasando. Es más o menos como abrir Vi y pedirle a un novato que lo use.

Alternar tty

Las personas pueden tardar en usar un DWM, pero con cierta determinación al final lo conseguirán. Pero si alterno entre terminales (Ctrl+Alt+F2) aparecerá una pantalla negra bastante intimidante.

Estos métodos ingenuos pueden funcionar en casa de tus padres, pero intentar usarlos en un ambiente lleno de colegas informáticos y entusiastas de tecnología es garantía de sorpresas.

Prueba a dejar el ordenador logueado en un laboratorio de la facultad, república de estudiantes o en eventos como FISL o Campus Party (en la CP aún estarás a salvo en el área de gamers y social media…). En un instante pides que cuiden tu portátil mientras vas al baño y al siguiente descubres que te hiciste fan de Justin Bieber.

La mejor solución es siempre llevar el portátil contigo. Para situaciones en que eso no es posible, los programas que citaré pueden ser la solución.

Programas

Screen

Screen es el multiplexor de terminales más famoso.

Para instalar Screen en Arch Linux, ejecuta:

julio@julio-acer ~> sudo pacman -S screen

Uno de los varios recursos de screen es la posibilidad de bloquear el terminal usando uno de los atajos: C-a x y C-a C-x.

Pero este método tiene problemas: bloquea solo lo que esté corriendo dentro de screen. Si iniciaste X, aunque sea dentro de screen, seguirá accesible.

Xtrlock

Si usas X y necesitas solo bloquear teclado y clics del ratón manteniendo la imagen en pantalla, Xtrlock (disponible en AUR) es una opción razonable y ligera. Basta con ejecutar Xtrlock y el cursor se transforma en un candado y solo vuelve a la normalidad tras escribir la contraseña del usuario.

Como su nombre sugiere, este programa bloquea solo X. Si tú o root estáis logueados en algún terminal será posible terminar el proceso con killall xtrlock.

También es importante evitar mantenerse logueado en el terminal usado para iniciar X. Si tras hacer login en tty1 escribes solo startx, alguien malintencionado podría simplemente matar el proceso con CTRL+c. Encontré algunas maneras de evitarlo:

  1. Iniciar X con nohup startx &; disown; sleep 5; exit.

  2. Iniciar X con exec startx.

  3. Iniciar X con startx && vlock -a || vlock -a (hablaré de vlock luego).

  4. Editar xorg.conf para desactivar Ctrl+Alt+Fn y Ctrl+Alt+Backspace:

    Option "DontVTSwitch" "True" y Option "DontZap" "True".

  5. Iniciar X dentro de screen y hacer logout en tty1.

  6. Usar un login gráfico.

También tiene otras fallas, como no bloquear otros dispositivos de entrada además de mouse y teclado.

Slock

Como todos los programas de <suckless.org>, Slock es minimalista. Es todavía más simple que xtrlock.

Instálalo en Arch Linux con:

julio@acer ~> sudo pacman -S slock

slock simplemente deja la pantalla negra hasta que se escriba la contraseña del usuario que lo inició.

Xscreensaver

Nunca usé Xscreensaver, porque me parece pesado. Pero mucha gente lo usa y lo recomienda.

Xautolock

slock y xtrlock siguen bien la filosofía Unix de “hacer una sola cosa y hacerla bien”. Ellos simplemente bloquean la pantalla y no hacen más nada.

Una función útil que vi en otros bloqueadores (como el de Ubuntu) es el auto locking. Esto puede lograrse con xautolock.

xautolock permite ejecutar un programa tras un tiempo de inactividad.

Por ejemplo, para ejecutar slock tras 10 minutos inactivo, añade al ~/.xinitrc:

xautolock -time 10 -locker slock -nowlocker slock -detectsleep -corners 0+00 -cornerdelay 5 &

Lee más sobre las opciones en man xautolock.

Xautolock y Mplayer

Una consecuencia molesta del auto-bloqueo es que a veces estamos sin enviar eventos al X (teclear o mover el cursor) pero no estamos inactivos. Ver películas es un ejemplo.

Por suerte los desarrolladores de Mplayer lo previeron y añadieron -stop-xscreensaver:

julio@acer ~> mplayer -stop-xscreensaver video.mkv

El propio man mplayer recomienda -stop-xscreensaver, pero si falla (aquí funcionó muy bien), puedes pasar un comando para ejecutar cada 30 segundos con -heartbeat-cmd:

julio@acer ~> mplayer -heartbeat-cmd="xscreensaver-command -deactivate" video.mkv

Lo mismo ocurre con otros players y con vídeos en Flash y YouTube, pero las soluciones que encontré para esos casos no son buenas:

  1. xautolock -exit -> ver el vídeo -> reiniciar xautolock

  2. Mover el cursor de vez en cuando.

Vlock

Por fin, Vlock, que considero la mejor opción para bloquear los terminales y puede usarse junto con las otras opciones para mayor protección.

  1. Instala Vlock:

    julio@julio-acer ~> sudo pacman -S vlock
    

Update 16/01/2013: kbd ya provee vlock. Si ya tienes kbd, intentar instalar vlock causará conflicto.

  1. Bloquea solo la terminal actual -c

    julio@julio-acer ~> vlock -c
    This TTY is now locked.
    
    Please press [ENTER] to unlock.
    julio's Password:
    
  2. Bloquea todas las terminales -a

    julio@julio-acer ~> vlock -a
    vlock: this terminal is not a virtual console
    

    ¡Oops! Este error ocurre si intentas ejecutar vlock -a en urxvt, xterm, etc. Pulsa Ctrl+Alt+F1 para ir al TTY1 y repite el comando:

    julio@julio-acer ~> vlock -a
    The entire console display is now completely locked.
    You will not be able to switch to another virtual console.
    
    Please press [ENTER] to unlock.
    julio's Password:
    

Listo, el sistema está completamente bloqueado y solo se desbloqueará con tu contraseña o la de root. O casi: leyendo el manual, vi que vlock tiene la opción (-s) para evitar que la tecla SysRq pueda matar el programa. No lo probé (mi teclado ni la tiene), pero fue importante porque probé y vi que se puede desbloquear el equipo remotamente:

  1. Logueado como usuario ’teste’, bloqueé todas las terminales:

    teste@julio-acer ~> vlock -a
    
  2. Accedí al equipo por SSH y maté el proceso sin problemas:

    julio@julio-acer ~> killall vlock-main
    
  3. También probé con la opción ‘-s’ (requiere permisos de superusuario):

    [root@julio-acer ~]# vlock -as
    
  4. Y solo pude matar el proceso usando sudo, como era de esperar.

    julio@julio-acer ~> killall vlock-main
    vlock-main(26420): Operation not permitted
    vlock-main: no process found
    
    julio@julio-acer ~> sudo killall vlock-main
    

El único problema es que cuando ese usuario logre desbloquear, tendrá acceso a la cuenta de quien lo bloqueó. Para mí no es preocupante (soy el único usuario del equipo). Si algún día añado más usuarios (ninguno con sudo), tendré en mente que es mejor bloquear el equipo como root.


Enlaces

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus