Visualizzazione post con etichetta linux. Mostra tutti i post
Visualizzazione post con etichetta linux. Mostra tutti i post

Fail2Ban: Proteggersi dagli attacchi di forza bruta

Fail2Ban è un software che analizza i file di log del server, relativi ai servizi attivi (es. FTP, SSH, etc.) e banna gli IP dai quali si sono effettuati un numero massimo consentito di login che non sono andati a buon fine.

A cosa serve? protegge i nostri server da attacchi di forza bruta.

Per installare fail2ban:
apt-get install fail2ban

Una volta installato andiamo a configurarlo attraverso il file:
/etc/fail2ban/jail.conf

in questo file troviamo la sezione [DEFAULT]attraverso la quale possiamo modificare le impostazioni generali di fail2ban. 

[DEFAULT]
# configurazione generale
ignoreip = 127.0.0.1 192.168.3.0/24
bantime = 600
maxretry = 3
backend = polling
destemail = root@localhost
banaction = iptables-multiport
mta = sendmail
protocol = tcp
# template di azioni da intraprendere
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
# indico quale azione intraprendere da uno dei template di azioni descritte sopra
action = %(action_)s
Nell'esempio riportato ho suddiviso la sezione [DEFAULT] con commenti. La prima parte riguarda la configurazione generale che descrivo di seguito:
  • attraverso ignoreip possiamo specificare gli indirizzi ip che devono essere ignorati. Nell'esempio si ignorano i tentativi falliti di login provenienti da localhost e dalla rete 192.168.1.0 
  • bantime indica il tempo in secondi per cui l'ip che ha effettuato login non andati a buon fine deve essere bannato. Nell'esempio il ban dura 10 minuti
  • maxretry indica il numero massimo di tentativi falliti prima di bannare l'ip. Nell'esempio il numero massimo di tentativi consentiti è 3
  • backend metodo usato per intercettare le modifiche sui file di log
  • destemail indica a quale indirizzo devono essere inviate le notifiche generate da fail2ban
  • banaction
  • mta
  • protocol
Sempre nella sezione [DEFAULT] troviamo di seguito una serie di "template" di azioni predefinite che possiamo selezionare andando ad impostarne il valore nella variabile action:
  • l'azione action_  si limita a bannare solamente l'ip selezionato
  • l'azione action_mw banna l'ip e invia notifica via mail
  • l'azione action_mwl banna l'ip e invia notifica via mail includendo le righe di log interessate
Nell'esempio l'action prescelta è action_ indicata attraveso:

action = %(action_)s

dove possiamo modificare action_ in action_mw o action_mwl per l'invio delle notifiche.

Definito il comportamento generale possiamo andare ad indicare quali servizi devono essere tenuti sotto controllo. Ciò viene fatto attraverso la definizione dei jail (prigioni) che sono indicate da altre sezioni, che seguono la sezione [DEFAULT] ed avranno, di base, la struttura riportata di seguito:

[NOME_SEZIONE]
enabled = true | false
port = porta
filter = cosa filtrare nel log
logpath = path del log da analizzare
Anche se possiamo definirne di nuove, nel file di configurazione si troveranno già tutte le jail che ci occorrono e basterà solo abilitare quelle che ci interessano mettendo enabled a true

TO BE CONTINUED ...

Riferimenti

Come mettere in sicurezza un server Linux

Di seguito alcune considerazioni per rendere un po' più sicuro il proprio server in rete.

Non essere banali!

Cercare di rendere le cose il meno ovvie possibili.

Mi spiego meglio con un esempio: il servizio SSH di norma resta in ascolto alla porta 22. Un attaccante avrebbe vita semplice nel caso volesse tentare un'intrusione: troverebbe subito il servizio SSH.

Per rendere la cosa meno banale si "nasconde" mettendo ad es. il servizio su un'altra porta "meno standard" ad es. la 12345. In questo modo l'attaccante dovrà faticare un po' di più: se non trova il servizio alla 22 potrebbe pensare che non c'è e lasciare perdere, oppure ancora se vuole insistere deve cercarselo.

Per esperienza personale, dopo aver spostato SSH su un'altra porta non ho più avuto tentativi di intrusione (tutti provano alla 22 e se non trovano il servizio non continuano).

Proteggersi da attacchi di forza bruta! - Fail2Ban

Cos'è un'attacco di bruteforce: in sostanza è un modo per scoprire nome utente e password per tentativi.

Ad esempio se è attivo un servizio ftp, l'attaccante proverà diverse combinazioni di nome utente / password fino a quando non riuscirà ad ottenere l'accesso.

Se la password utilizzata è semplice e se non si è usato nessun accorgimento di sicuro prima o poi si andrà incontro a qualche problema.

Ovviamente la prima regola è quella di utilizzare password difficili che siano lunghe e contengano lettere, numeri e caratteri speciali in modo da rendere sufficientemente alto il numero di combinazioni possibili e quindi più difficile il lavoro dell'attaccante.

Si possono poi adottare altre soluzioni:

Sicurezza passiva - Snort

A volte può essere utile cercare di capire come i nostri server vengono attaccati.

Uno strumento utile per questo scopo è l' Intrusion Detection System (IDS), che funziona come una sorta di allarme che si attiva ogni volta che viene identificato un tentativo di intrusione.

Un IDS non ci protegge in alcun modo ma si limita solo a segnalare le varie anomalie che si verificano durante il periodo di attività del server al fine di darci quelle informazioni necessarie per poter intervenire di conseguenza.

Un IDS sicuramente tra i più usati è Snort.

TO BE CONTINUED ...

Lettori fissi

 
DISCLAIMER: Questo blog non costituisce una testata giornalistica. Non ha carattere periodico ed è aggiornato secondo la disponibilità e la reperibilità dei materiali. Pertanto non può essere considerato in alcun modo un prodotto editoriale ai sensi della Legge. n. 62 del 2001.
COPYRIGHT: Tutti i diritti sui testi/contenuti presenti su questo blog sono di proprietà dell'autore. Per utilizzare il materiale contattarmi all'indirizzo: nevit76@gmail.com