User Tools

Site Tools


doc:appunti:linux:sa:fail2ban

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:linux:sa:fail2ban [2020/10/30 12:38] niccolodoc:appunti:linux:sa:fail2ban [2022/07/21 11:22] – [Integrazione con Shorewall] niccolo
Line 144: Line 144:
  
 ^ Nome  ^ Contesto  ^ Note  ^ ^ Nome  ^ Contesto  ^ Note  ^
-^ action              | Jail  |Indica quale script eseguire quando si deve bloccare un aggressore. Gli script sono quelli presenti in **/etc/fail2ban/action.d/** e vanno indicati senza l'estensione .conf o .local. Ogni jail può avere una o più //action// da eseguire. In generale non si indica direttamente lo script, ma una variabile del tipo **%%%(var_name)s%%**. Nella configurazione predefinita si utilizza la variabile **action_**.  |+^ action              | Jail  |Indica quale script eseguire quando si deve bloccare o sbloccare un aggressore. Gli script sono quelli presenti in **/etc/fail2ban/action.d/** e vanno indicati senza l'estensione .conf o .local. Ogni jail può avere una o più //action// da eseguire. In generale non si indica direttamente lo script, ma una variabile del tipo **%%%(var_name)s%%**. Nella configurazione predefinita si utilizza la variabile **action_**.  |
 ^ action_*            | Jail  | Variabili che definisco varie azioni possibili, da utilizzare quando necessario. Nella configurazione predefinita troviamo alcune definizioni:\\ **action_**: solo ban\\ **action_mw**: ban, mail con whois\\ **action_mwl**: ban, mail con whois e log\\ **action_xarf**: ban, mail to abuse contact\\ ...\\ Nella configurazione predefinita queste variabili non fanno direttamente riferimento agli script da eseguire, ma ad altre variabili.    | ^ action_*            | Jail  | Variabili che definisco varie azioni possibili, da utilizzare quando necessario. Nella configurazione predefinita troviamo alcune definizioni:\\ **action_**: solo ban\\ **action_mw**: ban, mail con whois\\ **action_mwl**: ban, mail con whois e log\\ **action_xarf**: ban, mail to abuse contact\\ ...\\ Nella configurazione predefinita queste variabili non fanno direttamente riferimento agli script da eseguire, ma ad altre variabili.    |
 ^ banaction           | Jail  | Nella configurazione predefinita è una variabile utilizzata dalle varie **%%action_*%%** e contiene finalmente il nome effettivo dello script da eseguire. Secondo la configurazione predefinita, il valore nella sezione **[DEFAULT]** è **iptables-multiport**.   | ^ banaction           | Jail  | Nella configurazione predefinita è una variabile utilizzata dalle varie **%%action_*%%** e contiene finalmente il nome effettivo dello script da eseguire. Secondo la configurazione predefinita, il valore nella sezione **[DEFAULT]** è **iptables-multiport**.   |
 ^ banaction_allports  | Jail  | Altra variabile utilizzata nella catena di sostituzioni della **action**. Secondo la configurazione predefinita, il valore nella sezione **[DEFAULT]** è **iptables-allports**.  | ^ banaction_allports  | Jail  | Altra variabile utilizzata nella catena di sostituzioni della **action**. Secondo la configurazione predefinita, il valore nella sezione **[DEFAULT]** è **iptables-allports**.  |
-^ actionban           | Action +^ actionban           | Action  | È la sezione di uno script ti tipo //action// (nella directory **/etc/fail2ban/action.d/**) che definisce le azioni da intraprendere per bloccare un IP.  | 
-^ actionunban         | Action  |+^ actionunban         | Action  | Azioni che sbloccano in indirizzo IP, annullando l'effetto di //actionban// |
  
 ===== Integrazione con Shorewall ===== ===== Integrazione con Shorewall =====
Line 160: Line 160:
 banaction_allports = shorewall banaction_allports = shorewall
 </file> </file>
 +
 +===== Esempio per WordPress wp-login.php =====
 +
 +Un caso tipico di attacco a forza bruta è quello contro il login di WordPress, nei file di log Apache si legge:
 +
 +<code>
 +185.120.86.118 - - [21/Jul/2022:11:00:25 +0200] "GET /wp/wp-login.php HTTP/1.1" 200 7004 ...
 +185.120.86.118 - - [21/Jul/2022:11:00:26 +0200] "POST /wp/wp-login.php HTTP/1.1" 200 7373 ...
 +</code>
 +
 +In questo caso si agisce sull'accesso al file **wp-login.php** indipendentemente dal fatto che il login abbia successo o meno (i due casi non sono distinguibili nei log). Si definisce anzitutto una regola di controllo log creando il file **/etc/fail2ban/filter.d/wordpress-local.conf**:
 +
 +<file>
 +[Definition]
 +failregex = ^<HOST> .* "POST .*wp-login.php
 +            ^<HOST> .* "POST .*xmlrpc.php
 +            ^<HOST> .* "GET .*wp-login.php
 +            ^<HOST> .* "GET .*xmlrpc.php
 +ignoreregex =
 +</file>
 +
 +Come si vede si approfitta per bloccare anche gli accessi a **xmlrpc.php**, un altro vettore comune di attacco a WordPress (fra l'altro il protocollo XML-RPC è da considerarsi obsoleto e rimpiazzato dalle API native di WordPress).
 +
 +Quindi si definisce la regola di ban creando il file **/etc/fail2ban/jail.d/wordpress-local.conf**:
 +
 +<file>
 +[wordpress]
 +enabled = true
 +usedns = no
 +port = http,https
 +filter = wordpress-local
 +logpath = /var/log/apache2/*/access.log
 +maxretry = 4
 +findtime = 120
 +bantime = 7200
 +</file>
 +
 +Dopo aver fatto il reload del servizio fail2ban, chi accede a ''wp-login.php'' per più di 4 volte in 2 minuti verrà bloccato per 2 ore.
  
doc/appunti/linux/sa/fail2ban.txt · Last modified: 2023/10/30 10:32 by niccolo