Script que monitora através da resposta do comando netstat/ss, quais IPs estão acessando o servidor, na porta pré-configurada 80;443 bloqueando ips com conexões não estabelecidas acima do limite estabelecido.
- Instalar e configurar fail2ban:
# apt install fail2ban
- Criar jail.local:
# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
- Configurar novo jail:
# vim /etc/fail2ban/jail.d/banmanual.conf
Conteúdo de exemplo:
---
[banmanual]
enabled = true
filter = banmanual
logpath = /var/log/banmanual.log
maxretry = 1
port = 80,443
bantime = 5m
action = %(action_mwl)s
---
- Associar novo filtro ao jail:
# vim /etc/fail2ban/filter.d/banmanual.conf
Conteúdo de exemplo:
---
[Definition]
failregex = ^\[\w{1,3}.\w{1,3}.\d{1,2}.\d{1,2}:\d{1,2}:\d{1,2} \d{1,4}. \[error] \[client.<HOST>].File does not exist:.{1,40}roundcube.{1,200}
ignoreregex =
---
. Adicionar arquivo de log vazio
# touch /var/log/banmanual.log
- Configurar envio de email:
# vim /etc/fail2ban/fail2ban.local
- Analisar se outros jails ficaram ativos e reiniciar serviço:
# systemctl enable fail2ban #Para CentOs
# systemctl restart fail2ban
# systemctl status fail2ban
# fail2ban-client status
* /root/scripts/conta_cnx_apache.sh
→ Variáveis de limite de conexão [limite]
* /root/scripts/ipsliberados.txt
→ Lista de IPs que não serão bloqueados
→ Adicionar o próprio IP do servidor neste arquivo
- /root/scripts/conexao_apache.log → Mostra todas as operações do dia
- /var/log/fail2ban.log → Mostra IPs que foram banidos e que foram liberados
# fail2ban-client status banmanual → Mostra o status e quais IPs bloqueados
# fail2ban-client get banmanual banip --with-time → Quais IPs bloqueados e por quanto tempo
# fail2ban-client set banmanual banip 192.168.100.201 → Banir manualmente
# fail2ban-client set banmanual unbanip 192.168.100.222 → Retirar do bloqueio