Wednesday, 3 June 2020

Встроенные скрипты в Zabbix.

Всем привет.

По-умолчанию Zabbix имеет три встроенных скрипта для диагностики хостов: "Detect operating system", "Ping" и "Traceroute". Из коробки работает только Ping.

В скрипте определения операционной системы (Detect operating system) при попытке выполнения появляется ошибка:
sudo: no tty present and no askpass program specified

А дело в том что с коробки приложение NMAP вообще не установлено в Zabbix.
Поэтом надо выполнить несколько движений, сначала устанавливаем само приложение NMAP
sudo apt-get install nmap

Даем пользователю Zabbix права на запуск приложения nmap, открываем файл /etc/sudoers в любом редакторе, например в nano:
sudo nano /etc/sudoers

и дописываем в файл следующую строчку:
zabbix ALL=(root) NOPASSWD: /usr/bin/nmap

Готово. Ваш встроенный скрипт в Zabbix для NMAP уже должен работать:
sudo /usr/bin/nmap -O {HOST.CONN}

Кстати утилита Traceroute также нуждается в инсталяции:
sudo apt-get install traceroute

Tuesday, 2 June 2020

Оптимизация Zabbix.

Всем привет.

В последнее время приходится плотно заниматься системой Zabbix. Для оптимизации его работы в сети приводят рекомендации по изменению некоторых его параметров отличных от значений по умолчанию. Нижеследующие значения для вас не прописная истина а всего лишь предложение, которое необходимо тестировать в каждом конкретном случае. 

По ходу рекомендую к прочтению книгу James Turnbull "The Art of Monitoring", 2016. Она хоть и не про Zabbix, но толково освещает общие моменты мониторинга  в сети на примере Reimann, Graphite и ELK.

Ну а сегодня начнем с главного конфига Zabbix.
#sudo nano /etc/zabbix/zabbix_server.conf

Есть смысл править такие параметры, как объем рабочего кэша, количество параллельных процессов в опросах и таймауты:
StartPollers=50
StartPreproceessors = 60
StartPollersUnreachable=30
StartPingers=100
CacheSize=64M
HistoryCacheSize=32M
HistoryIndexCacheSize=16M
TrendCacheSize=16M
ValueCacheSize=32M
Timeout=15

Обратите внимание что если некий узел мониторинга недоступен, процессы опроса его параметров будут заняты промежуток времени, равный таймауту на опрос (например Timeout=15). Если вдруг окажутся недоступными, например, более сотни таких узлов, с каждого из которых Zabbix собирает более десятка параметров, то весь процесс опроса(ожидания ответа) займет ресурсы Zabbix и это может привести к его отказу в нормальной работе.

Не мене важным может оказаться база данных Zabbix. Переходим к конфигу БД Zabbix на примере MySQL.
#sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Monday, 1 June 2020

Grafana и Zabbix.

Всем привет.

Сегодня расскажу вам про Grafana - веб-инструмента для представления данных, связанных со временем, в виде очень красивых графиков и диаграмм. Grafana упоминается чуть ли не с каждой системой мониторинга. В качестве источника данных для Grafana можно использовать как множество различных сложных движков баз данных, включая Graphite, ElasticSearch, InfluxDB, Prometeus, так и более простых, например MySQL. 

Исходя из моего полигона где был развернут Zabbix Appliance, то я расскажу как установить Grafana в Centos 8, а также как настроить её для работы с Zabbix.

Основное назначение Grafana при подключении к Zabbix – строить красивые графики, и при необходимости быстро создавать, компоновать, и масштабировать различные тренды и значения на одном графике, а так же собирать информативные Dashboard из этих графиков.

Итак начнем. Качаем пакет Grafana и устанавливаем его:
wget https://dl.grafana.com/oss/release/grafana-7.0.1-1.x86_64.rpm
sudo yum install grafana-7.0.1-1.x86_64.rpm

Grafana может взаимодействовать с большим количеством различных систем и СУБД через соотвествующие плагины. Чтобы посмотреть, какие плагины существуют для Grafana, надо выполнить команду:
#grafana-cli plugins list-remote

Нам повезло, для Zabbix существует плагин, созданный Александром Зобниным. Ставим и его:
#grafana-cli plugins install alexanderzobnin-zabbix-app

Добавим сервис(сервер) Grafana в автозагрузку:
#sudo systemctl enable grafana-server

И после этого перезапустим сервис Grafana:
#service grafana-server restart

Monday, 25 May 2020

Диагностика приложений протокола DHCP в Scapy.

Всем привет.

Вторая часть практики со  Scapy от Бражука Андрея. Сегодня будет проведена активная диагностика приложений протокола DHCP. Первую часть читаем здесь.

Оригинал статьи вы найдете в журнале "Системный администратор" №12 (109) 2011 года.

Введение

Протокол динамической конфигурации узла DHCP (Dynamic Host Configuration Protocol) повсеместно используется для автоматизации процесса получения настроек протокола IP на сетевых узлах. Средства, обеспечивающие функциональность DHCP-сервера, существуют для всех программных платформ, реализующих те или иные удаленные службы (серверные версии Windows, Linux/Unix, операционные системы маршрутизаторов, шлюзов, межсетевых экранов и т. д.). Клиент этого протокола обычно имеется в любом оборудовании, работающем в сети.

