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

Защита 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
Автор
Редакция

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

MetaMask Learn: быстрое введение в Web3
Обучение

MetaMask Learn: быстрое введение в Web3

Сменить язык Cortana в Windows 10 Technical Preview
Windows 10

Сменить язык Cortana в Windows 10 Technical Preview

Обновление Ubuntu 12.04 до 14.04 LTS
Linux

Обновление Ubuntu 12.04 до 14.04 LTS

Ошибка 0xc000001d в Windows — как исправить
Windows

Ошибка 0xc000001d в Windows — как исправить

Очистка и настройка Recent Places в macOS
macOS

Очистка и настройка Recent Places в macOS

Исправить ошибки Windows 10: 0x80070057 и 0xa0000400
Windows 10

Исправить ошибки Windows 10: 0x80070057 и 0xa0000400