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

Настройка Squid для двухфакторной аутентификации через WiKID

6 min read Security Обновлено 28 Nov 2025
Настройка Squid с двухфакторной аутентификацией WiKID
Настройка Squid с двухфакторной аутентификацией WiKID

Squid используется сотнями интернет-провайдеров по всему миру для обеспечения пользователей наилучшим доступом к вебу. Squid оптимизирует поток данных между клиентом и сервером для улучшения производительности и кэширует часто используемый контент для экономии полосы. Squid также может направлять запросы контента на серверы разными способами, чтобы строить иерархии кеш-серверов и оптимизировать пропускную способность сети.

Краткие определения:

  • Squid: прокси-сервер и кэш, ускоряющий HTTP/HTTPS трафик.
  • WiKID: сервер двухфакторной аутентификации, предоставляющий одноразовые пароли (OTP).
  • PAM: механизм модульной аутентификации в Linux.
  • RADIUS: сетевой протокол аутентификации (обычно порт 1812).

Зачем использовать такую схему

  • Централизованная авторизация пользователей.
  • Поддержка двухфакторной аутентификации для доступа в интернет через прокси.
  • Совместимость с существующими веб-серверами при использовании режима accel.

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

Предварительные требования

  • Рабочий сервер Squid с доступом root.
  • Установленный WiKID сервер и интерфейс WiKIDAdmin.
  • Компилируемый pam_radius или готовый пакет для вашей ОС.
  • Понимание базовых команд systemctl и логов (/var/log/squid и /opt/WiKID/logs).

Архитектура и поток авторизации

  1. Клиент обращается к Squid.
  2. Squid вызывает PAM-модуль pam_radius для проверки пользователя/OTP по RADIUS к WiKID.
  3. WiKID проверяет OTP и отдаёт результат RADIUS.
  4. Squid принимает решение об доступе и проксирует трафик к origin-серверу.

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

  1. Откройте конфигурацию Squid (обычно /etc/squid/squid.conf).
  2. Укажите PAM-скрипт для базовой аутентификации:
auth_param basic program /usr/lib/squid/pam_auth
  1. Настройте ACL и правило доступа:
acl pam proxy_auth REQUIRED
http_access allow pam
  1. Удалите или откомментируйте другие конфликтующие http_access правила, оставив требуемую последовательность проверок.

Пример простой тестовой конфигурации, где Squid ускоряет Apache на локальном хосте:

visible_hostname your_hostname
http_port external_IP:80 accel defaultsite=your_hostname
cache_peer 127.0.0.1 parent 80 0 no-query originserver

Совет: после каждого изменения запускайте проверку конфигурации Squid и перезапускайте сервис.

Настройка PAM для Squid с pam_radius

  1. Установите pam_radius. Для дистрибутивов с исходниками:
# ./configure  
# make  
# make install
  1. Отредактируйте /etc/pam.d/squid и вставьте модуль pam_radius как достаточный провайдер аутентификации. Перейдите ко второй строке файла и добавьте:
auth     sufficient   /lib/security/pam_radius_auth.so

и оставьте или расположите её выше строки, которая отвечает за system-auth:

auth     required     pam_stack.so service=system-auth

Пояснение: тег sufficient означает, что при успешной RADIUS-аутентификации дальнейшие проверки не требуются. Если RADIUS не удался, дальнейшая проверка по локальной базе (system-auth) сохранится. Если вы хотите принудительную двухфакторную политику, используйте подходящие теги и порядок модулей.

  1. Отредактируйте или создайте /etc/raddb/server (или конфиг, который использует ваша версия pam_radius). Пример упрощённой секции:
#%PAM-1.0
#auth           include         system-auth
auth required /lib/security/pam_radius_auth.so
#account                include         system-auth
account  include   /lib/security/pam_radius_auth.so

Заметка: расположение модулей PAM и формат файлов могут отличаться в разных дистрибутивах. Проверьте документацию вашего дистрибутива.

Регистрация Squid как клиента в WiKID

  1. Войдите в WiKIDAdmin в браузере.
  2. Откройте вкладку Domains. Если домен уже есть — пропустите создание.
  3. Нажмите «Создать новый домен» и заполните поля. Код сервера домена — IP адрес WiKID без точек, дополненный нулями до полного блока при необходимости (пример: 216.239.51.99 → 216239051099).
  4. Перейдите на вкладку Network Clients и нажмите «Создать нового сетевого клиента».
  5. Введите IP адрес сервера Squid, выберите тип RADIUS и ранее созданный домен. Нажмите «Добавить».
  6. На следующем экране укажите shared secret — тот же, что будет в /etc/raddb/server. Поле Return Attributes обычно оставляется пустым.

Важно: после добавления клиента выполните из консоли WiKID команду для перезагрузки RADIUS:

  • Для WiKID 2.0: выполните stop, затем start.
  • Для более новых версий: выполните wikidctl restart.

Тестирование доступа через OTP

  1. Установите клиентский токен WiKID на мобильном устройстве или рабочей станции.
  2. В WiKIDAdmin валидируйте пользователя вручную, если нужно.
  3. Выберите домен, связанный с Squid.

Получение одноразового пароля в приложении токена

  1. Введите PIN в клиенте токена, чтобы получить одноразовый пароль.

Ввод PIN в клиенте токена WiKID

  1. Клиент выдаст OTP; он ограничен по времени и срок действия можно настроить на сервере WiKID (обычно 30–60 секунд по умолчанию).

