Перейти до вмісту

Fail2ban

Матеріал з Вікіпедії — вільної енциклопедії.
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 — програма захисту серверів від атаки грубою силою. Написана мовою програмування Python, може працювати на POSIX-системах що мають інтерфейс до системи контролю пакетів або файервола, наприклад, iptables або TCP Wrapper.

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

[ред. | ред. код]

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.