Назад | Перейти на главную страницу

rsyslog relp - предотвращение записи удаленных журналов в мой локальный / var / log

Я установил сервер журналов, используя rsyslog с relp. Он отлично работает, поскольку получает удаленные журналы и помещает их в / var / spool / rsyslog.

Моя проблема: большинство этих сообщений также появляются в моем файле / var / log / messages, который может стать довольно большим и довольно быстрым.

Моя конфигурация на сервере логирования:

    #### MODULES ####

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

# RELP config
$ModLoad imrelp
$InputRELPServerRun 2514

#### GLOBAL DIRECTIVES ####

# Filter duplicated messages
$RepeatedMsgReduction on

# Set the default permissions for all log files.
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

# Where to place spool files
$WorkDirectory /var/spool/rsyslog

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

# global templates
# DONT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING
$ActionFileDefaultTemplate RSYSLOG_ForwardFormat
$template precise,"%syslogpriority% %syslogfacility% %timegenerated% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate precise

# This should place all remote log items into /var/spool/rsyslog
$template RemoteHost,"/var/spool/rsyslog/%programname%.log"

# My brain says: this prevents anything coming in from a remote host from
# being written in /var/log/whatever - MY BRAIN LIES TO ME!
if ($hostname != 'my.server.name') then ?RemoteHost
&~

Я читал справочную страницу, в которой говорится, что проверка имени хоста и "амперсандная тильда" должны предотвратить заражение моих файлов журналов удаленным материалом.

Подсказки?

DISTRIB_DESCRIPTION = "Ubuntu 12.04.3 LTS"

у вас должно быть что-то подобное в вашем файле конфигурации rsyslog

*.*;auth,authpriv.none          -/var/log/syslog

Если вы посмотрите, вы регистрируете ВСЕ уровни серьезности из ВСЕХ средств в файле системного журнала, за исключением средств auth и authpriv.

Просто добавьте объект, который вы не хотите регистрировать, а также уровень серьезности «нет». I.E: местные6:

*.*;auth,authpriv.none;local6.none          -/var/log/syslog

Конечно, вы должны перезапустить или перезагрузить демон rsyslog после изменения файлов конфигурации.

Надеюсь, это поможет, хотя это далеко не просто использование сложных фильтров rsyslog.

я не уверен, можете ли вы использовать имена хостов на этом этапе.

лично я использовал $ fromip == 'x.x.x.x' как условие для разных имен файлов.

ниже приведен хороший пример, который работает для моей настройки, хотя это может быть проблемой, если у вас много разных диапазонов IP.

это скопировано из

http://www.rsyslog.com/tag/more-complex-scenarios/

Сохранение сообщений из удаленной системы в конкретный файл 23 февраля 2010 г.

Это сценарий консолидации журналов. Существует как минимум две системы, сервер и как минимум один клиент. Сервер предназначен для сбора данных журнала от всех клиентов. Клиенты могут (или не могут) обрабатывать и хранить сообщения локально. Если да, то здесь все равно. См. Рецепт «Отправка сообщений на удаленный сервер системного журнала», чтобы узнать, как настроить клиентов.

Сообщения от удаленных хостов в сети 192.0.1.x должны быть записаны в один файл, а сообщения от удаленных хостов в сети 192.0.2.x должны быть записаны в другой файл. О чем подумать

Протокол TCP не является встроенной возможностью. Вам необходимо загрузить плагин imtcp, чтобы включить его. Это нужно сделать только один раз в rsyslog.conf. Сделайте это прямо вверху.

Обратите внимание, что адрес порта сервера, указанный в $ InputTCPServerRun, должен совпадать с адресом порта, на который клиенты отправляют сообщения. Заявления конфигурации

$ModLoad imtcp
$InputTCPServerRun 10514
# do this in FRONT of the local/regular rules
if $fromhost-ip startswith '192.0.1.' then /var/log/network1.log
& ~
if $fromhost-ip startswith '192.0.2.' then /var/log/network2.log
& ~
# local/regular rules, like
*.* /var/log/syslog.log

Это то, что у меня работает.

Для приема информации системного журнала от удаленных хостов

$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
$template TempMsg,  "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"

if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth
& ~
if ($fromhost-ip != "127.0.0.1" ) then  ?TempMsg
& ~

Как насчет следующего?

if ($hostname != $fromhost) then {
    ## No further processing.
    stop
}