дата публикации 07.04.2018

Настройка fail2ban для redmine

Дружим между собой fail2ban и redmine для защиты от брутфорса.

Исходные данные: Сервер centos 7, redmine установлен в папку /opt/redmine-3.4.4

Установка:

Устанавливаем на сервер epel репозиторий, обновляемся и устанавливаем fail2ban:
# yum install epel-release
# yum update
# yum install fail2ban fail2ban-systemd

Настройка:

Создаем файл конфигурации для redmine:
# touch /etc/fail2ban/filter.d/redmine.conf
# nano /etc/fail2ban/filter.d/redmine.conf

[Definition]

failregex = Failed [-/\w]+ for .* from

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Создаем файл jail.local и добавляем в него строки:
# touch /etc/fail2ban/jail.local
# nano /etc/fail2ban/jail.local

[redmine]

enabled = true
filter = redmine
port = 88
action = iptables[name=redmine, port=88, protocol=tcp]
backend = polling
logpath = /opt/redmine-3.4.4/log/production.log
maxretry = 3
findtime = 600
bantime = 86400
logencoding = utf-8

Чтоб fail2ban смог прочитать дату и время в логе, нужно поменять формат лога. Добавим в файл environment.rb строки
# nano /opt/redmine-3.4.4/config/environment.rb

class Logger
def format_message(severity, timestamp, progname, msg)
"#{timestamp} (#{$$}) #{msg}\n"
end
end

Перезагрузим nginx, в моем случае это
# /opt/nginx/sbin/nginx -s reload

Стартуем fail2ban и не забываем добавить в автозагрузку:
# systemctl start fail2ban
# systemctl enable fail2ban

Полезные команды:

Для проверки правильности работы конфигурационного файла, можно выполнить команду
# fail2ban-regex /opt/redmine-3.4.4/log/production.log /etc/fail2ban/filter.d/redmine.conf