Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

Мониторинг openvpn подключений пользователей в zabbix

Продолжаю тему мониторинга различных систем и метрик серверов с помощью известной и бесплатной системы мониторинга заббикс. Сегодня я расскажу, как настроить мониторинг openvpn подключений в zabbix с помощью автообнаружения конфигов пользователей. Способ придуман не мной, приведу ссылку на github страницу проекта.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер » в OTUS.

Введение

Идея настроить мониторинг openvpn подключений с помощью zabbix витала у меня давно, но никак не доходили руки. Когда выбрал время и сел настраивать, сходу не придумал, а как же лучше это сделать. Так как в задаче много нюансов, то и подходов тоже может быть несколько.

Изначально я думал как-нибудь распарсить лог openvpn и вытаскивать подключенных пользователей оттуда. После того, как внимательно посмотрел на основной лог, понял, что это не самая простая задача, пришлось бы повозиться, чтобы все отладить.

Перед настройкой решил погуглить и посмотреть, что уже есть из готового. И сразу же нашел вот этот проект — https://github.com/Grifagor/zabbix-openvpn. Идею быстро понял, оценил все плюсы и минусы и решил не заморачиваться сам, а взять готовое, благо тут все в комплекте:

  • Скрипты
  • Конфиги
  • Шаблон с автообнаружением, графиками и триггерами.

Шаблон имеет следующие элементы в своем составе:

  1. Итемы для мониторинга за полученным и переданным трафиком пользователя.
  2. Итемы для мониторинга за статусом подключения, отключения пользователя.
  3. Триггер со срабатыванием на подключение и отключение пользователя.
  4. График полученных, отправленных данных в байтах.
  5. График со статусом подключения пользователя.
  6. Количество подключенных пользователей к openvpn серверу.

Все эти итемы, графики и триггеры создаются автоматически для каждого пользователя.

Минус один и весьма существенный — добавление итемов в виде отдельных пользователей работает через автообнаружение конфигураций пользователей в директории с ccd. Для того, чтобы приведенный способ мониторинга openvpn подключений работал, у вас должны существовать индивидуальные конфигурации пользователей, заданные в конфиге openvpn параметром client-config-dir.

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

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

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

Настройка zabbix-agent на openvpn сервере

Для настройки мониторинга за openvpn подключениями, создадим скрипт автообнаружения пользователей. У меня директория для ccd файлов следующая — /etc/openvpn/ccd-users-udp. В связи с этим делаем скрипт /etc/zabbix/scripts/discover_vpn.sh

#!/bin/bash

path=/etc/openvpn/ccd-users-udp

users=`ls -F $path | sed 's/\///g'` # array of users name

echo "{"
echo "\"data\":["

comma=""
for user in $users
do
    echo "    $comma{\"{#VPNUSER}\":\"$user\"}"
    comma=","
done

echo "]"
echo "}"

Сохраняем его, назначаем владельца zabbix и делаем исполняемым.

# chown zabbix. discover_vpn.sh && chmod +x discover_vpn.sh

Запустите файл и проверьте, что он выводит список пользователей из директории ccd в json формате.

 zabbix-openvpn-connections-01-4595864

Далее создаем конфиг с Userparameters — /etc/zabbix/zabbix_agentd.d/openvpn.conf следующего содержания:

UserParameter=discovery.openvpn,/etc/zabbix/scripts/discover_vpn.sh
UserParameter=user_status.openvpn[*], cat /var/log/openvpn/status-users-udp.log | grep $1, >/dev/null && echo 1 || echo 0
UserParameter=num_user.openvpn, cat /var/log/openvpn/status-users-udp.log | sed -n '/Connected Since/,/ROUTING/p' | sed -e '1d' -e '$d' | wc -l
UserParameter=user_byte_received.openvpn[*], if [ "`grep -c $1, /var/log/openvpn/status-users-udp.log`" != "0" ]; then cat /var/log/openvpn/status-users-udp.log | grep $1, | tr "," "\n" | sed -n '3p' ; else echo "0" ; fi
UserParameter=user_byte_sent.openvpn[*], if [ "`grep -c $1, /var/log/openvpn/status-users-udp.log`" != "0" ]; then cat /var/log/openvpn/status-users-udp.log | grep $1, | tr "," "\n" | sed -n '4p' ; else echo "0" ; fi

Не забудьте в конфиге поменять пути к status логу. У меня он живет по адресу /var/log/openvpn/status-users-udp.log.

Перезапускаем zabbix-agent.

# systemctl restart zabbix-agent

Проверяем работу итемов.

# zabbix_agentd -t discovery.openvpn

Вы должны увидеть вывод в формате json, как и при запуске скрипта в консоли. Если это не так, то разбирайтесь, в чем проблема. Возможно права на скрипт не дали или ошиблись в конфигурации агента.

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

# zabbix_agentd -t user_status.openvpn[ovpn_user1]
user_status.openvpn[ovpn_user1]             [t|1]

Агент возвращает 1, что значит, что пользователь подключен. Таким же образом можете проверить все остальные UserParameter. После того, как убедитесь, что все работает, можете переходить к настройке zabbix сервера для мониторинга за openvpn подключениями.

Мониторинг openvpn подключений в zabbix

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

Скачать шаблон для openvpn подключений

После добавления шаблона, прикрепите его к хосту с openvpn сервером, где ранее настроили zabbix-agent. После этого данные начнут поступать на сервер мониторинга. Проверить это, как обычно, можно в Latest data.

 zabbix-openvpn-connections-02-1901368

После подключения какого-нибудь пользователя, вы получите уведомление и увидите информацию об этом на дашборде.

 zabbix-openvpn-connections-03-9995906

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

 zabbix-openvpn-connections-04-1457070

В общем, кастомизируйте данный шаблон на свой вкус. На этом по самой настройке мониторинга за openvpn пользователями на сервере zabbix все.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Описанный способ мониторинга за подключениями openvpn пользователей не идеальный. Надежнее не привязываться к готовому списку пользователей, а напрямую анализировать лог файл openvpn. Иначе, если по какой-то причине пользователя не будет в списке, который формируется правилом автообнаружения, вы ничего не узнаете о подключениях. Особенно это актуально, когда мониторинг используется не просто для сбора информации, а для целей обеспечения безопасности, где важно фиксировать абсолютно все подключения.

 

If you liked my post, feel free to subscribe to my rss feeds