RADIUS — немного о Mikrotik, NPS и не только / Хабр

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

Пользователи подключаются к 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 (быстрый путь), которая позволяет направить трафик по быстрому пути, без обработки ядром ОС, что позволяет существенно снизить нагрузку на систему.

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

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

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

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

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

Для начала добавим новую роль, это “Сервер политики сети” (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 утра и в воскресенье

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

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

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

указываем более позднюю windows
указываем более позднюю windows

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

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

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

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

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

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

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

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

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

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

Changelog

24.01.2021 – Добавлено про Wifi Vlan21.10.2021 – Добавлено про ipsec eap

Dot1x

 Зачем нужен dot1X и как его настроить.. очень много интересных слов можно было бы тут написать, но все сказано до нас. Например на канале одного прекрасного тренера или wiki

Половина смысла с саркальной точки зрения в dot1x в том, что в случае успешной проверки подлинности наше устройство попадет в влан указанный нами в микротике или в влан который мы поличим в качестве атрибута у радиуса. Если проверка подлинности пройдет с отказом или ответ не будет получен от радиуса (например в случае его недоступности), то порт перейдет в изолироованный режим (будет заблокирован любой трафик на порту) или в случае если указан Reject VLAN ID то попадет в влан, для которого мы настроили(я надеюсь все таки настроили) максимально безопасные правила форейвола для чужеродных устройств .

Начнем с микротика:

Настроим политики сети: В условиях необходимо отобрать проводные клиенты

Параметры аутентификации:

В настройках атрибутами выдадим рабочий влан

К примеру вот так выглядит отказ в авторизации:

А вот так успешное подключение:

Ipsec

С недавнего времени стало популярно настраивать vpn через ipsec ikev2, но многих пугает морока с клиентскими сертификатами. В этом плане использовать учетные данные из AD гораздо удобнее.

Для начала включим в настроках добавленного радиус клиента что он будет использоваться для ipsec

Дефолтные конфиги в ipsec не принято трогать. поэтому будем создавать свои.

Создадим “группу конфигов”

/ip ipsec policy group add name=ipsec
/ip ipsec policy group add name=ipsec

Настроим Profile (фаза 1)

/ip ipsec profile add dh-group=modp1024 enc-algorithm=aes-192,3des name=ipsec
/ip ipsec profile add dh-group=modp1024 enc-algorithm=aes-192,3des name=ipsec

Создадим пир для входящих подключений

/ip ipsec peer add exchange-mode=ike2 name=ipsec passive=yes profile=ipsec send-initial-contact=no
/ip ipsec peer add exchange-mode=ike2 name=ipsec passive=yes profile=ipsec send-initial-contact=no

Создадим настройки proposals (фаза 2)

/ip ipsec proposal add name=ipsec
/ip ipsec proposal add name=ipsec

Добавим пулл ip адресов которые будут выдаваться клиентам

/ip pool add name=pool1 ranges=10.20.0.10-10.20.0.250
/ip pool add name=pool1 ranges=10.20.0.10-10.20.0.250

Добавим Mod config, из которого клиенты получают префиксы подсетей за впн и dns

/ip ipsec mode-config add address-pool=pool1 name=ipsec split-include=0.0.0.0/0,10.20.0.0/16
/ip ipsec mode-config add address-pool=pool1 name=ipsec split-include=0.0.0.0/0,10.20.0.0/16

Создадим шаблонную политику шифрования трафика

/ip ipsec policy add group=ipsec proposal=ipsec template=yes
/ip ipsec policy add group=ipsec proposal=ipsec template=yes

Настроим аутентификацию vpn клиентовВажный момент. нам все таки прийдется использовать сертификат. Данный сертификат используется только для шифрования трафика между клиентом и впн сервером, и его нужно указать обязательно иначе будет появляться ошибка EAP neeeds certificate if EAP-only is not used.

Если планируете подключаться из windows машин в домене, то можете импортировать сертификат из своего CA и разлить его политикой на ноутбукикомпьютеры.Если нет своего CA то можно сгенерировать сертификат на микротике. но тогда прийдется опять таки его импортировать на клиентах вручную или через GPO.

И на мой взгляд самый удобный способ, воспользоваться сертификатом letsecrypt, кстати в ros7 есть команда для автоматического получения сертификата. Или приобрести коммерческий сертификат. У меня в примере Letsencrypt, обратите внимание что необходимо добавить так же все промежуточные сертификаты.

/ip ipsec identity add auth-method=eap-radius certificate=lefull,lefull_1,lefull_2 generate-policy=port-strict mode-config=ipsec peer=ipsec policy-template-group=ipsec
/ip ipsec identity add auth-method=eap-radius certificate=lefull,lefull_1,lefull_2 generate-policy=port-strict mode-config=ipsec peer=ipsec policy-template-group=ipsec

Добавляем политику на NPS сервере

В методах проверки подлинности разрешаем аутентификацию по паролю используюя ms-chap v2

После этого можно подключаться клиентом, все должно работать ) Если желательно расписать как настраивать клиента на mikrotik дайте знать )

Vpn pptp/l2tp ipsec | настройка mikrotik

PPTP и L2TP IPsec в плане настройки в RouterOS практически идентичны.
Использовать PPTP или L2TP IPsec выбор каждого. Но PPTP не безопасен (хотя кому нужен наш трафик?), а L2TP IPsec создает значительную нагрузку и 2 клиента за 1 NAT’ом могут не правильно работать. Голый L2TP можно использовать наравне с голым GRE, когда нечего шифровать.

