Apache è uno dei server web più utilizzati e popolari al mondo, quindi è importante proteggere il tuo sito web e gli utenti dagli attacchi di forza bruta. Fail2ban è un software di prevenzione delle intrusioni open source scritto in Python. Fail2Ban analizza continuamente i file di registro di vari servizi (come Apache, ssh, postfix …) e, se rileva attacchi dannosi, crea regole sul firewall per bloccare gli indirizzi IP degli hacker per un determinato periodo di tempo. Fail2Ban informa anche un amministratore di sistema con un’email della sua attività.
In questo articolo spiegherò come installare fail2ban e configurarlo per monitorare i log di Apache per tentativi di errore di autenticazione dannosi.
Requisiti
- Server Ubuntu 14.04 con Apache installato
- Apache configurato con autenticazione tramite password
Installazione di Fail2Ban
Innanzitutto, assicurati che il server Apache sia in esecuzione e che l’autenticazione della password sia abilitata.
Successivamente, puoi installare Fail2ban eseguendo:
sudo apt-get update sudo apt-get install fail2ban
Configura fail2ban per Apache
Il fail2ban mantiene il suo file di configurazione “jail.conf” nella directory “/ etc / fail2ban /”. Contiene una serie di filtri predefiniti per vari servizi e si consiglia di non modificare questo file. È necessario abilitare le jail Apache predefinite creando un file “/etc/fail2ban/jail.local”:
Per creare un nuovo file “jail.local”, esegui:
sudo nano /etc/fail2ban/jail.local
Aggiungi il seguente contenuto:
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227
Salva e chiudi il file, quindi riavvia fail2ban affinché le modifiche abbiano effetto.
sudo /etc/init.d/fail2ban restart
Puoi verificare le regole che sono state aggiunte da Fail2Ban in iptables usando il seguente comando:
sudo iptables -L
L’output sarà simile a questo:
Nota : Puoi trovare i dettagli di ogni jail descritti di seguito:
-
[apache]
: questa jail viene utilizzata per bloccare i tentativi di accesso non riusciti. -
[apache-noscript]
: questa jail viene utilizzata per bloccare i client remoti che stanno cercando script da eseguire sul sito web. -
[apache-overflows]
: questa jail viene utilizzata per bloccare i client che stanno tentando di richiedere URL sospetti. -
[apache-noscript]
: questa jail viene utilizzata per bloccare i client remoti che stanno cercando script da eseguire sul sito web. -
[apache-badbots]
: questa jail viene utilizzata per bloccare le richieste di bot dannosi.
Nota : Puoi trovare i dettagli di ciascuna regola descritta di seguito.
-
enabled
: questa opzione significa che la protezione Apache è attiva. -
port
: questa opzione specifica i servizi che fail2ban monitora. -
filter
: questa opzione fa riferimento al file di configurazione situato nel file/etc/fail2ban/filter.d/
directory. -
logpath
: questa opzione specifica la posizione del file di registro. -
bantime
: questa opzione specifica il numero di secondi durante i quali un host remoto verrà bloccato dal server. -
maxretry
: questa opzione specifica il numero di tentativi di accesso falliti prima che un host remoto venga bloccato per la durata del periodo di divieto. -
ignoreip
: questa opzione consente di autorizzare il blocco di determinati indirizzi IP.
Verifica lo stato di esclusione di Fail2ban
Una volta attivate le jail, puoi controllare fail2ban usando il fail2ban-client
comando:
sudo fail2ban-client status
Puoi vedere un elenco di tutte le jail che hai abilitato.
Per vedere lo stato di una particolare jail come apache, apache-badbots eseguendo i seguenti comandi:
sudo fail2ban-client status apache
L’output è simile a questo:
Puoi anche impostare manualmente il ban o il blan IP degli indirizzi IP.
Ad esempio, per escludere un indirizzo IP (192.168.1.20) con una jail Apache:
sudo fail2ban-client set apache banip 192.168.1.20
Per sbloccare un indirizzo IP (192.168.1.21) con una jail Apache:
sudo fail2ban-client set apache unbanip 192.168.1.21
Test di Fail2Ban
È importante testare il tuo fail2ban se funziona come previsto o meno. Ora su una macchina remota, apri il tuo browser web e digita l’URL del tuo dominio (o l’indirizzo IP del tuo server). Quando Apache richiede l’autenticazione, fornire ripetutamente un nome utente e una password errati. Dopo aver raggiunto il limite, dovresti essere bloccato e non essere in grado di accedere al sito.
Controlla lo stato con il file fail2ban-client
comando:
sudo fail2ban-client status apache
Vedrai il tuo indirizzo IP bloccato dal sito.
Conclusione
Ora, hai abbastanza conoscenze per configurare fail2ban. Usare fail2ban è un modo semplice e buono per fermare le inondazioni (attacchi di forza bruta). È anche un buon modo per limitare il numero di richieste errate che ricevi sul tuo server web Apache.