From: Michail V. Chernogorsky <jamper@hotbox.ru.>
Newsgroups: email
Date: Mon, 28 Feb 2005 14:31:37 +0000 (UTC)
Subject: Построение системы сбора логов и мониторинга удаленных систем
Полу-автоматизированная установка централизованной системы сбора логов
(syslog-ng+stunnel) и мониторинга за состоянием удаленных систем (nagios)
Для кого статья:
Статья предназначена для админов малых сетей (5-10 серверов)
От автора:
Статья - результат переработки куска моего дипломного проекта,
защищенного в этом году. Поставили 4.
К сожалению при написании диплома приходилось сильно упрощать язык
описания. А времени на переработку нет.
Возможно что система не заведется сразу, необходимо будет добавить кое
какие каталоги на security кое что подправить, добавить пользователей.
За давностью первоначального развертывания востановить полностью
последовательность не удалось. Буду признателен сообщение о любые
неточностях замеченных в данной статье (jamper@hotbox.ru)
Примечание: все скрипты исправленны на использование доменов
domain.ru; пользователя установщик jamper, для работы необходимо
исправить файлы, перепаковать архивы.
При разработке структуры пользовался статьями с опеннета и других
источников:
- Установка системы нагиос: http://www.opennet.ru/docs/RUS/nagios_setup/
- Построение защищенного log-сервера: http://www.opennet.ru/opennews/art.shtml?num=4377
Другие статьи, к моему сожалению, я не записал источники
Используется следующия стуктура:
Есть централизованный сервер безопасности и отдельные узлы. На них
устанавливается система централизованого сбора логов (syslog-ng+stunnel)
и средства мониторинга состояния (nagios plugin). Статья является
результатом переработки статьи на opennet.ru (установка
syslog-ng+stunnel).
На центральном сервере (security) устанавливается сервер syslog-ng,
stunnel, nagios
Авторизация клиентов на security ведется по сертефикатам, что
существенно усложняет подмену логов.
Схема работы системы проверки:
Клиент -> выполнение операций проверки (например df) -> локальный
обработчик (со стандартным выводом в последней строке) -> scp client:/.
nagios@security:/files -> проверка nagios_plugin (самописный скрипт,
проверяющий по двум критериям: последняя строчка с уже указанным
результатом и проверкой времени файла, что позволяет отсеять старые
результаты)
Приведенный df - лишь один из вариантов, предложенная схема позволяет
легко организовавать удаленный мониторинг других параметров (для сетевых
систем - текущая загрузка сетевой подсистемы, .... )
Используются скрипты автоматической установки, что позволяет развернуть
систему на клиенской машине syslog-ng+stunnel ~ 15 минут nagios - 3-5
минут. Скрипты можно скачать здесь: http://www.opennet.ru/soft/remote_log_mon.tar.gz
Примечания по безопасности:
1.Все машины клиенты имеют ссш доступ без пароля на security
(рекомендуется применять shell scp-only)
2.Логи со всей системы стекаются на security, что ставит вопрос о
защите самой машины security на первое место.
Установка сервера безопасности.
На сервер безопасности необходимо установить стабильную версию ОС
FreeBSD. На момент написания работы 5-Stable.
Сразу после установки на сервер необходимо установить следующее ПО:
- Nagios
- Syslog-ng (server)
- Stunnel (server)
Установка системы мониторинга Nagios
Устанавливаем необходимые компоненты для работы системы:
- zlib (v 1.1.4+)
- libpng (v 1.2.5+)
- jpeg (v 6+)
- gd (v 2.0.6+)
- apache 2
- Nagios (1.06b+)
Все дополнительные пакеты можно устанавливать любым способом.
Рассмотрим специфику установки П.О. Nagios
Необходимо создать пользователя nagios состоящим в группе nagios
--prefix=/sur/local/nagios каталог, куда будет помещен собранный пакет
--with-cgi-url=nagios/cgi-bin - URL относительно корневого веб сайте, где
будут находиться cgi скрипты
--with-html-url=/nagios/ - URL относительно корневого web сайта, где
будет располагается сам сайт системы мониторинга
--with-nagios-user=nagios Пользователь, которому будут принадлежать
файлы инсталляции
--with-nagios-grp=nagios - Группа, которой будут принадлежать файлы
инсталяции
--with-gd-lib=/usr/local/lib - Путь к графической библиотеке
--with-gd-inc=/usr/local/include/gd - Путь к заголовочным файлам
графической библиотеки
Собираем и устанавливаем пакет
#make
#make install
Собираем скрипт автоматического запуска системы:
#make install-init
Примечание: в некоторых версиях ПО Nagios в make файле присутствует
ошибка, из-за которой данная команда не может быть выполнена. В ранних
версиях присутствовала проблема, которую можно было решить :
- Заменить INIT_OPTS=-o root -g=root на INIT_OPTS=-o root -g=wheel
Так же рекомендуется установить пакет дополнительных модулей Nagiosplug.
Настройка системы
Необходимо выполнить начальную настройку системы. Полные файлы
конфигурации системы мониторинга приведены в приложении 14.4, поэтому
остановимся только на значимых моментах. Все конфигурационные файлы
находятся в /usr/local/nagios/etc
cgi.cfg
use_authentication=1 - включение авторизации пользователей на сайте
hosts.cfg
define host{
name generic-host
# Включаем уведомления
notifications_enabled 1
# Включаем обработчик событий
event_handler_enabled 1
# Собирать статистику об эффективности работы процесса
process_perf_data 1
# Сохранять статусную информацию между перезагрузками программы
retain_status_information 1
# Сохранять нестатусную информацию между перезагрузками программы
retain_nonstatus_information 1
# Указываем, что все вышеописанное - это шаблон. Запрещаем
регистрировать
# это описание как хост
register 0
}
Добавление серверов
Каждый сервер, маршрутизатор, устройство, которое мы хотим наблюдать в
систему мониторинга должно быть описано в файле Hosts.cfg
Рассмотрим описание маршрутизатора gwO
define host{
use generic-host
# Имя хоста. Также стоит обратить внимание на изменившиеся записи alias и address.
host_name gwo
alias gwO server
address 192.168.10.1
#parents main
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
Важными являются:
- host_name - имя сервера, используется для настройки
- alias - текстовое описание, используется в уведомлениях
- address - IP адрес сервера
- max_check_attempts - параметры проверки
- notification_interval - интервал между повторными сообщениями о ошибке
- notification_period - инервал, когда можно сообщать об ошибке
- notification_options - дополнительные опции
- parents - родитель, позволяет строить иерархические связи
Любое устройство может быть описано таким образом.
Добавление службы в систему мониторинга:
Например для gwO - работа шифрованного канала gwO-gwD и работа самого
сервера
- Необходимо вводить пароль на сервер безопасности.
- Необходимо выполнять действия запрашиваемые скриптом
- Создаваемым пользователям не нужен шел, и авторизация по паролью
- Операция установки является перезапускаемой, т.е. в случае возникновения
проблем необходимо устранить неполадки и снова запустить скрипт, за
исключением создания пользователя. Если пользователь уже был создан, то
необходимо закомментировать строчку создания пользователя в скрипте,
либо удалить пользователя
Необходимо подписать полученные сертификаты на центре сертификации (в
нашем случае центром сертификации выступает security)
#sign.sh gwo.rgrta.edu.key.csr
Запуск на gwo окончания установки
# sh ./after_sign.sh
Внимательно прочитать и выполнить операции, которые скрипт не может
выполнить в автоматическом режиме
Добавить полученный сертификат сервера в базу сертификатов stunnel
сервера безопасности
Dec 14 23:57:31 voipgk syslog-ng[85270]: io.c: do_write: write() failed (errno 32), Broken pipe
Dec 14 23:57:31 voipgk syslog-ng[85270]: pkt_buffer::do_flush(): Error flushing data
Dec 14 23:57:31 voipgk syslog-ng[85270]: Connection broken to
AF_INET(127.0.0.1:514), reopening in
Dec 14 23:59:07 voipgk syslog-ng[85270]: STATS: dropped 0
Что свидетельствует о начале работы лог сервера.
Для работы такой схемы нужно наличие 2х сертификатов
1. Базового, которым производится подписывание всех сертификатов. При
наличии возможности и необходимости его необходимо подписать у
регистрирующих центров