/ip pool
add name=pool_VPN_PPTP ranges=172.16.1.1-172.16.1.100
add name=pool_VPN_L2TP ranges=172.16.2.1-172.16.2.100
/ppp profile
add change-tcp-mss=yes local-address=pool_VPN_L2TP name
    remote-address=pool_VPN_L2TP use-encryption=yes
add change-tcp-mss=yes local-address=pool_VPN_PPTP name
    remote-address=pool_VPN_PPTP use-encryption=yes

Не забываем разрешить в firewall входящие подключения для PPTP (tcp:1723) и L2TP IPsec (udp:1701,500,4500)

/ip firewall filter
add action=accept chain=input comment=PPTP dst-port=1723 protocol=tcp
add action=accept chain=input comment=L2TP dst-port=1701,500,4500 protocol=ud

Будет работать доступ в сеть на основе маршрутизации! Выдавать IP адреса из локальной сети не рекомендуется! PPP это отдельный интерфейс со своей адресацией!

Для корпоративной сети с Active Directory можно настроить:

Для доступа в интернет через VPN нужно:

Если вы используете сеть из 10.0.0.0/8, то можете отключать использование шлюза VPN, маршруты прописывать не придется.

Благодарности:

Спасибо @aslancherkesov за злого редактора и свежий взгляд на буквы.

Диагностика

Не всегда наши настройки сразу работают так как надо, иногда что то идет не так, и очень хочется понять что именно. Для того что бы понять в чем причина у нас есть :

Get-NetFirewallRule -DisplayGroup "Сервер политики сети" | where DisplayName -like "*RADIUS*" | Set-NetFirewallRule -Service Any

или для англоязычной версии:

Get-NetFirewallRule -DisplayGroup "Network Policy Server" | where DisplayName -like "*RADIUS*" | Set-NetFirewallRule -Service Any 

Тест:

Настройка

Установку роли описывать не буду, существует 100500 статей в картинках, например: тыц

  1. Добавление радиус клиента на радиус-сервере. Нам нужно заполнить “понятное имя”, IP адрес и придумать пароль (а.к.а. “секрет”), который понадиобится при настройке аутентификатора (mikrotik в нашем случае)

    RADIUS — немного о Mikrotik, NPS и не только / Хабр

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

    Политики имеют порядок и обрабатываются по нему одна за другой. Если подключение не соответствует условиям политики, то проверяется следущая и так далее. К примеру, это поможет разделить правила обработки для проводныхбеспроводных и впн клиентов. {.is-warning}

  1. Добавление политики запросов на подключение

  2. Добавление сетевой политики

Настройка firewall

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

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

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

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

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

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

Некоторые типовые кейсы применения радиус сервера :

  1. централизованная аутентификация на устройствах поддерживающих aaa

  2. аутентификация для vpn (pptpl2tp)

  3. аутентификация в wifi

  4. аутентификация устройств при подключении к порту rj45 – dot802.1x

 Итак подробнее, некоторые плюшки.   Для всех наших пунктов нам нужно настроить радиус клиента в mikrotik

/radius add address=10.10.11.100 comment="PVE AD" secret=STRONG_SECRET_PASSWORD service=ppp,logi
n,hotspot,wireless,dhcp,ipsec,dot1x timeout=600ms

address –  Адрес радиус сервера secret – пароль, который мы совсем недавно настраивали для радиус клиента service – сервисы в mikrotik, которые могут использовать радиус для аутентификации.

Отдельно стоит отметить пункт timeout=600ms, если вы используете радиус через медленные каналы с большими задержками, стоит увеличить это значение.

Теперь можно начинать настраивать интересные вещи.

Определение, назначение, общие сведения

RADIUS – это протокол, для авторизации, аутентификации и учёта (AAA).

Позволяет повысить безопасность сети и централизованно управлять доступами.

Сервер RADIUS может иметь свою базу данных с учетными данными (например файлы или mysql) или работать в паре с другим сервером, например Active Directory.

Кроме AAA позволяет передать некоторые дополнительные данные (настройки) клиенту прошедшему аутентификацию, в том числе vendor-specific attributes (VSA). У Mikrotik такие тоже есть, позже пройдемся по самым интересным.

Существуют много популярных приложений радиус сервера, самый популярные: freeRADIUS и Служба NPS (Network Policy Server) Windows Server. Более подробно мы рассмотрим второй вариант.

Перейдем к впн, и к стразу более интересному сценарию.

Предположим мы хотим отделить админов, от остальных работников. Выдадим админам профиль с подсетью которая будет иметь доступ к management vlan и не только, и выдадим отстальным сотрудникам профиль с подсетью которая будет иметь ограниченый доступ только к 1c, RDP, etc.. . Предположим, мы используюем для впн l2tpipsec Для этого создадим в микротик два профиля в PPP -> profile

Выводы

RADIUS в сетевой среде очень полезен в плане безопасности и удобен в плане централизованного управления. Настраивать не так уж и сложно, главное читать, понимать документацию и логи.

Если какой то из пунктов непонятен, пишите. попробую показать или помочь разобраться.

Если в статье нашли ошибки, неточности или знаете как сделать лучше тоже пишите.

Похожее:  Windows SSO | Справка Firefox

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *