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

Защита X2Go на Ubuntu 12.04 (Precise) с двухфакторной аутентификацией WiKID

6 min read Security Обновлено 19 Oct 2025
X2Go на Ubuntu 12.04 с двухфакторной аутентификацией WiKID
X2Go на Ubuntu 12.04 с двухфакторной аутентификацией WiKID

Важно: этот гайд ориентирован на Ubuntu 12.04 (Precise). Подходы к PAM и пакетам могут отличаться в других дистрибутивах и версиях.

Зачем это нужно

Двухфакторная аутентификация (2FA) снижает риск компрометации удалённого рабочего стола: помимо знания пароля, требуется физическое устройство или токен. В этой связке WiKID выполняет генерацию и валидацию одноразовых паролей, а X2Go обеспечивает удалённый рабочий стол поверх SSH.

Ключевые термины в одну строку:

  • WiKID — сервер двухфакторной аутентификации.
  • X2Go — удалённый рабочий стол на базе NX/SSH.
  • PAM — модульная система аутентификации Linux.
  • RADIUS — протокол удалённой аутентификации, используемый между PAM и WiKID.

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

  • Рабочий сервер с установленным WiKID Strong Authentication и веб-интерфейсом.
  • Целевой Ubuntu 12.04 сервер с root-доступом или sudo.
  • Сетевая связность между Ubuntu-сервером и WiKID (порт RADIUS, обычно UDP 1812).
  • У пользователей локальные учётные записи на Ubuntu или централизованная авторизация (LDAP/AD), настроенная отдельно.

Добавление домена на WiKID

Интерфейс WiKID: добавление домена для аутентификации

  1. Зайдите в веб-интерфейс WiKID под администратором.
  2. Создайте новый домен (domain) — это логическая область для ваших токенов и настроек.
  3. Укажите читаемое имя и при необходимости описательные параметры домена.

Примечание: названия доменов служат для разделения пользователей и политик.

Создание сетевого клиента (Network Client)

Интерфейс WiKID: создание сетевого клиента для X2Go

  1. Перейдите на вкладку Network Client.
  2. Нажмите Create New Network Client.
  3. Введите имя клиента (например, x2go-precise) и IP-адрес вашего X2Go-сервера в внутренней сети.
  4. В поле Protocol выберите RADIUS.
  5. В поле Domain выберите ранее созданный домен.
  6. Подтвердите добавление.

После добавления вы увидите экран ввода общего секрета.

Интерфейс WiKID: ввод общего секрета RADIUS для сетевого клиента

  1. Введите Shared Secret — общий секрет, который будет использоваться в конфигурации pam_radius на Ubuntu. Запишите этот секрет надёжно.

Важно: общий секрет должен быть сложным и храниться в безопасном месте. Он используется для защиты RADIUS-запросов между сервером и клиентом.

Установка и настройка X2Go на Ubuntu

Установка X2Go и необходимых компонентов довольно простая. На целевом сервере выполните:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession x2gobroker x2gobroker-daemon x2gobroker-authservice

Если на сервере ещё нет графической оболочки, установите подходящую среду рабочего стола:

sudo apt-get install ubuntu-desktop gnome

Или установите любую другую лёгкую среду (XFCE, MATE, LXDE) в зависимости от ресурсов.

Тестирование клиента X2Go на рабочей станции пользователя:

sudo apt-get install x2goclient

На клиенте создайте новую сессию, укажите IP адрес X2Go-сервера и тип рабочего стола. Попробуйте подключиться с обычным логином и паролем (без 2FA) чтобы убедиться, что X2Go и SSH работают.

Настройка PAM на X2Go-сервере через pam_radius

Установите пакет libpam-radius-auth:

sudo apt-get install libpam-radius-auth

Затем укажите, с каким RADIUS-сервером общаться:

sudo vim /etc/pam_radius_auth.conf
# Пример строки: other-server; other-secret 3

Отредактируйте строку other-server; other-secret 3, заменив other-server на IP-адрес или hostname вашего WiKID-сервера и other-secret на общий секрет (Shared Secret), который вы задали при создании Network Client.

Важно: файл может содержать комментарий о копировании в /etc/raddb/server — НЕ перемещайте файл, просто редактируйте /etc/pam_radius_auth.conf.

Далее добавим модуль в конфигурацию PAM для sshd. Откройте:

sudo vim /etc/pam.d/sshd

Добавьте строку (порядок важен):

auth       sufficient  pam_radius_auth.so

Эту строку поместите непосредственно перед блоком стандартной аутентификации:

# Standard Un*x authentication.
@include common-auth

Пояснение: опция sufficient означает, что если RADIUS-аутентификация успешна, дальнейшая проверка не требуется. Если RADIUS не удался, PAM продолжит к common-auth (обычно локальные пароли).

Тестирование 2FA

  1. Запустите аудит логов на сервере, чтобы видеть сообщения PAM и RADIUS:
tail -f /var/log/auth.log
  1. На клиенте WiKID запустите приложение/токен, выберите ваш домен и сгенерируйте OTP, введя PIN и получив одноразовый пароль.
  2. Попробуйте подключиться через X2Go/SSH, используя username и в поле пароля — комбинацию PIN+OTP или в зависимости от политики WiKID: либо PIN+OTP, либо только OTP. (Проверяйте конфигурацию вашей политики в WiKID.)
  3. Убедитесь, что логин успешен и в auth.log видны подтверждающие строки.

Примечание: имя пользователя в Ubuntu должно совпадать с именем в WiKID, если у вас нет отдельной маппинг-логики.

