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

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

6 min read Security Обновлено 28 Nov 2025
Apache + RADIUS для двухфакторной аутентификации
Apache + RADIUS для двухфакторной аутентификации

Введение

Этот документ объясняет, как добавить двухфакторную аутентификацию WiKID к Apache 2.x с помощью mod_auth_radius на Ubuntu 8.1. Здесь описаны практические шаги: регистрация веб‑сервера как RADIUS-клиента на сервере WiKID, установка модуля в Apache и настройка конфигурации для работы с одноразовыми паролями (OTP).

Важно: модификация mod_auth_radius, которая поддерживает Apache 2.2+, была обновлена для Debian/Ubuntu. Для дистрибутивов на базе RedHat рекомендуется использовать mod_auth_xradius.

Зачем использовать взаимную HTTPS‑аутентификацию

Взаимная (mutual) HTTPS‑аутентификация повышает защиту: сервер аутентифицируется перед клиентом криптографически, что затрудняет атаки типа man-in-the-middle. Некоторые сайты отображают картинку для «проверки» сервера, но это легко воспроизвести злоумышленником. WiKID реализует проверку, сравнивая хеш сертификата сайта, полученный с WiKID сервера, и хеш скачанного SSL‑сертификата. Совпадение подтверждает подлинность сервера.

Среда и требования

  • Ubuntu 8.1
  • Apache 2.2.9-7
  • libapache2-mod-auth-radius 1.5.7-8 (ранние версии не работают)
  • WiKID Strong Authentication (коммерческая версия в примере)

Предположение: у вас уже настроён домен WiKID и созданы пользователи.

Как это работает (коротко)

Когда пользователь открывает защищённую ссылку, Apache запрашивает имя пользователя и пароль. Пользователь генерирует одноразовый пароль на WiKID токене и вводит его как пароль. Apache пересылает имя пользователя и OTP на WiKID через RADIUS. Если WiKID подтверждает совпадение, Apache даёт доступ.

Шаг 1 — добавить веб‑сервер как RADIUS‑клиент в WiKID

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

Важно: сохраните shared secret в надёжном месте — он потребуется в конфигурации Apache.

Шаг 2 — установка mod_auth_radius на Apache

Если Apache ещё не установлен, установите пакет модулей RADIUS:

$ sudo apt-get install libapache-mod-auth-radius

После установки нужно добавить настройки в конфигурационные файлы Apache.

Шаг 3 — защищаем каталог в apache2.conf

Создайте каталог, который будет защищён двухфакторной аутентификацией. В этом примере защищён весь сайт — добавьте в apache2.conf:


  Options Indexes FollowSymlinks
  AuthType Basic
  AuthName "WiKID RADIUS authentication"
  AuthBasicAuthoritative Off
  AuthBasicProvider radius
  AuthRadiusAuthoritative on
  AuthRadiusActive On
  Require valid-user

Примечание: директива “AuthBasicProvider radius” отключает повторную отправку закэшированных учётных данных браузером, что важно для одноразовых паролей.

Шаг 4 — настройки RADIUS в httpd.conf

Добавьте в httpd.conf следующие строки (замените параметры на свои значения):

AddRadiusAuth wikid_server_address:1812 wikidserver_shared_secret 5
AuthRadiusCookieValid 60

Пояснения:

  • wikid_server_address — IP вашeго WiKID сервера
  • wikidserver_shared_secret — shared secret из интерфейса WiKID
  • Число 5 в конце AddRadiusAuth — таймаут в секундах
  • Мы НЕ используем форму 5:3, где 3 — число попыток. Для OTP каждая попытка должна быть единственной, поэтому оставляем только 5
  • AuthRadiusCookieValid = 60 означает куку действительной в минутах (здесь 60 минут)

Рекомендуется избегать .htaccess и использовать директивы в основной конфигурации — это безопаснее и эффективнее.

Дополнительные рекомендации по безопасности

  • Используйте взаимную HTTPS‑аутентификацию для критичных сервисов.
  • Отключите поддержку устаревших протоколов TLS/SSL на сервере.
  • Разделяйте обязанности: администратор Apache не должен иметь доступ к секретам пользователей и токенов.

Типичные ошибки и решение

  • “AuthRadiusCookieValid не действует” — проверьте перезапуск Apache и отсутствие конфликтующих модулей аутентификации.
  • “OTP отклоняется, хотя введён верный код” — проверьте синхронизацию времени на сервере WiKID и токене, а также shared secret.
  • “Браузер кэширует пароль” — убедитесь, что указана директива AuthBasicProvider radius и что браузер не использует расширения автозаполнения.
  • “Нет соединения с RADIUS” — проверьте доступность порта 1812, firewall, и лог RADIUS сервера.

