Готово!
Скоро материал придет на указанную электронную почту. Также подписывайте на нас в Facebook
Ok
Корпоративный OpenVPN, или как сделать тигра из кошки
Не буду ставить OpenVPN на место идеального решения ВПН. В этой статье разберу, как, используя сертификаты и ldap-аутентификацию в экосистеме Microsoft, организовать доступ разных групп пользователей в определенные закрытые сегменты корпоративной сети (авторизация). Никаких Easy-RSA и самоподписных сертификатов – максимальная корпоративность и автоматизация.
Пулы IP-адресов, связанные с группами безопасности, позволят разделить разных функциональных пользователей по группам на межсетевом экране. В бесплатной версии OpenVPN группы и пулы не предусмотрены, поэтому будем использовать скрипты при подключении и отключении клиента.
В рассмотренной в статье схеме присутствует 3 фактора проверяемых при входе пользователя:
-
— Сертификат пользователя («фактор владения», расположен в хранилище сертификатов компьютера пользователя, можно сделать не экспортируемым)
-
— Имя/пароль пользователя («фактор знания», проверяется в Microsoft Active Directory)
-
— Единый ключ («фактор владения», часть конфига клиента, в основном защита от DDoS)
Таким образом, при правильной реализации системы распространения сертификатов сможем получить полноценную многофакторную аутентификацию с неплохой защитой от DDoS-атак.
Рисунок 1 показывает схему аутентификации и авторизации, рассмотренную в статье:
Для реализации данной схемы нам понадобятся:
— Домен Microsoft Active Directory (MS AD)
o Пользователи и компьютеры в домене
o Три группы безопасности OpenVPN_sg1_users, OpenVPN_sg2_users, OpenVPN_sg3_users пользователями
o Сервисная учетная запись для чтения списка пользователей
— Сервер Microsoft Active Directory Certificate Server (ADCS, PKI)
o Система PKI (AD CS) должна быть внедрена в домен.
— Виртуальная машина Linux для сервера OpenVPN с выходом/входом в интернет
— Сетевая связность с контролером домена
— Межсетевой экран
Конфигурирование Microsoft Active Directory, межсетевых экранов и PKI выходит за рамки статьи, хотя важные комментарии обязательно приведу. Будем считать, что вы уже имеете корпоративную инфраструктуру Microsoft с работающими сервисами из списка выше. Данная статья фокусируется только на конфигурации OpenVPN.
Установка приложений и OpenVPN
В целом установка OpenVPN сервера на большинстве веток Linux не вызывает каких-то особенных трудностей. В моем случае была использована Ubuntu 22.04 LTS.
sudo apt update -y
sudo apt install openvpn openssl ldap-utils openvpn-auth-ldap dos2unix -y
Сервер готов к конфигурированию и дальнейшей работе.
Если вы используете «усиленные» версии Linux, возможно вам понадобится добавить разрешения локальных межсетевых экранов.
Настройка маршрутизации
Делаем роутер из виртуальной машины:
sudo nano /etc/sysctl.conf
добавляем строчку:
net.ipv4.ip_forward=1
Перезапускаем сервис:
sudo sysctl -p
Мы настраиваем доступ к корпоративной сети, поэтому выход в интернет с виртуальной машины (а это SNAT, iptables и т.п.) мы не настраиваем. (это НЕ обход блокировок и т.п., это корпоративный ВПН)
Не забываем про роутинг. В данном примере будем использовать пул адресов клиентов 10.10.0.0/16. Трафик должен маршрутизироваться через нашу виртуальную машину.
Готовим сертификат сервера
Дисклеймер: Конфигурирование PKI выходит за рамки данной статьи. Далее скриншоты и комментарии приведены только относительно важных параметров.
Каждый клиент проверяет сертификат сервера при подключении. Эта мера не позволит злоумышленнику использовать поддельный сервер, например, для сбора корпоративных паролей. Сертификат сервера подписывается корневым центром сертификации и таким образом встраивается в систему PKI от Microsoft.
Итак, выпускаем сертификат для OpenVPN-сервера вручную.
Для сервера нет каких-то специфических требований, за исключением EKU, который мы «заставим» проверять всех клиентов в их конфигурационном файле.
Продолжение читайте на Хабре.
Будьте в курсе новостей
Подпишитесь на рассылку и будьте в курсе наших последних новостей