Меню

Установка и настройка syslog



Настройка rsyslog для хранения логов на удаленном сервере

Rsyslog позволяет настроить отправку логов для определенного приложения на централизованный сервер. Это может значительно упростить процесс контроля за событиями на компьютерах в сети. Его настройка на различных системах на базе Linux, практически, не отличается. В данной инструкции мы рассмотрим процесс установки и настройки на примере CentOS и Ubuntu.

Подготовка сервера

На сервере нужно, предварительно, выполнить следующие настройки.

Время

Для правильной фиксации времени логов, необходимо настроить его синхронизацию.

Сначала задаем правильный часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере мы использовали московское время.

Затем устанавливаем и запускаем chrony.

а) на системе CentOS / Red Hat:

yum install chrony

systemctl enable chronyd

systemctl start chronyd

б) на системе Ubuntu / Debian:

apt-get install chrony

systemctl enable chrony

systemctl start chrony

Брандмауэр

Если используется брандмауэр, необходимо открыть порты TCP/UDP 514.

а) с помощью firewalld:

firewall-cmd —permanent —add-port=514/

б) с помощью iptables:

iptables -A INPUT -p tcp —dport 514 -j ACCEPT

iptables -A INPUT -p udp —dport 514 -j ACCEPT

в) с помощью ufw:

ufw allow 514/tcp

ufw allow 514/udp

SELinux

Проверяем, работает ли в нашей системе SELinux:

Если мы получаем в ответ:

. необходимо либо настроить SELinux:

semanage port -m -t syslogd_port_t -p tcp 514

semanage port -m -t syslogd_port_t -p udp 514

. либо отключить его командами:

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Установка и запуск rsyslog

Установить rsyslog необходимо как на сервер, так и клиентские компьютеры. В зависимости от операционной системы сама установка будет выполняться одной из команд.

а) для систем на базе RPM (Red Hat / CentOS):

yum install rsyslog

б) для систем на базе deb (Debian / Ubuntu):

apt-get install rsyslog

После установки разрешаем автозапуск службы и стартуем ее:

systemctl enable rsyslog

systemctl start rsyslog

Настройка сервера

Открываем конфигурационный файл:

Снимаем комментарии со следующих строк:

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

* в данном примере мы разрешили запуск сервера для соединений TCP и UDP на портах 514. На самом деле, можно оставить только один протокол, например, более безопасный и медленный TCP.

После добавляем в конфигурационный файл строки:

$template RemoteLogs,»/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log»
*.* ?RemoteLogs
&

* в данном примере мы создаем шаблон с названием RemoteLogs, который принимает логи всех категорий, любого уровня (про категории и уровни читайте ниже); логи, полученный по данному шаблону будут сохраняться в каталоге по маске /var/log/rsyslog/ / .log; конструкция &

говорит о том, что после получения лога, необходимо остановить дальнейшую его обработку.

Перезапускаем службу логов:

systemctl restart rsyslog

Настройка клиента

Устанавливаем и запускаем rsyslog по инструкции, описанной выше. После приступаем к настройке клиента.

Все логи

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

* где 192.168.0.15 — IP-адрес сервера логов. *.* — перенаправлять любой лог.

systemctl restart rsyslog

Для определенных категорий

Если необходимо отправлять только определенные категории логов, создаем конфигурационный файл для соответствующей, например:

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные категории для логов (facility):

Категория Описание
kern Сообщения, отправляемые ядром
1 user Пользовательские программы
2 mail Почта
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 solaris-cron, clock daemon Cron в solaris (существует не везде)
16-23 local0 — local7 Зарезервированы для локального использования. Уровень серьезности определяется числом от 0 до 7.

Для определенного уровня

Если мы хотим передавать только сообщения об ошибках, добавляем строку в файл конфигурации rsyslog:

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные уровни логов:

Возможные категории для логов (severity):

Уровень Расшифровка
emerg Система не работает (PANIC)
1 alert Серьезная проблема, требующая внимания
2 crit Критическая ошибка
3 err Ошибка (ERROR)
4 warning Предупреждение (WARN)
5 notice Важное информационное сообщение
6 info Информационное сообщение
7 debug Отладочная информация

