Estou rodando o CentOS 7, totalmente atualizado, e estou tentando fazer com que o Fail2Ban funcione, mas estou com problemas.
Especificamente, estou tentando bloquear ataques SSH de força bruta. Tenho certeza que configurei tudo certo - habilitei a cadeia do sshd em jail.local
, usando firewallcmd-ipset
como a ação de proibição, definitivamente usando o Firewalld, não usando o SELinux.
Mas quando eu inicio o Fail2Ban, aqui está o que está em /var/log/fail2ban.log
:
2017-06-21 06:11:44,186 fail2ban.server [3357]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
2017-06-21 06:11:44,186 fail2ban.database [3357]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2017-06-21 06:11:44,188 fail2ban.jail [3357]: INFO Creating new jail 'sshd'
2017-06-21 06:11:44,206 fail2ban.jail [3357]: INFO Jail 'sshd' uses systemd {}
2017-06-21 06:11:44,230 fail2ban.jail [3357]: INFO Initiated 'systemd' backend
2017-06-21 06:11:44,232 fail2ban.filter [3357]: INFO Set maxRetry = 3
2017-06-21 06:11:44,232 fail2ban.filter [3357]: INFO Set jail log file encoding to UTF-8
2017-06-21 06:11:44,233 fail2ban.actions [3357]: INFO Set banTime = 86400
2017-06-21 06:11:44,233 fail2ban.filter [3357]: INFO Set findtime = 3600
2017-06-21 06:11:44,234 fail2ban.filter [3357]: INFO Set maxlines = 10
2017-06-21 06:11:44,320 fail2ban.filtersystemd [3357]: INFO Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2017-06-21 06:11:44,335 fail2ban.jail [3357]: INFO Jail 'sshd' started
2017-06-21 06:11:44,864 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stdout: ''
2017-06-21 06:11:44,865 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stderr: '\x1b[91mError: COMMAND_FAILED\x1b[00m\n'
2017-06-21 06:11:44,865 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- returned 13
2017-06-21 06:11:44,865 fail2ban.actions [3357]: ERROR Failed to start jail 'sshd' action 'firewallcmd-ipset': Error starting action
Como você notará, tudo funcionará perfeitamente até que firewall-cmd
seja tentado. Os comandos que está tentando executar são:
ipset create fail2ban-sshd hash:ip timeout 86400
seguido por
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
Se eu tentar executá-las sozinho, o comando ipset
funcionará bem, mas o firewall-cmd
1 retornará com Error: COMMAND_FAILED
. Então, eu estou supondo que é um problema com o comando que o Fail2Ban está tentando enviar para firewall-cmd
- mas eu não sei o suficiente sobre o Firewalld para consertá-lo.
(Ah, o SSH está na porta 44 porque descobri que ele reduz massivamente os ataques drive-by, então não vamos entrar nos prós e contras disso!
Além disso, systemctl status fail2ban
mostra tudo para estar funcionando sem problemas, sem problemas relatados lá. Eu só notei isso quando eu entrei e vi que houve um monte de tentativas de login com falha, o que é raro com a mudança de porta e tudo mais.
Por fim, uname -r
retorna 3.10.0-229.14.1.el7.centos.plus.x86_64
, então tenho certeza que não é o problema do OpenVZ que eu vi como uma causa disso em outro lugar.