сервисы:пользовательский_vpn

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервисы:пользовательский_vpn [2023/09/18 14:51] – [Назначение] adminсервисы:пользовательский_vpn [2023/09/18 15:13] (текущий) – [Инструкция] admin
Строка 8: Строка 8:
  
 ==== Назначение ==== ==== Назначение ====
-Предоставить возможность пользователям подключаться удаленно к внутренним ресурсам компании+Предоставить возможность пользователям подключаться удаленно к внутренним ресурсам компании с разграничением доступности ресурсов для каждого пользователя
 ==== Описание ==== ==== Описание ====
-Каким образом реализована поставленная задача +  * OpenVPN сервер и скрипт выпуска клиентских конфигов. 
-Ссылки на использованные статьи при решении задачи +  * IP адреса клиентам выдаются статические через CCD файлы, что позволяет четко идентифицировать каждого клиента по IP и управлять его доступом на FW 
 +  * Учет свободных и занятых адресов ведется скриптом автоматически в инвентори/сети {{inventory:net:10.50.50.0/24}} - челябинские клиенты, {{inventory:net:10.20.50.0/24}} - московские: скрипт закрепляет за новым конфигом первый свободный IP 
 +Если при генерации нового конфига скрипт найдет одноименного пользователя в инвентори - закрепит за ним выделенный IP (иначе просто сделает описание к IP адресу в виде ovpn-username)
 ==== Доступ ==== ==== Доступ ====
-Есть ли требования к ограничению доступа к сервису? +Доступ отзываетсяктивируется удалениемосстановлением CCD файлов: сервер настроен так, что на каждый конфиг должен присутствовать одноименный CCD файл, удаление CCD деактивирует конфиг (правда не рвет активную сессию) 
-Пример: +Дополнительно индивидуальный сетевой доступ клиентов регулируется на FW {{inventory:comp:msk-gw}} и {{inventory:comp:chl-gw}}
-Доступ по IP ограничен согласно [[сеть:сегментация сети|сегментации сети]] - открытая сеть +
-Доступ на уровне пользователей ограничен членством в группе "Пользователи шаблонного сервиса+
-Доступ новым пользователям предоставлять по согласованию с ДИБ и НТЦ3 +
-Изменения вносить в [[#журнал изменений доступа]] в конце страницы+
  
 +{{drawio>сервисы:openvpn-scheme.png}}
 ==== Инструкция ==== ==== Инструкция ====
-Ссылка на инструкцию для пользователей +<code bash> 
-Инструкция для отдела ИТ +/etc/openvpn/usr.new pupkin_ii 
-  * как предоставить доступ +</code> 
-  * как отозвать доступ+Создает новый конфиг для //pupkin_ii//. Конфиг располагается в папке **/etc/openvpn/clients/taburetka-pupkin_ii** 
 +  * taburetka_pupkin_ii.conf - для linux  
 +  * taburetka_pupkin_ii.ovpn - для windows клиента 
 + 
 +Содержимое файлов ничем не отличается, просто в разных окружениях по умолчанию используются разные расширения  
 +При создании смотрит какой первый адрес свободен в подсети местной площадки 
 +  * прописывает его в CCD для пользователя pupkin_ii 
 +  * прописывает в инвентори комментарий для занятого IP (название VPN конфига) - тем самым "занимая его" во избежание коллизий 
 +  * если в инвентори есть пользователь pupkin_ii - привязывает к нему занятый IP 
 + 
 +Созданный CCD находится в папке с конфигом и называется **ccd**, по умолчанию туда прописывается только назначение IP адреса клиенту, но содержание можно изменить по своему усмотрению. 
 + 
 +=== Активация доступа === 
 +По умолчанию новый конфиг не активирован 
 +<code bash> 
 +/etc/openvpn/usr.enable pupkin_ii 
 +</code> 
 +или **_enable** в папке конфига 
 +Конфигурация сервера такова, что при подключении он ищет файл /etc/openvpn/ccd/pupkin_ii,  
 +а скрипт делает линк /etc/openvpn/clients/taburetka-pupkin_ii/ccd -> /etc/openvpn/ccd/pupkin_ii 
 + 
 +=== Отзыв доступа === 
 +<code bash> 
 +/etc/openvpn/usr.disable pupkin_ii 
 +</code> 
 +или **_disable** в папке конфига 
 +а скрипт удаляет линк /etc/openvpn/clients/taburetka-pupkin_ii/ccd -> /etc/openvpn/ccd/pupkin_ii 
 + 
 +=== Пересборка CCD === 
 +Может понадобиться при появлении новых сетей 
 +Удалить существующий ccd файл и 
 +<code bash> 
 +/etc/openvpn/usr.new pupkin_ii 
 +</code> 
 +или **_renew** в папке конфига 
 + 
 +При этом закрепленный за пользователем IP сохранится 
 + 
 +==== Отказоустойчивость ==== 
 +Не предусмотрена 
 + 
 +==== Резервное копирование ==== 
 +RPO - достаточно ежедневной копии папки /etc/openvpn 
 +RTO - на усмотрение заказчика 
 + 
 +==== Мониторинг ==== 
 +В zabbix-agent зарегистрирована метрика **ovpn.users.online** 
 +///etc/zabbix/zabbix_agentd.d/userparam_ovpn.conf// 
 +<code ini> 
 +UserParameter=ovpn.users.online[*],/etc/zabbix/scripts/ovpn.userlist.sh /var/log/openvpn.status 
 +</code> 
 + 
 +Который парсит файл /var/log/openvpn.status скриптом ++++/etc/zabbix/scripts/ovpn.userlist.sh|<code bash> 
 +#!/bin/bash 
 + 
 +f=$1 
 + 
 +userlist=`cat $f | sed -n '/^Common Name/,/^ROUTING TABLE/ p'| tail -n +2 |head -n -1` 
 +rtable=`cat $f | sed -n '/^ROUTING TABLE$/,/^GLOBAL STATS$/ p'` 
 + 
 +echo "$userlist" | \ 
 +while read userline; do 
 +    username=`echo $userline|cut -d, -f1` 
 +    since=`echo $userline|cut -d, -f5` 
 +    utcsince=`date --date="$since" +"%s"
 +    localutc=$(( $utcsince + 18000 )) 
 +    localsince=`date --date="@$localutc" +"%Y-%m-%d %H:%M:%S"
 +    localip=`echo "$rtable"|grep $username|cut -d, -f1` 
 +    echo $username,$localip,$localsince 
 +done 
 +</code>++++ 
 +==== Логирование ==== 
 +Логи расположены по пути 
 +/var/log/openvpn-server.log 
 +/var/log/openvpn-status 
 +Хранить не менее 60 дней 
  
 ==== Отказоустойчивость ==== ==== Отказоустойчивость ====
  • сервисы/пользовательский_vpn.1695048711.txt.gz
  • Последнее изменение: 2023/09/18 14:51
  • admin