freesh писал(а): ↑Чт окт 31, 2019 11:17 am
loki_bel писал(а): ↑Вс авг 18, 2019 1:07 am
skysilver писал(а): ↑Чт авг 08, 2019 9:53 pm
loki_bel писал(а): ↑Чт авг 08, 2019 7:42 pm
Ещё один вопрос по безопасности: в какой-нибудь лог пишутся неудачные авторизации, в частности извне?
auth.log в /cms/debmes.
skysilver, cпасибо за ответ!
Сколько не пытался отловить fai2ban'ом, не получается. Неудачные попытки для sshd и apache-phpmyadmin банит на раз. А вот создал конфиг majordomo и правило, - не банит. Команда fail2ban-regex отлавливает все совпадения, т.е. в конфиге ошибки нет, но при просмотре статуса fail2ban-client status majordomo показывает всё по нулям.
Обратил внимание, что в логах время отстаёт на 3 часа. Как будто пишется UTC без часового пояса. В этом тоже может быть проблема. Кто-нибудь может подсказать, как побороть? Или где находится фрагмент кода, который отвечает за запись лога. Может быть его поправить под себя.
Добрый день. Есть какие-нибудь подвижки в направлении прикручивания fail2ban? сам сейчас пытаюсь а то регулярно брутфорсят
но с регулярками пока трудности, может есть идеи, уже проверенные регулярки пусть не до конца?
Решение есть, но это костыль. Проблема в том, что лог должен быть определённого формата. Строка должна начинаться с метки времени. В нашем случае запись в лог происходит через вызов функции debmes, в файле /var/www/lib/general.class.php. Лог пишется следующего вида: "09:34:58 0.83955100 213.87.149.238 [01/11/2019:09:34:58] Username and/or password invalid. Login: login Password: pass".
Fail2ban может реагировать на такой формат лога, если в filter.d внести, например, "failregex = .{20}<HOST>" (без кавычек). Но debmes пишет время в UTC без учёта часового пояса. И строки после полуночи не обрабатываются fail2ban.
Например, в конфиге стоит параметр findtime = 600 (искать за последние 10 часов). Часовой пояс в системе выставлен +3. В час ночи появляется запись в логе с меткой времени 22:00:00. Система не банит ip, т.к. интервал времени больше 10 часов. Если время записи больше полуночи, то система посчитает этот случай правильно.
Второй момент - fail2ban во время старта фиксирует конкретные файлы для мониторинга по параметру logpath = /var/www/cms/debmes/*_auth.log. Но debmes создаёт каждый день новый файл. Все новые файлы fail2ban применит после перезапуска службы одновременно со сбросом своей статистики. Поэтому ставить в расписание перезапуск fail2ban тоже не вариант.
Может я чего-то не догоняю, но я увидел только один вариант - это скорректировать файл general.class.php. Прописал вывод лога не функцией debmes, а запись в файл средствами php. Во-первых в постоянный файл, во-вторых с учётом часового пояса.
Fail2ban отрабатывает "на ура". Но, на сколько я понял, при обновлении majordomo файл general.class.php снова перезапишется. Как я сразу написал, - это костыль. Если кто подскажет более элегантное решение, буду признателен.