Matar una conexión SSH remota

Fijo que a muchos de vosotros os ha pasado alguna vez. Entráis en un equipo y descubrís un usuario que está haciendo un uso del mismo que no debe, o tiene una sesión que no debiera, o cualquier otro motivo. El caso es que necesitáis terminar con dicha conexión remota. Para hacer esto existen diversas formas de lograrlo.
La primera es directamente relacionada con procesos y socket's. Cuando un usuario inicia sesión en un equipo remoto, vía SSH, se abre un socket en éste, por lo que haciendo un poco de uso de netstat y de ps, podremos saber exactamente qué proceso habrá que matar.
shell> netstat -pnat
Proto Local Address    Foreign Address     State        PID/Program name
tcp   0.0.0.0:22       0.0.0.0:*           LISTEN       2086/sshd
tcp   127.0.0.1:20001  0.0.0.0:*           LISTEN       1065/netams
tcp   127.0.0.1:3306   0.0.0.0:*           LISTEN       1697/mysqld
tcp   192.168.1.16:22  192.168.1.33:47350  ESTABLISHED  32322/sshd: javier
tcp6  :::22            :::*                LISTEN       2086/sshd
En la línea destacada en negrita se observa claramente cómo en el servidor (IP: 192.168.1.16) hay una conexión SSH establecida por el cliente 192.168.1.33 con nombre de usuario javier. También se puede observar perfectamente el PID del proceso, 32322. Por suerte, el usuario no está conectado como root, sino como usuario normal, algo lógico por seguridad. Vamos a ver por lo tanto el proceso,
shell> ps -ef | grep 32322
root     32322  2086  0 May06 ?        00:00:00 sshd: javier [priv]
javier   32325 32322  0 May06 ?        00:00:00 sshd: javier@pts/1
Todo usuario normal crea dos procesos, uno como root, que es la sesión de SSH y otro como usuario normal, que es el que realmente debemos de matar. Por lo tanto, en este caso deberíamos de matar el PID 32325. Para ello,
shell> kill -9 32325
Y al cliente le saldrá en su conexión la siguiente línea,
shell> Connection to 192.168.1.16 closed by remote host.
Connection to 192.168.1.16 closed.
Ahora ya es cuestión del administrador encargarse de que dicho usuario no vuelva a iniciar sesión en la máquina si así lo desea.
La segunda forma que vamos a ver es más simple. Es bueno siempre terminar de leerse las entradas ;-). En este caso, vamos a emplear el comando pkill, que tiene un funcionamiento muy similar a kill, sólo que no coge como parámetro el PID del proceso, sino algún otro atributo del mismo. En este caso, el número de terminal.
shell> who
javier   pts/0        2013-05-06 18:41 (:0.0)
javier   pts/1        May  6 18:56 (192.168.1.33)
Con el comando who, obtenemos el listado de los usuarios conectados al sistema. Destacamos en negrita el usuario y la sesión del mismo que queremos eliminar. Como se puede observar, está en el terminal 1 y conectado desde la IP 192.168.1.33.
Ahora hacemos uso de pkill, desde el que le mandamos una señal -9 (KILL) al proceso cuya TTY sea el terminal pts/1, tal que así,
shell> pkill -9 -t pts/1
Espero que esta entrada os pueda ser de utilidad. Siempre es bueno tener a mano los comandos necesarios para volver a tener el control del sistema y limitar los usuarios que estén dentro del equipo. Aunque, lógicamente, lo mejor es no tener que recurrir a estas técnicas.

La entrada Matar una conexión SSH remota la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios