- Подключение
- RADIUS адаптер
- Windows версия
MULTIFACTOR Radius Adapter — программный компонент, RADIUS сервер для Windows.
Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub: код и сборка (архив release.zip).
Лицензия
Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Требования для установки компонента
- Компонент устанавливается на любой Windows сервер начиная с версии 2008 R2;
- Минимальные требования для сервера: 2 CPU, 4 GB RAM, 40 GB HDD (обеспечивают работу ОС и адаптера для 100 одновременных подключений — примерно 1500 пользователей);
- На сервере должен быть открыт порт 1812 (UDP) для приема запросов от Radius клиентов;
- Серверу с установленным компонентом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP proxy;
- Для взаимодействия с Active Directory, компоненту нужен доступ к серверу домена по TCP порту 389;
- Для взаимодействия с Network Policy Server, компоненту нужен доступ к NPS по UDP порту 1812;
- Для записи журналов в Syslog, необходим доступ к Syslog серверу;
- Адаптер должен находиться в домене.
Обратите внимание
Для Windows Server версии младше 2016 необходимо установить Microsoft .NET Framework 4.6.2.
Общие параметры
Общие параметры работы компонента хранятся в секции <appSettings>
файла MultiFactor.Radius.Adapter.exe.config
в формате XML.
Важно
Не заменяйте файл целиком и не удаляйте уже существующие строки
Минимальная конфигурация:
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <!--this service radius server endpoint (0.0.0.0 - listen all interfaces) --> <add key="adapter-server-endpoint" value="0.0.0.0:1812" /> <!--Multifactor API --> <add key="multifactor-api-url" value="https://api.multifactor.ru" /> <!--HTTP proxy for API (optional)--> <!--<add key="multifactor-api-proxy" value="http://proxy:3128"/>--> <!-- minimal log level: 'Debug', 'Info', 'Warn', 'Error' --> <add key="logging-level" value="Debug" /> <!--<add key="logging-format" value="json"/>--> <!--Syslog server--> <!--<add key="syslog-server" value="udp://syslog-server:514"/>--> <!--Syslog format: RFC3164 or RFC5424--> <!--<add key="syslog-format" value="RFC5424"/>--> <!--<add key="syslog-facility" value="Auth"/>--> <!--<add key="syslog-app-name" value="multifactor-radius"/>--> <!--<add key="log-file-max-size-bytes" value="1073741824"/>--> <!-- Опционально. Имя сервиса в Windows --> <!-- <add key="service-unit-name" value=""/> --> <!-- Опционально. Отображаемое имя сервиса --> <!-- <add key="service-display-name" value=""/> --> </appSettings> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
Запись журналов в Syslog
Для записи журналов работы адаптера в Syslog или SIEM систему, добавьте в общие настройки следующие параметры:
<!-- Адрес и порт сервера, протокол может быть udp или tcp --> <add key="syslog-server" value="udp://syslog-server:514"/> <!-- Формат журнала: RFC3164 или RFC5424 --> <add key="syslog-format" value="RFC5424"/> <!-- Категория: User, Auth, Auth2, Local0 .. Local7 --> <add key="syslog-facility" value="Auth"/> <!-- Название приложения (tag) --> <add key="syslog-app-name" value="multifactor-radius"/>
Также доступны расширенные возможности по настройке шаблона записи журналов.
Если syslog передаёт искаженные символы, нужно поменять следующую настройку на false (по умолчанию true):
<add key="syslog-use-tls" value="false" />
Настройка сетевых подключений
Идентификация клиентов
Для настройки каждого сетевого подключения к адаптеру используется отдельный конфигурационный файл с расширением .config, который должен находиться в папке \Clients.
Идентификация клиента производится либо по IP адресу, либо по RADIUS атрибуту NAS-Identifier. По IP удобно идентифицировать конфигурацию единичных сетевых устройств, например, межсетевых экранов. По NAS-Identifier – несколько однотипных, например, группу хостов с WinLogon или SSH.
<!-- IP адрес сетевого устройства, которое будет подключаться к адаптеру --> <add key="radius-client-ip" value="10.10.10.10"/> <!-- Или RADIUS атрибут NAS-Identifier, передаваемый с сетевого устройства при подключении к адаптеру --> <add key="radius-client-nas-identifier" value="windows"/> <!-- Shared secret, настроенный на сетевом устройстве --> <add key="radius-shared-secret" value=""/>
Если идентификация клиентов не требуется, можно сделать универсальные настройки в корневом файле конфигурации MultiFactor.Radius.Adapter.exe.config, которые будут применимы для всех подключений.
Warning
В параметре radius-shared-secret, не поддерживаются спецсимволы: (‘>’, ‘<‘, ‘&’), так как XML-парсер адаптера считает это частью разметки.
Проверка первого фактора в Active Directory
Для проверки первого фактора в домене Active Directory, в конфигурацию клиента к уже существующим параметрам добавьте настройки:
<!-- Где проверять первый фактор: ActiveDirectory --> <add key="first-factor-authentication-source" value="ActiveDirectory"/> <!-- Домен --> <add key="active-directory-domain" value="domain.local"/> <!-- Разрешать доступ только пользователям из указанной группы (не проверяется, если удалить настройку) --> <add key="active-directory-group" value="VPN Users"/> <!-- Запрашивать второй фактор только у пользователей из указанной группы (второй фактор требуется всем, если удалить настройку) --> <add key="active-directory-2fa-group" value="2FA Users"/> <!-- Не запрашивать второй фактор у пользователей из указанной группы (в том числе, если пользователь одновременно находится в группе, заданной в active-directory-2fa-group) --> <add key="active-directory-2fa-bypass-group" value="Bypass 2FA Users"/> <!-- Использовать номер телефона из Active Directory для отправки одноразового кода в СМС (не используется, если удалить настройку) --> <!-- <add key="phone-attribute" value="mobile"/> -->
При включении параметра phone-attribute
компонент будет использовать телефон, записанный в указанном атрибуте пользователя. Формат телефона может быть любым.
Работа с несколькими доменами
Адаптер при запуске находит все доверенные домены и может проводить аутентификацию пользователя в любом из них. Вы можете отдельно настроить список разрешенных или список запрещённых доменов:
<configuration> <configSections> <section name="ActiveDirectory" type="MultiFactor.Radius.Adapter.ActiveDirectorySection, MultiFactor.Radius.Adapter"/> </configSections> <appSettings> ... </appSettings> <ActiveDirectory requiresUserPrincipalName="true"> <!-- Ограничить домены списком ниже /--> <IncludedDomains> <add name="dom1.loc"/> <add name="dom2.loc"/> </IncludedDomains> <!-- Или все домены, кроме перечисленных ниже /--> <ExcludedDomains> <add name="dom3.loc"/> <add name="dom4.loc"/> </ExcludedDomains> </ActiveDirectory> </configuration>
Проверка первого фактора к AD LDS
Для проверки первого фактора в домене Active Directory, внесите в конфигурацию клиента следующие параметры:
<!-- Где проверять первый фактор: AD LDS --> <add key="first-factor-authentication-source" value="AdLds"/> <!-- Адрес каталога AD LDS --> <add key="ldap-url" value="ldap://server:port/base_dn"/>
В адресе каталога:
- схема может быть ldap или ldaps;
- server — имя сервера или ip адрес;
- base_dn — distinguished name контейнера с пользователями, например CN=Users,CN=Instance,DC=domain,DC=local
Проверка первого фактора во внешнем RADIUS сервере
Для проверки первого фактора в RADIUS, например, в Network Policy Server применимы следующие параметры:
<!-- Где проверять первый фактор: Radius --> <add key="first-factor-authentication-source" value="Radius"/> <!-- Адрес (UDP) с которого адаптер будет подключаться к серверу --> <add key="adapter-client-endpoint" value="0.0.0.0"/> <!-- Адрес и порт (UDP) сервера --> <add key="nps-server-endpoint" value="192.168.0.10:1812"/>
Проверка второго фактора перед первым
Адаптер может работать без проверки пароля пользователя, только со вторым фактором доступа. Для настройки используется следующая конфигурация клиента:
<!-- [Опционально] Проверка второго фактора перед первым. Варианты METHOD: "none", "push", "telegram", "otp" --> <add key="pre-authentication-method" value="METHOD"/> <!-- Задержка ответа в секундах при отказе в доступе: случайная в интервале между 3 и 6 сек. (включая границы интервала) --> <add key="invalid-credential-delay" value="3-6" />
Без проверки первого фактора
Адаптер может работать без проверки пароля пользователя, только с вторым фактором доступа. Для настройки используется следующая конфигурация клиента:
<!-- Где проверять первый фактор: None --> <add key="first-factor-authentication-source" value="None"/>
Подключение к серверу аутентификации
Для взаимодействия с серверами аутентификации MULTIFACTOR, которые отправляют второй фактор доступа, необходимо заполнить два параметра в конфигурации клиента:
<!-- Параметр NAS-Identifier для подключения к API MULTIFACTOR - из личного кабинета --> <add key="multifactor-nas-identifier" value=""/> <!-- Параметр Shared Secret для подключения к API MULTIFACTOR - из личного кабинета --> <add key="multifactor-shared-secret" value=""/>
Значения параметров необходимо взять из личного кабинета, в разделе «Ресурсы».
Дополнительные RADIUS атрибуты
При успешной аутентификации, в ответе клиенту компонент может передавать настраиваемые RADIUS атрибуты. Такие атрибуты обычно используются на сетевом оборудовании для разграничения прав доступа.
Атрибуты могут быть четырёх видов:
- Безусловные;
- Условные: с проверкой вхождения пользователя в группу на сервере LDAP;
- Условные: с проверкой имени пользователя;
- С трансляцией значения атрибута LDAP в RADIUS.
Для настройки используется следующий синтаксис конфигурации с примерами для атрибута Class:
<configuration> <!-- Объявление секции RadiusReply --> <configSections> <section name="RadiusReply" type="MultiFactor.Radius.Adapter.RadiusReplyAttributesSection, MultiFactor.Radius.Adapter"/> </configSections> <!-- Параметры работы компонента --> <appSettings> ... </appSettings> <!-- Настройка передачи дополнительных RADIUS атрибутов --> <RadiusReply> <Attributes> <!-- Всегда передавать атрибут Class со значением Test1 --> <add name="Class" value="Test1" /> <!-- Всегда передавать атрибут Class со значением из Ldap атрибута SampleLdapAttr --> <add name="Class" from="SampleLdapAttr"/> <!-- Передавать атрибут Class со всеми группами пользователя в Active Directory --> <add name="Class" from="memberOf"/> <!-- Передавать атрибут Class со значением Users, если пользователь входит в LDAP-группу VPN Users или Staff --> <add name="Class" value="Users" when="UserGroup=VPN Users;Staff"/> <!-- Передавать атрибут Class со значением Admin, если имя пользователя SamlpeAdminName или SampleUserName --> <add name="Class" value="Admin" when="UserName=SamlpeAdminName;SampleUserName"/> </Attributes> </RadiusReply> </configuration>
Названия и значения атрибутов могут быть любыми, которые поддерживаются на вашем сетевом устройстве. Атрибуты, которые зависят от LDAP будут работать в случае, если первым фактором доступа является ActiveDirectory или другой LDAP каталог.
Кэширование аутентификации
Адаптер можно настроить на кэширование аутентификаций пользователей вторым фактором.
В этом этом режиме повторные запросы ранее аутентифицированных вторым фактором пользователей будут приняты без запроса второго фактора. Кэш действует в течение настраиваемого временного интервала.
Запрос является повторным, если параметры текущего запроса совпадают с параметрами предыдущего запроса. Параметры:
- название клиентской конфигурации адаптера;
- IP или Remote Host пользователя;
- логин пользователя.
Для настройки используется следующий параметр:
<!-- Пропускать повторные аутентификации без запроса второго фактора в течение 1 часа 20 минут 10 секунд (кэширование отключено, если удалить настройку) --> <add key="authentication-cache-lifetime" value="01:20:10" />
Защита от сбоев
В случае недоступности (по любой причине) API MULTIFACTOR, адаптер может работать в одном из двух вариантов:
- Пропускать без второго фактора (по умолчанию)
- Отказывать в доступе
Для настройки используется следующий параметр:
<!-- true: пропускать, false: запрещать --> <add key="bypass-second-factor-when-api-unreachable" value="true"/>
Прочие параметры
Дополнительные параметры работы с Active Directory:
<!-- Отключить проверку вложенных групп в Active Directory (ускорение запроса) --> <add key="load-active-directory-nested-groups" value="false"/> <!-- dn контейнеров где искать группы пользователя. Задается через точку с запятой. Пример CN=Users,DC=domain,DC=local --> <add key="nested-groups-base-dn" value="CN=Users,DC=domain,DC=your;OU=Admins,DC=domain,DC=your"/> <!-- Передавать атрибут userPrincipalName из Active Directory в качестве логина пользователя --> <add key="use-upn-as-identity" value="true"/> <!-- Передавать указанный атрибут из Active Directory в качестве логина пользователя --> <add key="use-attribute-as-identity" value="mail"/>
Параметр use-upn-as-identity
устарел, с версии 1.0.231 вместо него следует использовать use-attribute-as-identity
.
Пользователям, регистрирующимся в системе через Radius адаптер, можно автоматически присваивать членство в группах MULTIFACTOR следующей настройкой:
<add key="sign-up-groups" value="group1;Название группы 2"/>
Дополнительные настройки безопасности и конфиденциальности:
<!-- Задержка ответа в секундах при отказе в доступе: случайная в интервале между 3 и 6 сек. (включая границы интервала) --> <add key="invalid-credential-delay" value="3-6" /> <!-- Отключить передачу адаптером ФИО, email, IP пользователей на сервер MULTIFACTOR --> <add key="privacy-mode" value="Full"/> <!--можно указать перечень передаваемых атрибутов--> <add key="privacy-mode" value="Partial:Name,Email,Phone,RemoteHost"/>
Настройка времени ожидания ответа API MULTIFACTOR:
<!-- Время ожидания ответа от api мультифактора, по умолчанию 65 секунд. Время в формате hh:mm:ss --> <add key="multifactor-api-timeout" value="00:01:05"/> <!--Если указываете время менее 65 секунд, используйте следующий синтаксис. Время в формате hh:mm:ss--> <add key="multifactor-api-timeout" value="00:00:45!"/>
Настройка времени ожидания от LDAP каталога:
<!-- Время ожидания ответа от LDAP каталога, по умолчанию 30 секунд. Формат hh:mm:ss --> <add key="ldap-bind-timeout" value="00:00:30"/>
Настройка интервала отправки логов в журнал (доступно указывать от 5 секунд до 10 минут):
<add key="log-file-flush-interval" value="00:00:05" />
Запуск компонента
Компонент может работать в консольном режиме или в качестве службы Windows. Для запуска в консольном режиме достаточно запустить приложение.
Для установки в качестве Windows Service выполните команду с ключом /i
от имени Администратора
MultiFactor.Radius.Adapter.exe /i
Компонент устанавливается в режиме автоматического запуска от имени Network Service
.
Для удаления Windows Service выполните команду с ключом /u
от имени Администратора
MultiFactor.Radius.Adapter.exe /u
Журналы
Текстовые журналы работы компонента находятся в папке Logs
. Если их нет, удостоверьтесь, что папка доступна для записи пользователю Network Service
.
Шаблоны журналов
Для настройки шаблона записи журналов используются следующие настройки в корневом файле конфигурации MultiFactor.Radius.Adapter.exe.config
:
<!-- Примеры шаблонов: 1) [{Timestamp:HH:mm:ss} {Level:u3}] ext_ip={CallingStationId} {Message:lj}{NewLine}{Exception} 2) [{Timestamp:HH:mm:ss} {Level:u3}] {CorrelationId} {Message:lj}{NewLine}{Exception} 3) {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {CorrelationId}{Message:lj}{NewLine}{Exception} --> <!-- Шаблон записи журналов в текстовый файл --> <!-- <add key="file-log-output-template" value=""/> --> <!-- Шаблон записи журналов в консоли --> <!-- <add key="console-log-output-template" value=""/> --> <!-- Шаблон записи журналов в Syslog --> <!-- <add key="syslog-output-template" value=""/> -->
Подробнее о шаблонах: https://github.com/serilog/serilog/wiki/Formatting-Output
Идентификатор корреляции
Для отслеживания событий на протяжении всей цепочки аутентификации пользователя используется идентификатор корреляции {CorrelationId}
.
Значение идентификатора передается в формате «ConfigName-N», где
- «ConfigName» — имя конфигурации клиента, который подключился
- «N» — счетчик, который сбрасывается каждые сутки в 00:00.
Адрес удалённого клиента
Для записи названия хоста или IP удалённого пользователя используется шаблон {CallingStationId}
.
Значение параметра последовательно проверяется в следующих RADIUS-атрибутах до первого непустого:
- Calling-Station-Id;
- MS-Client-Machine-Account-Name;
- MS-RAS-Client-Name.
Работа с несколькими адаптерами
При необходимости использования нескольких Radius адаптеров на одной машине, необходимо выполнить следующие действия.
Так как адаптер запускается в качестве службы, необходимо указать разные имена для каждой службы, а также разные порты в файле конфигурации, чтобы они могли работать на одной машине одновременно.
Чтобы переименовать службы необходимо действовать по инструкции:
- Перейдите в раздел, где хранятся службы Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
- Откройте ключ «Службы», чтобы увидеть все установленные на компьютере службы. Список отсортирован по имени службы.
- Найдите и выделите нужную службу в списке.
- Правой кнопкой мыши нажмите на запись и выберите «Переименовать».
- Введите новое имя. Длина имени не должна превышать 256 символов, недопустимы обратные косые и прямые ссылки.
- Перезагрузите компьютер.
Новое имя службы не вступит в силу до перезагрузки Windows.
Для настройки нескольких портов необходимо настроить корневой файл конфигурации MultiFactor.Radius.Adapter.exe.config следующим образом:
<add key="adapter-server-endpoint" value="0.0.0.0:1812 (https://0.0.0.0:1812/)"/> <add key="adapter-server-endpoint" value="0.0.0.0:181 (https://0.0.0.0:1812/)3"/> <add key="adapter-server-endpoint" value="0.0.0.0:181 (https://0.0.0.0:1812/)4"/>
Обновление RADIUS адаптера
- Остановите службу
- Перезапишите файлы на новые,не заменяя конфигурационные файлы(не подменяйте папку clients с настроенными конфигурациями,)
- Включите службу обратно.
- Основной конфиг (MultiFactor.Radius.Adapter.exe.config) нужно заполнить вручную, не подменяя его.
Кластерная конфигурация
При размещении компонента в кластерной конфигурации придерживайтесь схемы Active/Passive или выбирайте вариант, при котором повторный запрос с клиента будет обрабатываться тем же сервером.
Для наилучшей работы с nginx или HAProxy также укажите в настройках прокси-сервера заголовок proxy_protocol.
Вопросы и ответы
В: Где прописывается сервисная учётная запись для подключения к Active Directory?
О: Сервисная учётная запись не используется, адаптер подключается к AD от имени пользователя, который запрашивает аутентификацию.
В: Можно указать несколько групп AD для контроля доступа и условного включения второго фактора?
О: Да, перечислите их через точку с запятой.
В: Как ускорить проверку групп в Active Directory?
О: По умолчанию адаптер проверяет в том числе вложенные группы, то есть пользователь может состоять в группе или состоять в группе, которая состоит в группе, которую проверяет адаптер. Если запрос занимает более 100 миллисекунд, вы можете отключить проверку вложенности следующей настройкой:
<add key="load-active-directory-nested-groups" value="false"/>
В: Как проверять вхождение пользователей в группы без проверки первого фактора в Active Directory?
О: Укажите в конфигурации домен и группы, адаптер сможет проверить условный доступ и без пароля пользователя. Подключение к AD в таком случае будет выполнено от имени учетной записи, под которой запущен сервис адаптера (обычно, Network Service).
В: Как указать несколько несвязанных доменов или хостов DC?
О: Перечислите их через точку с запятой.
В: Адаптер может работать в режиме Radius proxy?
О: Да, при подключении к внешнему Radius серверу, адаптер работает в качестве прокси: транслирует трафик между сетевым устройством и внешним сервером без изменений.
В: Как указать несколько IP для идентификации клиента?
О: Можно перечислить адреса через точку с запятой, можно указать диапазон, можно комбинировать, например:
<add key="radius-client-ip" value="192.168.0.1-192.168.0.5; 192.168.0.10"/>
или так
<add key="radius-client-ip" value="10.0.0.0/24"/>
Последнее обновление 3 мая 2025 г.
Installing FreeRADIUS on Windows 10
FreeRADIUS is an open source software that provides authentication and accounting services to a network. It is commonly used in enterprise networks to centralize user authentication and accounting for multiple services. In this tutorial, we will guide you through the installation of FreeRADIUS on Windows 10.
Prerequisites
Before installing FreeRADIUS, make sure that you have the following prerequisites:
- A Windows 10 machine with administrative privileges
- An active internet connection
Steps
Follow these steps to install FreeRADIUS:
-
Download the latest version of FreeRADIUS for Windows from the official website.
-
Extract the downloaded file to a folder on your computer.
-
Open the extracted folder and navigate to the
bin
directory. -
Run the
freeradius.exe
file to start the FreeRADIUS server. -
Open a web browser and go to
http://localhost/
. This will open the FreeRADIUS web interface. -
Click on the
Login
button located in the top right corner of the interface. -
In the login page, enter
admin
as the username andenjoyBSD
as the password. Click on theLogin
button to login to the FreeRADIUS interface. -
Once you are logged in, you can configure FreeRADIUS to your liking.
Conclusion
That’s it! You have successfully installed FreeRADIUS on Windows 10. You can now configure FreeRADIUS to authenticate users and accounting for multiple services within your enterprise network.
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!
In this article, we take a look at the top 32 best free open source RADIUS servers solutions available for Linux, Windows, Unix and other platforms.
Are you looking for a Remote Authentication Dial-In User Service (RADIUS) server to authenticate users for network access, authorize how much network access they are allowed, and account for all their activity on the network (Authentication, Authorization, and Accounting – AAA)? An AWS RADIUS server goes beyond your wired infrastructure, to your wireless clients giving them access to your network with their existing identities.
RADIUS Server applications are available with various features and at different price ranges. However, there are a number of open source alternatives that can be easily integrated into your system. You can benefit from the high-quality software, tech support, simple license management, and more services – all at a cost-effective price.
Take a look at top 32 best open source and free RADIUS servers solutions and find the best one for your needs.
Best Open Source RADIUS Servers for Linux / Windows in 2023
1. FreeRADIUS
One of the leading open source RADIUS servers, FreeRadius is available on Linux, Unix, and Windows. Other than the RADIUS Server, FreeRadius includes a BSD licensed client library, Apache module, and a PAM library. Supposed to be the world’s most widely deployed RADIUS server, it is used by more than 50 thousand sites and can support organizations ranging in size from 10 users to over a million users. FreeRADIUS can be configured independently for each of the server IP address, client IP address, home server pool, and inner TLS tunnels.
Setup FreeRADIUS on Azure
Setup FreeRADIUS on AWS
Setup FreeRADIUS on GCP
2. daloRADIUS
daloRADIUS is another advanced open source software solution that effectively meets the requirements of any organization. daloRADIUS is a FreeRADIUS GUI that runs on both Windows and Linux and can manage hotspots and general-purpose ISP deployments. One cutting edge feature of daloRADIUS is that it integrates with GoogleMaps for geo-locating. Other features include user management, graphical reporting, accounting, and a billing engine. Written in PHP and JavaScript, daloRADIUS can manage any radius server and supports multiple database systems; some of them are MySQL, PostgreSQL, Sqlite, and MsSQL.
3. LDAP-RADIUS
LDAP-RADIUS, as the name suggests, is a lightweight open source RADIUS server which uses Lightweight Directory Access Protocol (LDAP) as its authentication source. Written in Go, LDAP, through the use of Transport Layer Security (TLS), can encrypt user sessions between the client and server. LDAP allows for both centralized authentication services and single sign-on services in the network, though it lacks built-in tools for accounting. It runs on Windows, MacOS and Linux.
Deploy Azure RADIUS
Deploy AWS RADIUS
Deploy GCP RADIUS
4. Go-RADIUS
A RADIUS server solution written in Go and which runs on Windows, MacOS and Linux, Go-RADIUS comes with a RADIUS library and server/client support.
It’s quite heavily rewritten fork of another Go RADIUS library
Significant changes are:
Common
-
- Encoding/Decoding of attribute 26 (Vendor-Specific)
- RFC2866 & RFC2869 (Accounting)
Server
-
- Request throttling (maximum requests per second) support
- Supports limiting the number of requests in processing queue
- Multiple RADIUS Secrets based on packet’s source IP with a fallback default
- Request/Response packet replication (useful for logging, IDS etc)
- Configurable UDP buffer size
Client
-
- Lots of vendor-specific (Cisco, Juniper, Mikrotik) functions and constants
- Support for generating CoA/Disconnect-Message packets
5. OpenWISP RADIUS
OpenWISP-RADIUS is another open source RADIUS Server that provides an admin interface to a freeradius database. OpenWISP-RADIUS is available on Linux, MacOS, and Windows and is built on python.
6. TOUGHRADIUS
TOUGHRADIUS has all the functionalities of a standard RADIUS protocol and provides a complete AAA implementation. The other features include flexible policy management, billing policy support and supporting all major access devices. Built on Java, TOUGHRADIUS comes with a high-performance RADIUS processing engine and a simple and easy-to-use web management interface. It supports platforms like Linux, Windows, and MacOS.
Redeveloped from version 6.x onwards, based on the Java language. A high-performance RADIUS processing engine is provided, along with a simple and easy-to-use web management interface that is easy to use.
TOUGHRADIUS is similar in functionality to freeRADIUS, but it is simpler to use and easier to develop by extension. Supports standard RADIUS protocol (RFC 2865, RFC 2866) and provides a complete AAA implementation
7. RADIUS-rs
An async/await native implementation of the RADIUS server and client for Rust.
8. Mod_auth_radius
mod_auth_radius is a FreeRADIUS Apache module for RADIUS authentication. Written in C, mod_auth_radius allows any Apache web-server to become a RADIUS client for authentication and accounting requests. However, it needs a RADIUS server to perform the actual authentication.
How mod_auth_radius works
- The browser requests a page: http://www.example.com/index.html
- Apache notes that the directory is access controlled, and sends a “Authorization Required“.
- The browser asks for a username & password, which it then sends to Apache, along with a request for the page again.
- Apache calls mod_auth_radius, which notes that there is no RADIUS cookie in the request.
- mod_auth_radius packages up the username/password into a RADIUS request, and sends it to the RADIUS server.
- The RADIUS server does its magic, and decides yes/no for authentication.
- If no, mod_auth_radius returns DENIED.
- If yes, mod_auth_radius returns a cookie containing MD5’d public+private information.
- The web browser uses this cookie on all subsequent requests, and mod_auth_radius verifies the cookie is valid, and doesn’t contact the RADIUS server again.
9. Pyrad — RADIUS for Python
pyrad is an implementation of a RADIUS client/server as described in RFC2865. It takes care of all the details like building RADIUS packets, sending them and decoding responses. Pyrad requires Python 2.7, or Python 3.6 or later. Simple Radius server on Python, check the implmentation Github repo.
10. Radiusd
An open source RADIUS Server, radiusd is a distributed Radius server that can perform both authentication and accounting. Radiusd is available on Linux, MacOS, and Windows and is built on Go.
Implemented RFCs in RADIUSd:
- auth https://tools.ietf.org/html/rfc2865
- acct https://tools.ietf.org/html/rfc2866
- CHAP https://tools.ietf.org/html/rfc1994
- MSCHAP1+2 http://freeradius.org/rfc/rfc2548.html
- MSCHAP1 https://tools.ietf.org/html/rfc2433
- MSCHAP2 https://tools.ietf.org/html/rfc2759
- MPPE (RC4 encryption) https://www.ietf.org/rfc/rfc3079.txt
11. eradius
Eradius or Erlang RADIUS server framework contains a generic RADIUS client, support for several authentication mechanisms and dynamic configuration. It is available on Windows and Linux platforms.
12. OpenRADIUS
OpenRADIUS is a RADIUS server that links your network access devices to your user, service profil-, and usage databases.
OpenRADIUS has a powerful external module interface that uses pre-spawned subprocesses and pipes for communication, allowing you to implement modules in any language that supports Unix pipe I/O. Its behaviour is fully configurable, using a simple built-in language that gives you full control over the request and reply list.
It includes versatile LDAP and SQL modules, a full featured RADIUS client, and a fully functional example configuration for metered pre-paid accounts.
OpenRADIUS Features:
- Ability to get shared secrets, authentication information, policies and user profiles from any available external data source.
- Support for password databases, including NIS/NIS+, Livingston-style ASCII files, LDAP directories and SQL databases out of the box.
- Fully customizeable authentication schemes and security policies, using a built-in business rule language.
- Simple, scalable and fully documented module interface. Modules may supply data such as user information, and may also store data such as logging and accounting.
- Modules can be written in any language that supports ASCII or binary Unix pipe I/O.
- The interface allows multiple module subprocesses to be started for each data source, allowing modules to be single-threaded while retaining support for multiple concurrent requests to the same data source.
- Flexible dictionary that can be made to support any type of non-standard vendor-specific attribute, including multiple attributes inside the same VSA, non-standard attribute IDs or length fields, subfields, and much more.
- Binds to a single or multiple IP addresses/network cards, and listen on multiple ports.
13. Windows NPS Server (Network Policy Server)
Network Policy Server (NPS) allows you to create and enforce organization-wide network access policies for connection request authentication and authorization. You can also configure NPS as a Remote Authentication Dial-In User Service (RADIUS) proxy to forward connection requests to a remote NPS or other RADIUS server so that you can load balance connection requests and forward them to the correct domain for authentication and authorization.
NPS allows you to centrally configure and manage network access authentication, authorization, and accounting with the following features:
- RADIUS server. NPS performs centralized authentication, authorization, and accounting for wireless, authenticating switch, remote access dial-up and virtual private network (VPN) connections. When you use NPS as a RADIUS server, you configure network access servers, such as wireless access points and VPN servers, as RADIUS clients in NPS. You also configure network policies that NPS uses to authorize connection requests, and you can configure RADIUS accounting so that NPS logs accounting information to log files on the local hard disk or in a Microsoft SQL Server database.
Deploy Windows NPS Server in the Cloud
- How to Setup AWS RADIUS Server (NPS) Cloud RADIUS for Wireless Authentication
- How to Setup RADIUS Server in Azure for Wireless Authentication
- How to Setup RADIUS NPS Windows Server in GCP for Wireless Authentication
14. Pam_RADIUS
This is the PAM to RADIUS authentication module. It allows any Linux, OSX or Solaris machine to become a RADIUS client for authentication and password change requests. You will need to supply your own RADIUS server to perform the actual authentication. Use to enable two factor authentication (MFA) for your WIFI/VPN clients.
15. Gluu RADIUS Server
Gluu ships with a very small Radius Server. It’s not meant for high performance requirements. For scale and concurrency. But if you just have some ad hoc Unix logins, and you want to use Super Gluu for authentication, this little Radius server can get the job done for you!
16. Dapphp Radius
Dapphp-Radius is a pure PHP RADIUS client for authenticating users against a RADIUS server in PHP. It works with a few RADIUS servers like Microsoft Windows Server 2016 Network Policy Server, Microsoft Windows Server 2012 Network Policy Server and FreeRADIUS 2 and above.
Dapphp\Radius is a pure PHP RADIUS client for authenticating users against a RADIUS server in PHP. It currently supports basic RADIUS auth using PAP, CHAP (MD5), MSCHAP v1, and EAP-MSCHAP v2. The current 2.5.x branch is tested to work with the following RADIUS servers:
- Microsoft Windows Server 2019 Network Policy Server
- Microsoft Windows Server 2016 Network Policy Server
- Microsoft Windows Server 2012 Network Policy Server
- FreeRADIUS 2 and above
PAP authentication has been tested on:
- Microsoft Radius server IAS
- Mideye RADIUS Server
- Radl
- RSA SecurID
- VASCO Middleware 3.0 server
- WinRadius
- ZyXEL ZyWALL OTP
The PHP openssl extension is required if using MSCHAP v1 or v2. For older PHP versions that have mcrypt without openssl support, then mcrypt is used.
17. Radierl
Radierl is a RADIUS protocol in Erlang which is used to build embedded RADIUS servers for applications such as authentication, authorization and accounting (AAA) servers.
The radierl project provides a RADIUS protocol stack application.
The stack handles receiving UDP packets on sockets, silently discarding packets with invalid RADIUS Code or Length, starting a process to handle the transaction and calling the stack user’s defined handler. The transaction handler then responds directly to retransmitted requests without calling the user’s handler again.
18. TinyRadius
TinyRadius is a fast and reliable Radius library capable of sending and receiving Radius packets. Built in Java, TinyRadius helps to implement Radius services in applications.
TinyRadius is a simple, small and fast Java Radius library capable of sending and receiving Radius packets of all types. It is released under the terms of the LGPL.
What can you do with TinyRadius
- Send and receive Radius packets (Access-Request, Access-Accept, Access-Reject, Access-Challenge, Accounting-Request, Accounting-Response and others) from within your Java application
- Use PAP and CHAP as authentication types for Access-Request messages
- Attach arbitrary Radius attributes to the packets employing attribute names read from a dictionary file
- Send and receive Radius packets with “Vendor-Specific” attributes
19. Tiny Radius Netty
TinyRadius-Netty is a Radius library, based on the TinyRadius Radius library. Built with Java 8 and Netty patterns, some of the other features that TinyRadius-Netty performs are sending/receiving Radius packets, signing and verifying for access and accounting requests/responses, attach arbitrary attributes to packets, etc.
Tiny RADIUS Netty Features
- Sends/receives Radius packets
- Signs and verifies Request Authenticator for Access and Accounting requests/responses
- Supports verifying and encoding for PAP, CHAP, and EAP (Message-Authenticator)
- Attach arbitrary attributes to packets
- Loads dictionaries recursively from file system or classpath (Radiator/FreeRadius format)
20. FNS-RADIUS
FNS-RADIUS uses a web interface (Mysql/php) and FreeRADIUS. It runs on Linux Ubuntu Server and is LDAP/Kerberos ready as well. Available with GNU General Public License version 2.0 (GPLv2).
21. FreeRADIUS Server Configuration Tool
Developed for the Linux operating system and written in Python, FreeRADIUS-Server-Configuration-Tool can configure any FreeRADIUS servers easily and perform authentication, authorization, and accounting quickly. The purpose of the program is to configure the FreeRADIUS server easily and quickly.
22. WinRADIUS
WinRADIUS is a Windows native port of FreeRADIUS Server. Runs on 64-bit Windows OS. Built in options include OpenSSL, OpenLDAP, PostgreSQL, Python, IPv6.
WinRadius is a standard RADIUS server for network authentication, accounting. It’s easy to use, and can be used for telecommunication accounting platform, PPP authentication, accounting server. It support PPP, PPPoE, PPTP, VPN, VoIP, ADSL, Cable Modem, CDMA, GSM, GPRS, WLAN(802.1x), etc. It’s a perfect authentication, accounting solution for wide-band, VoIP, W-LAN, etc.
WinRadius is suitable for intelligent building, wide-band network, remote CAI, ISP, VPN, IP Phone, and so on. It’s stable, full-functioned solution.
23. Flexinets Radius Server
Flexinets.radius.radiusserver is a RADIUS server library for .NET Standard. This project can be used to create a Radius server in for example a Windows Service.
Packets are handled in multiple threads without running several instances. This can be useful when packet handlers do something slow, like lookups from external dependencies.
Pluggable packet handlers for different remote IPs. Conditionally compliant with RFCs
rfc2865
rfc2866
rfc5997
24. Pepper Spot
PepperSpot is a captive portal or wireless LAN access point controller which support the IPv6 protocol. It supports web based login and it supports Wireless Protected Access (WPA). Authentication is handled by your favorite radius server (over IPv4/IPv6).
PepperSpot is a Captive Portal which allow an authenticated user to access a service network, in most case Internet. PepperSpot is destinated to be used by wireless clients.
PepperSpot is a fork of the well-known captive portal ChilliSpot. The particularity of PepperSpot is that it can provide IPv6 access to Wi-Fi clients.
25. HostAPD / Host Access Point Daemon
Hostapd is a user space daemon for access point and authentication servers. It implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server. The current version supports Linux (Host AP, madwifi, mac80211-based drivers) and FreeBSD (net80211).
hostapd is designed to be a “daemon” program that runs in the background and acts as the backend component controlling authentication. hostapd supports separate frontend programs and an example text-based frontend, hostapd_cli, is included with hostapd.
Hostapd Supported Features:
- WPA-PSK (“WPA-Personal”)
- WPA with EAP (with integrated EAP server or an external RADIUS backend authentication server) (“WPA-Enterprise”)
- key management for CCMP, TKIP, WEP104, WEP40
- WPA and full IEEE 802.11i/RSN/WPA2
- RSN: PMKSA caching, pre-authentication
- IEEE 802.11r
- IEEE 802.11w
- RADIUS accounting
- RADIUS authentication server with EAP
- Wi-Fi Protected Setup (WPS)
26. RADIUSdesk
RADIUSdesk is a web gui for FreeRADIUS to manage your WiFi network.
RADIUSdesk Features:
- A Modern dashboard that is easy to navigate
- Easy to use API that makes third party integration a snap
- Login pages applet for central hotspot login page management.
- Support Social Login (Facebook etc) integration for CoovaChilli and Mikrotik.
- A device manager which makes BYOD a pleasure for any enterprise.
- Fine grained rights management.
- Extensive usage graphs for fine grained trend analysis and capacity planning.
- i18n. Easy translations. Also supporting rtl languages.
- Advanced debug trace applet to allow real-time debug traces on FreeRADIUS by using Websocket.
- MESHdesk applet that helps to set-up, manage and monitor Batman-adv mesh networks
27. TACPPD
TACPPD this is Tacacs + plus daemon (TACacs Plus Plus Daemon). TACPPD is is AAA server (authentication, authorization, accounting) for network devices. The main goal – create distributed AAA environment with a full database support + integration with billing system and with real-time user sessions control.
This is “all-in-one” system (tacacs+ with telnet server, with http server, with NetFlow collector, with SNMP poller and other) easily deploy to a VM with telnet/web control and AAA server functionality. Tacppd core use C++ and web/billing interface uses Perl. It can be compiled for any *nix system with POSIX threads. Most information about network devices valid only for Cisco equipment. Read more on TACPPD
28. SMRadius
SMRadius is a high performance pre-forked radius AAA server, it features a highly configurable backend engine supporting flexible data specifications. The primary goal of the SMRadius project is to provide an extremely flexible authentication platform which may serve a large number of industries (ISPs, WiSPs … etc).
SMRadius Features:
- Network Engine
- Database/Storage (MySQL, PostgreSQL, Oracle, SQLite3
- Authentication (PAP, CHAP, MSCHAPv1, MSCHAPv2, MPPE)
- Radius Protocol
- Web Control Panels (GUI)
- More..
29. ezRADIUS
ezRADIUS is a FreeRADIUS gui and Chillispot web-based management app. The main aim is to provide radius server or hotspot administrator vai a simple web-based management application.
30. BSDRadius — RADIUS Server for VoIP
BSDRadius is free and opensource RADIUS (Remote Authentication Dial In User Service) server to use primarily in Voice over IP (VoIP) application. It complies with RFC2865 and related RFC, and is extensible by user-defined modules. It is completely written in Python. BSDRadius uses a popular library – pyrad – for lower level operations such as parsing attribute dictionaries and building accounting and authorization packets
31. Keycloak RADIUS
Keycloak RADIUS plugin allows you to enable RADIUS on your Keycloak server.
Keycloak RADIUS Plugin Features:
- Embedded radius server in keycloak server
- use keycloak authentication and authorization for the embedded RADIUS server
- radius oidc password
- webAuthn authentication. Radius Authentication using your fingerprint or FIDO2 security key
- radius OTP password (TOTP/HOTP via Google Authenticator or FreeOTP)
- use Keycloak user credentials, if radius access-request protocol is PAP Otherwise is using Keycloak Radius credentials or OTP
- use Kerberos/ldap credentials(only if Radius client use PAP authorization)
- can work as radius proxy
- support Radsec Protocol (Radius over TLS)
- Map Keycloak authorization , Role, Group and User Attributes to Radius Attributes
- conditional attributes for authorization/Role/Group/User
- reject attribute for authorization/Role/Group/User
- dynamically assign attributes based on keycloak policies(Role, javascript, Time, User)
32. OpenVPN RADIUS
RADIUSPlugin is an OpenVPN plugin for RADIUS authentication and RADIUS accounting with support of some RADIUS attributes like framed ip address, framed routes and acct interim interval. Vendor specific attributes can be also used by defining own scripts.
The secret is out: pre-shared key-backed networks do not provide enough defense against hackers and data thieves. A survey found that 74% of IT decision-makers whose data had been breached in the past say the hack involved privileged access credential abuse. Even complex credentials are susceptible to over-the-air credential theft.
Backing your network with a RADIUS server can help close these security gaps. NPS is a common RADIUS solution for Windows.
Using NPS as a RADIUS Server
A RADIUS server authenticates users’ identities and authorizes them for network use. A user becomes authorized for network access after enrolling for a certificate from the PKI ( Public Key Infrastructure) or confirming their credentials. Each time the user connects, the RADIUS confirms they have the correct certificate or credentials and prevents any unapproved users from accessing the network. Check out how a SecureW2 client upgraded their network infrastructure to eliminate any risk of MITM attacks with a RADIUS-backed network.
RADIUS servers are typically implemented through NPS (Network Policy Server) if you’re using Windows. Originally created to enforce network access policies, NPS is frequently used as a RADIUS server.
NPS allows you to authenticate clients using Active Directory (AD) through a wide variety of access points, including the following:
- 802.1x switches
- Wi-Fi
- VPN
- Dial-up
- Router-to-router
While the integration between NPS and AD is more or less manageable, it’s an aging technology that is difficult to integrate into more modern infrastructures. This is especially noteworthy if you’re working in the cloud, which Microsoft doesn’t offer a RADIUS solution.
How To Set Up Windows RADIUS with NPS
This walkthrough will guide you through installing RADIUS server roles in Windows server 2019.
1. Set up a Security Group
In the Active Directory domain, create a security group. Add all of the users that will authenticate through your new RADIUS.
2. Add Network Policy and Access Services Role
The Server Manager console contains the Add Roles and Features wizard. That wizard handles the installation and configuration of all of the optional Windows Server features, including NPS. Select the Network Policy and Access Services role.
After the role installation is completed, open the Network Policy Server (nps.msc) in the Tools menu.
3. Snap-In NPS to AD
Find the root labeled “NPS (Local)” and right-click on it. Choose “Register server in Active Directory”.
Select OK in the confirmation dialogue box that pops up.
4. Add RADIUS Client to NPS
In your NPS console tree, there should be a RADIUS Clients and Servers folder. To add the new RADIUS client, expand the RADIUS Clients and Servers section in the NPS console tree and select New on the RADIUS Clients item.
On the Settings tab, fill the following fields. “Friendly Name” is your client nickname, “Address” can be the IP or DNS name, and “Shared Secret” should have been determined when you configured the access point.
Note: Shared secrets are a weak form of authentication security. Digital certificates offer the best security. Certificates are similarly easy to authorize. Add your access point certificate to the personal certification store on the Local Machine, then request and import the certificate to the NPS server.
SecureW2 allows you to easily generate a custom private CA and export the .p12 to then import into NPS. Or, you can import your AD CS certificates and use SecureW2 to enroll end-user devices to self-service themselves for client certificates for your AD CS Certificate Authority.
If you’re using a major access point vendor, such as Aruba or Cisco, navigate to the advanced tab and select the vendor from the “Vendor Name” list.
Your Windows Server RADIUS is now ready to go! Users will need to be manually added and removed from the security group unless you use an onboarding solution like the one offered by SecureW2. Click here to check out our world-class automatic enrollment suite JoinNow.
Cloud RADIUS + Windows: A Better Solution
A major issue with NPS is that using it essentially locks you into using Windows as your vendor. NPS is only compatible with Active Directory through the LDAP protocol. While you can use third-party vendors to overcome this hurdle, it creates unnecessary complications for your infrastructure, putting your network at risk.
Furthermore, NPS was designed to be used as an on-premise solution with AD because it was made long before cloud solutions became prevalent. There is no native ability to connect NPS with cloud directories, and it doesn’t even work with Microsoft’s own cloud platform, Azure.
Forward-thinking companies know that the future is in the cloud, so your RADIUS should be, too.
Cloud RADIUS is a turnkey solution that allows you to bridge the gap between on-prem and cloud without the expensive forklift upgrade you would need with Azure. SecureW2’s RADIUS and Managed PKI Services integrate seamlessly with every major vendor. We’ve worked with countless organizations to migrate to an all-cloud environment using Azure with Cloud RADIUS. Check out our pricing page to see how we can help you.
Eytan Raphaely
Eytan Raphaely is a digital marketing professional with a true passion for writing things that he thinks are really funny, that other people think are mildly funny. Eytan is a graduate of University of Washington where he studied digital marketing. Eytan has diverse writing experience, including studios and marketing consulting companies, digital comedy media companies, and more.
Windows Clients (10/11), SAMBA AD (4.17) and FreeRADIUS (3.2.2)
This is a copy of the configs I used to get Windows 10/11 clients on a SAMBA AD to use machine authentication for WiFi, and also allow users to authenticate with their AD credentials on a Rocky Linux box. The Linux FreeRADIUS machine needs to be joined to the SAMBA domain and able to authenticate users and computers. More details in the samba
directory.
I expect this process can be tweaked (perhaps using a Windows AD server to generate certificates for each PC client instead of using machine credentials, but that requires a Windows server — something I was trying to avoid). But, this way worked well for me.
The idea is that you create groups in AD for the machines and users which you then define in /etc/raddb/mods-config/files/authorize
and allocate a VLAN to them. That way you can have one SSID that handles both machines (corporate) and users (BYOD). You obviously need to have WiFi APs that can handle dynamic VLANs — I used openWRT with hostapd and it works very well. hostapd
config is in openwrt
.
The freeRADIUS config is in raddb
, and the Windows group policies are in windows
.
In addition to the freeRADIUS and Windows configs, you also need to make a load of certificates for the radius box to authenticate with the domain controller, which is in dc01
. This is one of the parts I struggled with as it’s quite fiddly. I made extensive use of the ‘bootstrap’ script that comes with freeRADIUS in the certs
directory to keep generating certificates until I had them just right.
It took me ages to figure it all out, with lots of help from the mailing list, and eventually I got it working and it was great and I hope this documentation helps someone else. Then I was told to move to Microsoft’s cloud and now it’s all rubbish.