Пояснительная записка (1209853), страница 5
Текст из файла (страница 5)
ClientName.key – приватный ключ хоста Microsoft Windows;
Следует запустить OpenVPN-GUI как обычное приложение Windows с помощью кнопки Пуск. В панели системных задач (в системном «трее», или в панели System Tray) появится значок OpenVPN-GUI в виде небольшого окна с замком.
Для подключения необходимо нажать значок правой клавишей мыши и выбрать «Подключиться». Если все настроено правильно, на экране появится окно соединения, в котором будут отображаться сообщения. После успешного соединения изображение окна с замком станет зеленого цвета. Это означает, что канал VPN установлен. В случае возникновения проблем стоит просмотреть сообщения в окне подключения, а также журнал сервера OpenVPN. В большинстве случаев проблемы связаны с ошибками при подготовке сертификатов и ключей.
Чтобы разъединить канал OpenVPN, требуется нажать значок OpenVPN-GUI правой клавишей мыши и выбрать из меню строку «Отключиться».
3.9 Реализация двойной авторизации пользователей
Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
-
по логину и паролю;
-
по ключу и сертификату в файлах;
-
по ключу и сертификату на криптографическом USB-токене или смарт-карте.
Так как в компании не много сотрудников, которым будет разрешён удалённый доступ, и они не обладают высокими знаниями в информационных технологиях, то будет целесообразно применять авторизацию по USB-токенам или смарт-картам. Чтобы повысить безопасность при авторизации пользователей, будет использована смешанную авторизацию, по сертификату (без пароля) и по ключевой паре логин/пароль.
Для внедрения авторизации по логину/паролю необходимо добавить разработанный скрипт vpn_check на сервер OpenVPN в корневой каталог и прописать его в конфигурации сервера. Скрипт будет вызываться при попытке подключения пользователя, а затем запрашивать логин/пароль от пользователя. После ввода пары логина/пароля сервер получает данные от пользователя и сравнивает с записями в БД. Если логин пароль совпадает с одной из записей в БД, то происходит подключение пользователя к серверу. При этом также происходит проверка и по сертификату. Пример подключения пользователя к OpenVPN с двухфакторной авторизацией показан на рисунке 3.9.1. Сначала клиент и сервер обмениваются самозаверенными сертификатами и подтверждают, что они подлинные. Затем у пользователя запрашивается логин и пароль. Логин и пароль для подключения задаются при создании учётной записи через веб-интерфейс OpenVPN Контроль.
Рисунок 3.9.1 – Запрос логина и пароля
3.10 Реализация разграничения доступа пользователей
Для настройки разграничения удалённого доступа, согласно пункту 3.3. Прежде всего, необходимо убедится в выполнении вышеописанных шагов, сделав подсеть 192.168.10.0/24 доступной для всех клиентов (хотя мы сконфигурируем маршрутизацию так, чтобы позволить клиентский доступ ко всей подсети 192.168.10.0/24, затем требуется применить ограничения доступа, пользуясь брандмауэрными правилами, чтобы реализовать вышеприведенную таблицу политик в пункте 3.3.).
Прежде всего, требуется определить статический номер для нашего интерфейса tun, чтобы позже ссылаться на него в брандмауэрных правилах:
dev tun0
В серверном конфигурационном файле определяется диапазон IP-адресов для администраторов:
server 172.16.0.0 255.255.0.0
Добавляются маршруты для диапазонов остальных пользователей:
-
route 172.16.12.0 255.255.255.0 – сервисные инженеры;
-
route 172.16.13.0 255.255.255.0 – сотрудники лаборатории;
-
route 172.16.14.0 255.255.255.0 – сотрудники по работе с клиентами;
-
route 172.16.11.0 255.255.255.0 – начальники.
Поскольку будут присваивать фиксированные IP-адреса, необходимо использовать каталог клиентской конфигурации:
client-config-dir ccd
Требуется поместить специальные конфигурационные файлы в подкаталог ccd, чтобы определить фиксированный IP-адрес для каждого VPN-клиента:
ccd/Admin_Name
ifconfig-push 172.16.10.5 172.16.10.6
ccd/S_Eng_Name
ifconfig-push 172.16.12.5 172.16.12.6
ccd/Lab_Name
ifconfig-push 172.16.13.5 172.16.13.6
ccd/Staff_Name
ifconfig-push 172.16.14.5 172.16.14.6
ccd/Director_Name
ifconfig-push 172.16.11.5 172.16.11.6
Каждая пара адресов ifconfig-push представляет виртуальные клиентские и серверные IP–конечные точки. Они должны быть взяты из последовательных /30 подсетей, чтобы быть совместимыми с клиентами Windows и с драйвером TAP-Win32. В частности, последний октет в IP- адресе каждой пары конечных точек должен быть взят из этого набора:
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]
Это завершает конфигурацию OpenVPN. Последний шаг – добавить брадмауэрные правила, чтобы финализировать политику доступа. Для этого примера необходимо использовать правила в синтаксисе iptables.
Правила для администратора:
# Admin rule
iptables -A FORWARD -i tun0 -s 172.16.10.0/24 -d 192.168.10.0/24 -j ACCEPT
Правила для сервисного инженера:
# S_Eng rule
iptables -A FORWARD -i tun0 -s 172.16.12.0 /24 -d 192.168.10.7 -j ACCEPT
# S_Eng rule
iptables -A FORWARD -i tun0 -s 172.16.12.0 /24 -d 192.168.10.10 -j ACCEPT
Правила для сотрудников лаборатории:
# Lab rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.7 -j ACCEPT
# Lab rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.11 -j ACCEPT
# Lab rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.14 -j ACCEPT
Правила для сотрудников по работе с клиентами:
# Staff rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.6 -j ACCEPT
# Staff rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.7 -j ACCEPT
# Staff rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.14 -j ACCEPT
Правила для начальников отдела:
# Director rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.5 -j ACCEPT
# Director rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.6 -j ACCEPT
# Director rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.7 -j ACCEPT
# Director rule
iptables -A FORWARD -i tun0 -s 172.16.13.0/24 -d 192.168.10.14 -j ACCEPT
Данные правила продемонстрированы согласно Таблице 3.4.2 «Сопоставление доступа групп пользователей к информационным ресурсам». Они будут фильтроваться брандмауэром, и пользователи будут получать доступ только к тем ресурсам, которые разрешены данными правилами. Эти настройки являются базовыми и настраиваются один раз.
3.11 Разработка веб-интерфейса для мониторинга и контроля пользователей OpenVPN
После успешной базовой настройки OpenVPN сервера и фаервола необходимо упростить задачу администрирования OpenVPN сети. Для этого было принято решение разработать веб-интерфейс со следующим функционалом:
-
Статус OpenVPN сервера;
-
Создание/удаление пользователей с генерированием сертификатов клиентов;
-
Список подключенных пользователей.
Для разработки веб-интерфейса был выбран язык Python 3.4. с библиотекой Django. Django – это бесплатная библиотека на языке Python, упрощающая разработку веб сайта. Имеет свой готовый шаблон сайта и использует шаблон проектирования MVC. Django поддерживает большинство современных СУБД.
Чтобы сайт мог функционировать, его нужно разместить на одном сервере с OpenVPN. Так как используется сервер под управление Centos, для размещения сайта на данной машине необходимо использовать Apache HTTP-сервер. Чтобы разрабатывать сайт под Apache, необходимо добавить модуль mod-Python, и в качестве базы данных будет использоваться PostgreSQL.
3.11.1 Функциональная модель OpenVPN Контроль
Функциональная модель системы разработана с использованием диаграмм вариантов использования UML. Вариант использования – возможность моделируемой системы, благодаря которой пользователь может получить конкретный измеримый и нужный ему результат.
Данная диаграмма отражает отношения между актёрами и вариантами использования (функциями) на концептуальном уровне. Отношения “include” означают обязательное включение одного варианта использования другим, а отношение “extend” – возможное.
На рисунке 3.11.1.1 представлена контекстная диаграмма вариантов использования. На ней показано взаимодействие администратора с веб-интерфейсом, он имеет возможность создавать, изменять, удалять клиентов OpenVPN. Что облегчит работу сопровождения сети VPN.
Рисунок 3.11.1.1 – Контекстная диаграмма использования
3.11.2 Информационная модель OpenVPN Контроль
Назначение данной модели заключается в выявлении внутренней архитектуры веб-интерфейса, определения подсистем и классов, а также взаимодействия между ними.
Класс анализа представляет собой набор из одного или более классов. Элементами, отображаемыми на диаграмме, являются классы и отношения между ними.
Диаграмма классов анализа продемонстрирована на рисунке 3.11.2.1, на ней показан набор классов которые необходимо реализовать для веб-интерфейса сопровождения OpenVPN Контроль.
Рисунок 3.11.2.1 – Диаграмма классов анализа
На рисунке 3.11.2.2 показана диаграмма классов, построенная на основе диаграммы классов анализа. Класс MyAminSite отвечает за загрузку веб-интерфейса. После входа в систему класс UserAdmin подгружает интерфейс для администратора. Класс AddressPoolAdmin служит для работы с пулами адресов, а класс VPNUserAdmin позволяет создавать, изменять пользователя и генерировать сертификаты с конфигурационным файлом. Также имеется возможность загрузить их на АРМ администратора через браузер для дальнейшей работы.
Класс OpenvpmMonitor работает с интерфейсом управления OpenVPN, берёт оттуда статистику, обрабатывает её и передаёт в класс OpenvpnHtmlPrinter для структурирования полученных данных в виде таблиц. Класс VPNUserMonitorAdmin открывает сформированные таблицы классом OpenvpnHtmlPrinter и отображает их на веб-интерфейсе администратора.
Рисунок 3.11.2.2 – Диаграмма классов (физическая)
На рисунке 3.11.2.3 показана диаграмма классов БД, построенная на основе диаграммы классов анализа. База данных состоит из двух частей, первая часть для пользователей веб-интерфейса, вторая – для клиентов OpenVPN. Первая часть БД содержит 6 таблиц. Таблица Auth_user содержит информацию о пользователях веб-интерфейса. Таблица Auth_Permission хранит права для работы в веб интерфейсе. Также предусмотрена таблица Auth_Group, где содержится информация о группе. Таблицы Auth_user_group, Auth_user_ permission, Auth_group_ permission являются промежуточными для связи многие-ко-многим. Вторая часть БД требуется для работы с клиентами OpenVPN. Таблица openvpncontrop_vpnuser содержит информацию о самом клиенте OpenVPN и сгенерированные сертификаты. В таблице openvpncontrop_adresspool содержит информацию о пулах IP-адресов.
Рисунок 3.11.2.3 – Диаграмма классов БД (физическая)
3.11.3 Диаграмма компонентов
Диаграмма компонентов позволяет определить состав программных компонентов, в роли которых может выступать исходный, бинарный и исполняемый код, а также установить зависимости между ними.
При разработке диаграмм компонентов преследуются цели:
-
спецификация общей структуры исходного кода системы;
-
спецификация исполнимого варианта системы.
Данные диаграммы обеспечивают согласованный переход от логического к физическому представлению системы в виде программных компонентов.
На рисунке 3.11.3.1. показана диаграмма компонентов разрабатываемого приложения. На ней изображено физическое представление в виде программных компонентов. Проект представляет папку с файлами с программного кода. Помимо компонентов, показанных на диаграмме, для корректной работы на самом сервере добавлены исполнительные работы, которые помогают выполнять генерацию сертификатов пользователя.
Рисунок 3.11.3.1 – Диаграмма компонентов
3.11.4 Диаграмма развертывания