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

Как защитить Apache2 с помощью LinOTP

• 4 min read • Безопасность • Обновлено 28 Nov 2025
Защитить Apache2 с помощью LinOTP
Защитить Apache2 с помощью LinOTP

Введение

LinOTP — сервер двухфакторной аутентификации, который поддерживает одноразовые пароли (OTP). В этом руководстве показано, как подключить модуль Apache, чтобы требовать OTP при базовой аутентификации. Короткое определение: LinOTP — сервер для управления токенами и проверки одноразовых паролей.

Предпосылки

  • Рабочий LinOTP-сервер (уже установлен и доступен).
  • Сервер с Ubuntu/Debian и установленными инструментами сборки.
  • Права администратора на сервере Apache.

Загрузка

Модуль для Apache реализует провайдер аутентификации, который интегрируется с Apache Basic Auth. Исходники доступны на GitHub.

Вы можете скачать архив прямо из командной строки:

wget https://github.com/lsexperts/mod_authn_linotp/zipball/master -O mod_authn_linotp.zip

Установка

Для компиляции модуля на Ubuntu/Debian потребуются инструменты разработки и зависимости. Пример установки пакетов:

dpkg -i libtool automake autoconf build-essential libcurl4-gnutls-dev

Распакуйте модуль и перейдите в каталог сборки:

unzip mod_authn_linotp.zip
cd lsexperts-mod_authn_linotp-3583b90

Далее следуйте шагам из файла INSTALL (типичная последовательность сборки):

libtoolize
aclocal
automake --add-missing
autoconf
./configure
make
sudo make install

Совет: можно использовать checkinstall для создания .deb-пакета, чтобы упростить установку/удаление:

sudo checkinstall make install

После установки модуль обычно окажется в /usr/lib/apache2/modules/mod_authn_linotp.so.

Активация модуля

Активируйте модуль Apache следующей командой:

sudo a2enmod authn_linotp

Перезапустите Apache для применения изменений:

sudo systemctl restart apache2

Настройка Apache

Ниже пример защиты каталога с использованием провайдера LinOTP. Вставляйте блок в соответствующий виртуальный хост или в конфигурацию сервера:


    AuthType basic
    AuthName "LinOTP protected"
    AuthBasicProvider LinOTP
    Require valid-user
    LinOTPValidateURL   https://172.16.200.148/validate/simplecheck
    LinOTPCookieSecret  eenohJaen6CeexaH9yieTiel
    LinOTPSSLCertVerify Off
    LinOTPSSLHostVerify Off

Пояснения к параметрам:

  • AuthType / AuthName / Require — стандартные директивы Apache для базовой аутентификации.
  • AuthBasicProvider LinOTP — указывает использовать модуль LinOTP как поставщика аутентификации.
  • LinOTPValidateURL — URL вашего LinOTP-сервера для проверки OTP (используйте IP или FQDN, не localhost).
  • LinOTPCookieSecret — секрет для шифрования cookie, используемого модулем для кэширования успешной аутентификации.
  • LinOTPSSLCertVerify / LinOTPSSLHostVerify — поведение проверки SSL; рекомендуется включать в продакшне.

Используя LinOTPTimeout, можно задать срок жизни cookie в секундах — после этого пользователь снова должен будет ввести OTP.

Генерация секрета для cookie

Модуль шифрует cookie с помощью секрета. Для генерации случайной строки удобно использовать pwgen:

pwgen 24 1

Используйте сгенерированную строку как значение LinOTPCookieSecret. Длина 24 символа — достаточная рекомендация для секрета; при желании используйте более длинные значения.

Важные замечания по URL

Использование localhost в LinOTPValidateURL может приводить к ошибкам curl внутри модуля (например, если Apache запускается в окружении с ограниченной сетевой видимостью). Всегда указывайте корректный IP-адрес или полное доменное имя (FQDN).

Рекомендации по безопасности

  • В продакшн окружении держите LinOTPValidateURL по HTTPS и включите проверку сертификатов (LinOTPSSLCertVerify On). Если используется самоподписанный сертификат — установите доверенный CA в систему.
  • Храните LinOTPCookieSecret в защищённом месте (например, в менеджере секретов или в файле с ограниченным доступом) и не коммитите его в систему контроля версий.
  • Ограничьте доступ к конечным точкам в Apache с помощью IP-белого списка, если это применимо.
  • Логируйте события аутентификации, но избегайте записи секретов/полных токенов в логи.

Отладка и типичные ошибки

  • Ошибка curl при обращении к LinOTPValidateURL: проверьте доступность сервера из-под пользователя Apache и корректность DNS/hosts.
  • Модуль не загружается: проверьте расположение файла mod_authn_linotp.so и права на него; убедитесь, что зависимости (libcurl и т. п.) установлены.
  • Проблемы с cookie: проверьте корректность LinOTPCookieSecret и настройки времени (синхронизация часов на серверах).

Пример: включение проверки сертификата

Если вы хотите строго проверять SSL-сертификат LinOTP, включите проверки и убедитесь, что Apache доверяет CA:

LinOTPSSLCertVerify On
LinOTPSSLHostVerify On

В этом режиме отладочные ошибки чаще связаны с отсутствием доверенного CA или с некорректным именем хоста в сертификате.

Ролевые чек-листы

Администратор сервера:

  • Установить и проверить доступ к LinOTP-серверу.
  • Сгенерировать и защитить LinOTPCookieSecret.
  • Настроить HTTPS и проверить сертификаты.
  • Обновить документацию и план отката.

DevOps / Разработчик:

  • Автоматизировать сборку модуля и создание .deb при необходимости.
  • Включить мониторинг доступности LinOTPValidateURL.
  • Тестировать поведение таймаута cookie в staging.

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

  • При вводе корректных учётных данных и OTP пользователь получает доступ.
  • После истечения LinOTPTimeout повторная авторизация требует новый OTP.
  • При недоступности LinOTP-сервера — поведение предсказуемо (ошибка 401, корректный лог).
  • Логи безопасности показывают события аутентификации без раскрытия секретов.

Мини-методология развёртывания

  1. Установить и протестировать LinOTP-сервер отдельно.
  2. На тестовой машине собрать и установить модуль.
  3. Настроить виртуальный хост с LinOTP и провести сценарии тестирования (успешная аутентификация, неверный OTP, истечение cookie).
  4. Перенести конфигурацию в продакшн, включить строгую проверку сертификатов.

Сопутствующие советы и альтернативы

  • Альтернатива: использовать внешние провайдеры 2FA (например, RADIUS с MFA), если требуется централизованное управление несколькими приложениями.
  • Если вы не хотите компилировать модуль локально, проверьте наличие готовых пакетов для вашей версии дистрибутива.

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

LinOTP предоставляет надёжный способ добавить OTP в процесс аутентификации Apache. В статье описаны шаги по загрузке, сборке, активации и настройке модуля, а также рекомендации по безопасности и отладке. Основные действия: сгенерировать секрет для cookie, указать корректный LinOTPValidateURL и включить проверку сертификатов в продакшне.

Важно: всегда тестируйте конфигурацию в staging и храните секреты в безопасном месте.

Полезные команды и сниппеты приведены выше — используйте их как шаблон при внедрении.

Поделиться: 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 быстро