Начнём с описания схемы
Пользователи подключаются к Mikrotik, лучше конечно Mikrotik с аппаратной поддержкой IPsec, это такие модели, как RB730Gr3 или RB4011 или CCR1009, авторизовываясь через AD, для этого нам и потребуется RAIDUS, а далее пользователь должен попадать в сеть для доступа в терминальный сервер( в нашем случаем только в сеть 192.168.10.0/24 vlan 20).
Пользователю запрещено подключаться к нам в сеть и сеть серверов( см. самый последний скриншот).
Начнём создания сети, создаём pool ip которые будем раздавать нашим клиентам
Вот такой диапазон я выбрал, вы же можете взять любой из частных:
Далее создаём 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, начнём со стороны Микротик, как показано на рисунке ниже, радиус будет использоваться только для PPP соединений,
Для начала добавим новую роль, это “Сервер политики сети” (NPS), требуется для разворачивания Radius сервера, пошаговая инструкция ниже.
А так же нам потребуется пакет администрирования 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 и на ней проделать те же самые манипуляции
Далее пошаговые скриншоты по созданию пакета
заходим в настройки
Указываем 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 не принято трогать. поэтому будем создавать свои.
Создадим “группу конфигов”
Настроим Profile (фаза 1)
Создадим пир для входящих подключений
Создадим настройки proposals (фаза 2)
Добавим пулл ip адресов которые будут выдаваться клиентам
Добавим Mod config, из которого клиенты получают префиксы подсетей за впн и dns
Создадим шаблонную политику шифрования трафика
Настроим аутентификацию vpn клиентовВажный момент. нам все таки прийдется использовать сертификат. Данный сертификат используется только для шифрования трафика между клиентом и впн сервером, и его нужно указать обязательно иначе будет появляться ошибка EAP neeeds certificate if EAP-only is not used.
Если планируете подключаться из windows машин в домене, то можете импортировать сертификат из своего CA и разлить его политикой на ноутбукикомпьютеры.Если нет своего CA то можно сгенерировать сертификат на микротике. но тогда прийдется опять таки его импортировать на клиентах вручную или через GPO.
И на мой взгляд самый удобный способ, воспользоваться сертификатом letsecrypt, кстати в ros7 есть команда для автоматического получения сертификата. Или приобрести коммерческий сертификат. У меня в примере Letsencrypt, обратите внимание что необходимо добавить так же все промежуточные сертификаты.
Добавляем политику на 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 статей в картинках, например: тыц
Добавление радиус клиента на радиус-сервере. Нам нужно заполнить “понятное имя”, IP адрес и придумать пароль (а.к.а. “секрет”), который понадиобится при настройке аутентификатора (mikrotik в нашем случае)
Политики запросов на подключение и Стетевые политики очень похожи при настройке, и нужно понимать разницу между ними. Первые нужны для того что бы при определенных условиях определить сервер на котором будет проходить проверка аутентификации клиента (к примеру локально или на другом удаленном радиус сервере) а так же для некоторых манипуляций с атрибутами.
Политики имеют порядок и обрабатываются по нему одна за другой. Если подключение не соответствует условиям политики, то проверяется следущая и так далее. К примеру, это поможет разделить правила обработки для проводныхбеспроводных и впн клиентов. {.is-warning}
Добавление политики запросов на подключение
Добавление сетевой политики
Настройка firewall
Создаём правило в Микротике
Исключение из NAT L2TP клиентов через ipsec:out не требуется, это актуально только для транзитного трафика и чистого IPsec. Поскольку XFRM lookup выполняется после SNAT, для L2TP клиентов RD выполняется раньше чем SNAT, а после инкапсуляции L2TP в ESP, трафик порождается локально и в SNAT не попадает.”
Запрещаем взаимодействие сете между собой ip->firewall->вкладка rules, ставим значение действий “drop”.
Вот и всё, теперь можно проверять, закидываем пользователя в доменную группу, скачиваем zip пакет, устанавливаем и пробуем авторизоваться.
Использовал следующие публикации:
Некоторые типовые кейсы применения радиус сервера :
централизованная аутентификация на устройствах поддерживающих aaa
аутентификация для vpn (pptpl2tp)
аутентификация в wifi
аутентификация устройств при подключении к порту 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 в сетевой среде очень полезен в плане безопасности и удобен в плане централизованного управления. Настраивать не так уж и сложно, главное читать, понимать документацию и логи.
Если какой то из пунктов непонятен, пишите. попробую показать или помочь разобраться.
Если в статье нашли ошибки, неточности или знаете как сделать лучше тоже пишите.