Отображение одноразового пароля в приложении токена

  1. Откройте любой браузер и перейдите на прокси-URL Squid. Вы увидите окно HTTP-аутентификации. Введите имя пользователя и одноразовый пароль как пароль. При успехе Squid пустит вас дальше.

Логи для отладки:

  • Squid: /var/log/squid/access.log (путь может отличаться по дистрибутиву).
  • WiKID RADIUS: через интерфейс WiKIDAdmin или файл /opt/WiKID/logs/radius.log.

Устранение неполадок

  • Ошибка аутентификации для всех пользователей: проверьте соответствие shared secret между WiKID и /etc/raddb/server.
  • RADIUS недоступен: проверьте сетевой доступ и порт 1812 на WiKID сервере.
  • pam_radius не найден: убедитесь в корректном пути модуля (/lib/security/ или /lib64/security/ в зависимости от ОС).
  • Squid пропускает без запроса пароля: убедитесь, что auth_param и ACL включены и что другие http_access правила не переопределяют поведение.

Если что-то не работает, используйте поочерёдную методику: проверяйте сначала локальную PAM-аутентификацию для пользователя, затем вызов pam_radius локально, затем RADIUS запросы на WiKID.

Роли и 체크-листы

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

  • Проверить работоспособность Squid и доступность origin-серверов.
  • Настроить auth_param и ACL в конфиге Squid.

Системный администратор PAM/WiKID:

  • Установить pam_radius и проверить пути модулей.
  • Добавить конфигурацию клиента RADIUS и shared secret.
  • Перезагрузить WiKID RADIUS-сервис.

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

  • Проверить политику сроков действия OTP и сложность PIN.
  • Настроить аудит логов WiKID и Squid.

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

  • При вводе корректного имени пользователя и OTP доступ разрешён к ожидаемым ресурсам.
  • Неправильный OTP блокируется, и в логах WiKID видно отказ.
  • При недоступности RADIUS продолжается fallback на локальную аутентификацию (если предусмотрено).

Мини-методология деплоймента

  1. Развернуть тестовый стенд: Squid + WiKID на отдельной сети.
  2. Настроить pam_radius и проверить RADIUS-запросы с тестовыми пользователями.
  3. Тестировать последовательность логина с разными условиями (правильный OTP, неправильный, просроченный).
  4. Перенести конфигурацию на стейджинг и повторить.
  5. Плановое переключение на продуктив с откатом к предыдущему конфигу Squid.

Модель принятия решений (Mermaid)

flowchart TD
  A[Клиент -> Squid] --> B{Требуется аутентификация}
  B -- Да --> C[Squid вызывает pam_radius]
  C --> D{RADIUS успешно?}
  D -- Да --> E[Доступ разрешён]
  D -- Нет --> F{Локальная auth разрешена?}
  F -- Да --> G[Проверка system-auth]
  G -- Успех --> E
  G -- Неудача --> H[Доступ запрещён]
  F -- Нет --> H
  B -- Нет --> I[Доступ без аутентификации]

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

  • Используйте защищённый канал между Squid и WiKID, если инфраструктура позволяет (VPN или внутренняя защищённая сеть).
  • Храните shared secret в защищённом месте и ограничьте доступ к файлам /etc/raddb/ и /etc/pam.d/.
  • Логируйте события аутентификации, но соблюдайте требования конфиденциальности при хранении персональных данных.

Тестовые сценарии и критерии приёмки

  1. Валидный пользователь + валидный OTP → HTTP 200 и доступ к ресурсу.
  2. Валидный пользователь + просроченный OTP → отказ, запись в logs о неудаче.
  3. Неверный пользователь → отказ, проверка логов WiKID и Squid.
  4. Отсутствие связи с WiKID при настроенном fallback → проходит локальная аутентификация.

Короткая памятка команд

  • Проверить конфигурацию Squid: systemctl status squid / journalctl -u squid
  • Проверить логи Squid: tail -f /var/log/squid/access.log
  • Перезапустить WiKID RADIUS: wikidctl restart или stop && start для WiKID 2.0

Глоссарий (1 строка)

  • OTP: одноразовый пароль, действующий в течение ограниченного времени.
  • RADIUS: протокол сетевой аутентификации, стандартный порт 1812.

Примеры ситуаций, когда схема не подойдёт

  • Если у вас нет возможности обеспечить сетевую связность между Squid и WiKID.
  • Если политики безопасности запрещают внешний хранить shared secret на различных узлах без HSM.

Итог и рекомендации

  • Двухфакторная аутентификация для Squid через WiKID улучшает безопасность доступа в интернет.
  • Тестируйте поэтапно: Squid → PAM → RADIUS → WiKID.
  • Настройте мониторинг логов и регулярные проверки конфигурации.

Краткое резюме в конце:

  • Squid даёт централизованную точку контроля доступа.
  • WiKID обеспечивает второй фактор через OTP.
  • PAM и pam_radius связывают компоненты вместе, давая гибкость и fallback.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Атака через цепочку поставок: SolarWinds и трояны
Кибербезопасность

Атака через цепочку поставок: SolarWinds и трояны

Включение и настройка Compiz в Ubuntu
Ubuntu

Включение и настройка Compiz в Ubuntu

Aero в Windows 7: включение, настройка, устранение проблем
Windows

Aero в Windows 7: включение, настройка, устранение проблем

Stacks на Mac: упорядочьте рабочий стол быстро
macOS

Stacks на Mac: упорядочьте рабочий стол быстро

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

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

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

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