====== fail2ban ======
===== Instalação =====
==== CentOS ====
# yum install epel-release
# yum install fail2ban
==== Debian ====
# apt-get install fail2ban
===== Configuração em /etc/fail2ban =====
O arquivo padrão de configuração é o ''jail.conf''. Não é recomendável alterar esse arquivo, ao invés você pode criar o arquivo ''jail.local'', que terá prioridade na leitura da configuração.
''jail.conf'' contém uma seção ''[DEFAULT]'', seguido por serviços individuais. ''jail.local'' sobrescreve esses valores. Adicionalmente, pode-se usar arquivos em ''/etc/fail2ban/jail.d/'' que tem precedência sobre o ''conf'' e o ''local''. Eles podem ser aplicados na seguinte ordem (precedência do último ao primeiro):
- /etc/fail2ban/jail.conf
- /etc/fail2ban/jail.d/*.conf, ordem alfabética
- /etc/fail2ban/jail.local
- /etc/fail2ban/jail.d/*.local, ordem alfabética
Qualquer arquivo deve conter a seção [DEFAULT], executada primeiro, e pode conter seções individuais. o último valor aplicado tem precedência.
==== SSH ====
Criar o arquivo ''/etc/fail2ban/jail.local''.
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Fonte: https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-7
==== Ignore IP ====
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1 192.168.1.0/24 8.8.8.8
==== Nginx ====
**/etc/fail2ban/filter.d/nginx-req-limit.conf**
# Fail2Ban configuration file
#
# supports: ngx_http_limit_req_module module
[Definition]
failregex = limiting requests, excess:.* by zone.*client:
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
**/etc/fail2ban/jail.local**
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10
# service fail2ban restart
==== Apache HTTPD ====
Editar o arquivo ''/etc/fail2ban/jail.local'' :
# detect password authentication failures
[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/httpd/*error_log
maxretry = 6
# detect spammer robots crawling email addresses
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/httpd/*access_log
bantime = 172800
maxretry = 1
# detect potential search for exploits and php vulnerabilities
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/httpd/*error_log
maxretry = 6
# detect Apache overflow attempts
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/httpd/*error_log
maxretry = 2
# detect failures to find a home directory on a server
[apache-nohome]
enabled = true
port = http,https
filter = apache-nohome
logpath = /var/log/httpd/*error_log
maxretry = 2
# detect failures to execute non-existing scripts that
# are associated with several popular web services
# e.g. webmail, phpMyAdmin, WordPress
port = http,https
filter = apache-botsearch
logpath = /var/log/httpd/*error_log
maxretry = 2
Fonte: http://xmodulo.com/configure-fail2ban-apache-http-server.html