Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HowTo] Autologout dalle sessioni di terminale: Bash e SSH
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Sat May 15, 2004 9:20 pm    Post subject: [HowTo] Autologout dalle sessioni di terminale: Bash e SSH Reply with quote

Se avete un server, ma anche un pc desktop a cui accedono molte persone, sicuramente avrete di volta in volta molte sessioni bash o ssh aperte.

Questo in genere non e' una bella cosa, specie se le sessioni sono idle (ovvero inattive).
Aggiungeteci che di norma voi non vi fidate dei vostri utenti, specie di quelli remoti (e voi lo fate, vero? :roll:)

Considerate questo esempio:
Il Cantastorie dei Gechi wrote:
Un bel giorno, voi decidete di dare accesso SSH al vostro amico Stefano, perche' sapete che e' uno in gamba e non potrebbe, normalmente, far danni nel vostro sistema.
Forti di questa convinzione, dormite sonni tranquilli.
Una sera, il vostro amico Stefano si logga nella vostra macchina, ma si dimentica di uscire (logout) una volta fatto quel che doveva (o semplicemente per pigrizia non lo fa).
Mettete che arriva un amico di stefano a casa sua, e vede la sessione.
L'amico non e' poi tanto preparato o semplicemente vuole far danni: cancella quel file importante a cui ha accesso anche stefano, e il giorno dopo Stefano si accorge del danno, ma ormai il dado e' tratto. E sopratutto le sue scuse, per voi, ormai servono a poco.


Vi assicuro che questa eventualita' e' tutt'altro che rara, e inoltre e' solo un esempio: in tutti questi casi, DOVETE assicurarvi che chi non lavora nella vostra macchina, non ci stia. punto e accapo.

Come possiamo fare? ve lo spiego subito.
[n.b.] la soluzione che propongo in questo messaggio e' una delle tante possibili, ma per una questione di semplicita', preferisco non trattare altri esempi in questa sede, e coprire una utenza quanto maggiore possibile :)

Bash: la console

Questo vale per utenti locali.
Code:
echo 'TMOUT=3600' >> /etc/profile

3600 sono i secondi prima che una shell che non riceve input venga terminata. In questo caso, equivale esattamente a 1 ora.

Per estendere la cosa alla sessione corrente, che ovviamente non conosce le modifiche fatte, basta un
Code:
source /etc/profile


SSH: sessioni remote

Questa dovrebbe essere la maggiore preoccupazione per noi in questo articolo.

>>> Se usate SSH commerciale come me, e' molto semplice.
Code:
echo 'IdleTimeOut 1h' >> /etc/ssh2/sshd2_config
/etc/init.d/sshd2 restart


le scelte sono:
1h = 1ora
1s = 1secondo
1d = 1giorno

e cosi' via.


>>> Se usate OpenSSH, il discorso diventa piu' complesso: questo software non dispone di un controllo diretto sul tempo di idle di una sessione interattiva, ma possiamo ovviare in questo modo:

Code:
nano /etc/ssh/sshd_config

modificare la direttiva UseLogin a "yes"
Code:
/etc/init.d/openssh restart

scarichiamo un programmino in perl che killa le sessioni di login inattive
Code:
wget -O /sbin/idlekill "http://jon.swelter.net/idlekill"
chmod u+x,go-rwx /sbin/idlekill
perl -MCPAN -eshell

configuriamo i moduli del perl necessari. al prompt cpan>:
Code:
install Sys::Utmp
exit
crontab -u root -e

editiamo crontab e aggiungiamo lo script ogni 5 minuti
Code:
*/5 * * * * /sbin/idlekill -a -i 3600 -s 9

anche qui 3600=1 ora.


Adesso avrete un piccolo livello di sicurezza in piu per il vostro sistema.
Buon lavoro :)
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Back to top
View user's profile Send private message
BlueRaven
Apprentice
Apprentice


Joined: 12 May 2003
Posts: 254

PostPosted: Tue May 18, 2004 8:03 am    Post subject: Re: [HowTo] Autologout dalle sessioni di terminale: Bash e S Reply with quote

FonderiaDigitale wrote:
>>> Se usate OpenSSH, il discorso diventa piu' complesso: questo software non dispone di un controllo diretto sul tempo di idle di una sessione interattiva


Vero in parte: il risultato in oggetto si può ottenere combinando opportunamente le opzioni
Code:
ClientAliveInterval

e
Code:
ClientAliveCountMax

Per tutti i dettagli, man sshd_config(5).
Che poi con SSH commerciale sia più semplice e intuitivo non ci piove! ;-)
Back to top
View user's profile Send private message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Tue May 18, 2004 8:10 am    Post subject: Reply with quote

sbagliato.
quello di cui parli tu si riferisce al keepalive di una connessione, ovverosia quelle due direttive influiscono solo sul comportamento della connessione, ovvero se 'sta appesa' , se cade, o se e' ancora attiva.

NON e' affatto pertinente se si vuole impedire a un utente di rimanere idle dentro una macchina, ne valuta l'interattivita' di una sessione (ovvero se uno scrive in console o no).

Per di piu', e' facilmente alterabile da parte del client (basta istruire il client a mandare messaggi NOOP ogni tot secondi).

Openssh non ha nessun supporto ufficiale per idle-timeout, ci sono delle patch non ufficiali in giro ma non sono applicabili alle ultime versioni, ne sono testate.

Ti invito a leggere questo cosi da toglierti ogni dubbio.

Ti invito anche a rileggere bene il significato delle due direttive che citi.
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Back to top
View user's profile Send private message
stuart
Guru
Guru


Joined: 27 Apr 2003
Posts: 552

PostPosted: Tue May 18, 2004 8:35 am    Post subject: Reply with quote

echo 'TMOUT=3600' >> /etc/profile
ti chiedo due informazioni su questa opzione
1. va messa su tutti gli utenti in .bash.rc, se non sbaglio, ma se uno diventa root con su cosa succede?
2. se lancio un emerge di diverse ore (con il mio pc succede spesso) si auto-slogga lo stesso o considera la compilazione come input?

scusa per le domande che per alcuni potrebbero essere banali, ma per me purtroppo no
_________________
Pochissime persone crescono. La maggior parte della gente invecchia.
Back to top
View user's profile Send private message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Tue May 18, 2004 8:44 am    Post subject: Reply with quote

nessun problema :)

1. vale la prima sessione bash aperta. quindi se non c'e' input da parte dell'utente, viene killata.
2. no, se un utente non scrive nulla, la killa. puoi mettere una cosa di questo genere solo per root, in /etc/bashrc
Code:

[ ${UID} == 0 ] unset TMOUT

e fare dei symlinks al file nelle home degli utenti (o lo metti in /etc/skel)

calcola pero' che cosi dai per scontato che root sia affidabile.
un'altra possibilita' e' fare il solito scriptino... (si lo so, sono malato)
Code:

#!/bin/sh
unset TMOUT
emerge $*
export TMOUT=3600



lo lanci tipo come se fosse emerge, passandogli i parametri di emerge.
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Back to top
View user's profile Send private message
BlueRaven
Apprentice
Apprentice


Joined: 12 May 2003
Posts: 254

PostPosted: Tue May 18, 2004 8:58 am    Post subject: Reply with quote

FonderiaDigitale wrote:
quello di cui parli tu si riferisce al keepalive di una connessione, ovverosia quelle due direttive influiscono solo sul comportamento della connessione, ovvero se 'sta appesa' , se cade, o se e' ancora attiva.


Vero, mi era sfuggito che si stava parlando di sessioni interattive, sorry! ;-)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum