Как я могу включить журналы fail2ban и mod_security в logwatch на CentOS 6.4?

Вопрос или проблема

У меня logwatch работает нормально, но я не вижу, чтобы журналы fail2ban и mod_secure появлялись в журналах logwatch. Как мне это включить? Что нужно изменить в конфигурационном файле logwatch?

Ниже приведен файл logwatch.conf.

########################################################
# Это написано и поддерживается:
#    Керк Баер <[email protected]>
#
# Пожалуйста, отправляйте все комментарии, предложения, отчеты об ошибках,
#    и т.д., на [email protected].
#
########################################################

# ЗАМЕТКА:
#   Все эти параметры являются значениями по умолчанию, если вы запускаете logwatch без
#   аргументов командной строки. Вы можете переопределить все это в
#   командной строке.

# Вы можете вставлять комментарии в любом месте. Они действуют для
# остальной части строки.

# это в формате <имя> = <значение>. Пробелы в начале
# и конце строк удаляются. Пробелы перед и после знака = 
# удаляются. Все регистронезависимо.

# Да = Истина  = Включено  = 1
# Нет = Ложь = Выключено = 0

# Директория по умолчанию для журналов
# Все журналы предполагаются относительно этой директории.
LogDir = /var/log

# Вы можете переопределить директорию временных файлов по умолчанию (/tmp) здесь
TmpDir = /var/cache/logwatch

# По умолчанию лицо для отправки отчетов. Может быть локальной учетной записью или
# полным адресом электронной почты. Переменная Print должна быть установлена на Нет для
# включения функции отправки по электронной почте.
MailTo = root
# При использовании параметра --multiemail можно указать другого
# получателя электронного письма для каждого обрабатываемого хоста. Например, чтобы отправить отчет
# для имени хоста host1 на [email protected], используйте:
#Mailto_host1 = [email protected]
# Несколько получателей можно указать, разделив их пробелами.

# По умолчанию лицо, отправляющее отчеты. Может быть локальной учетной записью или
# полным адресом электронной почты.
MailFrom = Logwatch

# Если установлено на 'Да', отчет будет отправлен на стандартный вывод вместо
# отправки вышеуказанному лицу.
Print = Yes

# если установлено, результаты будут сохранены в <имя файла> вместо отправки
# или отображения.
#Save = /tmp/logwatch

# Использовать архивы? Если установлено на 'Да', архивы журналов
# (например, /var/log/messages.1 или /var/log/messages.1.gz) будут
# дополнительно искаться вместе с файлом /var/log/messages.
# Обычно это не дает результатов, если диапазон установлен только на
# 'Вчера' или 'Сегодня'... вероятно, лучше использовать с
# По умолчанию это сейчас установлено на Да. Чтобы отключить архивы, раскомментируйте это.
#Archives = No
# Range = All

# По умолчанию временной диапазон для отчета...
# Текущие варианты: Все, Сегодня, Вчера
Range = yesterday

# Уровень детализации отчета по умолчанию.
# Это может быть Низкий, Средний, Высокий или число.
# Низкий = 0
# Средний = 5
# Высокий = 10
Detail = Low 

# Опция 'Служба' ожидает либо название фильтра
# (в /usr/share/logwatch/scripts/services/*) или 'Все'.
# По умолчанию служба(и) для отчета. Это должно быть оставлено как Все для
# большинства пользователей.  
Service = All
# Вы также можете отключить определенные службы (при указании всех)
Service = "-zz-network"     # Останавливает выполнение службы zz-network, которая
                            # выводит полезную информацию о конфигурации сети.
Service = "-zz-sys"         # Останавливает выполнение службы zz-sys, которая
                            # выводит полезную информацию о конфигурации системы.
Service = "-eximstats"      # Останавливает выполнение службы eximstats, которая
                            # является оболочкой для программы eximstats.