Когда этот подход не подходит (контрпример)

  • Если у вас требование единой авторизации (SSO) через SAML/OAuth — WiKID+RADIUS не даст SSO из коробки.
  • Если у вас изолированная сеть без доступа к WiKID — нужны оффлайн-решения.
  • Если пользователи не имеют локальных учётных записей и нет LDAP/AD-интеграции — потребуется отдельно настроить учётные записи (pam_ldap, winbind и т.д.).

Альтернативные подходы

  • Использовать PAM-модули от других провайдеров 2FA (Duo, Google Authenticator, FreeRADIUS + токены).
  • Внедрить SSH-ключи на основе аппаратных токенов (YubiKey) для possession-фактора вместе с паролем.
  • Настроить RADIUS-прокси: PAM -> локальный RADIUS -> WiKID, если нужно централизовать авторизацию.

Чек-листы по ролям

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

  • Создать домен.
  • Добавить Network Client с правильным IP.
  • Сгенерировать и передать Shared Secret.
  • Зарегистрировать токены пользователей.

Системный администратор Ubuntu/X2Go:

  • Установить X2Go server и нужный desktop.
  • Установить libpam-radius-auth.
  • Настроить /etc/pam_radius_auth.conf с IP и секретом.
  • Добавить pam_radius в /etc/pam.d/sshd.
  • Тестировать через tail -f /var/log/auth.log.

Операционные тесты и откат:

  • Тестировать на тестовой машине перед продакшеном.
  • Иметь запасного пользователя с доступом по локальному паролю (чтобы не потерять доступ при ошибке).
  • Документировать Shared Secret и хранить в менеджере секретов.

Быстрый план действий (mini-методология)

  1. Установить и проверить X2Go (локальный пароль). 2. Создать домен в WiKID. 3. Добавить Network Client и получить Shared Secret. 4. Установить libpam-radius-auth на Ubuntu. 5. Настроить pam_radius с IP и секретом. 6. Добавить pam_radius в /etc/pam.d/sshd. 7. Протестировать и отладить через логи.

Диагностика и распространённые ошибки

  • Проблема: «Не проходит RADIUS-запрос» — проверьте сетевой доступ по UDP 1812, верный Shared Secret и совпадение имён/портов.
  • Проблема: «Пользователь не найден» — убедитесь, что имя пользователя совпадает на Ubuntu и в WiKID или настройте LDAP/AD.
  • Проблема: «SSH блокируется» — всегда имейте альтернативный доступ (консоль, KVM) перед изменением PAM.

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

  • Успешная аутентификация: пользователь вводит корректный PIN+OTP и авторизуется в X2Go.
  • Отказ при неверном OTP: попытка с неверным кодом блокируется, запись в auth.log отмечает отказ.
  • Быстрая деактивация: администратор WiKID деактивирует токен — пользователь не проходит аутентификацию.

Решение для ролей безопасности и соответствия

  • Отключение пользователя происходит на уровне WiKID — мгновенно блокирует доступ. Это упрощает управление при увольнениях.
  • Если требуется аудит, включите логирование RADIUS-запросов и централизованный сбор в SIEM.

Диаграмма принятия решения (Mermaid)

flowchart TD
  A[Пользователь пытается войти] --> B{Есть локальная учётная запись?}
  B -- Нет --> C[Авторизация через LDAP/AD]
  B -- Да --> D[Запрос PAM -> pam_radius]
  D --> E{RADIUS отвечает OK?}
  E -- Да --> F[Доступ разрешён в X2Go]
  E -- Нет --> G[Проблема аутентификации: отказ]
  G --> H[Оповещение администратора]

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

  • Настройка WiKID + pam_radius для X2Go даёт надёжную двухфакторную защиту удалённых сессий.
  • Всегда тестируйте изменения PAM на тестовом сервере и имейте резервный доступ.
  • Для крупной инфраструктуры рассмотрите проксирование RADIUS через централизованный RADIUS-сервер, который будет проверять права в LDAP/AD и делегировать проверку токенов WiKID.

Важно: не меняйте PAM без плана отката и доступа к консоли хоста.

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

  • Пользователь подключается к X2Go и проходит аутентификацию только с корректным OTP.
  • Логи показывают успешную RADIUS-авторизацию.
  • Отключение токена в WiKID мгновенно препятствует доступу.

Сводка

  • Создайте домен и Network Client в WiKID, получите Shared Secret.
  • Установите X2Go и libpam-radius-auth на Ubuntu.
  • Настройте /etc/pam_radius_auth.conf и добавьте pam_radius в /etc/pam.d/sshd.
  • Тестируйте через auth.log и обеспечьте план отката при проблемах.

Notes: Если ваша инфраструктура использует другую версию Ubuntu или другой дистрибутив, проверьте соответствие пакетов и репозиториев. При использовании производственных систем рекомендуется внедрять изменения поэтапно и иметь документированные процедуры отката.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Найти Wi‑Fi через Facebook и отключить слежение
Руководство

Найти Wi‑Fi через Facebook и отключить слежение

Чатботы для сайта, Facebook и Slack
Технологии

Чатботы для сайта, Facebook и Slack

Как держать экран iPad включённым постоянно
Советы

Как держать экран iPad включённым постоянно

Развернуть статический сайт на DigitalOcean App Platform
DevOps

Развернуть статический сайт на DigitalOcean App Platform

Как включить iPhone 13 — быстро и просто
Гаджеты

Как включить iPhone 13 — быстро и просто

Установка и перенос приложений в Windows 10
Windows

Установка и перенос приложений в Windows 10