To bit or not to bit, ingeniera en desarrollo de software, criadora de mantis, mujer transgénera
Ingeniería de software

Ver que usuarios están conectados y como desloggearlos

Solamente una vez, ame la vida … solamente una vez preste mi usuario a otra área de la empresa que no explícitamente debería de conocer el usuario, rutas y claves de un servidor que administro. Acto seguido, cambio contraseñas, desloggeo usuarios que no conozco o ubico la IP donde la preste, reseteo llaves privadas y genero nuevas públicas, a veces me dan ansiedad muchas cosas, aquí explico como se hacen algunas de las cosas que hice.

Paso 1 Cambiar contraseña del usuario prestado

Se usa el comando passwd más el nombre del usuario prestado seguido de varias validaciones que se van mostrando en la pantalla para cambiar y confirmar el password, con algunas políticas internas del servidor aplicables.

[root@localhost ~]# passwd userprestado

Paso 2 Revisar que usuarios están loggeados

Para revisar que usuarios están loggeados buscamos usar el comando:

[root@localhost ~]# who

Este comando es muy bonito y nos da una salida como esta:

root     tty1         2022-12-25 20:40
root     pts/0        2022-12-26 09:50 (192.168.0.1)
userprestado     pts/1        2022-12-26 09:31 (192.168.0.4)

Lo que nos indica que hay dos usuarios root conectados al servidor por ssh por pts 0 y pts 1. La segunda IP no es la mía por que ya la revise con ifconfig o ipconfig o la revise como en mi equipo personal mediante clicks tipo windows, lo puedo verificar además por el nombre de usuario que presté. Entonces ya que identifiqué que la segunda IP no es mía y la procedo a desloggear. (obvio estoy ofuscando/metiendo IPs de prueba para fines académicos)

Paso 3 Desloggear el usuario y puerto encontrados

Para desloggear lo que tenemos que hacer es matar la sesión remota con el comando pkill de esta forma:

[root@localhost ~]# pkill -9 -t pts/1

Que lo que busca es eliminar la sesión de usuario que queremos sacar de forma urgente por el -9 y que usa la terminal pts/1 esto lo hacemos por la opción -t seguido de la terminal. Después podemos volver a ejecutar el comando who para ver quienes siguen conectados y deberemos de dejar de ver el que utilizaba el pts/1.

Paso 4 Regenerar llaves privadas y publicas revisando /home/userprestado/.ssh/authorized_keys

Podría ser posible que estas llaves se vieran comprometidas para los accesos ssh por lo cual es recomendable resetearlas. Esto lo podemos hacer con el comando:

[root@localhost ~]# ssh-keygen -b 4096 -t rsa

Me gusta usar esta forma corta de generar una llave de varios bits privada y publica fuerte con rsa, esto también lo hacemos loggeados como el usuario que prestamos.

También podría ser recomendable revisar el archivo /root/.ssh/authorized_keys o /home/userprestado/.ssh/authorized_keys , por que el usuario remoto pudo haber aprovechado la posibilidad de que insertar una llave que le deje hacer loggin sin tener que usar una contraseña.

Conclusión

Linux es muy bonito cuando nos deja administrar cosas así de forma sencilla, obvio hay más validaciones que podrían revisar y cambiar como contraseñas locales y root de bases de datos, regenerar ssl del https del apache, revisar el SELinux. audit, etc.

Recuerden que pueden buscarme en Twitter con @SoyTabs, ahí reviso constantemente y me llegan mis alertas de taggeo para que puedan preguntarme, alguna cosa con la que se les haya atorado algo de la guía.