📜 Настройка централизованного сервера логов с помощью Rsyslog в CentOS / RHEL 8 – Information Security Squad
📜 Настройка централизованного сервера логов с помощью Rsyslog в CentOS / RHEL 8

Чтобы системные администраторы могли распознать или проанализировать проблемы на сервере CentOS 8 или RHEL 8, важно знать и просматривать события, произошедшие на сервере за определенный период времени, из файлов журналов, находящихся в /var/log.

Система Syslog (System Logging Protocol) на сервере может выступать в качестве центральной точки наблюдения за журналами в сети, где все серверы, сетевые устройства, коммутаторы, маршрутизаторы и внутренние службы создают журналы, независимо от того, связаны ли они с определенной внутренней проблемой или только с информативными сообщениями.

На сервере CentOS / RHEL 8 демон Rsyslog является наиболее важным сервером журналов, который предварительно устанавливается по умолчанию, за ним следует демон Systemd Journal (journald).

Rsyslog – это утилита с открытым исходным кодом, разработанная как служба архитектуры клиент-сервер и способная независимо выполнять обе роли.

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

Чтобы настроить централизованный сервер журналов на сервере CentOS / RHEL 8, необходимо проверить то, что раздел /var имеет достаточно места (минимум несколько ГБ) для хранения всех логов в системе, которые отправляются другими устройствами в сети.

Я рекомендую вам иметь отдельный диск (LVM или RAID) для монтирования каталога /var/log/.

Как настроить сервер Rsyslog в CentOS / RHEL 8

1. Как я уже сказал, служба Rsyslog устанавливается и автоматически запускается на сервере CentOS / RHEL 8.

Чтобы убедиться, что демон работает, выполните следующую команду.

# systemctl status rsyslog.service

Если служба не работает по умолчанию, выполните следующую команду, чтобы запустить демон rsyslog.
# systemctl start rsyslog.service
2. Если утилита Rsyslog по умолчанию не установлена в системе, которую вы планируете использовать в качестве централизованного сервера ведения логов, выполните следующую команду yum, чтобы установить пакет rsyslog и запустить демон.
# yum install rsyslog
# systemctl start rsyslog.service
3. После установки утилиты Rsyslog вы можете настроить rsyslog в качестве централизованного сервера ведения журнала, открыв основной файл конфигурации /etc/rsyslog.conf, чтобы получать сообщения журнала для внешних клиентов и запускать демон.
# vi /etc/rsyslog.conf
В файле конфигурации /etc/rsyslog.conf найдите и раскомментируйте следующие строки, чтобы предоставить прием по UDP серверу Rsyslog через порт 514.
Rsyslog использует стандартный протокол UDP для передачи журнала.
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
4. Протокол UDP не имеет издержек TCP и делает передачу данных быстрее, чем протокол TCP.

С другой стороны, протокол UDP не гарантирует надежность передачи данных.

Однако, если вы хотите использовать протокол TCP для приема журнала, вы должны найти и раскомментировать следующие строки в /etc/rsyslog.conf в файле конфигурации, чтобы настроить демон Rsyslog для привязки и прослушивания сокета TCP на порту 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
5. Теперь создайте новый шаблон для получения удаленных сообщений, так как этот шаблон будет указывать на локальный сервер Rsyslog, куда сохранять полученные сообщения, отправленные сетевыми клиентами Syslog.
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

Директива $template RemoteLogs направляет демон Rsyslog собирать и записывать все передаваемые сообщения журнала в отдельные файлы на основе имени клиента и приложения удаленного клиента, которое создавало сообщения на основе описанных свойств, добавленных в конфигурацию шаблона: %HOSTNAME% и %ProgramName%.

Все полученные файлы журнала будут записаны в локальную файловую систему в выделенный файл, названный в честь имени хоста клиентского компьютера и сохраненный в каталоге /var/log/.

Правило &~redirect предписывает локальному серверу Rsyslog прекратить дальнейшую обработку полученного сообщения журнала и удалить сообщения (не записывать их во внутренние файлы журнала).

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

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

# man rsyslog.conf
6. После внесения вышеуказанных изменений конфигурации вы можете перезапустить демон Rsyslog, чтобы применить последние изменения, выполнив следующую команду.
# service rsyslog restart
7. После перезапуска сервера Rsyslog он должен действовать как централизованный сервер журналов и записывать сообщения от клиентов Syslog.
Чтобы подтвердить сетевые сокеты Rsyslog, выполните команду netstat и используйте утилиту grep для фильтрации строки rsyslog.
# netstat -tulpn | grep rsyslog
Если команда netstat не установлена в CentOS 8, ее можно установить с помощью следующей команды.
# yum whatproviders netstat
# yum install net-tools
8. Если у вас активен SELinux в CentOS / RHEL 8, выполните следующую команду, чтобы разрешить трафик rsyslog в зависимости от типа сетевого сокета.
# semanage port -a -t syslogd_port_t -p udp 514
# semanage port -a -t syslogd_port_t -p tcp 514
Если команда semanage не установлена в CentOS 8, вы можете установить ее с помощью следующей команды.
# yum whatproviders semanage
# yum install policycoreutils-python-utils
9. Если в системе активен брандмауэр, выполните следующую команду, чтобы добавить необходимые правила для разрешения трафика rsyslog на портах в Firewalld.
# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd --reload
Rsyslog теперь настроен как централизованный сервер журналов и может собирать журналы с удаленных клиентов.
В следующей статье мы поглядим, как настроить клиент Rsyslog на сервере CentOS / RHEL 8.

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

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