Архив метки: ikev2

pfSense ikev2 c авторизацией Active Directory

Подготовка

Сертификаты

Для того, чтобы ikev2 без головной боли работал на клиентах, серверу всегда нужен валидный сертификат от реального центра сертификации. Использовать самоподписанные и импортировать CA на всех клиентах то ещё развлечение, по этому

  1. Добавьте запись в DNS, со ссылкой на внешний айпшиник pfsense. Типа vpn.example.com или ещё как-то
  2. Установите в pfSense расширение acme, которое автоматизирует получение бесплатных сертификатов от Let’sEncrypt. Там всё достаточно просто и очевидно.
  3. Получите бесплатный сертификат. Я делал это с проверкой через DNS, что требует добавления текстовой записи вида _acme-challenge.vpn.exmaple.com в DNS
  4. Запомните на будущее, что клиент должен обращаться к серверу только по созданному и указанному в сертификате доменному имени (то самое vpn.example.com)

Авторизация

Для авторизации логично использовать стандартный доменный пароль пользователей, это облегчает жизнь администратору :), но EAP-MSCHAPv2 авторизация не поддерживает прямое обращение к LDAP, т.к. шифрует логин и пароль. Зато шифрованные пароли хорошо поддерживает RADIUS, а Windows умеет в RADIUS, по этому:

  1. Создайте в AD группу, в которую будут входить пользователи VPN. В отличие от LDAP, в pfsense, RADIUS-метод управляет на основе групп, а не на основе контейнеров
  2. Настройте Microsoft NPS по инструкции от NetGate Не забудьте сохранить в блокнот «общий секрет» из мастера — он понадобится при настройке pfSense
  3. Дополните настройку NPS по вот этой инструкции от NetGate
  4. Настройте связь pfSense с RADIUS. Я опять же пользовался инструкцией от NetGate Протокол авторизации — MS-CHAPv2

ikev2

Просто настройте ikev2 по инструкции от NetGate, внеся изменения.

1. Выберите RADIUS-сервер в настройках Mobile Client

2. Выберите EAP-RADIUS протоколом аутентификации при настройках phase 1

Strongswan + Let’sEncrypt. Что делать если не работает

С Debian 10 и примерно соответствующей ей Ubuntu strongswan закрыт аппармором, через это все инструкции типа «создайте ссылки на сертификаты в /etc/letsencrypt/live/yourdomainnamehere» перестали работать.

Решение чертовски простое, хоть и не очевидное. Надо добавить в /etc/apparmor.d/local/usr.lib.ipsec.charon две строчки:

/etc/letsencrypt/live/yourdomainnamehere/* r,
/etc/letsencrypt/archive/yourdomainnamehere/* r,

После чего перезапустить apparmor и strongswan

systemctl restart apparmor
systemctl restart ipsec

И ссылки на сертификаты Let’sEncrypt заработают.

За что я люблю OpenVPN, и чем он плох :)

Я люблю OpenVPN за массу возможностей и простоту настройки

  • Хочешь L2 туннель? А пожалуйста.
  • Хочешь L3? А пожалуйста.
  • Надо работать через прокси? А пожалуйста.
  • Надо отправлять клиентам маршруты и свои DNS? Да вообще нивопрос
  • Windows? Mac? Linux? Плевать. Работает везде.
  • Хочешь авторизацию по сертификатам? Нет, надо по логину? Хочешь тащить логин из домена windows? Да без проблем, любой вариант на выбор

Плюсом к этому отсутствие геммороя с PKI клиентских операционок: просто добавь свой CA в конфигурацию, и всё будет работать.
Не надо импортировть CA в хранилище клиента.
Это просто прекрасно — дал конфиг, работает. Все настройки там

А вот чем плох OpenVPN, это производительность. Он медленный. Просто ужас, какой медленный, в сравнении с ikev2 и wireguard. Но это значит ровно одно — если вам нужен производительный впн: site-to-site какой-нибудь, или просто гонять 1С в тонком клиенте с большими отчётами — выбирайте не openvpn, а если задача быстро развернуть ВПН для доступа в офис, или ещё куда-то — это ваш выбор 🙂