Сервер централізованого логування на 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