На устройстве МКСЗ Diamond VPN/FW поддерживается возможность выгрузки отдельных журналов событий (файлов) на удаленный сервер по протоколу rsyslog.
Для активации этой функции необходимо произвести предварительную настройку. Необходимо подключиться к устройству по протоколу ssh и перейти в папку назначения с помощью команды «/etc/rsyslog.d». Далее с помощью команды «nano file_name.conf» необходимо создать конфигурационный файл. В конфигурационной файле необходимо задать параметры журналирования, сетевой адрес сервера, сетевой протокол, файл с логами и другие параметры. Механизм журналирования позволяет осуществлять фильтрацию нужных событий по ключевым слом перед отправкой на центральны сервер. Ниже мы рассмотрим различные примеры конфигураций с описание задачи, которую необходимо решить.
Конфигурацию для протокола Rsyslog можно задать как в одном файле, так и в нескольких. При старте основного процесса все конфигурации из файлов будут считаны и применены.
Для задания нужной конфигурации необходимо открыть на редактирование файл с настройками с помощью команды «nano /etc/rsyslogd.d/<file_name>.conf». В конфигурационном файле задать следующие настройки.
module(load="imfile") global ( workDirectory="/media/storage/logs/" ) input(type="imfile" File="/var/log/messages" Tag="messages" ruleset="promtail") ruleset(name="promtail"){ if $msg contains 'eigrpd' then action (type="omfile" file="/media/storage/logs/frr_eigrp.log" Template="RSYSLOG_SyslogProtocol23Format") if $msg contains 'bgpd' then action (type="omfile" file="/media/storage/logs/frr_bgp.log" Template="RSYSLOG_SyslogProtocol23Format") }
В данном примере, мы анализируем поступающую информацию из файла «/var/log/messages» и применяем к сообщениям фильтры по ключевым словам «eigrpd», «bgpd». События для ключа «eigrpd» записываются в файл «/media/storage/logs/frr_eigrp.log», для ключа «bgpd» записываются в файл «/media/storage/logs/frr_bgp.log»
Для задания нужной конфигурации необходимо открыть на редактирование файл с настройками с помощью команды «nano /etc/rsyslogd.d/<file_name>.conf». В конфигурационном файле задать следующие настройки.
module(load="imfile") global ( workDirectory="/media/storage/logs/" ) input(type="imfile" File="/var/log/messages" Tag="messages" ruleset="promtail") ruleset(name="promtail"){ if $msg contains 'eigrpd' then action (type="omfwd" protocol="udp" target="10.34.17.88" port="514" Template="RSYSLOG_SyslogProtocol23Format") if $msg contains 'bgpd' then action (type="omfwd" protocol="udp" target="10.34.17.88" port="514" Template="RSYSLOG_SyslogProtocol23Format") }
В данном примере, мы анализируем поступающую информацию из файла «/var/log/messages» и применяем к сообщениям фильтры по ключевым словам «eigrpd», «bgpd». События для ключа «eigrpd» и «bgpd» отправляем по протоколу «udp» на удаленный сервер с сетевым адресом «10.34.17.88» на порт «514».
Для задания нужной конфигурации необходимо открыть на редактирование файл с настройками с помощью команды «nano /etc/rsyslogd.d/<file_name>.conf». В конфигурационном файле задать следующие настройки.
module(load="imfile") global ( workDirectory="/media/storage/logs/" ) input(type="imfile" File="/var/log/messages" Tag="messages" ruleset="promtail") ruleset(name="promtail"){ if $msg contains 'eigrpd' then action (type="omfwd" protocol="udp" target="10.34.17.88" port="514" Template="RSYSLOG_SyslogProtocol23Format") if $msg contains 'eigrpd' then action (type="omfwd" protocol="udp" target="10.34.17.90" port="514" Template="RSYSLOG_SyslogProtocol23Format") }
В данном примере, мы анализируем поступающую информацию из файла «/var/log/messages» и применяем к сообщениям фильтры по ключевым словам «eigrpd». События для ключа «eigrpd» отправляем по протоколу «udp» на два удаленных сервера с сетевым адресом «10.34.17.88» на порт «514» и «10.34.17.90» на порт «514».
Протокол rsyslog поддерживает возможность фильтровать информацию по заданным критериям для последующей отправки на удаленный сервер. Общий форма сообщения:
if [$свойство] [условие] then [action]
Перечень свойств, которые можно задать:
Перечень условий, которые можно использовать:
Условия для поиска можно комбинировать с помощью логических операций or/and/not, например:
* if $syslogfacility-text == 'local0' and $msg startswith 'DEVNAME' and ($msg contains 'error1' or $msg contains 'error0') then /media/storage/logs/<file_log_name>.log * if $syslogfacility-text == 'local0' and $msg startswith 'DEVNAME' and not ($msg contains 'error1' or $msg contains 'error0') then /var/log/somelog
Возможные категории для логов перечислены в табл. 9.f.1 и 9.f.2.
Табл. 9.f.1. Возможные категории для логов (facility)
№ | Категория | Описание |
---|---|---|
0 | kern | Сообщения, отправляемые ядром |
1 | user | Пользовательские программы |
2 | Почта | |
3 | daemon | Сервисы (демоны) |
4 | auth | Безопасность/вход в систему/аутентификация |
5 | syslog | Сообщения от syslog |
6 | lpr | Логи печати |
7 | news | Новостные группы (usenet) |
8 | uucp | Unix-to-Unix CoPy (копирование файлов между компьютерами) |
9 | cron | Планировщик заданий |
10 | authpriv | Безопасность/вход в систему/аутентификация - защищенный режим |
11 | ftp | Логи при передачи данных по FTP |
12 | ntp | Лог службы синхронизации времени (существует не везде) |
13 | security, log audit | Журнал аудита (существует не везде) |
14 | console, log alert | Сообщения, отправляемые в консоль (существует не везде) |
15-22 | local0 - local7 | Зарезервированы для локального использования. |
Табл. 9.f.2. Возможные категории для логов (severity)
№ | Уровень | Расшифровка |
---|---|---|
0 | emerg | Система не работает (PANIC) |
1 | alert | Серьезная проблема, требующая внимания |
2 | crit | Критическая ошибка |
3 | err | Ошибка (ERROR) |
4 | warning | Предупреждение (WARN) |
5 | notice | Важное информационное сообщение |
6 | info | Информационное сообщение |
7 | debug | Отладочная информация |