Newsgroup: it.comp.os.linux.iniziare
Titolo: eseguire script alla chiusura di una connessione ssh

Se possibile...
 
Quando mi collego con ssh al mio server, si attivano gli script in
/etc/update-motd.d sul server.
 
Ora vorrei sapere se è possibile avviare un script, sempre sul server, alla
chiusura/caduta della connessione.
 
 
 
-- 
Subject: Attenzione! Postepay Il tuo account e' stato infettato da un virus!
Date: Thu, 14 Nov 2013 12:30:47 +0600
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)

 chiusura/caduta della connessione.
 
Se si tratta di "bash" una possibilita` e`
".bash_logout", ma non son sicuro funzioni
con "ssh".
 
bye,
 
-- 
 
piergiorgio


funzionare funziona, solo per un'uscita regolare, ma se in qualche modo la connessione si perde...
 
questa sembra essere la strada
 
https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
 

 
https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
 

In date: Fri, 01 Jul 2022 23:16:04 on group: it.comp.os.linux.iniziare,

Ci studio.
Grazie!
 
-- 
Se alla tavoletta del cesso ci attacchi una mela, mica diventa un MacBook!
Pero' se al MacBook togli la mela, diventa una tavoletta del cesso  :P

In date: Fri, 01 Jul 2022 23:16:04 on group: it.comp.os.linux.iniziare,
Mario M. Macaluso wrote:
 

Ni!
Mi spiego meglio.
Sto facendo prove col port knocking.
Raspberry pi3, con l'equivalente suo di debian buster.
 
 
Tutto funziona, però potrei scordarmi alla fine dell'uso della connessione
ssh, di dare la chiusura del firewall alla porta a cui accedo in ssh al
server.
 
Ho ovviamente un'altro accesso (lo avevo già da prima) a cui accedere
direttamente al server, da lan locale.
 
La mia intenzione sarebbe questa:
    faccio il knock e mi si attiva una regola iptables che mi apre una porta a
        cui ho dedicato accesso ssh da sshd_config.
    accedo con:    ssh user@dominio -p porta
    ho la shell bash con cui posso operare
    chiudo la shell con exit
 
a questo punto, vorrei che la regola iptables che mi apriva l'accesso venga
cancellata in automatico.
 
Questo sopratutto se dovessi operare dall'estero tramite un accesso dall'hotel
e cascasse la connessione od il router dell'hotel prendesse fuoco!
 
Evidente che se invece do da client il comando knocking di chiusura, la porta
viene chiusa perchè knockd cancella la regola iptables.
 
SSH controlla la shell, le variabili relative ad ssh sono impostate (alcune le
usavo già prima).
 
 
Ho aggiunto all'inizio di .bash_logout:
 
g=$(sudo iptables -S INPUT | grep "65550.*ACCEPT")
if ! [ "$g" = '' ]; then
    h=`echo "$g" | sed 's/-A/-D/g'`
    sudo iptables $h
fi
 
Ovviamente in /etc/sudoers, ho messo le eccezioni 'no password' per i due
comandi di iptables!
 
Il problema, prevedibile, è che la finestra terminale del client rimane
congelata e debbo chiuderla forzatamente col comando kill da... un'altra
finestra di terminale!
 
Ho messo quelle istruzioni di cui sopra in un file a parte, reso eseguibile,
che lo richiamo da .bash_logout non direttamente ma messo in background (nohup
nomefile &).
 
Sto facendo prove...
 
Sembra funzionare, sia che do exit nella shell, sia che esco con control-D.
 
 
-- 
The EULA and TOS are specifically designed to discourage people from
actually reading and understanding the things (especially before
making a commitment to join/purchase). It is a feature, not a bug.
Last edited by flash2010 on Tue Jul 12, 2016 4:55 pm

 
https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
 
 
 
magari il comando trap puo' darti una mano.
un augurio
 
 
 

Il giorno sabato 2 luglio 2022 alle 15:55:55 UTC+2 BIG Umberto ha scritto:
 
