LINUX.ORG.RU

Вопрос к знатокам питона и File2ban

 , ,


0

1

Добрый день! Опишу исходные составляющие. В наличии OS UBUNTU 14.04, которая в данном контексте является лог-сервером, куда посредством rsyslog стекаются логи с n-количества серверов. Установлен fail2ban, который натравлен на общий auth.log, смотрит за ошибочными вводами паролей, несанкционированными коннектами по ssh. Ничего не предпринимает, только отправляет уведомления на почту в соответствии со своими regexp'ами, конфиги все по умолчанию. за исключением banaction, где прописана только отсылка почты. Почта приходит следующего содержания

The IP x.x.x.x has just been banned by Fail2Ban after 2 attempts against ssh.

То есть, всё как бы нормально он видит то, за чем его поставили.НО.. Никак нигде не могу найти, как подкрутить настройки оповещения, чтобы было в почте больше информации. Постольку поскольку логи агрегированные, то интересно было бы в почте иметь название хоста из строки лога, на котором произошёл инцидент да и ещё кое-какие поля, как-то имя пользователя или что-то наподобие, что есть в этой строке информативного. Fail2ban наверняка каким-то образом эту строку держит в памяти в какой-то переменной, исходя из regexp. Подскажите ,куда копать, где почитать. Ничего подобного не нашёл. Не предлагайте ставить на каждый сервак этот демон, не вариант ни разу.. Интересно обрабатывать логи на целевом сервере, потому и вопрос возник.

Насколько я знаю, fail2ban держит строку целиком, не выделяя в ней имя хоста, пользователя и др. поля. Строка доступна в тэге ″matches″, вот action, её использующий: https://github.com/fail2ban/fail2ban/blob/master/config/action.d/sendmail-who...

Наверное, можно переписать action, чтобы он из строки вытаскивал нужные поля и только их слал в почту, но, ИМХО, будет сложновато.

mky ★★★★★ ()
Ответ на: комментарий от mky

Огромное спасибо за наводку! Я думаю строку совпадения в почту это 90% того что в принципе надо!! попробую - отпишусь тут

stran9er ()
Ответ на: комментарий от stran9er

Тег <matches> он не понимает, более того скажу, что такого конфига в реализации для Ubuntu по ходу нет, то есть нет такого sendmail-whois-matches.conf, есть sendmail-whois-lines.conf, где предписывается грепать все строки с соответствующими IP, а необходима та единственная строка по которой он банит..

stran9er ()
Ответ на: комментарий от stran9er

что такого конфига в реализации для Ubuntu по ходу нет

Да, такой конфиг появился с версии 0.9.0. Но в программном коде версии 0.8.11 в файле ″server/actions.py″ тэг ″matches″ обрабатывается и передаётся в action.execActionBan(), наряду с тегами ″ip″, ″failures″, ″time″. Появился он начиная с версии 0.8.6.

mky ★★★★★ ()
Ответ на: комментарий от mky

У меня установлена 0.8.6, глубоко в исходники пока не залезал, да и не знаю я PY. А по поводу matches, может ему там необходим какой-то особый синтаксис в конфиге, отличный от <> ? в любом случае ни в документации, ни на форумах я не нахожу упоминаний о каких-то дополнительных тегах или скрытых тегах..

stran9er ()
Ответ на: комментарий от stran9er

установлена 0.8.6

Рекомендую обновить. В changelog'e для 0.8.8 сказано, что с <matches> в предыдущих версиях была недоработка — его передавали без экранирования управляющих последовательностей, что как бы потенциальная уязвимость. Возможно, что в вашей 0.8.6 <matches> убран майнтейнерами по соображениям безопасности.

mky ★★★★★ ()
Ответ на: комментарий от stran9er

Обновился до 0.8.11 но всё же этот тег он упорно не желает воспринимать. вот кусок конфига: actionban = printf %%b «Hi,\n The IP <ip> has just been banned by Fail2Ban after <failures> attempts against <name>.\n <matches>\n\n Regards,\n Fail2Ban»|mail -s «[Fail2Ban] <name>: banned <ip> from `uname -n`» <dest>

После эвента в почте я имею Hi,

The IP x.x.x.x has just been banned by Fail2Ban after 2 attempts against ssh.

Regards,

То есть всё то еж самое, строка пустая, тег не принимается. или я что-то неправильно сконфигурил.

stran9er ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.