Гид по технологиям

Как настроить Apache для использования RADIUS для двухфакторной аутентификации

• 5 min read • Безопасность • Обновлено 23 Nov 2025
Настройка Apache с RADIUS для 2FA
Настройка Apache с RADIUS для 2FA

Введение

В этой инструкции описано, как добавить двухфакторную аутентификацию WiKID к Apache 2.x с использованием mod_auth_xradius (рекомендуется) или mod_ldap. Суть: при доступе к защищённому ресурсу Apache запрашивает имя пользователя и одноразовый код (OTP), перенаправляет их на WiKID RADIUS и, если ответ положительный, предоставляет доступ.

Кратко: зарегистрируйте Apache как сетевого клиента в WiKID, затем установите и настройте mod_auth_xradius в httpd.conf или .htaccess.

Требования и исходная конфигурация

  • ОС: Fedora Core 5 (пример)
  • Apache 2.2.2-10 (пример)
  • mod_auth_xradius (рекомендуется вместо mod_auth_radius)
  • WiKID Strong Authentication (в примере — коммерческая версия)
  • Наличие домена и пользователей в WiKID

Факт-бокс: ключевые параметры

  • Протокол RADIUS: порт 1812
  • Параметры в примере: AuthXRadiusTimeout 7, AuthXRadiusRetries 2
  • Кэширование: настоятельно рекомендовано (AuthXRadiusCache)

Как работает поток аутентификации (ментальная модель)

  1. Браузер запрашивает защищённую страницу.
  2. Apache отвечает HTTP Basic и запрашивает “username” и “password”.
  3. Пользователь в поле пароля вводит одноразовый код (OTP) с WiKID-токена.
  4. mod_auth_xradius формирует RADIUS-запрос к WiKID с именем пользователя и OTP.
  5. WiKID проверяет и возвращает Access-Accept или Access-Reject.
  6. Apache даёт доступ при Access-Accept.

Эта модель помогает понять, почему важно кэширование OTP результатов и таймауты: многие браузеры делают несколько запросов за одну загрузку страницы.

Настройка на стороне WiKID (сервер)

  1. Войдите в веб-интерфейс сервера WiKID: http://yourwikidserver/WiKIDAdim
  2. Перейдите на вкладку Network Clients
  3. Нажмите Create New Network Client
  4. Заполните форму:
    • IP Address: IP вашего веб-сервера
    • Protocol: выберите Radius
  5. На следующей странице задайте shared secret (общий секрет)
  6. Оставьте поле Return Attribute пустым
  7. На сервере WiKID выполните остановку и запуск встроенного RADIUS: из терминала run ‘stop’ затем ‘start’, чтобы загрузить нового клиента

После этого WiKID готов принимать запросы от Apache.

Установка mod_auth_xradius (на веб-сервере)

Убедитесь, что у вас установлен пакет для разработки Apache (httpd-devel) — он нужен для apxs. Пример установки и сборки:

# yum install httpd-devel
# wget http://www.outoforder.cc/downloads/mod_auth_xradius/mod_auth_xradius-0.4.6.tar.bz2
# bunzip2 mod_auth_xradius-0.4.6.tar.bz2
# tar -xvf mod_auth_xradius-0.4.6.tar
# cd mod_auth_xradius-0.4.6
# ./configure --with-apxs=/sbin/apxs
# make
# make install

Важно: проверьте местоположение apxs (путь может отличаться, например /usr/bin/apxs или /usr/sbin/apxs).

Конфигурация Apache

Добавьте загрузку модуля и включите кэш авторизации в httpd.conf:

LoadModule auth_xradius_module modules/mod_auth_xradius.so
AuthXRadiusCache dbm conf/authxcache

Кэширование результатов аутентификации критично: без кэша каждый HTTP-запрос может запускать RADIUS-запрос, а OTP действителен только один раз — это приведёт к множественным ошибкам аутентификации.

Пример директивы для каталога (директория /var/www/html/radius):


   AuthType Basic
   AuthName "Please enter your username and WiKID one-time passcode for entry to this site."
   AuthXRadiusAddServer "wikid_server_address:1812" "wikidserver_shared_secret"
   AuthXRadiusTimeout 7
   AuthXRadiusRetries 2
   require valid-user

