Fail2ban è una soluzione software gratuita e open source per la prevenzione delle intrusioni che protegge i server dagli attacchi di accesso di forza bruta. Monitora vari file di registro di SSH e altre applicazioni Web e ogni volta che viene rilevata un'autenticazione non riuscita e raggiunge il numero massimo, Fail2Ban bloccherà automaticamente l'indirizzo IP utilizzando iptables di Firewalld. Fail2Ban è semplice, maneggevole, facile da configurare e flessibile.
In questa guida ti mostreremo come installare Fail2Ban con firewalld su Rocky Linux 8.
Prerequisiti
- Un server che esegue Rocky Linux 8 sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Rocky Linux 8 come sistema operativo con almeno 2 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Una volta effettuato l'accesso al server, eseguire il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Fase 2 – Configura Firewalld
dnf info firewalld
Se è installato, otterrai il seguente output:
Last metadata expiration check: 0:34:46 ago on Wednesday 17 November 2021 09:52:51 AM UTC. Installed Packages Name : firewalld Version : 0.8.2 Release : 7.el8_4 Architecture : noarch Size : 1.9 M Source : firewalld-0.8.2-7.el8_4.src.rpm Repository : @System From repo : baseos Summary : A firewall daemon with D-Bus interface providing a dynamic firewall URL : http://www.firewalld.org License : GPLv2+ Description : firewalld is a firewall service daemon that provides a dynamic customizable : firewall with a D-Bus interface. Available Packages Name : firewalld Version : 0.9.3 Release : 7.el8 Architecture : noarch Size : 501 k Source : firewalld-0.9.3-7.el8.src.rpm Repository : baseos Summary : A firewall daemon with D-Bus interface providing a dynamic firewall URL : http://www.firewalld.org License : GPLv2+ Description : firewalld is a firewall service daemon that provides a dynamic customizable : firewall with a D-Bus interface.
Quindi, verifica se Firewalld è in esecuzione o meno.
systemctl status firewalld
Dovresti vedere che il servizio Firewalld è mascherato:
● firewalld.service Loaded: masked (Reason: Unit firewalld.service is masked.) Active: inactive (dead)
Quindi dovrai smascherare il servizio Firewalld. Puoi smascherarlo usando il seguente comando:
systemctl unmask firewalld
Quindi, avvia il servizio Firewalld e abilitalo per l'avvio al riavvio del sistema:
systemctl start firewalld systemctl enable firewalld
A questo punto, Firewalld è installato e in esecuzione nel sistema. Ora puoi procedere al passaggio successivo.
Fase 3 – Installa Fail2Ban
dnf install epel-release -y
Quindi, installa il pacchetto Fail2Ban con il seguente comando:
dnf install fail2ban fail2ban-firewalld -y
Una volta installato Fail2Ban, avvia e abilita il servizio Fail2Ban utilizzando il seguente comando:
systemctl start fail2ban systemctl enable fail2ban
Puoi verificare la versione di Fail2Ban usando il seguente comando:
fail2ban-client --version
Esempio di output:
Fail2Ban v0.11.2
Fase 4 – Configura Fail2Ban
Innanzitutto, rinomina il file di configurazione di Firewalld per Fail2Ban utilizzando il seguente comando:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Quindi, copia il file di configurazione predefinito di Fail2Ban:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Quindi, modifica il file jail.local:
nano /etc/fail2ban/jail.local
Trova le seguenti righe:
banaction = iptables-multiport banaction_allports = iptables-allports
E sostituiscili con le seguenti righe:
banaction = firewallcmd-rich-rules[actiontype=] banaction_allports = firewallcmd-rich-rules[actiontype=]
Salva e chiudi il file, quindi riavvia Fail2Ban per applicare le modifiche:
systemctl restart fail2ban
A questo punto, Fail2Ban è configurato per funzionare con Firewalld.
Fase 5:servizio SSH sicuro con Fail2Ban
Per proteggere il servizio SSHD, modifica il file jail.local:
nano /etc/fail2ban/jail.local
Trova la sezione [sshd] e abilitala aggiungendo le seguenti righe:
[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s bantime = 10m findtime = 10m maxretry = 5
Salva e chiudi il file, quindi riavvia Fail2Ban per applicare le modifiche:
systemctl restart fail2ban
Ora puoi verificare lo stato di Fail2Ban usando il seguente comando:
systemctl status fail2ban
Otterrai il seguente output:
● fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-17 10:34:49 UTC; 2s ago Docs: man:fail2ban(1) Process: 21154 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS) Process: 21185 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 21186 (fail2ban-server) Tasks: 5 (limit: 11411) Memory: 14.6M CGroup: /system.slice/fail2ban.service └─21186 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Nov 17 10:34:49 rockylinux systemd[1]: Starting Fail2Ban Service... Nov 17 10:34:49 rockylinux systemd[1]: Started Fail2Ban Service. Nov 17 10:34:49 rockylinux fail2ban-server[21186]: Server ready
Passaggio 6:verifica del firewall Fail2Ban
A questo punto, Fail2Ban è configurato per proteggere il servizio SSH. Ora è il momento di verificare se Fail2Ban funziona.
Per prima cosa, verifica la configurazione della jail usando il seguente comando:
fail2ban-client status
Dovresti vedere il seguente output:
Status |- Number of jail: 1 `- Jail list: sshd
Ora vai alla macchina remota e prova a connetterti al server SSH con una password errata. Dopo aver raggiunto il numero massimo di tentativi (5 volte), il tuo indirizzo IP verrà bloccato da Fail2Ban.
Ora controlla l'indirizzo IP bloccato da Fail2Ban usando il seguente comando:
fail2ban-client status sshd
Dovresti ottenere il seguente output:
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 6 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 27.61.171.115
Puoi controllare le regole aggiunte da Firewalld con il seguente comando:
firewall-cmd --list-rich-rules
Otterrai il seguente output:
rule family="ipv4" source address="27.61.171.115" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
Puoi anche controllare i log di Fail2Ban per ulteriori informazioni:
tail -f /var/log/fail2ban.log
Esempio di output:
2021-11-17 10:37:21,837 fail2ban.filter [21186]: INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:21 2021-11-17 10:37:21,859 fail2ban.actions [21186]: NOTICE [sshd] Ban 27.61.171.115 2021-11-17 10:37:27,220 fail2ban.filter [21186]: INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:27
Conclusione
Congratulazioni! Hai installato con successo Fail2Ban con Firewalld. Ora puoi implementare Fail2Ban sul tuo server per proteggerlo dagli attacchi di accesso di forza bruta. Provalo sul tuo account di hosting VPS da Atlantic.Net!