# Если вас интересовали только сообщения FTP, вы могли бы использовать эти 2 строки
# вместо вышеуказанных:
#Service = ftpd-messages   # Обрабатывает сообщения ftpd в /var/log/messages
#Service = ftpd-xferlog    # Обрабатывает сообщения ftpd в /var/log/xferlog
# Может быть, вас интересовали только отчеты о сообщениях PAM, тогда вы бы использовали:
#Service = pam_pwdb        # Сообщения PAM_pwdb - обычно довольно много
#Service = pam             # Общие сообщения PAM... обычно не много

# Вы также можете выбрать опцию 'LogFile'. Это заставит
# logwatch анализировать только этот один журнал.. например:
#LogFile = messages
# будет обрабатывать /var/log/messages. Это запустит все фильтры, которые 
# обрабатывают этот журнал. Эта опция, вероятно, не очень полезна для
# большинства пользователей. Установка 'Service' на 'All' выше анализирует все журналы
# в любом случае...

#
# По умолчанию мы предполагаем, что все Unix-системы имеют sendmail или подобную систему sendmail.
# Код почтового клиента выводит заголовок с To: From: и Subject:.
# На этом этапе вы можете изменить почтовый клиент на что-то еще, что может обработать этот выходной
# поток. TODO протестировать переменные в строке почтового клиента, чтобы увидеть, могут ли To/From/Subject быть установлены
# отсюда без поломки чего-либо. Это позволит использовать mail/mailx/nail и т.д..... -mgt 
mailer = "sendmail -t"

#
# С установленным этим параметром на 'Да' будут обрабатываться только записи журналов для этого конкретного хоста
# (как возвращается командой 'hostname'). Имя хоста
# также может быть переопределено в командной строке (с помощью параметра --hostname). Это
# может позволить журналом хосту обрабатывать только свои собственные журналы, или logwatch может быть
# запущен один раз для каждого хоста, включенного в журналы. 
#
# По умолчанию отчеты подготавливаются для всех записей журналов, независимо от их источника.
# Обратите внимание, что некоторые журналы не содержат информации о хосте и не будут
# затронуты этой настройкой.
#
#HostLimit = Yes

# По умолчанию демон cron генерирует ежедневный отчет logwatch
# если вы хотите его отключить, раскомментируйте тег DailyReport. 
# Неявное значение - Да
#
# DailyReport = No

# vi: shiftwidth=3 tabstop=3 et

Вывод команды sudo logwatch –debug High | grep -T100 ‘LogFiles that will be processed:’

000-*expandrepeats = 
   001-*onlyhost = 
   002-*applystddate = 
   Logfile = /var/log/maillog
   Archive = /var/log/maillog.9.gz
   Archive = /var/log/maillog.8.gz
   Archive = /var/log/maillog.7.gz
   Archive = /var/log/maillog.6.gz
   Archive = /var/log/maillog.5.gz
   Archive = /var/log/maillog.4.gz
   Archive = /var/log/maillog.3.gz
   Archive = /var/log/maillog.29.gz
   Archive = /var/log/maillog.28.gz
   Archive = /var/log/maillog.27.gz
   Archive = /var/log/maillog.26.gz
   Archive = /var/log/maillog.25.gz
   Archive = /var/log/maillog.24.gz
   Archive = /var/log/maillog.23.gz
   Archive = /var/log/maillog.22.gz
   Archive = /var/log/maillog.21.gz
   Archive = /var/log/maillog.20.gz
   Archive = /var/log/maillog.2.gz
   Archive = /var/log/maillog.19.gz
   Archive = /var/log/maillog.18.gz
   Archive = /var/log/maillog.17.gz
   Archive = /var/log/maillog.16.gz
   Archive = /var/log/maillog.15.gz
   Archive = /var/log/maillog.14.gz
   Archive = /var/log/maillog.13.gz
   Archive = /var/log/maillog.12.gz
   Archive = /var/log/maillog.11.gz
   Archive = /var/log/maillog.10.gz
   Archive = /var/log/maillog.1.gz
   Archive = /var/log/maillog-20121230

Logfile Name: up2date

Logfile Name: cisco