Параметры, которые нужно заменить:

  • wikid_server_address → IP или DNS WiKID-сервера
  • wikidserver_shared_secret → shared secret, который вы задали на стороне WiKID

Вы можете поместить те же директивы в .htaccess или в другой блок Directory/Location в зависимости от того, какие ресурсы должны быть защищены.

Примеры .htaccess

Если вы предпочитаете .htaccess, файл в корне защищаемой папки может выглядеть так:

AuthType Basic
AuthName "Please enter your username and WiKID one-time passcode for entry to this site."
AuthXRadiusAddServer "wikid_server_address:1812" "wikidserver_shared_secret"
AuthXRadiusTimeout 7
AuthXRadiusRetries 2
require valid-user

Учтите: использование .htaccess может иметь влияние на производительность; по возможности лучше держать конфигурацию в основном httpd.conf.

Когда это может не сработать (контрпример)

  • Браузер отправляет несколько параллельных запросов: если нет кэша, OTP может быть использован в первом запросе, а остальные получат отказ.
  • Неправильное системное время на сервере или токене может вызывать рассинхронизацию OTP (если используется TOTP-подобный механизм).
  • Ошибки в shared secret или недоступность WiKID-сервера приведут к отказу аутентификации.
  • Если используется HTTPS с прокси, убедитесь, что IP веб-сервера, который видит WiKID, соответствует добавленному Network Client.

Альтернативные подходы

  • mod_auth_radius или другие RADIUS-модули — иногда совместимы, но mod_auth_xradius обычно проще и современнее.
  • LDAP + OTP-хранилище: если инфраструктура уже использует LDAP, можно комбинировать LDAP для имени пользователя и внешнюю проверку OTP.
  • CAS/SSO с поддержкой 2FA: более крупные инсталляции могут предпочесть SSO-платформу с интеграцией WiKID.

Контрольный список по ролям

Администратор WiKID:

  • Создать Network Client с IP веб-сервера
  • Установить shared secret
  • Перезапустить встроенный RADIUS

Веб-администратор (Apache):

  • Установить httpd-devel и собрать mod_auth_xradius
  • Добавить LoadModule и AuthXRadiusCache
  • Настроить Directory или .htaccess
  • Проверить путь apxs и права на conf/authxcache

Оператор безопасности:

  • Проверить доступность порта 1812 между серверами
  • Убедиться в корректности системного времени
  • Проверить логи при неудачных попытках

Критерии приёмки

  • При вводе корректного username + OTP доступ разрешён.
  • При вводе неверного OTP доступ запрещён.
  • Один и тот же OTP не проходит на нескольких параллельных запросах (если кэш отключён — это проблема).
  • Логи WiKID и Apache показывают успешный RADIUS-диалог.

Безопасность и конфиденциальность

  • Shared secret следует хранить и передавать безопасно (не в открытых репозиториях).
  • По возможности используйте HTTPS для защиты учетных данных при передаче от клиента к серверу.
  • Ограничьте доступ к файлам конфигурации и кэшу (conf/authxcache) правами файловой системы.
  • Логи содержат значения username; при необходимости анонимизируйте или ограничьте доступ к логам.

Отладка и тесты приёмки

  • Проверьте доступность порта: telnet wikid_server_address 1812
  • Включите подробное логирование для mod_auth_xradius и WiKID на время отладки
  • Протестируйте поведение с разными браузерами (некоторые делают больше параллельных запросов)

Mermaid диаграмма потока (для визуализации):

flowchart LR
  Browser-->Apache[Apache + mod_auth_xradius]
  Apache-->WiKID[WiKID RADIUS]
  WiKID-->|Access-Accept|Apache
  WiKID-->|Access-Reject|Apache
  Apache-->|200 OK / 401|Browser

Ссылки

  • WiKID Strong Authentication - Two-Factor Authentication
  • OutOfOrder.cc - Mod_auth_xradius
  • Apache - The Apache Webserver

Краткое резюме

Подключение модульной RADIUS-аутентификации к Apache через mod_auth_xradius позволяет внедрить двухфакторную аутентификацию на базе WiKID. Ключевые шаги: зарегистрировать веб-сервер в WiKID как сетевого клиента, собрать и установить mod_auth_xradius, добавить модуль и кэш аутентификации в конфигурацию Apache, затем корректно настроить директивы Directory или .htaccess. Проверьте таймауты, повторные попытки и логи для надёжной работы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро