Configurazione di Fail2ban per proteggere Apache dagli attacchi DDOS
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 periodo di tempo specificato. Fail2Ban informa anche un amministratore di sistema con un'e-mail della sua attività.
In questo articolo spiegherò come installare fail2ban e configurarlo per monitorare i log di Apache per tentativi 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 fail2banConfigura 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.localAggiungi 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.227Salva e chiudi il file, quindi riavvia fail2ban affinché le modifiche abbiano effetto.
sudo /etc/init.d/fail2ban restartPuoi verificare le regole aggiunte da Fail2Ban in iptables utilizzando il seguente comando:
sudo iptables -LL'output sarà simile a questo:
Nota: puoi trovare i dettagli di ciascuna prigione descritta di seguito:
[apache]: questa jail viene utilizzata per bloccare i tentativi di accesso falliti.[apache-noscript]: questa jail viene utilizzata per bloccare i client remoti che cercano script sul sito Web da eseguire.[apache-overflows]: questa jail viene utilizzata per bloccare i client che tentano di richiedere URL sospetti.[apache-noscript]: questa jail viene utilizzata per bloccare i client remoti che cercano script sul sito Web da eseguire.[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 monitorati da fail2ban.filter: questa opzione fa riferimento al file di configurazione situato nella directory/etc/fail2ban/filter.d/.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 ban.ignoreip: questa opzione ti consente di autorizzare il blocco di determinati indirizzi IP.
Controlla lo stato di ban di Fail2ban
Una volta attivate le jail, puoi controllare fail2ban utilizzando il comando fail2ban-client:
sudo fail2ban-client statusPuoi 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 apacheL'output è simile al seguente:
Puoi anche impostare manualmente il divieto o il ripristino degli indirizzi IP.
Ad esempio, per bannare un indirizzo IP (192.168.1.20) con apache jail:
sudo fail2ban-client set apache banip 192.168.1.20Per sbloccare un indirizzo IP (192.168.1.21) con una jail apache:
sudo fail2ban-client set apache unbanip 192.168.1.21Test di Fail2Ban
È importante testare il tuo fail2ban se funziona come previsto o meno. Ora su un computer remoto, 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 comando fail2ban-client:
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 efficace 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.




