GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare e configurare Fail2Ban su CentOS 8 e Fedora 33

Fail2Ban è un'utilità di analisi dei registri che scansiona i file di registro di vari processi e vieta gli indirizzi IP che fanno troppe password non riuscite. Quando viene individuato un tentativo di accesso, Fail2Ban aggiungerà una nuova regola a iptables per bloccare l'indirizzo IP dell'attaccante, temporaneamente o permanentemente. Può anche avvisarti via email per lo stesso.

Si concentra principalmente sul rilevamento delle intrusioni tramite SSH, ma può essere configurato per funzionare con qualsiasi servizio che utilizza file di registro.

Prerequisiti

  1. Un server basato su Fedora 33 o CentOS 8 con un utente non root con privilegi sudo.

  2. Installa Nano editor perché è quello che useremo.

    $ sudo dnf install nano -y
    

Installa Fail2Ban

Per installare Fail2Ban su CentOS 8, devi prima installare il repository EPEL Yum.

$ sudo dnf install epel-release

Fedora 33 viene fornito con Fail2Ban.

Esegui il comando seguente per installare Fail2Ban sia su Fedora 33 che su CentOS 8.

$ sudo dnf install fail2ban

Una volta installato, dobbiamo abilitare il servizio.

$ sudo systemctl enable fail2ban

Quindi, avvia il servizio fail2ban.

$ sudo systemctl start fail2ban

Ora puoi controllare lo stato del servizio per vedere se funziona correttamente.

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Configura Fail2Ban

Il servizio Fail2Ban conserva i suoi file di configurazione in /etc/fail2ban directory. Ti imbatterai in un file jail.conf dentro. Questo file di solito viene sovrascritto durante gli aggiornamenti del pacchetto, quindi non dovrebbe essere modificato.

Invece, tutte le configurazioni dovrebbero essere fatte in un nuovo file che chiameremo jail.local . Le impostazioni in questi 2 file possono essere ulteriormente sovrascritte tramite file da /etc/fail2ban/jail.d/ directory.

Le configurazioni vengono applicate nel seguente ordine:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , In ordine alfabetico
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local , In ordine alfabetico

jail.conf contiene un [DEFAULT] sezione seguita da sezioni per i singoli servizi. Ognuna di queste sezioni può essere sovrascritta definendola in .local file.

Configura jail.local

Creeremo un nuovo jail.local file.

$ sudo nano /etc/fail2ban/jail.local

Incolla il seguente codice al suo interno.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Premi Ctrl + X per chiudere l'editor e premere Y quando viene richiesto di salvare il file. Questo imposta un nuovo bantime predefinito per tutti i servizi, cambia il backend in systemd e abilita il `sshd carcere.

Riavvia Fail2ban per implementare le nuove modifiche.

$ sudo systemctl restart fail2ban

Possiamo confermare le impostazioni appena applicate utilizzando fail2ban-client utilità.

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

Possiamo anche ottenere lo stato dettagliato di ciascuna prigione in particolare nel modo seguente.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Altre impostazioni

jail.conf fornisce molte più impostazioni che possono essere personalizzate utilizzando /jail.local file. Esamineremo successivamente alcune impostazioni.

Inserimento IP nella whitelist

Puoi inserire nella whitelist/ignorare che gli IP vengano bloccati da Fail2ban utilizzando il codice seguente.

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Se desideri inserire nella whitelist gli IP solo per determinate jail, puoi farlo tramite fail2ban-client .

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Sostituisci JAIL nel comando sopra con il nome della jail, vuoi modificare l'impostazione per.

Tempo di esclusione e importo dei tentativi

Ci sono 3 impostazioni che possono impostare l'ora e il numero di tentativi per un ban.

bantime - è il periodo di tempo in secondi durante il quale un IP viene bannato. Per impostare un divieto permanente, imposta questo valore su un numero negativo. Il valore predefinito è 10 minuti o 600 secondi.

findtime - è il tempo che intercorre tra i tentativi di accesso prima che venga impostato un divieto. Questo valore è sempre un numero di secondi. Ad esempio, se Fail2ban è impostato per vietare un IP dopo 5 tentativi di accesso non riusciti, quei 5 tentativi devono verificarsi entro i 10 minuti bantime impostati limite.

maxretry - è il numero di tentativi da un singolo indirizzo IP prima che venga imposto un divieto. Il valore predefinito è 3.

Per personalizzare queste impostazioni, incolla le seguenti righe in \etc\fail2ban\jail.local file sotto il [DEFAULT] sezione.

bantime = 3600
findtime = 300
maxretry = 4

Avvisi e-mail

Per inviare avvisi e-mail, dovrai prima installare un Mail Transfer Agent (MTA). Per il nostro scopo, installeremo sendmail .

$ sudo dnf install sendmail