Отладка и логи

  • Проверяйте логи Apache (/var/log/apache2/error.log) и логи WiKID/RADIUS.
  • Для проверки сетевого соединения используйте telnet или nc к порту 1812.

Когда этот подход не подойдёт

  • Если пользовательская база не поддерживает одноразовые пароли.
  • Для простых внутренних сайтов, где достаточно одноступенчатой аутентификации и нет угрозы MITM.
  • Там, где требуется единая федерация SSO на базе SAML/OAuth — лучше использовать соответствующие решения.

Альтернативы

  • mod_auth_xradius (для RedHat/CentOS)
  • Использовать FreeRADIUS в связке с другими токенами
  • Применять двухфакторную аутентификацию через OAuth2/OpenID Connect (современные SSO)

Чеклист для администратора перед вводом в эксплуатацию

  • Создан RADIUS‑клиент в WiKID и получен shared secret
  • Установлен libapache-mod-auth-radius
  • В apache2.conf корректно настроен
  • В httpd.conf прописан AddRadiusAuth и AuthRadiusCookieValid
  • Перезапущен Apache и проверены логи
  • Обновлены правила firewall для порта 1812
  • Тестовый пользователь успешно проходит аутентификацию

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

  • Пользователь успешно входит с помощью логина + OTP
  • Сессия длится не более значения AuthRadiusCookieValid
  • Логи не содержат ошибок RADIUS при корректных вводах
  • Процедура отката задокументирована

Факто‑бокс

  • Порт RADIUS по умолчанию: 1812
  • Пример таймаута AddRadiusAuth: 5 секунд
  • AuthRadiusCookieValid: 60 минут (в примере)

Мини‑методология внедрения (5 шагов)

  1. Создайте RADIUS‑клиента на WiKID. 2. Установите mod_auth_radius. 3. Настройте в apache2.conf. 4. Пропишите AddRadiusAuth в httpd.conf. 5. Проверяйте логи и тестируйте с несколькими аккаунтами.

Набор ролей и ответственность

  • Сисадмин: установка Apache и модуля, внесение конфигурации, перезапуск сервиса.
  • Администратор WiKID: регистрация сетевого клиента, управление секретами и пользователями.
  • Инженер по безопасности: проверка TLS, аудит логов и политики хранения секретов.

Короткий глоссарий

  • OTP — одноразовый пароль, генерируется токеном
  • RADIUS — протокол удалённой аутентификации
  • WiKID — сервер/сервис двухфакторной аутентификации

Пример сценариев тестирования

  • Успешный вход с валидным OTP
  • Попытка повторного использования одного и того же OTP — должна быть отклонена
  • Сбой сети к RADIUS (симулировать) — проверить обработку таймаутов

Заключение

Настройка mod_auth_radius и WiKID на Apache даёт надёжный уровень двухфакторной аутентификации для веб‑приложений. Важно обеспечить корректную регистрацию RADIUS‑клиента, сохранить shared secret и протестировать работу OTP в разных сценариях. Для особо критичных ресурсов рекомендована взаимная HTTPS‑аутентификация.

Ссылки

  • WiKID Strong Authentication - Two-Factor Authentication
  • Mod-auth-radius - mod-auth-radius
  • Apache - The Apache Webserver

Связанные руководства

  • Add WiKID two-factor authentication to the Astaro Security Gateway
  • Two-factor authentication for SSH using Freeradius and WiKID
  • How to configure OpenVPN for two-factor authentication from WiKID
  • How to configure an SSL VPN for two-factor authentication and mutual https authentication
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Добавить Take Ownership в контекстное меню
Windows

Добавить Take Ownership в контекстное меню

Голосовой ввод в Windows 11 — включение и советы
Windows

Голосовой ввод в Windows 11 — включение и советы

Уведомления Google Форм на email — настройка
Google Forms

Уведомления Google Форм на email — настройка

Petey на Apple Watch — ChatGPT на запястье
Приложения

Petey на Apple Watch — ChatGPT на запястье

Искать по содержимому в Windows: добавить типы файлов
Windows

Искать по содержимому в Windows: добавить типы файлов

MicroK8s: быстрый старт и эксплуатация
Kubernetes

MicroK8s: быстрый старт и эксплуатация