Сервер централизованного логирования на Linux CentOS при помощи Rsyslog и LogAnalyzer

LogAnalyzer – это web приложение, которое предназначено для просмотра логов системных событий, полученных от syslog, при помощи веб-браузера. Rsyslog – это приложение, представляющее собой расширение стандартного демона syslog, одной из особенностью которого является возможность сохранять события в БД MySQL. При помощи этих двух замечательных программ, возможно создать централизованный сервер, куда будут перенаправляться все события от различных устройств в сети, который бы реализовывал функции по удобному архивированию и поиску событий по всем событиям на всех сетевых устройствах в периметре сети. В данной статье я опишу процедуру установки на Linux CentOS службы rsyslog (сбор и агрегирование событий syslog) и LogAnalyzer (предоставляет дружественный интерфейс для просмотра и поиска по собранным логам).

Сначал необходимо установить ряд дополнительных пакетов RPM. Т.к. службы LogAnalyzer, Rsyslog и MySQL будут работать на одном сервере, нужно установить следующие пакеты с помощью yum:

# yum install httpd php mysql php-mysql mysql-server wget rsyslog rsyslog-mysql

Теперь нужно удостоверится, что MySQL и Apache настроены на автоматический запуск, после чего запустим их:

# chkconfig mysqld on

# chkconfig httpd on

# service mysqld start

# service httpd start

По умолчанию, пользователь root БД MySQL, имеет пустой пароль, поэтому следует обезопасить конфигурацию, задав новый пароль:

# mysqladmin - u root password NewPassword

Далее импортируем схему базы данных rsyslog в MySQL. В зависимости от версии rsyslog, измените путь к файлу “createDB.sql”.

# mysql - u root - p < /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql

Хорошим тоном считается ограничение доступа приложений к базе данных, поэтому мы создадим специального пользователя для доступа к БД rsyslog. Для ещё большего затягивания настроек безопасности, можно создать отдельные учетные записи для rsyslog и LogAnalyzer. Необходимо предоставить доступ пользователя rsyslog к базе MySQL только с локального интерфейса localhost. Также мы должны выполнить MySQL команду “flush privileges” для немедленного применения всех прав.

# mysql - u root - p mysql

mysql> GRANT ALL ON Syslog.* TO rsyslog@localhost IDENTIFIED BY 'Password';

mysql> flush privileges;

mysql> exit

Теперь пора перейти к редактированию файла”/etc/rsyslog.conf”. Здесь мы должны настроить пересылку сообщений syslog в базу данных MySQL. Первая команда загружает драйвер MySQL. Во второй строке мы говорим, что необходимо принимать логи любого уровня важности от “authpriv”, куда включены большинство важных сообщений. Если необходимо сохранять все системные сообщения в MySQL, нужно указать *.*. Мой сервер БД MySQL слушает на адресе 127.0.0.1, Syslog – это имя базы MySQL, и, наконец, указываем имя и пароль MySQL пользователя rsyslog. Здесь можно настроить сбор и запись любых сообщений, каждую комбинацию нужно отделять «;» (например, mail.*;authpriv.* : ommysql…).

$ModLoad ommysql

authpriv.* : ommysql:127.0.0.1,Syslog,rsyslog,Password

Сейчас нужно выключить существующую службу syslog и включить rsyslog:

# chkconfig syslog off

# service syslog stop

# chkconfig rsyslog on

# service rsyslog start

Настала пора скачать LogAnalyzer. Последнюю версию можно найти тут: http://loganalyzer.adiscon.com/downloads.

Или скачать LogAnalyzer прямо с Linux сервера (должен быть установлен wget):

# cd ~

# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.0.0.tar.gz

Распакуем файлы LogAnalyzer:

# tar zxvf loganalyzer-3.0.0.tar.gz

Теперь нужно скопировать файлы LogAnalyzer в каталог веб-сервера Apache (стандартный конфиг).

# mv loganalyzer-3.0.0/src /var/www/html/loganalyzer

# mv loganalyzer-3.0.0/contrib/* /var/www/html/loganalyzer/

Перейдите в созданный каталог LogAnalyzer, запустите скрипт configure.sh. В результате создастся пустой файл конигурации config.php, который наполнится в следующих шагах.

# cd /var/www/html/loganalyzer

# chmod u+x configure.sh secure.sh

# ./configure.sh

Для дальнейшей настройки LogAnalyzer нам понадобится веб-браузер. В любимом интернет-браузере наберите http://web1/loganalyzer. (web1 – имя нашего web1 сервера, loganalyzer – каталог apache)

В середине окна выберите ссылку “Click here to Install”.

Next.

Настройте параметры отображения журналов и опять нажмите Next.

Теперь нужно указать адрес сервера с базой данных, имя пользователя и пароль для доступа к ней (если вы не забыли БД называется rsyslog). Нажав кнопку Next, вы увидите результат проверки правильности введенных данных и корректность подключения.

Наконец, Finish.

В том случае, если вы настроили все правильно, перед вами появится главная страница LogAnalyzer, на которой по мере получения будут отображаться логи. Можете попробовать сгенерировать различные системные события и посмотреть что будет происходить на страничке LogAnalyzer. Т.к. я настроил логирование событий типа “authpriv”, это означает, что в лог будут попадать такие события, как вход/выход пользователя, или же вызов команды переключения пользователя (su).

Настройка Rsyslog для удаленного сбора логов

Следующий шаг – настройка службы rsyslog для сбора событий syslog с различных сетевых устройств. Сначала необходимо сконфигурировать сетевой экран iptables, чтобы он пропускал входящий трафик по 514 порту. Я добавлю два правила, разрешающих как TCP, так и UDP трафик. По умолчанию syslog принимает только сообщения, отправленные по порту 514 UDP, однако в rsyslog добавлена возможность принимать и TCP трафик. Добавьте в файл “/etc/sysconfig/iptables” следующие правила:

-A RH-Firewall-1-INPUT - p udp - m udp --dport 514 - j ACCEPT
-A RH-Firewall-1-INPUT - p tcp - m tcp --dport 514 - j ACCEPT

Перезапустите iptables:

# service iptables restart

Теперь нужно настроить rsyslog для приема входящих сообщений syslog. Я настрою прием сообщений по TCP/ UDP от localhost и всех хостов в подсети 192.168.1.0. В файл “/etc/rsyslog.conf” нужно добавить следующие строки (перед стройкой, где настраивалась связь с базой MySQL).

$AllowedSender UDP, 127.0.0.1, 192.168.1.0/24
$AllowedSender TCP, 127.0.0.1, 192.168.1.0/24

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

# service rsyslog restart

Следующий этап – настройка удаленных клиентов для отправки событий на центральный сервер rsyslog. Если на клиенте запущен rsyslog, в файл “/etc/rsyslog.conf” необходимо добавить, например, следующую строку:

authpriv.*  @192.168.10.100

Перезапустите сервер rsyslog на клиенте и попробуйте зайти/выйти на данную систему. Если вы ничего не упустили, на веб странице LogAnalyzer появится соответствующее событие!

Также рекомендую познакомится со статьей об организации центрального сервера логов на базе Windows Server 2008


Предыдущая статья Следующая статья


Комментариев: 1 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)