Pull to refresh

VPN L2TP Mikrotik+Radius (Windows NPS)

Reading time5 min
Views22K

Сегодня расскажу как настроил L2TP на Микротике с авторизацией через Active Directory (AD). Расскажу про 2 схемы реализации доступа к сетям( чуть-чуть про безопасность).

Конечно вы скажите что таких статей куча( пример, пример 2), но я сделал небольшую автоматизацию для пользователей, читайте далее....

Начнём с описания схемы

Пользователи подключаются к Mikrotik, лучше конечно Mikrotik с аппаратной поддержкой IPsec, это такие модели, как RB730Gr3 или RB4011 или CCR1009, авторизовываясь через AD, для этого нам и потребуется RAIDUS, а далее пользователь должен попадать в сеть для доступа в терминальный сервер( в нашем случаем только в сеть 192.168.10.0/24 vlan 20).

Пользователю запрещено подключаться к нам в сеть и сеть серверов( см. самый последний скриншот).

Начнём создания сети, создаём pool ip которые будем раздавать нашим клиентам

Создаём пул для нашей VPN сети
Создаём пул для нашей VPN сети

Вот такой диапазон я выбрал, вы же можете взять любой из частных:

вот такой диапазон я выбрал
вот такой диапазон я выбрал

Далее создаём PPP профиль IP->PPP->Profiles, DNS я указал -это тоже ip этого микротика, вы можете исходя из этого примера указать 172.16.45.1( это потом нам пригодится), указываем, имя, адрес нашего микротика 172.16.45.1 и выбираем наш только что созданный пул.

Change TCP MSS - yes

Use UPnP можно выбрать no

во вкладке протоколы убираем возможность использования IPv6 (если она у вас есть)

"В PPP Profile оставили Encryption, Compression в default - привет MPPE внутри IPsec", нам этого не надо, поэтому включаем.

После того как создали профиль возвращаемся в назад и включаем L2TP Server, указываем, всё как на рисунке, только между вторым и третьим шагом нужно выбрать наш только что созданный профиль.

На третьем шаге включаем использование шифрования, что бы наши данные если и смогу перехватить, то не смогли бы расшифровать. на четвёртом шаге указываем наш ключ IPsec (чем длиннее, тем лучше)

"Pre Shared Key для IKE AUTH должен быть не менее 32 символов и создан с энтропией не менее 256 бит.

IKE Aggressive exchange необходимо запретить для избегания Offline Dictionary Attack на ваш PSK."

Called ID Type у меня указано ip address, а так же я чуть позже поставил галочку одна сессия на хост (но если работает из под NAT, то больше чем 1 клиент всё равно не подключится)

в Default-Profile указываем наш профиль см. рисунок

"Если вы не уменьшите MTU до fail-safe 1400, то будет выполняться fragmentation after encapsulation, а это приводит к низкой производительности IPsec туннеля.

То есть мы инкапсулируем IP пакет в PPP кадр, далее в L2TP пакет, далее в UDP, потом в ESP, потом если повезёт сразу в IP, если нет снова в UDP и потом в IP, последний этап потребует выполнить фрагментацию поскольку итоговый размер UDP/ESP будет превышать MTU."

Очевидно, что причина этого - сложный путь обработки трафика, который полностью ложится на плечи CPU. Можно ли этого как-либо избежать? Можно, в RouterOS v6 для этого появилась новая технология - Fast Path (быстрый путь), которая позволяет направить трафик по быстрому пути, без обработки ядром ОС, что позволяет существенно снизить нагрузку на систему.

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

Авторизовывать пользователей мы будем через Windows Active Directory, для этого нам потребуется Radius, переходим

IP->PPP->Secrets и как указано на рисунке включаем Radius аутентификацию

включаем Radius аутентификацию
включаем Radius аутентификацию

Далее нам потребуется настроить работу Radius, начнём со стороны Микротик, как показано на рисунке ниже, радиус будет использоваться только для PPP соединений,

  • указываем ip нашего сервера с развёрнутой службой NPS на Windows Server, в нашем случае это 192.168.10.2

  • Придумываем ключ для работы Radius ( взаимодействия Mikrotik и NPS) это не тот ключ, что мы придумывали IPsec

  • Source IP address of the packets sent to RADIUS server оставляем 0.0.0.0/0

2. Настройка Windows Server

Для начала добавим новую роль, это "Сервер политики сети" (NPS), требуется для разворачивания Radius сервера, пошаговая инструкция ниже.

А так же нам потребуется пакет администрирования CMAK

включаем CMAK
включаем CMAK

Запускаем NPS,

Регистрируем сервер а Active Directory

Если работаем с Mikrotik, то достаточно оставить только порты 1812 и 1813

Создаём RADIUS клиента

В нашем случае, это будет Mikrotik, указываем его ip адрес, у нас это шлюз, в пунктах 3,4 (см. рисунок) указываем секретную фразу которую будем использовать для подключения клиента

Идём на контроллер AD, создаём группу доступа к VPN, добавляем в неё пользователей, кто будет иметь доступ к подключению.

Вернёмся в NPS.

Идём в "Политики->Сетевые политики", создаём новую

Указываем в политиках, что пускать будем конкретную группу.

Указываем нормальное имя клиента, что бы боты не подключались

Проверка подлинности будет MS-CHAP-v2, EAP- сертификаты не используем, кто хочет может развернуть центр сертификации и выдавать сертификаты, но это совсем другая история...

Создаём политику запросов

Ограничим работу VPN по дням недели и времени суток( нечего нас ломать пока мы спим)

я запретил работу с 1 ночи до 5 утра и в воскресенье

3. Настройка клиентского пакета через CMAK

учтите если требуется создание пакета для 32-bit систем, то потребуется установить CMAK на машинке 32bit и на ней проделать те же самые манипуляции

Далее пошаговые скриншоты по созданию пакета

указываем более позднюю windows
указываем более позднюю windows
создаём новый профиль
создаём новый профиль
имя службы лучше называть названием организации так будет наглядней для юзера
имя службы лучше называть названием организации так будет наглядней для юзера
т.к. ip может поменяться, лучше указывайте доменное имя, прописать cname или A запись не составит труда
т.к. ip может поменяться, лучше указывайте доменное имя, прописать cname или A запись не составит труда
IPv6 мне тяжелова-то поэтому мы его не используем
IPv6 мне тяжелова-то поэтому мы его не используем
указываем стратеги VPN - L2TP, у меня не правильно выбрано!,
указываем стратеги VPN - L2TP, у меня не правильно выбрано!,

заходим в настройки

интернет мы через себя раздавать не будем, поэтому галочку снимаем
интернет мы через себя раздавать не будем, поэтому галочку снимаем

Указываем IPsec ключ в раздел и "общий ключ" тот что из раздела настройки Mikrotik (см.выше)

Придумываем ПИН-код для запуска данного приложения, этот пин мы будем сообщать пользователю вместо длинного пароля IPsec. У меня пин это что-то не сложное например:

#You2021Company!, где YouCompany название вашей компании.

И вот тут как раз та заковырочка, здесь мы указываем "батничек" с маршрутом, что бы пользователь прозрачно попадал и работал с той сетью, которую мы хотим ему предоставить.

Вот что указано в нашем route.bat

Если хотите, то можно забрендировать, под стиль компании, указать логитип

Указываем файл-соглашение для пользователя (что-то пугающее, что бы свои пароли никому не разглашали!)

По данному пути у нас создаётся рабочий пакет, запаковываем его в zip и закидываем к себе на сайт, и всех пользователей направляем туда, а так же на сайте можно сделать инструкцию, что бы пользователь мог определить нужен ему 32 или 64битный пакет.

Настройка Firewall

Создаём правило в Микротике

Исключение из NAT L2TP клиентов через ipsec:out не требуется, это актуально только для транзитного трафика и чистого IPsec. Поскольку XFRM lookup выполняется после SNAT, для L2TP клиентов RD выполняется раньше чем SNAT, а после инкапсуляции L2TP в ESP, трафик порождается локально и в SNAT не попадает."

В основном правиле  s-nat или маскарадинга (у кого настроен частный случай) указываем что  мы "НЕ НАТИМ"!
В основном правиле s-nat или маскарадинга (у кого настроен частный случай) указываем что мы "НЕ НАТИМ"!

Запрещаем взаимодействие сете между собой ip->firewall->вкладка rules, ставим значение действий "drop".

Вот и всё, теперь можно проверять, закидываем пользователя в доменную группу, скачиваем zip пакет, устанавливаем и пробуем авторизоваться.

Использовал следующие публикации:

Tags:
Hubs:
Total votes 3: ↑3 and ↓0+3
Comments8

Articles