Logfile Name: cron
   001-*removeservice = anacron
   000-*onlyhost = 
   Logfile = /var/log/cron
   Archive = /var/log/cron.9.gz
   Archive = /var/log/cron.8.gz
   Archive = /var/log/cron.7.gz
   Archive = /var/log/cron.6.gz
   Archive = /var/log/cron.5.gz
   Archive = /var/log/cron.4.gz
   Archive = /var/log/cron.3.gz
   Archive = /var/log/cron.29.gz
   Archive = /var/log/cron.28.gz
   Archive = /var/log/cron.27.gz
   Archive = /var/log/cron.26.gz
   Archive = /var/log/cron.25.gz
   Archive = /var/log/cron.24.gz
   Archive = /var/log/cron.23.gz
   Archive = /var/log/cron.22.gz
   Archive = /var/log/cron.21.gz
   Archive = /var/log/cron.20.gz
   Archive = /var/log/cron.2.gz
   Archive = /var/log/cron.19.gz
   Archive = /var/log/cron.18.gz
   Archive = /var/log/cron.17.gz
   Archive = /var/log/cron.16.gz
   Archive = /var/log/cron.15.gz
   Archive = /var/log/cron.14.gz
   Archive = /var/log/cron.13.gz
   Archive = /var/log/cron.12.gz
   Archive = /var/log/cron.11.gz
   Archive = /var/log/cron.10.gz
   Archive = /var/log/cron.1.gz
   Archive = /var/log/cron-20121230

Logfile Name: yum
   Logfile = /var/log/yum.log

Logfile Name: tac_acc
   000-*applystddate = 

Logfile Name: exim

Logfile Name: syslog
   001-*removeservice = talkd,telnetd,inetd,nfsd,/sbin/mingetty
   000-*expandrepeats = 
   003-*applystddate = 
   002-*onlyhost = 

Logfile Name: dnssec
   000-*expandrepeats = 
   001-*applybinddate = 

Logfile Name: netscreen
   000-*applystddate = 

Logfile Name: autorpm

Logfile Name: dpkg
   000-*applyeurodate = 

LogFiles that will be processed:
[0] = maillog
[1] = qmail-pop3d-current
[2] = denyhosts
[3] = secure
[4] = messages
[5] = eventlog
[6] = qmail-send-current
[7] = none
[8] = samba
[9] = clam-update
[10] = extreme-networks
[11] = resolver
[12] = qmail-pop3ds-current
[13] = netopia
[14] = fail2ban
[15] = pix
[16] = xferlog
[17] = cisco
[18] = cron
[19] = netscreen
[20] = dnssec
[21] = qmail-smtpd-current
[22] = windows
[23] = vsftpd
[24] = php
[25] = emerge
[26] = http
[27] = bfd
[28] = sonicwall
[29] = iptables
[30] = pureftp
[31] = rt314
[32] = up2date
[33] = yum
[34] = tac_acc
[35] = exim
[36] = autorpm
[37] = dpkg

Сделал временную директорию: /var/cache/logwatch/logwatch.tOKLrjds с временной директорией
export LOGWATCH_DATE_RANGE='yesterday'
export LOGWATCH_OUTPUT_TYPE='unformatted'
export LOGWATCH_TEMP_DIR='/var/cache/logwatch/logwatch.tOKLrjds/'
export LOGWATCH_DEBUG='10'

Предварительная обработка журнала: maillog
'/var/cache/logwatch/logwatch.tOKLrjds/maillog-archive' '/var/log/maillog'  | /usr/bin/perl /usr/share/logwatch/scripts/shared/expandrepeats ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyhost ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/applystddate ''>/var/cache/logwatch/logwatch.tOKLrjds/maillog

Предварительная обработка журнала: secure
'/var/cache/logwatch/logwatch.tOKLrjds/secure-archive' '/var/log/secure'  | /usr/bin/perl /usr/share/logwatch/scripts/shared/expandrepeats ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyhost ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/applystddate ''>/var/cache/logwatch/logwatch.tOKLrjds/secure

Предварительная обработка журнала: messages
'/var/cache/logwatch/logwatch.tOKLrjds/messages-archive' '/var/log/messages'  | /usr/bin/perl /usr/share/logwatch/scripts/shared/expandrepeats ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/removeservice 'talkd,telnetd,inetd,nfsd,/sbin/mingetty,netscreen,netscreen'| /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyhost ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/applystddate ''>/var/cache/logwatch/logwatch.tOKLrjds/messages

Предварительная обработка журнала: cron
'/var/cache/logwatch/logwatch.tOKLrjds/cron-archive' '/var/log/cron'  | /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyhost ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/removeservice 'anacron'| /usr/bin/perl /usr/share/logwatch/scripts/logfiles/cron/applydate>/var/cache/logwatch/logwatch.tOKLrjds/cron

Предварительная обработка журнала: http
'/var/cache/logwatch/logwatch.tOKLrjds/http-archive' '/var/log/httpd/access_log'  | /usr/bin/perl /usr/share/logwatch/scripts/shared/expandrepeats ''| /usr/bin/perl /usr/share/logwatch/scripts/shared/applyhttpdate ''>/var/cache/logwatch/logwatch.tOKLrjds/http

Предварительная обработка журнала: yum
'/var/log/yum.log'  | /usr/bin/perl /usr/share/logwatch/scripts/logfiles/yum/applydate>/var/cache/logwatch/logwatch.tOKLrjds/yum

Обработка службы: amavis
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyservice '(amavis|dccproc)' |/usr/bin/perl /usr/share/logwatch/scripts/shared/removeheaders '' |/usr/bin/perl /usr/share/logwatch/scripts/services/amavis) 2>&1 
export clamav_ignoreunmatched='0'
export clamav_ignoreunmatched='0'

Обработка службы: clamav-milter
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyservice 'clamav-milter' |/usr/bin/perl /usr/share/logwatch/scripts/shared/removeheaders '' |/usr/bin/perl /usr/share/logwatch/scripts/services/clamav-milter) 2>&1 
export courier_enable="1"
export courier_ip_lookup='0'
export courier_printmailqueue="0"
export courier_tables="0"

Обработка службы: courier
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/services/courier) 2>&1 

Обработка службы: cron
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/cron  |  /usr/bin/perl /usr/share/logwatch/scripts/services/cron) 2>&1 

Обработка службы: dovecot
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyservice '(imap-login|pop3-login|dovecot)' |/usr/bin/perl /usr/share/logwatch/scripts/services/dovecot) 2>&1 
export ftpd_ignore_unmatched='0'
export detail_transfer="1"
export http_ignore_error_hacks="0"
export http_user_display='0'

Обработка службы: http
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/http  |  /usr/bin/perl /usr/share/logwatch/scripts/services/http) 2>&1 

Обработка службы: imapd
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/shared/onlyservice '(imapd|imapd-ssl|imapsd)' |/usr/bin/perl /usr/share/logwatch/scripts/shared/removeheaders '' |/usr/bin/perl /usr/share/logwatch/scripts/services/imapd) 2>&1 

Обработка службы: in.qpopper
 ( cat /var/cache/logwatch/logwatch.tOKLrjds/maillog  |  /usr/bin/perl /usr/share/logwatch/scripts/shared/multiservice 'in.qpopper,qpopper' |/usr/bin/perl /usr/share/logwatch/scripts/shared/removeheaders '' |/usr/bin/perl /usr/share/logwatch/scripts/services/in.qpopper) 2>&1 

Обработка службы: ipop3d

Я нашел этот вопрос 7-летней давности и у меня была такая же проблема.
logwatch обрабатывал журналы fail2ban, но ничего не сообщал, только если я включал режим отладки так:

logwatch --debug High --service fail2ban

Настоящая проблема на всех моих серверах Centos6 заключается в фильтре logwatch для fail2ban, я нашел другую статью, указывающую на решение:

