Поиск по сайту:

Как настроить rsyslog для централизованного управления журналами


На этой странице

  1. 1. Предварительное примечание
  2. 2. Установка Rsyslog
  3. 3. Конфигурация Rsyslog
  4. 4. Этап тестирования

В этом руководстве объясняется, как настроить 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 и их зависимости. Во-первых, давайте подтвердим нашу версию операционной системы.

[ ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m
[ ~]# arch
i686
[ ~]# 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.


[ yum.repos.d]# vi rsyslog.repo
[rsyslog-v7-devel]
name=Adiscon Rsyslog v7-devel for 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 for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1

[ yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable


Готово, теперь приступим к установке новой версии rsyslog. Шаги показаны ниже:


[ yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
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
Transaction Summary
===============================================================================================================
Install 5 Package(s)
Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(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
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
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

Complete!
[ yum.repos.d]# rsyslogd -v
rsyslogd 7.6.7, compiled with:
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64

See http://www.rsyslog.com for more information.
[ ~]# rpm -qa|grep rsyslog
rsyslog-7.6.7-1.el6.i686


Далее приступим к этапу установки. В этом руководстве мы пропустим уровень безопасности, чтобы упростить задачу. Мы отключим SELINUX, чтобы гарантировать отсутствие проблем, связанных с повышением безопасности во время работы. Имейте в виду, что вы не должны отключать SELinux и брандмауэр при установке в реальном времени. Ниже приведены шаги:

Во-первых, проверьте текущий статус нашей политики SELINUX.

[ ~]# getenforce
Enforcing

Чтобы отключить его навсегда, выполните следующие действия:

[ ~]# vi selinux 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted


После этого давайте удостоверимся, что мы отключили брандмауэр, чтобы избежать блокировки между сервером и клиентским соединением.

[ ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[ ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[ ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination

Chain FORWARD (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination


Готово, теперь этап установки прошел успешно. Переходим к этапу настройки.

3. Конфигурация Rsyslog

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

[ ~]# vi /etc/rsyslog.conf 

module(load="imudp") # needs to be done just once
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.

[ yum.repos.d]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]

Используйте netstat, чтобы убедиться, что службы rsyslog запущены и работают:

[ 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 (имя хоста сервера) или нет.

[ log]# ls -l|grep rsyslog
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client
[ RSYS01]# ls
rsyslogd.log

Хорошо, кажется, все работает как шарм! Теперь давайте приступим к этапу тестирования, чтобы сделать вывод, что все конфигурации сделаны, как ожидалось.

4. Этап тестирования

Поскольку сервер, на котором запущена служба rsyslog, также работает как клиент, мы можем видеть на самом сервере, отслеживается ли отслеживание локальных входов в систему. Чтобы убедиться, что это правда, давайте войдем на сервер rsyslog с другим сеансом, используя службу SSH. Для этого шага мы будем считать, что на самом сервере уже настроена беспарольная конфигурация. Ниже приведены шаги:

[
Last login: Sat Oct 22 15:45:48 2016 from 172.20.181.70
[ ~]# 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)
[ ~]# exit
logout
Connection to RSYS01 closed.

Сделано, так просто. Мы просто заходим на сам сервер rsyslog, а после создания нового сеанса просто регистрируемся снова, чтобы убедиться, что служба rsyslog провела аудит сеанса. Теперь давайте проверим, был ли сеанс проверен или нет. Ниже приведены шаги:

[ RSYS01]# tail -f sshd.log
Oct 24 18:22:46 RSYS01 sshd[2536]: Accepted password for root from 192.168.43.101 port 52862 ssh2
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): session opened for user root by (uid=0)
Oct 24 18:22:50 RSYS01 sshd[2536]: Received disconnect from 192.168.43.101: 11: disconnected by user
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): session closed for user root
^C


Отлично, служба rsyslog автоматически создает файл sshd.log при запуске сеанса на сервере. Внутри файла журнала мы видим, что в списке подробностей указано время, порт и пользователь, созданный в рамках сеанса.

Сейчас пока все работает как положено. Давайте настроим рабочую станцию для клиента rsyslog, который будет проверяться нашим сервером rsyslog. Для клиента rsyslog вам просто нужно установить пакеты rsyslog и внести простое изменение в файл конфигурации, чтобы установить связь с сервером rsyslog. Ниже приведены шаги:

[ yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Available Packages
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable

[ yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Installing for dependencies:
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

Transaction Summary
===============================================================================================================
Install 5 Package(s)

Total download size: 1.0 M
Installed size: 3.2 M
Downloading Packages:
(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
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5

Installed:
rsyslog.i686 0:7.6.7-1.el6

Dependency Installed:
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

Complete!


Готово, теперь мы установили пакет rsyslog на нашу клиентскую рабочую станцию. Теперь давайте внесем поправку в файл конфигурации rsyslog. Для конфигурации клиента вам просто нужно изменить конфигурацию, как показано ниже:

[ ~]# vi /etc/rsyslog.conf

*.* @192.168.43.101:514

Вот и все, заметил, что мы включили IP 192.168.43.101 с портом 514 в файл конфигурации. Этот IP-адрес является IP-адресом сервера rsyslog. Теперь, когда все сделано, давайте перезапустим службу rsyslog на клиентской рабочей станции, чтобы загрузить изменения. Ниже приведены шаги:

[ ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]


Теперь давайте вернемся к нашему серверу rsyslog и посмотрим, создана ли папка для имени хоста клиента rsyslog в каталоге журнала rsyslog. Ниже приведены шаги:

[ rsyslog_client]# ls
RSYS01 CLIENT01


Отлично, обратите внимание, что папка с именем хоста клиента rsyslog была создана автоматически. Это подтверждает, что наша конфигурация верна и клиент rsyslog может установить UDP-подключение к серверу rsyslog.

Для следующей тестовой процедуры давайте войдем в клиент rsyslog как другой пользователь и посмотрим, сможет ли сервер rsyslog зафиксировать активность или нет. Ниже приведены шаги:

::CLIENT01::
login as: shahril
's password:
Last login: Sun Oct 23 00:21:40 2016 from 172.20.181.11
[ ~]$ who
shahril pts/0 2016-10-24 17:01 (192.168.43.80)
[ ~]$ exit


Теперь давайте проверим каталог журнала внутри сервера rsyslog, чтобы увидеть, удалось ли нам зарегистрировать активность, созданную клиентом rsyslog, или нет.

[ CLIENT01]# tail -10 sshd.log
Oct 24 17:01:47 CLIENT01 sshd[2102]: Accepted password for shahril from 192.168.43.80 port 17002 ssh2
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): session opened for user shahril by (uid=0)


Отлично, результат показывает, что процесс работает так, как ожидалось. Теперь для окончательного тестирования давайте снова войдем в клиент rsyslog и установим пакет, чтобы проверить, удается ли службе rsyslog регистрировать другие действия, кроме создания сеанса. Ниже приведены шаги:

::CLIENT01::
login as: root
's password:
Last login: Sat Oct 22 10:21:40 2016 from 172.20.181.11
[ ~]# yum install firefox -y
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.12-1.0.1.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M

Transaction Summary
================================================================================
Install 1 Package(s)

Total download size: 20 M
Installed size: 23 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Verifying : firefox-10.0.12-1.0.1.el6_3.i686 1/1

Installed:
firefox.i686 0:10.0.12-1.0.1.el6_3

Complete!

Вышеприведенное показывает, что мы успешно установили установщик браузера Firefox на нашей клиентской рабочей станции rsyslog. Теперь давайте вернемся к нашему серверу rsyslog и проверим, смог ли rsyslog зарегистрировать процесс установки стороннего пакета на рабочую станцию. Ниже приведены шаги:

[ CLIENT01]# tail -20 yum.log
Oct 25 17:13:17 CLIENT01 yum[2319]: Installed: firefox-10.0.12-1.0.1.el6_3.i686

Отлично, службе rsyslog удалось проверить информацию об установке на клиентской рабочей станции.