Come proteggere SSH con fail2ban

3128787858Fail2ban è un IPS, scritto in Python ed è in grado di funzionare su sistemi POSIX che dispongono di un firewall installato in locale (ad esempio, iptables o Wrapper TCP). I server esposti su internet sono spesso soggetti a numerosi attacchi tra cui tentativi di Brute Forse sul servizio di connessione ssh. fail2ban fornisce un modo per proteggere automaticamente tale servizio bannando gli indirizzi ip che cercano di forzare il vostro server. Il programma funziona attraverso la scansione dei file di log e reagisce alle azioni offensive, come i ripetuti tentativi di accesso non riusciti.

 

Fase uno – installare Fail2ban

Usare apt-get per installare Fail2Ban

sudo apt-get install fail2ban

Fase due – Copiare il file di configurazione

Il file di configurazione di default è posizionato in / etc/fail2ban/jail.conf. Il lavoro di configurazione non dovrebbe essere fatto in quel file;dovremmo invece fare una copia locale.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Dopo aver copiato il file, è possibile effettuare tutte le modifiche all’interno del nuovo file jail.local. Molti dei possibili servizi che possono avere bisogno di protezione sono già nel file. Ognuno si trova nella propria sezione, configurato e disabilitato.

Fase tre – Configurare le impostazioni predefinite in Jail.Local

Aprire il nuovo file di configurazione di fail2ban:

nano /etc/fail2ban/jail.local

La prima sezione di default riguarda le regole di base che fail2ban. Se si desidera è possibile personalizzare i dettagli in ogni sezione.

Potete vedere la sezione di default sotto:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = auto

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

Scrivi il tuo indirizzo IP personale nella linea ignoreip. È possibile separare ogni indirizzo con uno spazio. IgnoreIP vi permette di mettere in “white list” determinati indirizzi IP tra cui il vostro e assicurarsi che essi non siano bloccati accidentalmente.

Il passo successivo è quello di decidere un bantime, il numero di secondi che un host potrebbe essere bloccato.Il valore di default è impostato per 10 minuti, si può aumentare tale valore per un’ora (o superiore), se volete.

MaxRetry è la quantità di tentativi di login errati che un host può avere prima di venire bannato.

È possibile lasciare il backend in auto.

Destemail è l’e-mail dove gli avvisi vengono inviati. Se si dispone di un server di posta configurato fail2ban può mandare le notifiche dei ban per e-mail

Details-Action

La sezione Action si trova sotto le impostazioni predefinite. L’inizio è simile al seguente:

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

# Default protocol
protocol = tcp
[...]

Banaction descrive i passi che fail2ban intende adottare per vietare un indirizzo IP corrispondente. Questa è una versione più corta dell’estensione del file in cui si trova il config. L’azione di divieto di default, “iptables-multiport”, si trova in /etc/fail2ban/action.d/iptables-multiport.conf

MTA si riferisce programma di e-mail che fail2ban utilizzerà per inviare e-mail a richiamare l’attenzione su un IP dannoso.

È possibile modificare il protocollo (protocol) da TCP a UDP in questa linea e, a seconda di quello che vuoi far monitorare.

Fase quattro (opzionale) – Configurare la sezione ssh-iptables in Jail.Local

La sezione SSH è solo un po ‘più in basso nel file di configurazione, ed è già configurata e abilitata. Non c’è bisogno di modificare nulla almeno che non ce ne sia bisogno.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Enabled si riferisce semplicemente al fatto che la protezione SSH è attivo. È possibile disattivarlo con la parola “false”.

Port indica la porta dove fail2ban sta monitorizzando. Se è stato impostato il servizio su un’ altra porta non standard, cambiare la porta per corrispondere a quella che si sta utilizzando:

port=30000

Filter, impostato di default a sshd, si riferisce al file di configurazione che contiene le regole che fail2ban usa per trovare le corrispondenze. sshd si riferisce al file /etc/fail2ban/filter.d/sshd.conf.

Log path si riferisce alla posizione del registro che fail2ban terrà traccia.

Max retry linea all’interno della sezione SSH ha la stessa definizione l’opzione predefinita. Tuttavia, se è sono stati attivata più servizi e vogliamo avere valori specifici per ciascuno di essi, è possibile impostare il nuovo valore massimo qui.
Passo Cinque-Restart Fail2ban

Dopo aver modificato la configurazione di fail2ban, assicurarsi sempre di riavviare Fail2ban:

service fail2ban restart

Potete vedere le regole che fail2ban utilizzando il comando iptables:

iptables -L