Per ricevere l'e-mail, aggiungi il seguente codice in \etc\fail2ban\jail.local file in [DEFAULT] sezione.

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemail si riferisce all'ID e-mail di destinazione che è l'ID a cui desideri ricevere le e-mail, sendername si riferisce al nome del mittente, quindi stiamo usando Fail2Ban per questo. mta si riferisce all'agente di trasferimento della posta utilizzato che è sendmail qui. Se stai usando Postfix , quindi utilizza il valore mail per il mta variabile.

action si riferisce all'azione predefinita che viene eseguita una volta rilevata un'intrusione. Il valore predefinito è %(action_)s che banna solo l'utente. %(action_mw)s bandirà e invierà un'e-mail con un rapporto Whois; mentre %(action_mwl)s bandirà e invierà un'e-mail con il rapporto Whois insieme alle informazioni dai file di registro pertinenti. Questo può anche essere modificato in base alla prigione.

Impostazioni per le carceri individuali

Come già sappiamo, [DEFAULT] la sezione si applica a tutte le Jail, è ora di esaminare alcune Jail specifiche e le relative impostazioni.

Carcere SSHD

Abbiamo già definito [sshd] in precedenza nel nostro jail.local file. Possiamo personalizzarlo un po' di più con il seguente codice.

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

In questo caso, stiamo usando una variabile predefinita ssh per la porta che è la porta SSH predefinita. Se stai usando una porta SSH diversa, dovresti cambiarla. logpath fa riferimento alla posizione del file di registro da monitorare. %(ssh_log)s utilizza un valore definito nel file di configurazione standard di Fail2ban (/etc/fail2ban/paths-common.conf ).

Carcere di Nginx

Nginx ha diverse Jail che possono essere utilizzate in Fail2Ban. Ad esempio, se una parte del tuo sito protetta da password viene attaccata ripetutamente, puoi utilizzare una sezione [nginx-http-auth] in jail.local file per quello.

[nginx-http-auth]
enabled = true

Possiamo anche aggiungere una sezione chiamata [nginx-botsearch] per interrompere le richieste a cartelle o percorsi che non esistono.

[nginx-badbots]
enabled  = true

Ci sono anche altre jail Nginx ma non sono preconfigurate con Fail2Ban. Devono essere creati manualmente e la maggior parte di essi può essere basata su quelli Apache forniti da Fail2Ban.

Filtri Fail2Ban e Failregex

C'è un'altra impostazione nella configurazione di Fail2Ban chiamata filtri. I filtri decidono se una riga nel file di registro indica un'autenticazione non riuscita.

Il valore del filtro nel file di configurazione è un riferimento a un file che si trova in /etc/fail2ban/filter.d directory con il suo .conf estensione rimossa.

Puoi vedere che tipo di filtri sono disponibili controllando la directory.

$ ls /etc/fail2ban/filter.d

Vedrai 2 file di registro per Nginx al suo interno; nginx-badbots.conf e nginx-http-auth.conf .

Questi file di configurazione utilizzano le espressioni regolari (regex) per analizzare i file di registro. Questi sono chiamati Failregex. Puoi personalizzare o creare nuovi filtri scrivendo le tue espressioni regolari. Non tratteremo in modo approfondito queste espressioni regolari perché non rientrano nell'ambito di questo tutorial.

Monitoraggio dei registri e del firewall Fail2Ban

Puoi controllare lo stato di Fail2Ban usando systemctl come detto in precedenza.

$ sudo systemctl status fail2ban

Per avere un po' più di dettagli, puoi usare il journalctl comando.

$ sudo journalctl -b -u fail2ban

Puoi anche usare fail2ban-client per interrogare lo stato di fail2ban-server o e carcere individuale.

$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name

Puoi anche interrogare il file di registro di Fail2ban.

$ sudo tail -F /var/log/fail2ban.log

Puoi elencare le regole correnti configurate per iptables.

$ sudo iptables -L

Puoi anche elencare le regole di iptables in un formato che rifletta i comandi necessari per abilitare tali regole.

$ sudo iptables -S

Conclusione

Questo conclude il nostro tutorial sull'installazione e la configurazione di Fail2Ban su un server basato su Fedora 33 o CentOS 8. Se hai domande, pubblicale nei commenti qui sotto.


Cent OS
  1. Come installare e configurare Nginx su CentOS 7

  2. Come installare e configurare Fail2ban su CentOS 8

  3. Come installare e configurare Redis 6 su Fedora 34

  4. Come installare e configurare Fail2ban su CentOS 8?

  5. Come installare e configurare CyberPanel su CentOS 8

Come installare e configurare Nagios 4.0.7 su CentOS 7

Come installare e configurare ISPConfig CP su CentOS 7

Come installare e configurare ownCloud su CentOS 7

Come installare e configurare Samba su CentOS 8

Come installare e configurare Fail2ban su CentOS 8

Come installare e configurare HAproxy su CentOS 6