eventualmente puoi pensare a uno script in cron che verifica se ci sono connessioni ssh e in caso contrario fa quella cancellazione da iptables

 porta viene chiusa perchè knockd cancella la regola iptables.
 
non uso knockd ma da quello che avevo letto era possibile configurarlo in 
modo che rimuovesse dopo x secondi la regola. a te basta manualmente 
impostare iptables che accetti i pacchetti "established" e "related". a 
quel punto tu puoi stabilire la connessione entro gli x secondi, dopodiché 
la tua connessione rimane su (grazie appunto alla regola "established" e 
"related") mentre non è più possibile stabilire nuove connessioni.
 
questo ti semplifica la questione e rende pleonastico quello che stai 
cercando di fare. non importa chiudere la porta in uscita, l'ha già chiusa 
knockd dopo che sei entrato :-)

 server.
 
Se usi knockd, puoi impostare due sequenze di knock, una per aprire il
firewall, l'altra per chiuderlo (ma le connessioni esistenti in stato
"established" continuano a funzionare), oppure uno start_command e
stop_command separati da un intervallo di n secondi (durante i quali
bisogna stabilire la connesione, ovviamente). Anche in questo caso le
connessioni esistenti sono preservate. Man knockd ha tutti gli esempi.
 
-- 
Ciò che si vede, è.
 

In date: Wed, 06 Jul 2022 18:13:11 on group: it.comp.os.linux.iniziare,

Ho già risolto, vedi mia risposta precedente.
 
Nella tua risposta, implica che debba connettermi necessatriamente entro tot
tempo dalla bussata.
E' vero che se supero il tempo, mi basta ripetere la bussata!
 
Comunque:
-   ho creato un file in /etc/update.motd.d che mi mette un messaggio ip e
    porta all'apertura shell
-   ho aggiunto il trap (SIGHUP) a .bashrc che forza l'esecuzione di .bash_logout
-   in .bash_logout ho aggiunto un richiamo ad un .bash_logout_k (bash
    eseguibile) con NOHUP e messo in backgound (&)
-   in .bash_logout_k ho messo dopo un ritardo di un secondo, il test della
    porta aperta, e l'istruzione per cancellare la regola firewall.
-   ho creato uno script bash che gira in cron, per cancellare la regola se
    busso senza connettermi, o mi connetto e non completo il login
 
Non ho fatto distinzione se apro più connessioni di shell, a volte è utile
lavorare con 2 finestre aperte, la prima che chiudo, chiude anche la porta, e
lascia 'congelata' l'altra, basta killare la finestra del client.
 
Devo studiare, se durante una sessione, c'è un altro accesso da un'altro ip...
Comunque, solo un utente ha accesso, e solo con chiave crittografica e no password.
Ci gira anche fail2ban, che proprio niente non fa!
 
 
 
-- 
--- Terminate 4.00
* Origin: Non calpestare l' erba, fumala! (2:334/204.18)

 eventualmente puoi pensare a uno script in cron che verifica se ci sono connessioni ssh e in caso contrario fa quella cancellazione da iptables
 
vedi risposta a Mario M. Macaluso e a rootkit


In date: Wed, 06 Jul 2022 18:24:36 on group: it.comp.os.linux.iniziare,



In date: Wed, 06 Jul 2022 11:32:04 on group: it.comp.os.linux.iniziare,



 E' vero che se supero il tempo, mi basta ripetere la bussata!
 
ad ogni modo potresti anche rimuovere la regola alla login, una volta che 
sei entrato non ti serve più. questo ti garantisce 1) che mentre sei 
collegato nessun altro può provarci 2) non devi fare salti mortali per non 
lasciare la porta aperta.
 

In date: Thu, 07 Jul 2022 16:43:54 on group: it.comp.os.linux.iniziare,

Sai che mi sembra una ottime idea?
Mo cambio.
No, adesso è tardi e vado a nanna, domani ci lavoro.
 
E non dovrei neanche preoccuparmi se apro 2 connessioni...
 
A buon rendere.
 
-- 
--- GoldED 2.41
 * Origin: <-------affittasi spazio pubblicitario-------> (2:335/225.4)