Связи с тем, что для выхода в интернет я использую статический IP, мне достаточно редко приходится использовать fail2ban
на своих серверах. Я предпочитаю просто закрыть доступ к SSH в iptables
. После настройки VMmanager, был автоматически установлен пакет fail2ban
. После чего в логах стали регулярно появляться ошибки следующего содержания:
2016-08-13 05:43:23,463 fail2ban.actions [1011]: NOTICE [sshd] Ban 91.224.160.106 2016-08-13 05:43:23,565 fail2ban.action [1011]: ERROR iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stdout: '' 2016-08-13 05:43:23,565 fail2ban.action [1011]: ERROR iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stderr: '' 2016-08-13 05:43:23,565 fail2ban.action [1011]: ERROR iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- returned 1 2016-08-13 05:43:23,565 fail2ban.CommandAction [1011]: ERROR Invariant check failed. Trying to restore a sane environment 2016-08-13 05:43:23,667 fail2ban.action [1011]: ERROR iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd iptables -w -F f2b-sshd iptables -w -X f2b-sshd -- stdout: '' 2016-08-13 05:43:23,667 fail2ban.action [1011]: ERROR iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd iptables -w -F f2b-sshd iptables -w -X f2b-sshd -- stderr: "iptables v1.4.21: Couldn't load target `f2b-sshd':No such file or directory\n\nTry `iptables -h' or 'iptables --help' for more information.\niptables: No chain/target/match by that name.\niptables: No chain/target/match by that name.\n" 2016-08-13 05:43:23,667 fail2ban.action [1011]: ERROR iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd iptables -w -F f2b-sshd iptables -w -X f2b-sshd -- returned 1 2016-08-13 05:43:23,667 fail2ban.actions [1011]: ERROR Failed to execute ban jail 'sshd' action 'iptables-multiport' info 'CallingMap({'ipjailmatches':at 0x182b050>, 'matches': u'2016-08-13T05:43:07.237432 localhost sshd[850]: Invalid user admin from 91.224.160.106\n2016-08-13T05:43:09.504130 localhost sshd[852]: Invalid user admin from 91.224.160.106\n2016-08-13T05:43:11.811482 localhost sshd[856]: Invalid user admin from 91.224.160.106\n2016-08-13T05:43:14.043115 localhost sshd[858]: Invalid user admin from 91.224.160.106\n2016-08-13T05:43:22.962543 localhost sshd[878]: Invalid user support from 91.224.160.106', 'ip': '91.224.160.106', 'ipmatches': at 0x181ded8>, 'ipfailures': at 0x182b0c8>, 'time': 1471056203.463139, 'failures': 5, 'ipjailfailures': at 0x182b140>})': Error stopping action
Сначала я грешил на использования ключа iptables -w
в добавляемых правилах.
nano /etc/fail2ban/action.d/iptables-common.conf
В конце файла вы увидите параметр lockingopt
и комментарий к нему:
# Option: lockingopt # Notes.: Option was introduced to iptables to prevent multiple instances from # running concurrently and causing irratic behavior. -w was introduced # in iptables 1.4.20, so might be absent on older systems # See https://github.com/fail2ban/fail2ban/issues/1122 # Values: STRING lockingopt = -w
Тогда я решил проверить версию установленного пакета:
# iptables --version iptables v1.4.21
Но причина была не в этом. После продолжительного гугления, проблема оказалась связана с конфигом jail.local
, в который вносит изменения VMmanager в процессе установки. Чтобы починить fail2ban
, откройте файл:
nano /etc/fail2ban/jail.local
Закомментируйте содержимое файла, и добавьте строки как в примере ниже:
# ISPsystem start #[sshd] #maxretry = 5 #enabled = true # ISPsystem end [DEFAULT] bantime = 3600 banaction = iptables-multiport [sshd] maxretry = 5 enabled = true
После перезапуска fail2ban
, с довольным видом любуемся на результат:
2016-08-14 10:36:01,828 fail2ban.jail [23203]: INFO Jail 'sshd' started 2016-08-14 10:36:01,947 fail2ban.actions [23203]: NOTICE [sshd] Ban 78.47.79.193