mejor manera para desconectar usuarios remotos

Aldrin Martoq amartoq en dcc.uchile.cl
Lun Ene 26 14:16:55 CLST 2009


On Mon, 2009-01-26 at 10:22 -0300, Victor Hugo dos Santos wrote:
> debo de desconectar todos los usuarios remotos (ssh) de un servidor
> durante un periodo de tiempo semanal..
> a principio pensé que deteniendo el servicio (/etc/init.d/ssh stop)
> resolvería el tema, pero las conexiones activas, continúan activas
> (plop ???)  !!!

Eso permite actualizar ssh remotamente: se actualiza, se reinica el
servidor, pero sigues conectado. 

> Bueno, asi que pregunto a ustedes, cual es la mejor manera de
> desconectar los usuarios remotos ??

1ero: deja un aviso en el /etc/motd explicando tus politicas [mira el
man de motd, aca en debian debes modificar /etc/motd.tail]


2do: determina quienes se conectaron via ssh. Una aproximacion es ver
que procesos son hijos de sshd; aca un ejemplo:

// listar procesos hijos de sshd
# pstree -p $(cat /var/run/sshd.pid )

// extraer PID's
# pstree -up $(cat /var/run/sshd.pid )|\
perl -ne '@a = ($_ =~ m/(\d+)/g); print join("\n", @a)."\n"'
> /tmp/listapid.txt

// buscar usuarios (salvo root)
# ps -ho user,tty $(cat /tmp/listapid.txt) | grep -v ^root
# ps -ho user,tty $(cat /tmp/listapid.txt) | grep -v ^root \
| awk '{print $1}' | uniq > /tmp/listausuarios.txt


3ero: avisa  a los usuarios
// write a dichos usuarios
# for i in $(cat /tmp/listausuarios.txt); do echo 'el mundo se va a
acabar...' | write $i ; done



4to: mata los procesos (deberias regenerar el /tmp/listapid.txt)

// kill por favor de los procesos
# for i in $(cat /tmp/listapid.txt); do kill -HUP $i; done
# sleep 60

// kill a los procesos porfiados...
# for i in $(cat /tmp/listapid.txt); do kill -TERM $i; done
# sleep 60

// kill a los ultra ultra porfiados
# for i in $(cat /tmp/listapid.txt); do kill -KILL $i; done



> 1° - un mensaje indicando que el servicio sera desconectado en unos 5
> minutos (como en shutdown)
> 2° - algún comando que finalice correctamente los comandos que puedan
> estar ejecutando este usuario "desde esta conexión"..
> 3° - un comando para finalizar la conexcion de todos los usuarios remotos.
> 
> la verdad es que podría hacer algo con KILL (-9 tal vez), pero creo
> que seria brusco..
> por esto, pregunto por aca si alguien tiene alguna idea de como resolver esto.

Otra opcion podria ser que evites login (touch /etc/nologin) y
_suspender_ esos procesos (kill -STOP <pid>) ... y revivirlos a la
vuelta de la hora normal (kill -CONT <pid>)

Asi nadie pierde nada; pero depende de porque necesitas matar esos
procesos ...


-- 
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: This is a digitally signed message part
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20090126/b25cae03/attachment.bin


Más información sobre la lista de distribución Linux