Come faccio a tenere traccia dei tentativi di accesso SSH falliti?

124

Mi piacerebbe vedere se qualcuno ha cercato di accedere da brute-force al mio server Ubuntu 12.04 su SSH. Come posso vedere se tali attività si sono svolte?

    
posta Ivan 20.08.2012 - 08:32

2 risposte

139

Tutti i tentativi di accesso sono registrati su /var/log/auth.log .

1. Filtro per accessi SSH interattivi a forza bruta

Apri un terminale e digita il seguente; se è più lungo di 1 pagina sarai in grado di scorrere su e giù; digita q per uscire:

grep sshd.\*Failed /var/log/auth.log | less
  • Ecco un esempio reale di uno dei miei VPS:

    Aug 18 11:00:57 izxvps sshd[5657]: Failed password for root from 95.58.255.62 port 38980 ssh2
    Aug 18 23:08:26 izxvps sshd[5768]: Failed password for root from 91.205.189.15 port 38156 ssh2
    Aug 18 23:08:30 izxvps sshd[5770]: Failed password for nobody from 91.205.189.15 port 38556 ssh2
    Aug 18 23:08:34 izxvps sshd[5772]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2
    Aug 18 23:08:38 izxvps sshd[5774]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2
    Aug 18 23:08:42 izxvps sshd[5776]: Failed password for root from 91.205.189.15 port 39467 ssh2
    

2. Cerca connessioni fallite (ad esempio, nessun tentativo di accesso, potrebbe essere uno scanner di porte, ecc.):

Usa questo comando:

grep sshd.*Did /var/log/auth.log | less
  • Esempio:

    Aug  5 22:19:10 izxvps sshd[7748]: Did not receive identification string from 70.91.222.121
    Aug 10 19:39:49 izxvps sshd[1919]: Did not receive identification string from 50.57.168.154
    Aug 13 23:08:04 izxvps sshd[3562]: Did not receive identification string from 87.216.241.19
    Aug 17 15:49:07 izxvps sshd[5350]: Did not receive identification string from 211.22.67.238
    Aug 19 06:28:43 izxvps sshd[5838]: Did not receive identification string from 59.151.37.10
    

Come ridurre i tentativi di accesso non riusciti / forza bruta
  • Prova a passare il tuo SSH a una porta non standard dal valore predefinito 22
  • Oppure installa uno script auto-ban come fail2ban .

risposta data ish 20.08.2012 - 08:48
67

Direi che i registri di monitoraggio sono una soluzione debole soprattutto se hai una password debole su un account. I tentativi brutali spesso provano almeno centinaia di chiavi al minuto. Anche se hai un cron job impostato per inviarti email di tentativi brutali, potrebbero essere passate ore prima di arrivare al tuo server.

Se disponi di un server SSH pubblico, hai bisogno di una soluzione che esegua lungo prima di poter essere violato.

Raccomando caldamente fail2ban . La loro wiki dice quello che fa meglio di me.

  

Fail2ban esegue la scansione dei file di registro (ad esempio /var/log/apache/error_log ) e blocca gli IP che mostrano i segni dannosi: troppi errori di password, ricerca di exploit, ecc. Generalmente Fail2Ban viene quindi utilizzato per aggiornare le regole del firewall per rifiutare gli indirizzi IP per uno specifico quantità di tempo, anche se qualsiasi altra azione arbitraria (ad esempio l'invio di un messaggio di posta elettronica o l'espulsione del vassoio del CD-ROM) potrebbe essere configurata. Fuori dalla scatola Fail2Ban viene fornito con filtri per vari servizi (apache, curier, ssh, ecc.)

Ottenere protezione da esso è semplice come sudo apt-get install fail2ban .

Di default non appena qualcuno ha tre tentativi falliti, il loro IP ottiene un divieto di cinque minuti. Questo tipo di ritardo blocca di fatto un tentativo di forza bruta SSH ma non rovinerà la giornata se dimentichi la password (ma dovresti usare comunque i tasti!)

    
risposta data Oli 23.08.2012 - 11:12

Leggi altre domande sui tag