Отправка остаточного сетевого трафика с помощью RSYSLOG в определенный файл

Я пытаюсь сконцентрировать журналы с нескольких устройств с нескольких клиентов на моем сервере RSYSLOG.

Мой сервер работает на Debian 11 с RSYSLOG v8.2102.

Конфигурация на данный момент довольно проста: я просто разрешил соединения UDP и TCP в /etc/rsyslog.conf и открыл порт 514 в UFW.

В /etc/rsyslog.d/ я добавляю для каждого оборудования правило. Например, чтобы соответствовать Fortinet, я добавляю это правило в /etc/rsyslog.d/10-Fortinet-SiteName-ClientName.conf:

if $msg contains 'devid="FGT_SerialNumber"' then /ClientsLogs/ClientName/SiteName/Fortinet.log
& stop

Он работает так, как ожидалось.

Я хотел бы отправить все оставшийся сетевой трафик в другом файле, который /var/log/syslog, чтобы помочь мне определить такие проблемы, как отсутствующая конфигурация оборудования и предотвратить рост /var/log/syslog (журналы брандмауэра довольно подробные!)

Я безуспешно пытался фильтровать с помощью $fromhost-ip:

if not $fromhost-ip == '127.0.0.1' then /ClientsLogs/Undefined.log
& stop

Я уверен, что это должно быть довольно просто, но я не могу заставить его работать!

Debian порт rsyslog ufw var

Круто34

2 ответа
2

Следуя вашему собственному ответу, вы не можете использовать '`hostname`' как строку и ожидать, что она станет, скажем, 'abc'куда abc ваше локальное имя хоста. Вы можете использовать обратные кавычки только в двух формах: `echo $VARNAME` для некоторой переменной среды или `cat filename` для некоторого имени файла.

Вот почему ваш if оператор соответствует всем входным данным.

Однако есть предопределенное системное свойство $myhostname это должно содержать имя хоста, хотя я не уверен, является ли это полным доменным именем или нет. Вы должны использовать его с дополнительным $ префикс:

... and $fromhost != $$myhostname then ...

Мяу

Я нашел это решение, но оно прерывает нормальное ведение журнала в /var/log/syslog 🙁

Круто34

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *