O Apache é um dos servidores da web mais usados e populares do mundo, por isso é importante proteger seu site e usuários de ataques de força bruta. Fail2ban é um software de prevenção de intrusão de código aberto escrito em Python. O Fail2Ban analisa continuamente os arquivos de log de vários serviços (como Apache, ssh, postfix …) e, se detectar ataques maliciosos, cria regras no firewall para bloquear endereços IP de hackers por um período de tempo especificado. Fail2Ban também informa um administrador do sistema por e-mail sobre sua atividade.
Neste artigo, explicarei como instalar o fail2ban e configurá-lo para monitorar seus logs do Apache quanto a tentativas de falha de autenticação maliciosa.
Requisitos
- Servidor Ubuntu 14.04 com Apache instalado
- Apache configurado com autenticação de senha
Instalando Fail2Ban
Primeiro, certifique-se de que o servidor Apache esteja rodando e a autenticação de senha esteja habilitada.
Em seguida, você pode instalar o Fail2ban executando:
sudo apt-get update sudo apt-get install fail2ban
Configure fail2ban para Apache
O fail2ban mantém seu arquivo de configuração “jail.conf” no diretório “/ etc / fail2ban /”. Ele contém um conjunto de filtros predefinidos para vários serviços e é recomendado que você não edite este arquivo. Você precisa habilitar as prisões predefinidas do Apache criando um arquivo “/etc/fail2ban/jail.local”:
Para criar um novo arquivo “jail.local”, execute:
sudo nano /etc/fail2ban/jail.local
Adicione o seguinte conteúdo:
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227
Salve e feche o arquivo e reinicie o fail2ban para que as alterações tenham efeito.
sudo /etc/init.d/fail2ban restart
Você pode verificar as regras que foram adicionadas pelo Fail2Ban no iptables usando o seguinte comando:
sudo iptables -L
A saída será semelhante a esta:
Nota : Você pode encontrar os detalhes de cada prisão descritos abaixo:
-
[apache]
: esta prisão é usada para bloquear tentativas de login malsucedidas. -
[apache-noscript]
: esta prisão é usada para bloquear clientes remotos que estão procurando scripts no site para executar. -
[apache-overflows]
: esta prisão é usada para bloquear clientes que estão tentando solicitar URLs suspeitos. -
[apache-noscript]
: esta prisão é usada para bloquear clientes remotos que estão procurando scripts no site para executar. -
[apache-badbots]
: esta prisão é usada para bloquear solicitações de bots maliciosos.
Nota : Você pode encontrar os detalhes de cada regra descrita abaixo.
-
enabled
: esta opção significa que a proteção Apache está ativada. -
port
: esta opção especifica os serviços que o fail2ban monitora. -
filter
: esta opção se refere ao arquivo de configuração localizado no/etc/fail2ban/filter.d/
diretório. -
logpath
: esta opção especifica a localização do arquivo de log. -
bantime
: esta opção especifica o número de segundos que um host remoto será bloqueado no servidor. -
maxretry
: esta opção especifica o número de tentativas de login malsucedidas antes que um host remoto seja bloqueado durante o período de proibição. -
ignoreip
: esta opção permite que você coloque na lista de permissões certos endereços IP de bloqueio.
Verificar Status de Banimento Fail2ban
Uma vez que as prisões são ativadas, você pode verificar fail2ban usando o fail2ban-client
comando:
sudo fail2ban-client status
Você pode ver uma lista de todas as prisões habilitadas.
Para ver o status de uma prisão específica como apache, apache-badbots executando os seguintes comandos:
sudo fail2ban-client status apache
A saída é semelhante a esta:
Você também pode definir manualmente o banimento ou o cancelamento do banimento de endereços IP.
Por exemplo, para proibir um endereço IP (192.168.1.20) com uma prisão apache:
sudo fail2ban-client set apache banip 192.168.1.20
Para cancelar o banimento de um endereço IP (192.168.1.21) com uma prisão do Apache:
sudo fail2ban-client set apache unbanip 192.168.1.21
Testando Fail2Ban
É importante testar seu fail2ban se ele está funcionando conforme o esperado ou não. Agora, em uma máquina remota, abra seu navegador da web e digite a URL do seu domínio (ou o endereço IP do seu servidor). Quando o Apache solicitar autenticação, forneça um nome de usuário e senha incorretos repetidamente. Depois de atingir o limite, você deve ser bloqueado e incapaz de acessar o site.
Verifique o status com o fail2ban-client
comando:
sudo fail2ban-client status apache
Você verá o seu endereço IP sendo bloqueado no site.
Conclusão
Agora, você tem conhecimento suficiente para configurar o fail2ban. Usar fail2ban é uma maneira boa e fácil de interromper inundações (ataques de força bruta). Também é uma boa maneira de limitar o número de solicitações ruins que você recebe em seu servidor da web Apache.