mejor manera para desconectar usuarios remotos

Asdtaker asdtaker en gmail.com
Lun Ene 26 14:28:07 CLST 2009


2009/1/26 Aldrin Martoq <amartoq en dcc.uchile.cl>

> 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 ...

Guau! ¿así quien no? Excelente solución, se va derecho a Golden Doc.

Tks!

>
>
>
> --
> Aldrin Martoq <amartoq en dcc.uchile.cl>
> http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
>



-- 
Saludos, LSM.
Existen 10 tipos de personas:
los que entienden binarios y los que no


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