Как настроить Apache для RADIUS двухфакторной аутентификации на Ubuntu
Введение
Этот документ объясняет, как добавить двухфакторную аутентификацию 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
- Зайдите в веб‑интерфейс WiKID: http://yourwikidserver/WiKIDAdmin
- Выберите вкладку Network Clients
- Нажмите Create New Network Client
- Заполните форму:
- IP Address: IP веб‑сервера
- Protocol: Radius
- Нажмите Add и на следующей странице задайте shared secret
- Поле Return Attribute оставьте пустым
- Через терминал или 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 шагов)
- Создайте 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
Похожие материалы
Добавить Take Ownership в контекстное меню
Голосовой ввод в Windows 11 — включение и советы
Уведомления Google Форм на email — настройка
Petey на Apple Watch — ChatGPT на запястье
Искать по содержимому в Windows: добавить типы файлов