====== 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