Sessioni di terminale condivise da più di un utente in contemporanea possono essere molto utili. In alcune occasioni, mi è stato chiesto di sistemare macchine da una postazione remota (tipo per il supporto di schede audio o di XFree86) e la controparte desiderava tenere una traccia completa delle mie operazioni (a scopo educativo e di controllo).
È possibile ottenere questo effetto utilizzando sia screen che ttysnoop.
Utilizzare screen per creare sessioni condivise è molto facile, ma richiede la collaborazione di entrambe le parti (così è necessario avere reciproca fiducia) e comporta la condivisione della password dell'account (che è una cosa brutta se inizia a diventare una abitudine). Tutto ciò che si deve fare è effettuare il login per esempio con "nomeutente1" (ssh -l nomeutente1 localhost) e avviare "screen", poi aspettare che la controparte effettui il login sul sistema (con il medesimo nome utente, naturalmente) e avviare "screen -x".
(Questo suggerimento è stato fornito da electr0n@OPN).
ttysnoop è uno strumento banale ma molto utile che può essere utilizzato per condividere, monitorare o controllare terminali utente. L'abilitazione di ttysnoop sulla propria macchina è pericolosa; può violare le proprie politiche di sicurezza o lasciare il sistema in uno stato inutilizzabile se non viene fatto correttamente. ttysnoop stesso non necessita di nessuna impostazione particolare (a parte forse il file /etc/snooptab) se entrambe le parti cooperano (una avvia il server ttysnoops, e l'altra avvia il client ttysnoop). Tuttavia installarlo in modo che ttysnoops venga avviato durante il login richiede alcune modifiche nei file di configurazione di sistema.
Vi mostreremo qui come rimpiazzare il binario di login del sistema con ttysnoops e come abilitarlo per le connessioni ssh. La procedura è delicata, come abbiamo già detto, così commenteremo ciascuna riga che si sta per eseguire nella propria shell.
Attenzione | |
---|---|
Il file /bin/login, una parte importante di ogni sistema Unix, verrà modificato. Questo significa che tutte le applicazioni che utilizzano /bin/login saranno interessate; in altre parole, potrebbe diventare possibile, per utenti che possiedono la password di root, monitorare e controllare completamente quei flussi di dati testuali (con la password di root possono farlo in ogni caso, ma non "così" facilmente). Non si dovrebbe notare alcuna modifica visibile, ma prego di comprendere che il server ttysnoops si frappone tra il programma login e l'utente (/dev/ttyp*). Se si desidera che servizi specifici non utilizzino il comando /bin/login "snoopizzato", occorre istruirli ad utilizzare /bin/login.real come programma di login (che è esattamente quello che faremo con il sistema getty). |
# dpkg-divert --divert /bin/login.real --add /bin/login # mv /bin/login /bin/login.real # echo "* socket login /bin/login.real" > /etc/snooptab # cp /etc/inittab /etc/inittab.valid # perl -p -i,orig -e 's#getty#getty -l /bin/login.real#g' /etc/inittab # ln -sf /usr/sbin/ttysnoops /bin/login # init q # echo "UseLogin yes" >> /etc/ssh/sshd_config # /etc/init.d/ssh restart
Attenzione | |
---|---|
Abilitare ttysnoop sulla propria macchina è pericoloso; può violare le proprie politiche di sicurezza o lasciare il sistema in uno stato inusabile se non viene fatto correttamente. Per esempio, se si perde la possibilità di avviare X come utente regolare di sistema, probabilmente non si è fatto in modo che getty usi il programma login originale, perciò si risolva il problema o si avvii dpkg-reconfigure xserver-common e si abiliti chiunque ad avviare il server X (una brutta cosa da farsi). |
Si può testare localmente l'impostazione (ma la stessa idea si applica ai login remoti naturalmente):
ci si connetta via ssh al proprio host locale (eseguire: ssh 127.0.0.1 o ssh 0, che funziona solo su Linux);
spostarsi su un'altra console virtuale (o terminale X) ed effettuare il login come utente root. Rintracciare il corretto dispositivo tty (ttyp*) per il proprio obbiettivo snoop:
# w | grep ttyp mioutente ttyp0 - 4:20am 3.00s 0.05s 0.02s -bash
invocare il ttysnoop da agganciare a /dev/ttyp0:
$ /usr/sbin/ttysnoop ttyp0
digitare la password di root (per autenticarsi con ttysnoops) e ci si goda la propria visione condivisa ;P.
Quando si permette alle persone di fare il login da remoto sulla propria macchina, ssh è il metodo fortemente preferito. Non si pensi nemmeno a telnet (che è un servizio insicuro e non cifrato). Se si hanno particolari necessità o si richiede telnet ugualmente, si consultino le configurazioni funzionanti dai file di esempio in /etc/snooptab.