Come rilevare SSH a lunga durata

1

Sto cercando di trovare un modo per rilevare sessioni SSH che sono state stabilite per un lungo periodo di tempo. Mi sembra di ricordare che c'erano modi per rilevare connessioni TCP che sono state collegate da molto tempo ma non ricordo come. Ho guardato Snort, anche postato qui a riguardo, ma non sono riuscito a trovare una regola che mi permettesse di guardare una sessione SSH per un qualsiasi periodo di tempo e quindi solo avvisare se ha raggiunto un limite di tempo specifico.

Qualcuno può indicarmi la giusta direzione / tecnologia per questo?

Grazie,

    
posta Brett Littrell 06.08.2017 - 23:27
fonte

2 risposte

1

Non sono riuscito a trovare una soluzione pronta per questo, tuttavia penso che questo possa essere fatto con lo scripting un po '. Ecco i miei pensieri.

Imposta Snort per allertare gli handshake TCP sulle porte di destinazione SSH. Registrate questi avvisi su un file. Impostare anche gli avvisi sul traffico da / verso le porte SSH. Scrivi questi avvisi anche in un file.

Quindi, crea uno script che mette in correlazione questi eventi e avvisa se una connessione è attiva per troppo tempo.

Una macchina a stati semplice dovrebbe fare il lavoro. Se l'avviso di handshake è incontrato, salva da / a ip un qualche tipo di memoria (può essere la memoria) così come le porte e l'ora dell'avviso. Anche l'ultima data vista salvata e l'aggiornamento come si vede il traffico tra i due host. Verifica se la differenza tra l'ultima vista e la connessione stabilita è superiore alla tua preferenza.

    
risposta data 07.08.2017 - 08:57
fonte
-1

Dipende da cosa vuoi fare, ma possiamo iniziare con who -a .

Questo mostrerà chi è loggato, quando la sessione è iniziata e ti darà anche vecchio se è vecchio. Per ssh, probabilmente vorrai concentrarti su pty (terminale fittizio per accessi remoti) invece di tty (terminali effettivi, per accessi fisici).

Per ottenere le date, puoi utilizzare:

dates='who -a | grep root | awk '{ print $4 }''

È quindi possibile confrontare tali date con un limite arbitrario impostato per trovare accessi sospetti / vecchi / morti.

Ovviamente, quanto sopra ti dà tutti gli accessi di root. Se si desidera accedere a tutti i pts remoti, è possibile utilizzare:

dates='who -a | grep pts | awk '{ print $4 }''

Tuttavia, è necessario filtrare gli accessi agli account non utente. È più semplice usare grep su un nome utente, ma senza sapere a quale fine è necessario utilizzarlo, è difficile personalizzare la risposta molto di più.

    
risposta data 07.08.2017 - 00:17
fonte

Leggi altre domande sui tag