Управление журналами · 11 min read · Dec 12, 2025
Как настроить rsyslog для централизованного управления журналами
Этот учебник объяснит, как настроить rsyslog в качестве сервера централизованного управления журналами. Централизованное управление журналами означает сбор всех видов журналов с нескольких физических или виртуализированных серверов на одном сервере журналов для мониторинга состояния и безопасности служб сервера. Мы используем rsyslog в этом учебнике, потому что он предлагает высокую производительность, отличную безопасность и модульный дизайн. Он также способен хранить журналы в различных базах данных, таких как MySQL, Oracle, Hadoop и других для лучшей консолидации.
1. Предварительная заметка
Для этого учебника я использую Oracle Linux 6.4 в 32-битной версии. Обратите внимание, что хотя конфигурация выполняется на Oracle Linux, те же шаги будут работать на CentOS и Red Hat OS Linux. В этом учебнике мы будем использовать 2 сервера. Первый будет действовать как сервер rsyslog, а другой будет работать как рабочая станция / клиентский сервер для клиента rsyslog. К концу этого учебника мы увидим, что как только пользователь войдет в клиентский сервер, сервер rsyslog автоматически зафиксирует его действия.
2. Установка Rsyslog
Для этапа установки нам нужно только установить пакеты rsyslog и его зависимости. Сначала давайте подтвердим нашу версию операционной системы.
[root@RSYS01 ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m[root@RSYS01 ~]# arch
i686[root@RSYS01 ~]# uname -a
Linux RSYS01 2.6.32-358.el6.i686 #1 SMP Fri Feb 22 13:37:29 PST 2013 i686 i686 i386 GNU/LinuxДалее я настрою новый репозиторий для установки пакетов rsyslog через утилиту yum.
[root@RSYS01 ~]# cd /etc/yum.repos.d/
[root@RSYS01 yum.repos.d]# vi rsyslog.repo
[rsyslog-v7-devel]
name=Adiscon Rsyslog v7-devel для CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-devel/epel-$releasever/$basearch
enabled=0
gpgcheck=0
protect=1[rsyslog-v7-stable]
name=Adiscon Rsyslog v7-stable для CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1[root@RSYS01 yum.repos.d]# yum list rsyslog
Загруженные плагины: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Доступные пакеты
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stableГотово, теперь давайте начнем установку новой версии rsyslog. Шаги показаны ниже:
[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Загруженные плагины: refresh-packagekit, security
Настройка процесса установки
Разрешение зависимостей
--> Выполнение проверки транзакции
---> Пакет rsyslog.i686 0:7.6.7-1.el6 будет установлен
--> Обработка зависимости: liblogging-stdlog.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libjson-c.so.2 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgthttp.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgtbase.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgt для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libestr.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Выполнение проверки транзакции
---> Пакет json-c.i686 0:0.11-3.el6 будет установлен
---> Пакет libestr.i686 0:0.1.9-1.el6 будет установлен
---> Пакет libgt.i686 0:0.3.11-1.el6 будет установлен
---> Пакет liblogging.i686 0:1.0.4-1.el6 будет установлен
--> Завершено разрешение зависимостей
Зависимости разрешены
===============================================================================================================
Пакет Архитектура Версия Репозиторий Размер
===============================================================================================================
Установка:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Установка для зависимостей:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Резюме транзакции
===============================================================================================================
Установить 5 пакетов
Общий размер загрузки: 1.0 M
Установленный размер: 3.2 M
Загрузка пакетов:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Всего 114 kB/s | 1.0 MB 00:09
Выполнение rpm_check_debug
Выполнение теста транзакции
Тест транзакции прошел успешно
Выполнение транзакции
Установка : libgt-0.3.11-1.el6.i686 1/5
Установка : liblogging-1.0.4-1.el6.i686 2/5
Установка : libestr-0.1.9-1.el6.i686 3/5
Установка : json-c-0.11-3.el6.i686 4/5
Установка : rsyslog-7.6.7-1.el6.i686 5/5
Проверка : json-c-0.11-3.el6.i686 1/5
Проверка : libestr-0.1.9-1.el6.i686 2/5
Проверка : liblogging-1.0.4-1.el6.i686 3/5
Проверка : libgt-0.3.11-1.el6.i686 4/5
Проверка : rsyslog-7.6.7-1.el6.i686 5/5
Установлено:
rsyslog.i686 0:7.6.7-1.el6
Установлена зависимость:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6
Готово![root@RSYS01 yum.repos.d]# rsyslogd -v
rsyslogd 7.6.7, скомпилирован с:
FEATURE_REGEXP: Да
Поддержка GSSAPI Kerberos 5: Да
FEATURE_DEBUG (отладочная сборка, медленный код): Нет
Поддерживаются 32-битные атомарные операции: Да
Поддерживаются 64-битные атомарные операции: Да
Временная инструментализация (медленный код): Нет
Поддержка uuid: Да
Количество бит в целых числах RainerScript: 64
Смотрите http://www.rsyslog.com для получения дополнительной информации.[root@RSYS01 ~]# rpm -qa|grep rsyslog
rsyslog-7.6.7-1.el6.i686Далее давайте перейдем к этапу установки. Для этого учебника мы пропустим уровень безопасности, чтобы упростить задачу. Мы отключим SELINUX, чтобы убедиться, что во время работы не возникнет проблем, связанных с безопасностью. Имейте в виду, что вы не должны отключать SELinux и брандмауэр на рабочем сервере. Ниже приведены шаги:
Сначала проверьте, каков текущий статус нашей политики SELINUX.
[root@RSYS01 ~]# getenforce
Принудительное выполнениеЧтобы отключить его навсегда, выполните следующий шаг:
[root@RSYS01 ~]# cd /etc/sysconfig/
[root@RSYS01 ~]# vi selinux
# Этот файл управляет состоянием SELinux в системе.
# SELINUX= может принимать одно из этих трех значений:
# enforcing - Политика безопасности SELinux применяется.
# permissive - SELinux выводит предупреждения вместо применения.
# disabled - Политика SELinux не загружается.
SELINUX=disabled
# SELINUXTYPE= может принимать одно из этих двух значений:
# targeted - Защищены целевые процессы,
# mls - Защита многоуровневой безопасности.
SELINUXTYPE=targetedПосле этого давайте убедимся, что мы отключили брандмауэр, чтобы избежать блокировки между соединением сервера и клиента.
[root@RSYS01 ~]# iptables -nL
Цепочка INPUT (политика ACCEPT)
target prot opt source destination
Цепочка FORWARD (политика ACCEPT)
target prot opt source destination
Цепочка OUTPUT (политика ACCEPT)
target prot opt source destination[root@RSYS01 ~]# /etc/init.d/iptables stop
iptables: Очистка правил брандмауэра: [ OK ]
iptables: Установка цепочек в политику ACCEPT: filter [ OK ]
iptables: Выгрузка модулей: [ OK ][root@RSYS01 ~]# /etc/init.d/iptables status
Таблица: filter
Цепочка INPUT (политика ACCEPT)
num target prot opt source destination
Цепочка FORWARD (политика ACCEPT)
num target prot opt source destination
Цепочка OUTPUT (политика ACCEPT)
num target prot opt source destinationГотово, теперь, когда этап установки завершен. Давайте перейдем к этапу конфигурации.
3. Конфигурация Rsyslog
Все зависимости пакетов уже установлены, давайте сосредоточимся на конфигурации rsyslog. Давайте откроем файл конфигурации и внесем изменения, как показано ниже:
[root@RSYS01 ~]# vi /etc/rsyslog.conf
module(load="imudp") # нужно сделать только один раз
input(type="imudp" port="514")
$template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?AuditlogНиже приведено объяснение изменений конфигурации, которые мы внесли:
- module(load=”imudp”) # нужно сделать только один раз ==> Мы предоставим возможность получать сообщения rsyslog между сервером и клиентом через протокол UDP
- input(type=”imudp” port=”514”) ==> Мы будем использовать порт 514 для служб rsyslog
- $template Auditlog, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Для каждого клиента, подключенного к серверу rsyslog, система автоматически создаст папку с именем хоста клиента и соответствующее имя файла служб
- $template TmplMsg, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Для каждого клиента, подключенного к серверу rsyslog, система автоматически создаст папку с именем хоста клиента и соответствующее имя файла служб
Как только конфигурация завершена, давайте запустим службу rsyslog.
[root@RSYS01 yum.repos.d]# /etc/init.d/rsyslog restart
Остановка системного журнала: [FAILED]
Запуск системного журнала: [ OK ]Используйте netstat, чтобы убедиться, что службы rsyslog работают:
[root@RSYS01 yum.repos.d]# netstat -uanp|grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2430/rsyslogd
udp 0 0 :::514 :::* 2430/rsyslogdВыше вы можете увидеть, что наша служба rsyslog работает с назначенными портами, которые мы сделали. По умолчанию rsyslog также проверяет доступ к своему собственному серверу, так как он рассматривает сервер rsyslog как клиента. Чтобы убедиться, что это работает, мы можем заглянуть в папку /var/log. Давайте проверим, существует ли папка с именем RSYS01 (это имя сервера).
[root@RSYS01 log]# cd /var/log/
[root@RSYS01 log]# ls -l|grep rsyslog
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client[root@RSYS01 log]# cd rsyslog_client
[root@RSYS01 rsyslog_client]# ls
RSYS01
[root@RSYS01 rsyslog_client]# cd RSYS01/
[root@RSYS01 RSYS01]# ls
rsyslogd.logОтлично, кажется, все работает как часы! Теперь давайте перейдем к этапу тестирования, чтобы подтвердить, что все конфигурации выполнены как ожидалось.
4. Этап тестирования
Поскольку сервер, на котором работает служба rsyslog, также работает как клиент, мы можем увидеть на самом сервере, если мониторинг локальных входов отслеживается. Чтобы убедиться, что это так, давайте войдем в сервер rsyslog с другой сессией, используя службу SSH. Для этого шага мы предположим, что сервер уже настроен для работы без пароля. Ниже приведены шаги:
[root@RSYS01 RSYS01]# ssh root@RSYS01
Последний вход: Сб Окт 22 15:45:48 2016 с 172.20.181.70[root@RSYS01 ~]# who
root pts/0 2016-10-22 00:21 (172.20.181.11)
root pts/1 2016-10-24 18:22 (127.0.0.1)[root@RSYS01 ~]# exit
выход
Соединение с RSYS01 закрыто.Готово, так просто. Мы только что вошли в сервер rsyslog, а затем, как только новая сессия была создана, мы просто снова вошли, чтобы убедиться, что служба rsyslog действительно зафиксировала сессию. Теперь давайте проверим, была ли сессия зафиксирована или нет. Ниже приведены шаги:
[root@RSYS01 ~]# cd var/log/rsyslog_client/RSYS01
[root@RSYS01 RSYS01]# ls
rsyslogd.log sshd.log
[root@RSYS01 RSYS01]# tail -f sshd.log
Oct 24 18:22:46 RSYS01 sshd[2536]: Принят пароль для root с 192.168.43.101 порт 52862 ssh2
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): сессия открыта для пользователя root (uid=0)
Oct 24 18:22:50 RSYS01 sshd[2536]: Получено отключение от 192.168.43.101: 11: отключено пользователем
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): сессия закрыта для пользователя root
^CОтлично, служба rsyslog автоматически создала файл sshd.log, когда сессия началась на сервере. Внутри файла журнала мы можем увидеть, что есть список деталей, указывающих время, порт и пользователя, созданного в рамках сессии.
Теперь, когда все работает как ожидалось. Давайте настроим рабочую станцию для клиента rsyslog, чтобы она была зафиксирована нашим сервером rsyslog. Для клиента rsyslog вам просто нужно установить пакеты rsyslog и внести простое изменение в файл конфигурации, чтобы связать его с сервером rsyslog. Ниже приведены шаги:
[root@CLIENT01 ~]# cd /etc/yum.repos.d/
[root@CLIENT01 yum.repos.d]# yum list rsyslog
Загруженные плагины: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Доступные пакеты
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable
[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Загруженные плагины: refresh-packagekit, security
Настройка процесса установки
Разрешение зависимостей
--> Выполнение проверки транзакции
---> Пакет rsyslog.i686 0:7.6.7-1.el6 будет установлен
--> Обработка зависимости: liblogging-stdlog.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libjson-c.so.2 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgthttp.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgtbase.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libgt для пакета: rsyslog-7.6.7-1.el6.i686
--> Обработка зависимости: libestr.so.0 для пакета: rsyslog-7.6.7-1.el6.i686
--> Выполнение проверки транзакции
---> Пакет json-c.i686 0:0.11-3.el6 будет установлен
---> Пакет libestr.i686 0:0.1.9-1.el6 будет установлен
---> Пакет libgt.i686 0:0.3.11-1.el6 будет установлен
---> Пакет liblogging.i686 0:1.0.4-1.el6 будет установлен
--> Завершено разрешение зависимостей
Зависимости разрешены
===============================================================================================================
Пакет Архитектура Версия Репозиторий Размер
===============================================================================================================
Установка:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Установка для зависимостей:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Резюме транзакции
===============================================================================================================
Установить 5 пакетов
Общий размер загрузки: 1.0 M
Установленный размер: 3.2 M
Загрузка пакетов:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Всего 114 kB/s | 1.0 MB 00:09
Выполнение rpm_check_debug
Выполнение теста транзакции
Тест транзакции прошел успешно
Выполнение транзакции
Установка : libgt-0.3.11-1.el6.i686 1/5
Установка : liblogging-1.0.4-1.el6.i686 2/5
Установка : libestr-0.1.9-1.el6.i686 3/5
Установка : json-c-0.11-3.el6.i686 4/5
Установка : rsyslog-7.6.7-1.el6.i686 5/5
Проверка : json-c-0.11-3.el6.i686 1/5
Проверка : libestr-0.1.9-1.el6.i686 2/5
Проверка : liblogging-1.0.4-1.el6.i686 3/5
Проверка : libgt-0.3.11-1.el6.i686 4/5
Проверка : rsyslog-7.6.7-1.el6.i686 5/5
Установлено:
rsyslog.i686 0:7.6.7-1.el6
Установлена зависимость:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6
Готово!Готово, теперь мы установили пакет rsyslog на нашей клиентской рабочей станции. Теперь давайте внесем изменения в файл конфигурации rsyslog. Для конфигурации клиента вам просто нужно изменить конфигурацию, как показано ниже:
[root@CLIENT01 ~]# vi /etc/rsyslog.conf
*.* @192.168.43.101:514Это все, обратите внимание, что мы включили IP 192.168.43.101 с портом 514 в файл конфигурации. Этот IP - это IP для сервера rsyslog. Теперь, когда все сделано, давайте перезапустим службу rsyslog на клиентской рабочей станции, чтобы загрузить изменения. Ниже приведены шаги:
[root@CLIENT01 ~]# /etc/init.d/rsyslog restart
Остановка системного журнала: [FAILED]
Запуск системного журнала: [ OK ]Теперь давайте вернемся к нашему серверу rsyslog и посмотрим, была ли создана папка для имени хоста клиента rsyslog в каталоге журналов rsyslog. Ниже приведены шаги:
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# ls
RSYS01 CLIENT01Отлично, обратите внимание, что папка с именем хоста клиента rsyslog была создана автоматически. Это подтверждает, что наша конфигурация правильная, и клиент rsyslog может установить UDP-соединение с сервером rsyslog.
Для следующей тестовой процедуры давайте войдем в клиент rsyslog как другой пользователь и посмотрим, сможет ли сервер rsyslog зафиксировать активность или нет. Ниже приведены шаги:
::CLIENT01::
вход как: shahril
Пароль [email protected]':
Последний вход: Вс Окт 23 00:21:40 2016 с 172.20.181.11[shahril@CLIENT01 ~]$ who
shahril pts/0 2016-10-24 17:01 (192.168.43.80)[shahril@CLIENT01 ~]$ exitТеперь давайте проверим каталог журналов на сервере rsyslog, чтобы увидеть, удалось ли нам зафиксировать активность, созданную с клиента rsyslog или нет.
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# cd CLIENT01/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log
[root@RSYS01 CLIENT01]# tail -10 sshd.log
Oct 24 17:01:47 CLIENT01 sshd[2102]: Принят пароль для shahril с 192.168.43.80 порт 17002 ssh2
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): сессия открыта для пользователя shahril (uid=0)Отлично, результат показывает, что процесс работает как ожидалось. Теперь для финального тестирования давайте снова войдем в клиент rsyslog и установим пакет, чтобы проверить, сможет ли служба rsyslog зафиксировать другую активность, кроме создания сессии. Ниже приведены шаги:
::CLIENT01::
вход как: root
Пароль [email protected]':
Последний вход: Сб Окт 22 10:21:40 2016 с 172.20.181.11[root@CLIENT01 ~]# yum install firefox -y
Загруженные плагины: refresh-packagekit, security
Репозиторий 'OEL64' отсутствует имя в конфигурации, используется id
Настройка процесса установки
Разрешение зависимостей
--> Выполнение проверки транзакции
---> Пакет firefox.i686 0:10.0.12-1.0.1.el6_3 будет установлен
--> Завершено разрешение зависимостей
Зависимости разрешены
================================================================================
Пакет Архитектура Версия Репозиторий Размер
================================================================================
Установка:
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M
Резюме транзакции
================================================================================
Установить 1 пакет
Общий размер загрузки: 20 M
Установленный размер: 23 M
Загрузка пакетов:
Выполнение rpm_check_debug
Выполнение теста транзакции
Тест транзакции прошел успешно
Выполнение транзакции
Установка : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Проверка : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Установлено:
firefox.i686 0:10.0.12-1.el6_3
Готово!Выше показано, что мы успешно установили установщик браузера firefox на нашем рабочем месте клиента rsyslog. Теперь давайте вернемся к серверу rsyslog и проверим, смогла ли служба rsyslog зафиксировать процесс установки стороннего пакета на рабочей станции. Ниже приведены шаги:
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log yum.log
[root@RSYS01 CLIENT01]# tail -20 yum.log
Oct 25 17:13:17 CLIENT01 yum[2319]: Установлено: firefox-10.0.12-1.0.1.el6_3.i686Отлично, служба rsyslog смогла зафиксировать информацию о процессе установки на клиентской рабочей станции.
Get new posts in your inbox
No spam. Unsubscribe anytime.