Tutorial per installare e configurare server, client e servizi Fail2ban su server Linux Ubuntu 20.04 o 18.04 LTS.
Blogger e sviluppatori che eseguono e gestiscono i propri server, ovviamente sono anche responsabili della sua sicurezza. Se nel mondo di oggi non prestiamo attenzione alla sicurezza, allora c'è la possibilità che il nostro server diventi un bersaglio di aggressori e causi danni. Ebbene, sebbene ci siano vari WAF online, tuttavia, per rendere più resistente il server è disponibile un programma open-source chiamato Fail2Ban. Garantisce che l'indirizzo IP di un utente malintenzionato venga bloccato per un certo periodo di tempo dopo diversi tentativi falliti e quindi impedisce un numero illimitato di tentativi che potrebbero successivamente portare alla scoperta della password.
Fail2Ban può monitorare vari servizi. Questo ovviamente include l'accesso SSH, FTP, posta, ecc. Qui impariamo i passaggi per installare Fail2ban su Ubuntu 20.04 o 18.04 LTS e il suo processo di configurazione.
Installazione Fail2ban su Ubuntu 20.04 o 18.04 LTS
I pacchetti per installare e configurare Fail2ban sono disponibili nel repository ufficiale di Ubuntu 20.04/18.04, quindi dobbiamo solo usare apt comando per la sua installazione.
Innanzitutto, esegui il comando di aggiornamento per ricostruire la cache del repository-
sudo apt update
E poi il comando principale per ottenere questo strumento di sicurezza-
sudo apt install fail2ban
Con l'esecuzione del comando precedente, i seguenti programmi saranno disponibili dopo l'installazione:
- fail2ban-server – il server
- fail2ban-client – Programma client per la configurazione e la valutazione del server
- fail2ban-regex- Programma per testare le espressioni regolari
Abilita e verifica lo stato dei suoi servizi-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Fail2ban Configurazione su Ubuntu
fail2ban legge i tipi di file di configurazione con estensione .conf
e .local
. File con estensione .conf
vengono creati durante l'installazione e verranno sovrascritti durante l'aggiornamento del pacchetto quindi tutte le modifiche devono essere apportate nel corrispondente .local
File. Pertanto, aggiungi o modifica solo i valori in questo file che sono diversi dalle impostazioni predefinite o globali.
Fail2ban ha tre tipi di file di configurazione:
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Actions.d
I file nella directory /etc/fail2ban/action.d/ contengono i comandi per (sbloccare) gli indirizzi IP. I file di azione contengono due sezioni: [Definition]
e [Init]
. Le voci in [Init]
la sezione viene utilizzata per sovrascrivere le regole definite nella jail. Gli esempi nella tabella seguente sono tratti da iptables-multiport-conf azione. Tutti i comandi vengono eseguiti con i diritti utente fail2ban.
Panoramica delle opzioni | ||
ingresso | descrizione | esempio |
[Definition] | ||
actionstart | Comandi eseguiti all'avvio di fail2ban. | actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> |
actionstop | Comandi eseguiti all'uscita da fail2ban. | actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name> |
actioncheck | Comandi eseguiti prima di ogni actionban. Questi vengono utilizzati per verificare la funzionalità dell'ambiente corrente. | actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]' |
actionban | Comandi eseguiti quando un IP viene bannato. La condizione è sempre maxretry deve essere superato e findtime caduto a corto di. | actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> |
actionunban | Comandi da utilizzare per annullare il ban. | actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype> |
[Init] | ||
name | Il nome predefinito della catena | name = default |
port | porta | port = ssh |
protocol | Viene utilizzato internamente dal lettore di configurazione. Possibili valori: tcp , udp , icmp , all . | protocol = tcp |
chain | La catena iptables a cui devono essere aggiunte le regole fail2ban. Lo standard è INPUT . | catena =INGRESSO |
Tag azione | I tag di azione sono segnaposto che possono essere utilizzati in actionban , actionunban e actioncheck . | |
ip | L'indirizzo IPv4 da escludere. | |
failures | Il numero di tentativi falliti contati. | |
time | Il timestamp Unix (secondi) del divieto. | |
matches | Le voci concatenate dalle righe del file di registro che portano al divieto. Molti caratteri della shell vengono sottoposti a escape. |
Filtro.d
I file nella directory /etc/fail2ban/filter.d/ contiene le espressioni regolari per l'analisi dei file di registro e per l'estrazione dell'indirizzo IP o se vengono utilizzati usedns il nome host. Ci sono solo due sezioni in questi file: [Definition]
e [Includes]
. Quest'ultimo può essere utilizzato per leggere altri file di configurazione.
Gli esempi nella tabella seguente sono tratti da iptables-multiport-conf azione. Tutti i comandi vengono eseguiti con i diritti utente fail2ban.
Panoramica delle opzioni | ||
ingresso | descrizione | esempio |
[Definition] | ||
failregex | Con l'aiuto di questa espressione regolare, i file di registro vengono cercati per i risultati. Il tag è HOST disponibile qui,che viene utilizzato come parte dell'espressione regolare e contiene il nome host o l'indirizzo IP. La distinzione tra indirizzo IP e nome host è determinata automaticamente da fail2ban. | failregex =^%(__prefix_line)sFAIL:\S+ indirizzo da= ^%(__prefix_line)sFAIL:\S+ libwrap da= |
ignoreregex | Le eccezioni possono essere definite qui, anche se erano valide per il precedente failregex. ignoreregex supporta l'interpolazione di stringhe in modo che tu possa utilizzare le tue variabili con %(variablenname)s . | ignoreregex = |
[INCLUDES] | ||
before | Utilizza per fare in modo che un file venga letto prima di quello impostato. Un esempio è common.conf | prima =common.conf |
after | Il file viene letto dopo quello impostato | dopo =esempio_dopo.local |
esempio | Dopo aver integrato il common.conf è _daemon disponibile.Vedi /etc/fail2ban/filter.d/common.conf per maggiori dettagli. | _daemon =xinetd |
Jail.conf
Mentre il jail.conf
file combina Azioni e fatto Filtro in una prigione. L'utente deve salvare questo file con estensione.loca
l per iniziare ad aggiungere le proprie regole o personalizzarle.
Il jail.conf e la tabella seguente fornisce una panoramica dei possibili valori predefiniti.
Panoramica delle opzioni | ||
ingresso | descrizione | esempio |
[DEFAULT] | ||
ignoreip | Elenco separato da spazio di IP o reti da ignorare. | ignoreip = 127.0.0.1/8 192.168.1.33 |
bantime | Tempo di esclusione in secondi. Un valore negativo è un divieto permanente. | bantime = 86400 |
findtime | Il numero di secondi dopo i quali il contatore per maxretry è ripristina. | findtime = 660 |
maxretry | Il numero massimo di tentativi non riusciti prima che fail2ban escluda l'IP. | maxretry = 2 |
backend | Il back-end, come systemd , può essere impostato qui. L'impostazione predefinita è auto (consigliato). | backend = systemd |
usedns | Impostazione per il comportamento di ricerca inversa di fail2ban. I valori possibili sono yes , no e warn .Quest'ultimo significa che le voci con nomi host danno un avviso nel file di registro, che può portare a un numero elevato di voci. | usedns = warn |
[myJail] | Il nome della prigione può essere assegnato qui. | [ssh] |
enabled | (De-) attiva la prigione | enabled = true |
port | Definizione della porta, può essere numerica. Più valori sono separati da virgole. | port = ssh |
filter = sshd | Nome del file filtro | /etc/fail2ban/filter.d/sshd.conf |
logpath | Il file di registro da monitorare, che viene controllato per il filtro. | logpath = /var/log/auth.log |
maxretry, bantime,... | È anche possibile definire valori diversi per le opzioni predefinite. | maxretry = 3 |
Crea il tuo file di configurazione Jail
Quindi, ora copiamo il jail.conf per creare un jail.local per aggiungere eventuali impostazioni personalizzate che rimarranno lì anche dopo l'aggiornamento di fail2ban.
sudo cp /etc/fail2ban/jail.{conf,local}
Per configurare varie impostazioni, modifica i file jail locali creati
sudo nano /etc/fail2ban/jail.local
Pochi esempi-
Inserisci nella whitelist alcuni indirizzi IP, intervalli IP o host
Ora, all'apertura del file, supponiamo che desideri autorizzare alcuni indirizzi IP, intervalli IP o host a essere bloccati dal servizio File2ban. Per questo, definiamo lo stesso nel Jail.local appena creato file.
Vedi :Come controllare l'indirizzo IP sul terminale di comando Linux
Nel file trova il #igonreip riga e rimuovi il # da. Successivamente aggiungi l'indirizzo IP o l'intervallo che desideri inserire nella whitelist.
Bantitime, findtime e maxretry
In modo simile, possiamo anche aumentare o diminuire il tempo dell'indirizzo IP vietato modificando i valori dell'opzione bantime fornita nel file.
[Default] bantime = 10m
Per ridurre o aumentare il periodo di tempo, è sufficiente modificare i 10 minuti predefiniti impostandoli come preferisci. Considerando che per bloccare l'indirizzo IP in modo permanente utilizzare un valore negativo.
tentativo massimo
Quanti massimi tentativi deve aver fatto un indirizzo IP per essere bloccato? Per impostazione predefinita è cinque e dichiarato utilizzando maxretry
opzione in jail.local
file. Se vuoi ridurlo diciamo che solo dopo due tentativi dannosi l'IP dovrebbe bloccarsi, quindi cambia il numero da 5 a 2. Allo stesso modo, puoi aumentare anche il numero massimo di tentativi.
maxretry = 5
trovare il tempo
È il tempo tra il numero massimo di tentativi che dovrebbe verificarsi per qualsiasi accesso dannoso o sul sistema prima che Fail2Ban blocchi il particolare indirizzo IP. Ad esempio , qualcuno sta tentando di accedere, se ha effettuato 5 tentativi in 10 minuti previsti, il suo IP viene bloccato. Tuttavia, puoi modificare il tempo di ricerca valore per aumentare o diminuire questo periodo di tempo.
findtime = 10m
Fail2ban può inviare avvisi via email
Sì, se alcuni IP vengono bannati, puoi ricevere la notifica via e-mail per lo stesso. Tuttavia, devi abilitare e definire quale indirizzo email desideri utilizzare per ricevere la notifica.
Installa Sendmail- Un agente di trasferimento della posta (MTA) open source
sudo apt install sendmail
Ora, ci sono due impostazioni chiave che dobbiamo eseguire in jail.local file per ricevere notifiche via email.
- destemail – indirizzo e-mail che utilizzerà per ricevere una notifica.
- mittente – indirizzo email da cui fail2ban invierà le email.
Quindi, nel file trova le due impostazioni precedenti e aggiungi il tuo indirizzo email-
Successivamente, trova la riga sottostante
action = %(action_)s
E cambialo con uno dei seguenti-
action = %(action_)s
– Questo invierà una notifica e-mail quando alcuni indirizzi IP vengono bannati.
o
action = %(action_mwl)s
– Nel caso in cui desideri la notifica e-mail per l'IP dell'host vietato, comprese le informazioni sui registri, utilizza questa opzione di azione.
Inoltre, puoi guardare il nostro miglior elenco di app client di posta elettronica per Ubuntu o Debian Linux.
Abilita i servizi nel file Jail Fail2ban
Come accennato in precedenza, la creazione di jail.local comprende entrambe le Azioni e Filtri che può essere utilizzato per disabilitare/abilitare i servizi consentiti predefiniti o crearne di propri.
Ad esempio – Per impostazione predefinita, SSH è abilitato in Jail.local di Fail2ban.
In realtà, nel file Fail2ban Jail, vedrai che ci sono molti servizi che ne derivano. Tuttavia, devi abilitarli per l'uso. O altrimenti puoi crearne uno tuo.
In /etc/fail2ban/filters.d cartella puoi vedere tutto il filtro di configurazione file per ogni servizio Fai2ban Jail disponibile lì.
Prima di mostrare come attivarli, verifichiamo quali sono i servizi jail abilitati-
sudo fail2ban-client status
L'output sarà così-
Status |- Number of jail: 1 `- Jail list: sshd
Ora, se vogliamo attivare alcuni servizi Jail, dobbiamo aggiungere enabled = true
nel jail.conf
file dopo il titolo del servizio di prigione. L'esempio seguente mostra come abilitare apache-auth carcere:
Esempio:Attiviamo il servizio Apache-auth Fail2ban
Modifica jail.local
e trova Apache-Auth predefinito Servizio di prigione
Salva il file utilizzando Ctrl+X , Y, e premendo Invio Chiave.
Riavvia il server Fail2ban
sudo systemctl restart fail2ban
Ora , usa ancora il client Fail2ban per verificare quanti servizi Jail sono abilitati-
sudo fail2ban-client status
Questa volta l'output sarà-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
Per saperne di più informazioni sul servizio usa il suo nome con il comando sopra-
sudo fail2ban-client status apache-auth
Risultato:
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Errore:
Se ricevi i seguenti errori, significa che il particolare servizio che desideri abilitare non è ancora installato sul tuo sistema o server. Ad esempio, Se ho abilitato Apache Jail ma Apache stesso non è disponibile sul mio server, verrà visualizzato questo tipo di errore.
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Fail2ban utilizzo client
Anche noi possiamo utilizzare lo strumento di comando client di Fail2ban per gestire i suoi vari servizi: per vedere tutti i comandi ad esso correlati puoi utilizzare il flag della Guida-
fail2ban-client -h
, ad esempio per vietare o sbloccare alcuni IP per alcuni servizi, utilizzare la seguente sintassi
Bandare
fail2ban-client set <JAIL-service> banip <IP>
Per annullare il ban
fail2ban-client set <JAIL-service> unbanip <IP>
Esempio-
sudo fail2ban-client set sshd banip 192.168.0.6
Nota finale-
Quindi, questa è stata una rapida panoramica dell'installazione e della configurazione di Fail2ban su Ubuntu 20.04 o 18.04 LTS . Sebbene la documentazione dello strumento Fail2ban non sia vasta, comunque se qualcuno vuole dare un'occhiata, controlla il suo sito Web ufficiale. Ecco i link:Pagina del progetto, Documentazione, Pagina GitHub per il codice sorgente