The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Построение системы сбора логов и мониторинга удаленных систем (log monitor nagios stunnel crypt freebsd)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: log, monitor, nagios, stunnel, crypt, freebsd,  (найти похожие документы)
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.dev/docs/RUS/nagios_setup/ - Построение защищенного log-сервера: http://www.opennet.dev/opennews/art.shtml?num=4377 Другие статьи, к моему сожалению, я не записал источники Используется следующия стуктура: Есть централизованный сервер безопасности и отдельные узлы. На них устанавливается система централизованого сбора логов (syslog-ng+stunnel) и средства мониторинга состояния (nagios plugin). Статья является результатом переработки статьи на opennet.ru (установка syslog-ng+stunnel). На центральном сервере (security) устанавливается сервер syslog-ng, stunnel, nagios Схема работы логов: Клиент -> tcp://localhost:514 -> stunnel -> tcp://security:5000 Авторизация клиентов на security ведется по сертефикатам, что существенно усложняет подмену логов. Схема работы системы проверки: Клиент -> выполнение операций проверки (например df) -> локальный обработчик (со стандартным выводом в последней строке) -> scp client:/. nagios@security:/files -> проверка nagios_plugin (самописный скрипт, проверяющий по двум критериям: последняя строчка с уже указанным результатом и проверкой времени файла, что позволяет отсеять старые результаты) Приведенный df - лишь один из вариантов, предложенная схема позволяет легко организовавать удаленный мониторинг других параметров (для сетевых систем - текущая загрузка сетевой подсистемы, .... ) Используются скрипты автоматической установки, что позволяет развернуть систему на клиенской машине syslog-ng+stunnel ~ 15 минут nagios - 3-5 минут. Скрипты можно скачать здесь: http://www.opennet.dev/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 #adduser Конфигурация сборки #./configure --prefix=/sur/local/nagios --with-cgi-url=nagios/cgi-bin --with-html-url=/nagios/ \ --with-nagios-user=nagios --with-nagios-grp=nagios --with-gd-lib=/usr/local/lib \ --with-gd-inc=/usr/local/include/gd Описание опций: --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 - Заменить $(INSTALL) -m 774 $(INIT_OPTS) daemon-init $(DESTDIR)$(INITDIR)/nagios на $(INSTALL) -m 100 $(INIT_OPTS) daemon-init $(DESTDIR)$(INITDIR)/nagios.sh - Сохранить файл MakeFile - Выполняем команду инсталляции make install-init Т.о должен создастся файл автоматического запуска /usr/local/etc/rc.d/nagios.sh Проверить можно #/usr/local/etc/rc.d/nagios.sh start # ps -ax | grep nagios 51102 ?? Ss 0:00.66 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg Так же рекомендуется установить пакет дополнительных модулей 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 # Включаем обнаружение мерцания flap_detection_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 и работа самого сервера services.cfg # Описываем сервис PING для хоста gwO define service{ use generic-service host_name gwo service_description PING is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_interval 120 notification_period 24x7 notification_options w,u,c,r check_command check_ping!100.0,20%!500.0,60% } # Описываем сервис gwO-gwD канал для хоста gwO define service{ use generic-service host_name gwo service_description gwO-gwD cripto is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_interval 120 notification_period 24x7 notification_options w,u,c,r check_command check_ping_by_ip!192.168.11.1!100.0,20%!500.0,60% } Установка системы шифрованных каналов stunnel Установить систему stunnel cd /usr/ports/security/stunnel make make install Создать БАЗОВЫЙ сертификат ssh-keygen -t rsa Сохранить результат в текущий каталог под названием ca.key openssl rsa -in ca.key -out ca.pem openssl req -new -key ca.key -out ca.csr openssl x509 -req -days 6000 -in ca.csr -signkey ca.key -out ca.crt Примечание: в реальной системе базовый сертификат отдается на подписание в стороннюю организацию. Создать сертификат для системы stunnel ssh-keygen -t rsa Сохранить результат в текущий каталог под названием cserver.key openssl rsa -in cserver.key -out cserver.pem openssl req -new -key cserver.key -out cserver.csr Подписать сертификат cserver.csr базовым сертификатом ./sign.sh cserver.csr Примечание: sign.sh можно взять из дистрибутива Apache::mod_ssl Создать сертефикат тунеля #cat cserver.crt ca.crt > cserver.crt #cp cserver.crt /home/nagios/script/cert/cserver.crt #cp cserver.crt usr/local/etc/stunnel/server.crt #cp cserver.key usr/local/etc/stunnel/server.key Настроить туннель # mkdir /var/run/stunnel /usr/local/etc/stunnel cert = /usr/local/etc/stunnel/server.crt key = /usr/local/etc/stunnel/server.key CAfile = /usr/local/etc/openssl/cert/client.pem chroot = /var/run/stunnel pid = /stunnel.pid setuid = stunnel setgid = stunnel verify = 3 output = /var/log/stunnel.log [syslogd] accept = 5000 connect = 514 Запустить stunnel #/usr/local/etc/rc.d/stunnel.sh start /home/jamper/script/syslog_ng/cert/cserver.crt должен содержать созданный сертефикат сервера. Установка системы логов syslog-ng Установка системы #cd /usr/ports/sysutils/syslog-ng #make #make install Настройка системы файл /usr/local/etc/syslog-ng/syslog-ng.conf filter fh_security { host("security");}; # # destinations security # destination security_messages { file("/var/log/security/messages"); }; destination security_security { file("/var/log/security/security"); }; destination security_maillog { file("/var/log/security/maillog"); }; destination security_lpd-errs { file("/var/log/security/lpd-errs"); }; destination security_cron { file("/var/log/security/cron"); }; destination security_auth { file("/var/log/security/auth.log"); }; destination security_consolelog { file("/var/log/security/console.log"); }; destination security_newscrit { file("/var/log/security/news/news.crit"); }; destination security_newserr { file("/var/log/security/news/news.err"); }; destination security_newsnotice { file("/var/log/security/news/news.notice"); }; destination security_slip { file("/var/log/security/slip.log"); }; destination security_ppp { file("/var/log/security/ppp.log"); }; destination security_console { file("/var/log/security/console"); }; #security log { source(src); filter(f_err);filter(fh_security); filter(fh_security); destination(security_console); }; log { source(src); filter(f_kern);filter(fh_security); filter(f_debug); destination(security_console); }; log { source(src); filter(f_auth);filter(fh_security); destination(security_auth); }; log { source(src); filter(f_authpriv);filter(fh_security); destination(security_auth); }; log { source(src); filter(f_mail);filter(fh_security); filter(f_crit); destination(security_console); }; log { source(src); filter(f_notice);filter(fh_security); destination(security_messages); }; log { source(src); filter(f_kern);filter(fh_security); filter(f_debug); destination(security_messages); }; log { source(src); filter(f_lpr);filter(fh_security); filter(f_info); destination(security_messages); }; log { source(src); filter(f_mail);filter(fh_security); filter(f_crit); destination(security_messages); }; log { source(src); filter(f_news);filter(fh_security); filter(f_err); destination(security_messages); }; log { source(src); filter(f_security);filter(fh_security); destination(security_security); }; log { source(src); filter(f_mail);filter(fh_security); filter(f_info); destination(security_maillog); }; log { source(src); filter(f_cron);filter(fh_security); destination(security_cron); }; #log { source(src); destination(pppoe_all); }; log { source(src); filter(f_slip);filter(fh_security); destination(security_slip); }; log { source(src); filter(f_ppp);filter(fh_security); destination(security_ppp); }; Удаляем старую систему логов #kill -9 `cat /var/run/syslogd.pid` Добавляем в /etc/rc.conf syslogd_enable="NO" syslogd_flags="" Запускаем сервер логов # /usr/local/etc/rc.d/syslog-ng.sh stop Настройка клиентов Настройка системы логов Получить скрипт установки с сервера безопасности #scp nagios@security.rgrta.edu:~/script/syslog_ng/install.sh . Запустить процесс инсталляции #sh ./install.sh Примечание: - Необходимо вводить пароль на сервер безопасности. - Необходимо выполнять действия запрашиваемые скриптом - Создаваемым пользователям не нужен шел, и авторизация по паролью - Операция установки является перезапускаемой, т.е. в случае возникновения проблем необходимо устранить неполадки и снова запустить скрипт, за исключением создания пользователя. Если пользователь уже был создан, то необходимо закомментировать строчку создания пользователя в скрипте, либо удалить пользователя Необходимо подписать полученные сертификаты на центре сертификации (в нашем случае центром сертификации выступает security) #sign.sh gwo.rgrta.edu.key.csr Запуск на gwo окончания установки # sh ./after_sign.sh Внимательно прочитать и выполнить операции, которые скрипт не может выполнить в автоматическом режиме Добавить полученный сертификат сервера в базу сертификатов stunnel сервера безопасности # cat gwo.rgrta.edu.crt.strip >> /usr/local/etc/openssl/client.pem Перезапустить сервер stunnel на сервере безопасности # /usr/local/etc/rc.d/stunnel.sh stop # /usr/local/etc/rc.d/stunnel.sh start Запустить stunnel на клиентской машине. Проверить, что обмен сертификатами завершился успешно (/var/run/stunnel/stunnel.log) # /usr/local/etc/rc.d/stunnel.sh start # telnet localhost 514 На сервере безопасности добавляем в файл /usr/local/etc/syslog-ng/syslog-ng.conf filter fh_gwo { host("gwo");}; # # destinations gwo # destination gwo_messages { file("/var/log/gwo/messages"); }; destination gwo_security { file("/var/log/gwo/security"); }; destination gwo_maillog { file("/var/log/gwo/maillog"); }; destination gwo_lpd-errs { file("/var/log/gwo/lpd-errs"); }; destination gwo_cron { file("/var/log/gwo/cron"); }; destination gwo_auth { file("/var/log/gwo/auth.log"); }; destination gwo_consolelog { file("/var/log/gwo/console.log"); }; destination gwo_newscrit { file("/var/log/gwo/news/news.crit"); }; destination gwo_newserr { file("/var/log/gwo/news/news.err"); }; destination gwo_newsnotice { file("/var/log/gwo/news/news.notice"); }; destination gwo_slip { file("/var/log/gwo/slip.log"); }; destination gwo_ppp { file("/var/log/gwo/ppp.log"); }; destination gwo_console { file("/var/log/gwo/console"); }; #gwo log { source(src); filter(f_err);filter(fh_gwo); filter(fh_gwo); destination(gwo_console);}; log { source(src); filter(f_kern);filter(fh_gwo); filter(f_debug); destination(gwo_console); }; log { source(src); filter(f_auth);filter(fh_gwo); destination(gwo_auth); }; log { source(src); filter(f_authpriv);filter(fh_gwo); destination(gwo_auth); }; log { source(src); filter(f_mail);filter(fh_gwo); filter(f_crit); destination(gwo_console); }; log { source(src); filter(f_notice);filter(fh_gwo); destination(gwo_messages); }; log { source(src); filter(f_kern);filter(fh_gwo); filter(f_debug); destination(gwo_messages); }; log { source(src); filter(f_lpr);filter(fh_gwo); filter(f_info); destination(gwo_messages); }; log { source(src); filter(f_mail);filter(fh_gwo); filter(f_crit); destination(gwo_messages); }; log { source(src); filter(f_news);filter(fh_gwo); filter(f_err); destination(gwo_messages); }; log { source(src); filter(f_security);filter(fh_gwo); destination(gwo_security); }; log { source(src); filter(f_mail);filter(fh_gwo); filter(f_info); destination(gwo_maillog); }; log { source(src); filter(f_cron);filter(fh_gwo); destination(gwo_cron);}; #log { source(src); destination(pppoe_all); }; log { source(src); filter(f_slip);filter(fh_gwo); destination(gwo_slip);}; log { source(src); filter(f_ppp);filter(fh_gwo); destination(gwo_ppp);}; Перезапускаем сервер логов на сервере безопасности # /usr/local/etc/rc.d/syslog-ng.sh stop # /usr/local/etc/rc.d/syslog-ng.sh start В логе /var/log/gwo/messeges появилось 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. Базового, которым производится подписывание всех сертификатов. При наличии возможности и необходимости его необходимо подписать у регистрирующих центров 2. Сертификата сервера stunnel, подписанного базовым. Все сертификаты узлов подписываются базовым сертификатом. Примечание: На самом деле их можно подписывать и другими сертификатами, но для малой сети достаточно одного базового сертификата. Настройка проверки места на диске Добавить пользователя nagios из группы nagios. Для него можно запретить авторизации по паролю, но необходимо оставить консоль. #adduser Перейти под аккаунт данного пользователя #su - nagios > Получить скрипт установки с сервера безопасности > scp nagios@security.rgrta.edu:~/script/install.sh install.sh Выполнить установщик >sh ./install.sh На все предложеные вопросы (за исключением запроса пароля для scp) Установка периодически выполняемой операции > crontab crontab На сервере необходимо выполнить следующие операции Добавить сгенерированные ключи в файл разрешенных для беспарольной авторизации. security# cat /home/nagios/$host.*.pub > /home/nagios/files/.ssh/authorized_keys где $host- сервер, на котором были сгенерированные файлы. Необходимо очень внимательно следить, чтобы в файл authorized_keys не попали "чужие" данные. Добавить описание сервиса в services.cfg define service{ use generic-service host_name gwO service_description df is_volatile 0 check_period 24x7 max_check_attempts 3 normal_check_interval 50 retry_check_interval 30 contact_groups admins notification_interval 120 notification_period 24x7 notification_options w,u,c,r check_command check_by_file!/usr/home/nagios/files/gwO.df.log!50! } В качестве второго параметра передается время в минутах, после которого файл считается устаревшим и генерируется ошибка. Приложение Скрипты для автоматической установки http://www.opennet.dev/soft/remote_log_mon.tar.gz

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, gluck (?), 21:05, 01/03/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    прогони текст через спелчекер. сертефЕкат режет глаз
     
  • 1.2, _Ale_ (ok), 13:38, 02/03/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >На сервер безопасности необходимо установить
    >стабильную версию ОС
    >FreeBSD. На момент написания работы 5-Stable.
    А почему не OpenBSD?
     
  • 1.3, Sem (ok), 10:25, 04/03/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Софт только весь надо ставить из портов.
    Все остальное сейчас постараюсь повторить у себя.
     
  • 1.14, DAC (?), 16:47, 30/11/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Запускаем сервер логов
    >
    >        # /usr/local/etc/rc.d/syslog-ng.sh stop

    Хе-х. :)

     
  • 1.15, Одмин (?), 22:02, 03/04/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эх - про nrpe видимо человеку неизвестно...
    ссш доступ со всех компов без пароля к серверу с пафосным именем security - улыбнуло ..
     
     
  • 2.16, Михаил Черногорский (?), 19:06, 22/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Эх - про nrpe видимо человеку неизвестно...
    >ссш доступ со всех компов без пароля к серверу с пафосным именем
    >security - улыбнуло ..

    А что, работает :-)
    а сервер действительно был секурити. может и сейчас есть.

     

  • 1.17, Alexander Gal (?), 19:46, 31/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Описал систему на fluentd+elastic+kibana
    http://itc-life.ru/fluentd-bystryj-poisk-logov-s-elasticsearch-kibana-and-flu
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру