Как настроить Apache для использования RADIUS с двухфакторной аутентификацией WiKID на Ubuntu
Коротко о том, как это работает
- Пользователь кликает по защищённой ссылке и получает базовый запрос учётных данных в браузере.
- В поле пароля вводится одноразовый код из WiKID software token.
- Apache (mod_auth_radius) отправляет имя пользователя и одноразовый пароль на WiKID RADIUS сервер.
- Если WiKID подтверждает совпадение — доступ предоставляется.
Важно: для сайтов, где требуется максимальная безопасность, рекомендуется включать взаимную HTTPS-аутентификацию (mutual TLS). WiKID software token может дополнительно проверять хеш SSL‑сертификата сервера для предотвращения MITM.
Требования и конфигурация, используемая в примере
- Ubuntu 12.04 (пример базовой установки)
- Apache 2.2.22-1
- libapache2-mod-auth-radius 1.5.8-1
- WiKID (коммерческая версия) как сервер двухфакторной авторизации
Подготовка WiKID — добавление сетевого RADIUS‑клиента
- Войдите в веб‑интерфейс WiKID: http://yourwikidserver/WiKIDAdmin
- Откройте вкладку Network Clients
- Нажмите Create New Network Client
- Заполните форму:
- IP Address: IP вашего веб‑сервера
- Protocol: Radius
- Нажмите Add, на следующей странице укажите shared secret (совместный секрет)
- Оставьте поле Return Attribute пустым
- На сервере WiKID выполните из терминала: остановите и снова запустите сервис (stop, затем start), чтобы загрузить нового сетевого клиента в встроенный RADIUS
После этого конфигурация на стороне WiKID завершена.
Установка модуля на Apache и основная настройка
Если у вас свежая Ubuntu 12.04 и Apache ещё не установлен, установите модуль RADIUS:
$ sudo apt-get install libapache2-mod-auth-radiusСоздайте каталог, который хотите защитить (в примере защищён весь /var/www), и добавьте в apache2.conf блок Directory:
Options Indexes FollowSymlinks
AuthType Basic
AuthName "WiKID Two-factor authentication"
AuthBasicAuthoritative Off
AuthBasicProvider radius
AuthRadiusAuthoritative on
AuthRadiusActive On
Require valid-user
Обратите внимание на директиву AuthBasicProvider radius — она предотвращает повторную отправку браузером кешированных учётных данных, что необходимо для одноразовых паролей.
В httpd.conf добавьте строку для связи с RADIUS‑сервером и настройки cookie:
AddRadiusAuth wikid_server_address:1812 wikidserver_shared_secret 5
AuthRadiusCookieValid 60
- Замените wikid_server_address на IP/адрес WiKID сервера.
- Замените wikidserver_shared_secret на заранее заданный shared secret.
- В конце строки AddRadiusAuth стоит
5— это таймаут в секундах. Параметр5:3означал бы 3 попытки; для одноразовых паролей попытки должны быть ограничены одной, поэтому используем только5. - AuthRadiusCookieValid = 60 означает, что cookie аутентификации действительна 60 минут.
Обычно предпочтительнее конфигурировать Directory в основном конфиге, а не .htaccess — это считается более безопасным и производительным.
Альтернативные подходы и интеграции
- FreeRADIUS + Apache через pam_radius или proxy — полезно при централизованной аутентификации и интеграции с OpenLDAP/AD.
- Нативные OTP‑модули (Google Authenticator PAM) — проще, но менее централизуемо.
- Взаимная TLS (mutual TLS) для строгой проверки сервера со стороны клиента.
Когда этот подход не подходит (контрпримеры)
- Если требуется интеграция с современным SSO (SAML / OIDC), лучше использовать соответствующие решения, так как RADIUS/Basic Auth не обеспечивают удобный SSO‑поток.
- Для приложений с API‑трафиком лучше использовать токены/ключи и OAuth‑потоки, а не Basic Auth через браузер.
- Для мобильных приложений базовая RADIUS‑аутентификация через браузер неприменима.
Безопасность и жесткая настройка
- Всегда используйте HTTPS и, по возможности, взаимную TLS для защиты от MITM.
- Ограничьте доступ к WiKID RADIUS серверу по IP‑фильтру брандмауэра — только веб‑серверу разрешите подключение к порту 1812.
- Используйте сильный shared secret и периодически его меняйте.
- Настройте мониторинг неудачных попыток и временную блокировку клиентов с множеством неудач.
- Минимизируйте срок действия AuthRadiusCookieValid в соответствии с профилем риска.
Контрольный список ролей
- Администратор WiKID:
- Добавить Network Client с IP веб‑сервера
- Сгенерировать и сохранить shared secret
- Проверить работу встроенного RADIUS (логи)
- DevOps / Системный администратор Apache:
- Установить libapache2-mod-auth-radius
- Добавить блок Directory в apache2.conf
- Добавить AddRadiusAuth и AuthRadiusCookieValid в httpd.conf
- Перезагрузить Apache и проверить доступ
- Ответственный по безопасности:
- Настроить HTTPS + mutual TLS при необходимости
- Настроить правила firewall и ротацию секретов
Мини‑методология (SOP) — пошагово
- Подготовка: убедитесь, что Apache установлен.
- На WiKID: создать Network Client с нужным IP и shared secret.
- На веб‑сервере: установить libapache2-mod-auth-radius.
- В apache2.conf: добавить Directory с AuthBasicProvider radius и связующими директивами.
- В httpd.conf: добавить AddRadiusAuth и AuthRadiusCookieValid.
- Перезапустить WiKID RADIUS и Apache.
- Проверка: попытка доступа к защищённому каталогу, ввод одноразового пароля, анализ логов при ошибках.
Критерии приёмки
- При вводе корректного одноразового пароля доступ к каталогу /var/www предоставлен.
- При вводе неправильного пароля доступ отклонён и в логах WiKID видно неудачную попытку.
- При недоступности WiKID RADIUS сервер возвращается соответствующая ошибка, а в логах Apache появляются сообщения о таймауте.
- Cookie аутентификации действительна в пределах указанного времени (AuthRadiusCookieValid).
Совместимость и миграция
- Пример рассчитан на Ubuntu 12.04 и Apache 2.2.x. На современных Ubuntu (18.04/20.04/22.04) может понадобиться другой пакет или сборка модуля под Apache 2.4.
- На Apache 2.4 директивы авторизации изменились: проверьте совместимость модулей и синтаксис (Require valid-user остаётся валидным, но некоторые другие директивы могли эволюционировать).
- Если используете FreeRADIUS как фронт для WiKID, учитывайте версии протокола RADIUS и поддерживаемые атрибуты.
Отладка и распространённые ошибки
- Проверьте логи Apache (/var/log/apache2/error.log) и логи WiKID для сообщений о тайм‑аутах или несоответствии секретов.
- Если браузер повторно отправляет прежние (кешированные) учётные данные — проверьте, чтобы AuthBasicProvider был установлен в radius.
- Убедитесь, что между веб‑сервером и WiKID нет блокировки порта 1812: используйте telnet/nc для проверки соединения.
- Если используются Load Balancer/Proxy, обратите внимание на исходящий IP: WiKID должен видеть корректный клиентский IP (или добавьте IP LB в разрешённые)
Глоссарий (1 строкой)
- RADIUS: протокол удалённой аутентификации.
- WiKID: сервер/система двухфакторной аутентификации.
- OTP: одноразовый пароль.
- AuthRadiusCookieValid: время жизни cookie для RADIUS‑аутентификации.
Полезные ссылки
- WiKID Strong Authentication - Two-Factor Authentication
- Mod-auth-radius - mod-auth-radius
- Apache - The Apache Webserver
Резюме
Добавление WiKID через mod_auth_radius к Apache позволяет организовать централизованную двухфакторную аутентификацию с минимальными изменениями конфигурации. Важные моменты: корректная регистрация RADIUS‑клиента на WiKID, корректные shared secret и таймауты, а также обеспечение безопасности транспортного канала (HTTPS / mutual TLS) и фильтрации доступа по IP.
Важно: протестируйте развертывание в контролируемой среде и проверьте поведение при недоступности RADIUS и при попытках повторного использования одноразового пароля.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента