Fail2ban: Impostare delle regole per il blocco degli ip 

()

PROBLEMA:

Impostare delle regole per il blocco degli ip che effettuano chiamate anomale ad Apache analizzando il file error.log ed impostando il filtro con le espressioni regolari

SOLUZIONE:

Ecco i passaggi che dovresti seguire:

Assicurati che fail2ban sia installato e in esecuzione sul tuo sistema.

Puoi controllare lo stato di fail2ban utilizzando il comando

sudo systemctl status fail2ban.

Crea un nuovo file di configurazione per Apache nella directory di fail2ban. Utilizzeremo il file di configurazione di default come modello:

bash

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Aggiungi una nuova sezione [apache-errors] nel file jail.local:

makefile

[apache-errors]

enabled = true

port = http,https

filter = apache-errors

logpath = /var/log/apache2/error.log

maxretry = 5

bantime = 3600

enabled: abilita la regola per il blocco degli indirizzi IP.

port: specifica le porte su cui analizzare i log di Apache.

filter: specifica il nome del filtro che verrà utilizzato per analizzare i log di Apache.

logpath: specifica il percorso del file di log di Apache.

maxretry: specifica il numero massimo di tentativi consentiti prima di bloccare l’indirizzo IP.

bantime: specifica il tempo di blocco dell’indirizzo IP in secondi.

Crea un nuovo file di filtro per Apache nella directory filter.d di fail2ban. Chiameremo questo filtro apache-errors.conf:

bash

sudo nano /etc/fail2ban/filter.d/apache-errors.conf

Aggiungi le seguenti linee al file apache-errors.conf per analizzare il file di log di Apache e identificare gli indirizzi IP che effettuano chiamate anomale:

[Definition]

failregex = [[]client <HOST>[]] (File does not exist|script not found or unable to stat): /\S*(\.php|\.asp|\.exe|\.pl|\.cgi|\.\.)/

Salva e chiudi il file apache-errors.conf.

Riavvia fail2ban per applicare le nuove configurazioni:

sudo systemctl restart fail2ban

Con queste configurazioni, fail2ban analizzerà il file di log di Apache e cercherà gli indirizzi IP che effettuano chiamate anomale. Se un indirizzo IP tenta di accedere a un file che non esiste o a uno script che non può essere eseguito, fail2ban bloccherà automaticamente l’indirizzo IP per un periodo di tempo specificato nella configurazione.


Se si ha un problema di postflood quindi il file di log è access.log e sono chiamate di tipo POST o GET

Se il problema è di postflood e le chiamate vengono effettuate tramite metodo POST o GET, si puo’ configurare Fail2ban per filtrare queste chiamate dal file di log access.log.

Seguire questi passaggi:

  • Apri il file di configurazione di Fail2ban (/etc/fail2ban/jail.conf o /etc/fail2ban/jail.local) con un editor di testo come root.
  • Trova la sezione [apache] o [apache-auth] e modificala come segue:

makefile

Copy code

[apache]

enabled = true

port = http,https

filter = apache-postflood

logpath = /var/log/apache2/access.log

maxretry = 100

findtime = 10

bantime = 600

Crea un nuovo file di filtro chiamato apache-postflood.conf nella directory /etc/fail2ban/filter.d/ con il seguente contenuto:

makefile

Copy code

[Definition]

failregex = <HOST> -.*”(GET|POST).*HTTP.*” 429

ignoreregex =

Questo filtro rileva tutte le chiamate HTTP POST e GET che ricevono un codice di stato HTTP 429 (troppi richieste).

Riavvia il servizio di Fail2ban per applicare le modifiche:

Copy code

sudo service fail2ban restart

Dopo aver eseguito questi passaggi, Fail2ban filtrerà tutte le chiamate POST e GET che ricevono il codice di stato HTTP 429 dal file di log access.log e bannare gli indirizzi IP che superano il limite di tentativi di connessione (impostato nel parametro maxretry). Il tempo di blocco dell’indirizzo IP è impostato nel parametro bantime.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?