SSH sicuro con DenyHosts

DenyHosts

 

Salve a tutti! In un nostro post abbiamo introdotto SSH, è un protocollo di rete che ci permette di connetterci ad un nostro computer anche da remoto.
Quando ci troviamo ad amministrare un server, questo protocollo di rete diventerà uno dei nostri migliori amici, in quanto ci permette di aprire una shell da un altro computer in modo veloce e sicuro, ma potrebbe diventare anche una rogna, perché potrebbe esserci qualche burlone che vuole intrufolarsi nel nostro sistema con questo protocollo utilizzando un attacco brute force.

 

BRUTE FORCE
Per stabilire una connessione con SSH, abbiamo bisogno di una password, che non è altro che una parola o una sequenza di caratteri, quindi chiunque potrebbe tentare di connettersi sparando a caso delle password, ma facendo così avrebbe troppe poche possibilità di indovinarla, per questo motivo sono stati ideati dei tools che fanno questo lavoro, cercando di indovinare la password permutando tutte le possibili combinazioni. Questo tipo di attacco può richiedere molto tempo, ma se la password è relativamente corta, l'attacco risulterà efficace, e si riuscirà a entrare nel sistema.
Ma a questo punto potreste esservi posti una domanda: ma il mio server è così tanto interessante da attirare così tanti burloni??? Beh, io ho un Raspberry Pi, da come avrete notato leggendo il blogxD, e vi accedo spesso da remoto con SSH, ma guardate questa piccola parte del mio file di log:

shell_log

Come potete vedere in un paio di ore 3 ip diversi hanno tentato di accedere al mio Raspberry, manco fosse un server di qualche multinazionale! Quindi provate a immaginare i grandi server quanti attacchi giornalieri hanno!!

Se avete anche voi un server in remoto e vi accedete con ssh, provate a vedere quanti accessi falliti vi sono nei vostri log dando questo comando:

 

 cat /var/log/auth.log | grep ssh | grep "Failed password for root"

 

E notate che c'è l'utente root, ma se provate a togliere root e lascare solo Failed password for, noterete che proveranno ad accedere anche provando ad indovinare l'utente, insomma a chi non darebbe fastidio trovare il proprio server costantemente sotto attacco??

Una soluzione ovvia a questo problema potrebbe essere l'utilizzo di una password efficace e sicura, ma delle volte questo non basta, perché la potenza di calcolo di un computer negli anni cresce senza controllo, quindi ci metteranno sempre meno a scovare una password, allora si è trovata un'altra soluzione: DenyHosts.

 

 

COS'È DENYHOSTS
DenyHosts è un tool svilippato in Python da Phil Schwartz, per la prevenzione di attacchi brute force su protocolli SSH, monitorando nei file di log i tentantivi di autenticazione non validi ed eventualmente inserire l'indirizzo ip di chi sta cercando di entrare nel server in una blacklist, in questo modo, se questo indirizzo ip tenterà di accedere nuovamente al server, non potrà farlo in quanto si trova in quesa blacklist.

 

 

INSTALLAZIONE DI DENYHOSTS
Siccome DenyHosts è un programma scritto in Python, come prima cosa, se ancora non lo abbiamo, installiamo Python sul nostro pc. Quindi apriamo un terminale e digitiamo:

 

 sudo apt-get install python3.4 

 

Bene ora installiamo il programma digitanto:

 

 sudo apt-get install denyhosts

 

 

CONFIGURAZIONE
Il file di configurazione per il tool lo troviamo nella directory /etc.
A questo programma servono due ulteriori file: /etc/hosts.allow e /etc/hosts.deny.

Nel primo file andremo a inserire gli indirizzi ip che non saranno bloccati, ossia i nostri indirizzi ip, (ricordate che dovrà essere statico altrimenti serve a poco metterlo).

Nel secondo file, il tool DenyHosts inserirà tutti gli ip che blocca, quindi se qualcuno tenta un brute force sul vostro server, dopo un tot di tentativi verrà inserito il suo ip all'interno di questa blacklist, una volta inserito un'ip in questo file, automaticamente ad esso non sarà più consentito l'accesso tramite SSH al server.

Infine dobbiamo editare, in base alle nostre esigenze, il file /etc/denyhosts.conf, quindi digitiamo:

 

 sudo nano /etc/denyhosts.conf

 

Per modificare il file ovviamente bisogna avere i permessi di utente root.
Ogni opzione, all'interno, è commentata, ora vediamo una configurazione minimale.

Alla riga 28 del file, troviamo:

 

 SECURE_LOG = /var/log/auth.log

 

In sostanza all'interno di questo file, sono registrati tutti i login (anche falliti) con SSH, quindi indichiamo quale file DenyHosts dovrà tenere d'occhio. Di default è impostata la riga 28 per sistemi Debian, ma se usate altri sistemi operativi controllate le righe precedenti, oppure andate nella directory /var/log e controllate in quale file ci sono le informazioni degli accessi con SSH.

Altre voci importanti sono:

 

 DENY_THRESHOLD_INVALID

 

Questa sarà la soglia massima di tentativi concessi all'utente che si deve connettere con SSH inserendo utenti che non sono presenti all'interno del sistema, di default è impostato a 5.

 

 DENY_THRESHOLD_VALID

 

Questo è molto simile al precedente, ma blocca dopo tot tentativi di accesso con utenti che sono presenti all'interno del sistema. Di default è impostato a 10.

 

 DENY_THRESHOLD_ROOT

 

Con questa opzione, si bloccano gli indirizzi ip che tentano di entrare con utente root.

Volendo alla riga 221, troviamo la seguente opzione:

 

 ADMIN_EMAIL

 

Dove possiamo inserire il nostro indirizzo email, per ricevere informazioni dal tool DenyHosts, se vogliamo inserire più indirizzi email basta che li separiamo con una virgola.

Come ultimo passaggio riavviamo DenyHosts dando il seguente comando:

 

sudo /etc/init.d/denyhosts restart

 


CONCLUSIONI
Ora grazie a questo bellissimo tool, non dobbiamo più preoccuparci di questi simpatici burloni che tentano di intrufolarsi nel nostro sistema cercando di trovare la giusta password;)

 

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento