Fail2ban

програма захисту серверів від атаки грубою силою

Fail2Ban — програма захисту серверів від атаки грубою силою. Написана мовою програмування Python, може працювати на POSIX-системах що мають інтерфейс до системи контролю пакетів або файервола, наприклад, iptables або TCP Wrapper.

Fail2Ban
ТипСистема виявлення атак (вторгнень)
АвторCyril Jaquier
РозробникCyril Jaquier, Yaroslav Halchenko, Daniel Black, Steven Hiscocks, Arturo 'Buanzo' Busleiman et al.
Перший випуск2004; 20 років тому (2004)
Стабільний випуск0.10.0 (9 серпня 2017; 7 років тому (2017-08-09)[1])
Операційна системаUnix-like
Мова програмуванняPython
ЛіцензіяGPLv2+
Репозиторійgithub.com/fail2ban/fail2ban
Вебсайтwww.fail2ban.org

Принцип роботи

ред.

Fail2ban сканує файли журналів (наприклад, /var/log/apache2/error.log) і забороняє IP-адреси, активність з яких виявляє шкідливі ознаки — велика кількість спроб увійти з неправильно введеним паролем, виконати небезпечні або безглузді дії тощо. В разі виявлення таких аномальних дій, Fail2Ban оновлює правила брандмауера для блокування такої IP-адреси на певний проміжок часу. Програма може бути налаштована і на виконання іншої дії (наприклад, відправлення електронного листа).

Конфігурація за замовчуванням містить фільтри для Apache, Lighttpd, sshd, vsftpd, qmail, Postfix, Courier Mail Server, Asterisk та інших популярних серверних додатків. У фільтрах використовуються регулярні вирази, які можуть бути легко змінені та налаштовані у разі потреби. Наприклад, фільтр sshd-ddos виглядає таким чином:

failregex = ^%(__prefix_line)sDid not receive identification string from <HOST>\s*$

Налаштування

ред.

Стандартні налаштування програми знаходяться у файлі /etc/fail2ban/jail.conf, змінювати налаштування рекомендують в /etc/fail2ban/jail.local, який є копією jail.conf.

Файл містить розділ загальних налаштувань [DEFAULT] та розділи специфічних налаштувань для певних сервісів (для прикладу продемонстрована наявність розділу [ssh]).

[DEFAULT]
ignoreip = 127.0.0.1/8
ignorecommand =
bantime  = 3600
findtime = 600
maxretry = 3
backend = auto
usedns = warn
destemail = root@localhost
sendername = Fail2Ban
sender = fail2ban@localhost
banaction = iptables-multiport
mta = sendmail
protocol = tcp
chain = INPUT
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
              %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s", sendername="%(sendername)s"]
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_)s

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Модифікації

ред.

Посилання

ред.
  1. fail2ban: Daemon to ban hosts that cause multiple authentication errors. 11 листопада 2017. Архів оригіналу за 9 квітня 2018. Процитовано 3 квітня 2018 — через GitHub.