Fail2ban: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
(13 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}}
== Introduzione ==
== Introduzione ==
'''Fail2ban''' ([http://www.fail2ban.org Sito ufficiale]) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di [[brute force]] via [[SSH]].  
'''Fail2ban''' ([http://www.fail2ban.org Sito ufficiale]) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di [[brute force]] via [[SSH]].  
Riga 46: Riga 46:
</pre>
</pre>


== Attivazione di nuovi filtri ==
== Attivazione di nuovi filtri (Da Debian Stretch) ==
Fail2ban utilizza una directory apposita per l'attivazione e la gestione di filtri personalizzati. Tutti i file inseriti in questa directory e aventi estensione <tt>.conf</tt> vengono letti e processati all'avvio del demone.
<br/>
Per attivare dei filtri su demoni diversi da SSH è sufficiente quindi creare un nuovo file di configurazione, inserendolo nella directory <tt>/etc/fail2ban/jail.d</tt>:
<pre>
# nano /etc/fail2ban/jail.d/custom.conf
</pre>
Un contenuto per il file, che ci garantisca un buon numero di filtri attivi può essere il seguente:
<pre>
[DEFAULT]
bantime = 14400
ignoreip = 127.0.0.1/8
maxretry = 5
 
[sshd]
enabled = true
port    = 2293
logpath = %(sshd_log)s
backend = %(sshd_backend)s
 
[sshd-ddos]
enabled = true
port    = 2293
logpath = %(sshd_log)s
backend = %(sshd_backend)s
 
[dropbear]
enabled = true
port    = 2293
logpath  = %(dropbear_log)s
backend  = %(dropbear_backend)s
 
[apache-auth]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
 
[apache-badbots]
enabled = true
port    = http,https
logpath  = %(apache_access_log)s
bantime  = 172800
maxretry = 1
 
[apache-noscript]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
 
[apache-overflows]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
maxretry = 2
 
[apache-nohome]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
maxretry = 2
 
[apache-botsearch]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
maxretry = 2
 
[apache-fakegooglebot]
port    = http,https
logpath  = %(apache_access_log)s
maxretry = 1
ignorecommand = %(ignorecommands_dir)s/apache-fakegooglebot <ip>
 
[apache-modsecurity]
enabled = true
port    = http,https
logpath  = %(apache_error_log)s
maxretry = 2
 
[apache-shellshock]
enabled = true
port    = http,https
logpath = %(apache_error_log)s
maxretry = 1
 
[php-url-fopen]
enabled = true
port    = http,https
logpath = %(nginx_access_log)s
          %(apache_access_log)s
 
[suhosin]
enabled = true
port    = http,https
logpath = %(suhosin_log)s
 
[roundcube-auth]
[roundcube-auth]
#enabled = true
port    = http,https
logpath  = %(roundcube_errors_log)s
 
[drupal-auth]
enabled = true
port    = http,https
logpath  = %(syslog_daemon)s
backend  = %(syslog_backend)s
 
[monit]
#enabled = true
port = 2812
logpath  = /var/log/monit
 
[webmin-auth]
enabled = true
port    = 10000
logpath = %(syslog_authpriv)s
backend = %(syslog_backend)s
 
[froxlor-auth]
enabled = true
port    = http,https
logpath  = %(syslog_authpriv)s
backend  = %(syslog_backend)s
 
[vsftpd]
enabled = true
port    = ftp,ftp-data,ftps,ftps-data
logpath  = %(vsftpd_log)s
 
[postfix]
#enabled = true
port    = smtp,465,submission
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s
 
[postfix-rbl]
#enabled = true
port    = smtp,465,submission
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s
maxretry = 1
 
[postfix-sasl]
#enabled = true
port    = smtp,465,submission,imap3,imaps,pop3,pop3s
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s
 
[squirrelmail]
#enabled = true
port = smtp,465,submission,imap2,imap3,imaps,pop3,pop3s,http,https,socks
logpath = /var/lib/squirrelmail/prefs/squirrelmail_access_log
 
[recidive]
enabled = true
logpath  = /var/log/fail2ban.log
banaction = %(banaction_allports)s
bantime  = 604800  ; 1 week
findtime = 86400  ; 1 day
 
[pam-generic]
enabled = true
banaction = %(banaction_allports)s
logpath  = %(syslog_authpriv)s
backend  = %(syslog_backend)s
 
[xinetd-fail]
enabled = true
banaction = iptables-multiport-log
logpath  = %(syslog_daemon)s
backend  = %(syslog_backend)s
maxretry  = 2
</pre>
 
== Attivazione di nuovi filtri (Fino a Debian Jessie) ==
=== Server di posta Dovecot ===
=== Server di posta Dovecot ===
Creare il file di filtro <code>/etc/fail2ban/filter.d/dovecot-pop3imap.conf</code>:
Creare il file di filtro <code>/etc/fail2ban/filter.d/dovecot-pop3imap.conf</code>:
Riga 99: Riga 274:
</pre>
</pre>


=== Apache mod_security ===
=== Apache ===
Se avete configurato il modulo di sicurezza di Apache ''mod_security'' potreste voler attivare un filtro anche per lui.<br/>
Aggiungere in <code>/etc/fail2ban/jail.d/jail.local i seguenti filtri:
Create il file di configurazione <code> /etc/fail2ban/filter.d/mod_sec.conf</code>
<pre>
##To block failed login attempts use the below jail.
[apache]
enabled  = true
port    = http,https
filter  = apache-auth
logpath  = /var/log/apache2/*error.log
maxretry = 3
bantime = 600
##To block the remote host that is trying to request suspicious URLs, use the below jail.
[apache-overflows]
enabled  = true
port    = http,https
filter  = apache-overflows
logpath  = /var/log/apache2/*error.log
maxretry = 3
bantime = 600
##To block the remote host that is trying to search for scripts on the website to execute, use the below jail.
[apache-noscript]
enabled  = true
port    = http,https
filter  = apache-noscript
logpath  = /var/log/apache2/*error.log
maxretry = 3
bantime = 600
##To block the remote host that is trying to request malicious bot, use below jail.
[apache-badbots]
enabled  = true
port    = http,https
filter   = apache-badbots
logpath  = /var/log/apache2/*error.log
maxretry = 3
bantime = 600
##To stop DOS attack from remote host.
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath  = /var/log/apache*/access.log
maxretry = 400
findtime = 400
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
</pre>
Dovremo quindi creare la regola dell'unico filtro mancante nel pacchetto installato dai repository:
<pre>
<pre>
# Fail2Ban configuration file for mod_security
# nano /etc/fail2ban/filter.d/http-get-dos.conf
 
</pre>
con questo contenuto:
<pre>
# Fail2Ban configuration file
[Definition]
[Definition]
 
failregex = \[.*?\]\s[\w-]*\s<HOST>\s
# Option: failregex
 
# Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.
# You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.
failregex = ^<HOST> -.*"(GET|POST).*
# Option: ignoreregex
ignoreregex =
ignoreregex =
</pre>
</pre>
Aggiungete questa sezione al file <code>/etc/fail2ban/jail.conf</code>:
Salviamo e riavviamo:
<pre>
<pre>
[mod_sec]
# systemctl restart fail2ban
 
enabled  = true
filter  = mod_sec
action  = iptables-multiport[name=ModSec, port="http,https"]
simple-log[name=modsec]
logpath  = /var/log/httpd/modsec_audit.log
maxretry = 3
</pre>
</pre>


=== Server FTP===
=== Server FTP===
All'interno del file <code>/etc/fail2ban/jail.conf</code> è presente una sezione FTP in cui basta abilitare quello che si desidera.
All'interno del file /etc/fail2ban/jail.conf è presente una sezione FTP in cui basta abilitare quello che si desidera.
<pre>
<pre>
# FTP servers
# FTP servers
Riga 188: Riga 410:
</pre>
</pre>
"ssh" va sostituito con la porta effettivamente usata dall'utente. Nel caso si lasci "ssh", il ban avverrà sulla porta di default di SSH (porta 22).
"ssh" va sostituito con la porta effettivamente usata dall'utente. Nel caso si lasci "ssh", il ban avverrà sulla porta di default di SSH (porta 22).
=== Altri filtri consigliati ===
Alcuni filtri utili da inserire in <code>jail.local</code>:
<pre>
[pam-generic]
enabled  = true
banaction = iptables-allports
[apache-nohome]
enabled  = true
port      = http,https
filter    = apache-nohome
banaction = iptables-multiport
action    = %(action_mwl)s
logpath  = /var/log/apache*/*access.log
maxretry  = 1
[php-url-fopen]
enabled  = true
port      = http,https
filter    = php-url-fopen
logpath  = /var/log/apache*/*access.log
maxretry  = 1
</pre>


=== Attivazione dei nuovi filtri ===
=== Attivazione dei nuovi filtri ===
Riga 495: Riga 741:
|Verificata_da=
|Verificata_da=
:[[Utente:porkyhttp|porkyhttp]] 17:04, 06 mag 2012 (CEST)
:[[Utente:porkyhttp|porkyhttp]] 17:04, 06 mag 2012 (CEST)
|Numero_revisori=1
: lula  12 gen 2017 (CET)
|Numero_revisori=2
|Estesa_da =  
|Estesa_da =  
: [[Utente : mm-barabba|mm-barabba]] 06-04-2013
: [[Utente : mm-barabba|mm-barabba]] 06-04-2013

Menu di navigazione