Saltar al contenido

Bloquear acceso a usuario en GNU/Linux

Cualquier administrador de sistemas en algún momento se ve obligado a suspender el acceso de un usuario a un sistema dado, siendo uno de los motivos principales la seguridad o el incumplimiento de las normas. En sistemas GNU/Linux es posible bloquear el acceso a un usuario con cuenta en el sistema sin permitirle poder iniciar sesión mediante el bloqueo de su contraseña. Esto es; al bloquear su contraseña el usuario no podrá utilizarla ni cambiarla hasta que un administrador se la desbloquee.

Para ilustrar un ejemplo se ha recurrido a la distribución GNU/Linux universal, es decir: Debian. Se creó previamente un usuario con adduser con nombre ingenieroinformatico. Se procede a bloquearlo:

admin@debian:~$ sudo passwd -l ingenieroinformatico
passwd: información de caducidad de la contraseña cambiada.

Si el usuario bloqueado intenta iniciar sesión (en este ejemplo por SSH), por más que introduzca correctamente su contraseña no consigue logearse:

login as: ingenieroinformatico
ingenieroinformatico@debian.ejemplo.net's password:
Access denied

En caso de querer desbloquear la contraseña del usuario:

admin@debian:~$ sudo passwd -u ingenieroinformatico
passwd: información de caducidad de la contraseña cambiada.

Si el usuario inicia sesión en un terminal ahora le reconocerá la contraseña que tenía como correcta:

login as: ingenieroinformatico
ingenieroinformatico@debian.ejemplo.net's password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
ingenieroinformatico@debian:~$

¿Y que pasaría si el usuario tiene sesión iniciada ya en el sistema cuando se bloquea su contraseña? Veamos…

admin@debian:~$ users
ingenieroinformatico admin

El usuario ingenieroinformatico ha iniciado sesión y procedemos a bloquearle la contraseña:

admin@debian:~$ sudo passwd -l ingenieroinformatico
passwd: información de caducidad de la contraseña cambiada.
admin@debian:~$ users
ingenieroinformatico admin

Como se puede observar, el mecanismo de bloqueo actúa únicamente sobre el mecanismo de autenticación, por lo que si el usuario continúa sin cerrar sesión (por ejemplo, a través de un cliente SSH) podrá hacer lo que le plazca en base a los permisos de que disponga siempre y cuando no le sea solicitada su contraseña de nuevo. Para evitarlo, se cerrará la sesión SSH del mismo tras bloquearlo (se puede usar pkill si el usuario está en local y el administrador en remoto):

admin@debian:~$ ps aux | grep ssh | grep ingenieroinformatico
admin 16885 0.0 0.3 71248 3428 ? Ss 11:54 0:00 sshd: ingenieroinformatico [priv]
1001 16887 0.0 0.1 71248 1752 ? S 11:54 0:00 sshd: ingenieroinformatico@pts/1
admin 17411 0.0 0.0 9432 864 pts/0 S+ 12:17 0:00 grep ssh
admin@debian:~$ kill -9 16887

El bloqueo de contraseñas es útil sobre todo como bloqueo temporal ya que únicamente deniega el acceso, pudiéndose revertir de forma sencilla el proceso y sin afectar a la información que el usuario posea almacenada en el sistema, ya que únicamente actúa sobre la línea del usuario bloqueado del fichero /etc/shadow.


Publicado enAdministración de sistemasSeguridad de SistemasSistemas Operativos