Alguns servidores ficam abertos para a internet quando consumimos serviços de cloud e algumas atenções às vezes tem que ser tomada para não recebermos nenhuma surpresa desagradável.
Em nosso exemplo usaremos como configurar o Fail2Ban para proteger o WordPress, uma vez que tenho percebido que cada vez mais é comum o ataque à servidores hospedados em cloud e em específico os que usam WordPress devido suas vulnerabilidades.
Fail2ban trabalha realizando um filtro com expressões regulares em arquivos de logs e uma reação é realizada de acordo com os filtros configurados na ferramenta .
Uma informação complementar à este post são os links :
Script de configuração para regras padrões de IPTABLES :
http://fajlinux.com.br/scripts/script-regras-padrao-iptables/
Configuração do SELINUX :
http://fajlinux.com.br/linux/rhce-selinux-portas-e-booleanos/
1) Requisitos:
Usaremos um RHEL/CentOS 7 para instalar a ferramenta
yum install fail2ban cd /etc/fail2ban/ cp jail.conf jail.local
2) Configurando filtros e bloqueios para WordPress :
Baixando os arquivos de configuração para ler os logs do WordPress :
$ cd /etc/fail2ban/filter.d $ wget http://plugins.svn.wordpress.org/wp-fail2ban/trunk/wordpress.conf
Crie o arquivo de bloqueio em /etc/fail2ban/action.d/
vi /etc/fail2ban/action.d/wordpress.conf
[wordpress] enabled = true filter = wordpress logpath = /var/log/auth.log port = http,https
Restart o serviço :
RHEL 6
service fail2ban restart
RHEL 7 :
systemctl restart fail2ban
3) Configurando bloqueios para Apache :
vi /etc/fail2ban/action.d/apache.conf
# 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 [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
Restart o serviço :
RHEL 6
service fail2ban restart
RHEL 7 :
systemctl restart fail2ban
4) Gerenciando o serviço :
Para verificar o status das regras
$ sudo fail2ban-client status
Para verificar o status de uma regra especifica :
$ sudo fail2ban-client status [name-of-jail]
Para banir um ip para uma regra particular
$ sudo fail2ban-client set [name-of-jail] banip [ip-address]
Para remover um configuração de banimento
$ sudo fail2ban-client set [name-of-jail] unbanip [ip-address]