Аудит определенного лог-файла

Мы можем настроить слежение за изменением определенного лога и передавать их на сервер. Для этого нужно настроить и сервер, и клиента.

Настройка клиента

Создаем новый конфигурационный файл:

$ModLoad imfile
$InputFileName /var/log/audit/audit.log
$InputFileTag tag_audit_log:
$InputFileStateFile audit_log
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor

* в данном примере мы будем отслеживать изменения лог-файла /var/log/audit/audit.log; нас интересуют события от уровня info и выше; все события будет отмечены категорией local6 и переданы на сервер 192.168.0.15.

Перезапускаем сервис на клиенте:

systemctl restart rsyslog

Настройка сервера (фильтрация сообщений)

На сервере нам нужно фильтровать все сообщения категории local6 (такую категорию мы выбрали, когда настроили клиента) и перенаправлять их в нужных нам файл. Открываем на редактирование конфигурационный файл rsyslog:

Создаем новый шаблон для захвата логов:

$template HostAudit, «/var/log/rsyslog/%HOSTNAME%/audit.log»
local6.* ?HostAudit

* в данном примере мы создаем шаблон HostAudit; rsyslog будет принимать логи категории local6 и сохранять в файле /var/log/rsyslog/ /audit.log.

systemctl restart rsyslog

Лог определенного приложения

Некоторые приложения умеют отправлять лог напрямую на syslog. Например, nginx (начиная с версии 1.7.1). Для этого открываем конфигурационной файл (основной или конфиг виртуального домена):

Добавляем или редактируем соответствующие настройки для логов:

.
access_log syslog:server=192.168.0.15:514 info;
error_log syslog:server=192.168.0.15:514 warn;
error_log /var/log/nginx/error.log warn;
.

* в данном примере мы настроили хранение логов для nginx на сервере 192.168.0.15. Для ошибок также сохраняется локальный лог в файле /var/log/nginx/error.log.

Проверяем корректность конфигурационного файла nginx:

systemctl restart nginx

Чтение логов на сервере

В нашем примере сервер настроен на хранение логов по маске /var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log. Это значит, что в каталоге /var/log/rsyslog должны появляться папки с именами компьютеров, которые отправляют на сервер свои логи. Посмотреть список данных папок можно командой:

Чтение логов выполняется обычной командой cat или tail, например:

* здесь мы прочитаем лог для cron на компьютере comp1.

Источник

Как настроить центральный сервер ведения логов с помощью Rsyslog в Linux?

Сегодня поговорим о том, как настроить центральный сервер ведения логов с помощью Rsyslog в Linux. Логи являются критическим компонентом любого программного обеспечения или операционной системы. Логи обычно записывают действия пользователя, системные события, сетевую активность и многое другое, в зависимости от того, для чего они предназначены. Одной из наиболее широко используемых систем регистрации логов в системах Linux является rsyslog.

Rsyslog — это мощная, безопасная и высокопроизводительная система обработки логов, которая собирает данные из разных источников (систем/приложений) и выводит их в несколько форматов.

Rsyslog эволюционировал из обычного демона syslog до полнофункциональной системы ведения логов уровня предприятия. Rsyslog разработан в двух моделях (клиент/сервер), поэтому его можно настроить как клиент и/или как центральный сервер ведения логов для других серверов, сетевых устройств и удаленных приложений.

Испытательная среда

Для целей данной статьи мы будем использовать следующие хосты:

  • Сервер: 192.168.241.140
  • Клиент: 172.31.21.58

Как установить и настроить сервер Rsyslog?

Большинство дистрибутивов Linux поставляются с предустановленным пакетом rsyslog. Если он не установлен, вы можете установить его с помощью вашего менеджера пакетов Linux, как показано ниже:

После установки rsyslog вам нужно запустить службу, включить автозапуск при загрузке и проверить статус с помощью команды systemctl:

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

По умолчанию rsyslog использует модули imjournal и imusock для импорта структурированных сообщений логов из журнала systemd и для приема сообщений syslog из приложений, запущенных в локальной системе через сокеты Unix, соответственно:

Чтобы настроить rsyslog в Linux как сетевой/центральный сервер протоколирования, вам необходимо установить протокол (UDP, либо TCP, либо оба), который он будет использовать для удаленного приема syslog, а также для порта, который он прослушивает.

Если вы хотите использовать UDP-соединение, которое является более быстрым, но менее надежным, выполните поиск и раскомментируйте приведенные ниже строки (замените 514 на порт, который вы хотите прослушать, значение должно соответствовать адресу порта, на который отправляются сообщения клиентов).

Чтобы использовать TCP-соединение (которое медленнее, но надежнее), выполните поиск и раскомментируйте приведенные ниже строки:

В нашем случае мы хотим одновременно использовать как UDP, так и TCP-соединения.

Затем вам нужно определить набор правил для обработки удаленных логов в следующем формате:

  • facility: это тип сообщения о процессе/приложении, к которому относятся auth, cron, daemon, kernel, local0..local7. Использование «*» означает все объекты.
  • severity_level: это тип сообщения журнала: out-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Использование «*» означает все уровни severity, а «none» означает ни одного уровня severity.
  • destination: локальный файл, либо удаленный сервер rsyslog (определенный в форме IP:порт).

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

Глядя на вышеприведенный набор правил, первое правило:

В директиве $template говорится, что демон rsyslog собирает и записывает все полученные удаленные сообщения в различные журналы в /var/log на основе имени хоста (имя клиентского компьютера) и средства удаленного клиента (программа/приложение), которые генерируют сообщения как определенные по правилам, присутствующим в шаблоне RemoteLogs.

Вторая строка «*.*?RemoteLogs» означает запись сообщений со всех объектов на всех уровнях severity с использованием конфигурации шаблона RemoteLogs.

Последняя строка «&

» указывает rsyslog прекратить обработку сообщений после их записи в файл. Если вы не укажете «&

», сообщения будут записаны в локальные файлы.

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

Это вся настройка сервера rsyslog. Сохраните и закройте файл конфигурации. Чтобы применить последние изменения, перезапустите демон rsyslog с помощью следующей команды:

Теперь проверьте сетевые сокеты rsyslog. Используйте команду ss (или netstat с теми же флагами) и передайте вывод grep для фильтрации соединений rsyslogd:

Далее, в CentOS 7, если вы включили SELinux, запустите следующие команды, чтобы разрешить трафик rsyslog сгруппированный по типу сетевого сокета:

Если в системе включен брандмауэр, вам необходимо дать доступ через порт 514, чтобы разрешить оба соединения UDP/TCP с сервером rsyslog:

Как настроить клиент Rsyslog для отправки логов на сервер Rsyslog?

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

Если он не установлен, установите его и запустите службу, как показано ранее:

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

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

Вышеупомянутое правило будет отправлять сообщения со всех объектов и на всех уровнях severity. Чтобы отправлять сообщения из определенного объекта, например auth, используйте следующее правило:

Сохраните изменения и закройте файл конфигурации. Чтобы применить вышеуказанные настройки, перезапустите демон rsyslog.

Как отслеживать удаленное ведение логов на сервере Rsyslog?

Последний шаг — проверить, действительно ли rsyslog принимает и регистрирует сообщения от клиента /var/log в форме hostname/programname.log.

Запустите команду ls для вывода полного списка каталога родительских журналов и проверьте, есть ли каталог с именем ip-172.31.21.58 (или каким-либо именем хоста вашего клиентского компьютера).

Если каталог существует, проверьте файлы логов внутри него, выполнив:

Итоги

Rsyslog — это высокопроизводительная система обработки логов, разработанная в архитектуре клиент/сервер. Мы надеемся, что вы сможете установить и настроить Rsyslog в качестве центрального/сетевого сервера веления логов, как показано в этой статье.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

Читайте также:  Cucm настройка meet me
Adblock
detector