Отредактируйте /usr/share/logwatch/scripts/services/fail2ban, на строке 81 выполните следующее замещение.

ОРИГИНАЛ

} elsif ( my ($Service,$Action,$Host) = ($ThisLine =~ m/WARNING:?\s\[?(.*?)[]:]?\s(Ban|Unban)[^\.]* (\S+)/)) {

ИСПРАВЛЕНО

} elsif ( my ($Service,$Action,$Host) = ($ThisLine =~ m/NOTICE:?\s+\[?(.*?)[]:]?\s(Ban|Unban)[^\.]* (\S+)/)) {

Источник: https://www.gyrocode.com/articles/centos-7-fail2ban-and-logwatch/

Ответ или решение

Для того чтобы настроить Logwatch для обработки логов fail2ban и mod_security на CentOS 6.4, необходимо выполнить несколько шагов, включая изменение конфигурационных файлов и фильтров. В данном ответе мы рассмотрим каждый из этапов, необходимых для успешной интеграции данных логов в отчеты Logwatch.

Шаг 1: Проверка наличия логов

Перед началом конфигурации, убедитесь, что служба fail2ban и mod_security корректно настроены и ведут запись логов в стандартные файлы. По умолчанию, fail2ban записывает логи в /var/log/fail2ban.log, а mod_security в лог Apache, обычно это /var/log/httpd/access_log и /var/log/httpd/error_log.

Шаг 2: Настройка Logwatch

  1. Редактирование конфигурационного файла Logwatch: Откройте файл конфигурации Logwatch, который находится по пути /etc/logwatch/conf/logwatch.conf или /usr/share/logwatch/default.conf/logwatch.conf (в зависимости от вашей установки):

    sudo nano /etc/logwatch/conf/logwatch.conf

    Убедитесь, что в секциях, отвечающих за обработку логов, нет исключений для fail2ban и mod_security. В разделе Service добавьте или исправьте строки следующим образом:

    Service = "fail2ban"
    Service = "http"  # если модуль mod_security используется с Apache
  2. Настройка фильтра fail2ban: Перейдите к файлу фильтра для fail2ban:

    sudo nano /usr/share/logwatch/scripts/services/fail2ban

    Найдите строку 81 и внесите изменения, как описано в предоставленной информации. Замените:

    } elsif ( my ($Service,$Action,$Host) = ($ThisLine =~ m/WARNING:?\s\[?(.*?)[]:]?\s(Ban|Unban)[^\.]* (\S+)/)) {

    На:

    } elsif ( my ($Service,$Action,$Host) = ($ThisLine =~ m/NOTICE:?\s+\[?(.*?)[]:]?\s(Ban|Unban)[^\.]* (\S+)/)) {

    Это изменение позволит Logwatch распознавать сообщения о бане и разблокировке, которые записывает fail2ban.

Шаг 3: Настройка фильтра für mod_security

  1. Создание или изменение фильтра для mod_security: Если фильтр для mod_security еще не существует, создайте его по следующему пути:

    sudo nano /usr/share/logwatch/scripts/services/http

    В этом файле добавьте соответствующую логику для обработки логов, относящихся к mod_security. Это может включать в себя анализ строк, содержащих сообщения о срабатывании правил mod_security.

Шаг 4: Тестирование конфигурации

После внесения всех изменений, выполните команду для тестирования вашей конфигурации Logwatch:

sudo logwatch --detail High --range yesterday --service fail2ban

Это позволит вам увидеть, собираются ли данные из логов fail2ban. Чтобы протестировать mod_security, выполните аналогичную команду, изменив --service на http.

Заключение

После выполнения всех вышеуказанных действий, ваши логи fail2ban и mod_security должны корректно отображаться в отчетах Logwatch. Регулярно проверяйте конфигурации и отладочные сообщения, чтобы убедиться, что данные обрабатываются правильно и соответствуют вашим требованиям безопасности.

Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться на форумы сообщества CentOS или специализированные ресурсы.

Оцените материал
Добавить комментарий

Капча загружается...