Не смотря на наличие хорошей документации и простоту настройки приложений DHCP, работоспособность их сложных конфигураций требует проверки. Обычно для активного тестирования используется рабочая станция, сетевой стек которой настроен на динамическое получение параметров IP. Для обнаружения существующих проблем исследуются журналы работы сервера и клиента DHCP, а также, если необходимо, с помощью соответствующего ПО перехватывается и анализируется трафик между ними.

В ряде случаев нестандартные задачи активной диагностики DHCP, а также автоматизация их решения требуют привлечение технологий программирования. Учитывая то, что в практике системного администрирования обычно основная цель программирования - быстрый результат, решать данный класс задач лучше с помощью специальных инструментов. Рассмотренный в статье генератор сетевых пакетов Scapy собственно и есть такое средство. Данная утилита одновременно является расширяемой библиотекой языка программирования Python и ориентирована на протоколы без установления соединения, к которым относится и DHCP, использующий протокол UDP в качестве транспорта.

Разведка боем: имитируем DHCP-клиент

Ввиду того, что принципы функционирования DHCP общеизвестны и описаны в литературе, теоретические выкладки пропустим и сразу перейдем к программированию DHCP-клиента в Scapy.

Тестовый стенд, использовавшийся для написания данной статьи, построен на основе ПО с открытым исходным кодом: виртуальная машина (ВМ) VirtualBox на основе Debian GNU/Linux с установленным ISC DHCP. Утилита Scapy запускалась с хостовой системы, объединенной с ВМ с помощью виртуального адаптера «Виртуальная сеть хоста». При этом, DHCP-сервер VirtualBox для этого режима был отключен. Разумеется, описанные в статье упражнения можно повторить в «физической» сети с использованием службы DHCP, встроенной в маршрутизатор, реальный сервер или модем.

Для получения минимальной работоспособной конфигурации сервера ISC DHCP достаточно в файле /etc/dhcp/dhcpd.conf описать подсеть (subnet):
subnet 192.168.56.0 netmask 255.255.255.0 {
  range 192.168.56.10 192.168.56.30;
  option domain-name-servers 192.168.56.1;
  option domain-name "local.test";
  option routers 192.168.56.1;
  option broadcast-address 192.168.56.255;
  default-lease-time 600;
  max-lease-time 7200;
}

Wednesday, 20 May 2020

Основы конструирования сетевых пакетов в Scapy.

Всем привет.

Сегодня будет сетевая вкусняшка по имени Scapy. Несмотря на то что оригинал статьи был опубликован в журнале "Системный администратор" №10 (107) еще в далеком 2011-м году Бражуком Андреем сама Scapy популярности не утратила.

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

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

Примером многофункционального расширяемого генератора пакетов и является рассматриваемая в статье утилита Scapy. По сути, Scapy предназначена для конструирования, отправки, перехвата и анализа сетевых пакетов, а также для манипулирования единицами передачи протоколов транспортного уровня (UDP-датаграммами и TCP-сегментами) и сообщениями прикладных протоколов [1].

Средой выполнения данной утилиты выступает интерпретатор языка программирования Python, что позволяет использовать ее как в интерактивном режиме, так и в виде модуля (подключаемой библиотеки) в скриптах, написанных на Python. Фактически, с помощью Scapy можно воспроизвести функции любой сетевой утилиты, начиная от простейших ICMP-команд типа ping и traceroute и заканчивая реализациями сложных алгоритмов поиска уязвимостей безопасности [2]. При чем, по заверениям автора этого открытого проекта, то, для чего на языке программирования C потребуется написать сто строк кода, в Scapy делается буквально двумя строками.

Немного дегтя

Прежде чем, как говорится, с головой погружаться в захватывающий мир возможностей Scapy, следует учесть несколько моментов.

Во-первых, эта утилита наиболее полезна для решения нестандартных проблем, требующих дополнительной обработки полученных результатов, т. е. когда от инструмента требуется гибкость. Не надо забывать, что для типичных задач диагностики создано множество средств с куда более классическим интерфейсом, например, таких как сканер портов Nmap или утилита перехвата сетевого трафика tcpdump и т. д.

Во-вторых, Scapy неразлучна с языком программирования Python. И для всего, что сложнее, чем примеры, описанные в руководстве пользователя, желательно хотя бы понимание базовых конструкции и подходов, характерных для Python. Правда, с позиций человека, имеющего некоторое представлении о процессе программирования, этот язык выглядит ни чуть не сложнее других, и при наличии желания и хорошего руководства [3] вполне «постигаем». Лишь забавный дискомфорт (субъективно) вызывает замена ставших привычными разделителей синтаксических конструкций (всевозможных скобок, ключевых слов и т. д.) на отступы от начала строки.

В-третьих, если имеет место личная несовместимость с Python, то, разумеется, Scapy не единственный в этом мире генератор пакетов [4] и можно подобрать средство или сетевую библиотеку, привязанную к предпочитаемой технологии или языку программирования.

В-четвертых, учитывая "интерпретируемость" и многоуровневую абстракцию среды программирования, Scapy не претендует на рекордные показатели производительности. В частности, данный аспект нужно иметь ввиду при реализации тестирования производительности сети.

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

В-шестых, Scapy является типичным представителем так называемых проектов одного разработчика, со всеми их недостатками и достоинствами.

Версия на печать

Популярное