Как настроить терминальный сервер в Linux на Ubuntu 9.10 с помощью FreeNX
Краткое содержание
Введение
В этой инструкции шаг за шагом показано, как превратить рабочую станцию с Ubuntu 9.10 в терминальный сервер, доступный с тонких клиентов и обычных рабочих станций через протокол NX (реализация — FreeNX). Материал рассчитан на системных администраторов и продвинутых пользователей. Объяснения простыми словами: FreeNX — это реализация протокола NX от NoMachine; он минимизирует трафик, оставляя хорошее качество и отзывчивость интерфейса.
Важно: инструкция проверена автором в конкретной среде; безопасность сети сложна. Следуйте рекомендациям и адаптируйте их под свою инфраструктуру.
Что такое FreeNX и зачем он нужен
FreeNX — свободная реализация серверной части протокола NX. NX использует SSH для туннелирования трафика, поэтому соединения шифруются по умолчанию. В сравнении с VNC, NX более экономен по пропускной способности и даёт лучшую интерактивность.
Краткие определения:
- NX: протокол удалённого рабочего стола, оптимизированный для медленных каналов.
- FreeNX: открытая реализация сервера NX.
- NoMachine NX Client: официальные клиенты для Windows, macOS, Linux, Solaris.
Когда это имеет смысл
- Доступ к рабочему месту из внешней сети при минимальном изменении инфраструктуры.
- Использование слабых клиентов (нетбуки, устаревшие ПК) вместе с мощным сервером/рабочей станцией.
- Централизованное управление пользовательскими сеансами и снижение риска заражения локальных машин.
Быстрый обзор шагов
- Установка Ubuntu 9.10.
- Установка OpenSSH, fail2ban, firehol.
- Статический IP и базовая сетевая настройка.
- Настройка firehol (брандмауэр) — разрешаем входящие SSH.
- Установка FreeNX и начальная настройка ключей.
- Установка NX Client на клиентские машины и подключение.
- Дополнительные меры безопасности и операционные процедуры.
Требования
- Сервер: Ubuntu 9.10 с правами root.
- Доступ к интернету для загрузки пакетов и репозиториев.
- Маршрутизатор для проброса портов (если требуется доступ извне).
- Клиент: NoMachine NX Client или совместимый клиент.
Подготовка системы
Откройте терминал: в интерфейсе GNOME это Applications -> Accessories -> Terminal. Повысите привилегии:
sudo su -l
Установите необходимые пакеты (openssh-server обязателен; fail2ban поможет предотвратить брутфорс; firehol упростит генерацию правил iptables):
aptitude update && aptitude install openssh-server fail2ban firehol
Проверьте работу SSH:
ssh 127.0.0.1
Вы увидите отпечаток ключа RSA и предложение подтвердить подключение. Зафиксируйте отпечаток (он пригодится позже). Нажмите Ctrl-C, чтобы прервать попытку входа — нам только нужен тест доступности сервера SSH.
Настройка сети (статический IP)
Поскольку сервер будет доступен удалённо, целесообразно назначить статический IP. Получите текущие параметры:
ifconfig eth0
cat /etc/resolv.conf
route
Запишите адрес, маску, broadcast, DNS и шлюз (Gateway). Выберите адрес в том же диапазоне, но вне зоны выдачи DHCP, чтобы избежать конфликтов.
Отредактируйте сетевые интерфейсы:
nano /etc/network/interfaces
Если есть строка
iface eth0 inet dhcp
замените dhcp на static, либо добавьте конфигурацию:
iface eth0 inet static
address 192.168.1.253
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8, 8.8.4.4
Примечание: приведённые значения — примеры; используйте параметры своей сети. Я рекомендую DNS от Google для простоты запоминания, если вас устраивает их политика конфиденциальности.
Перезапустите сетевые службы и проверьте подключение:
/etc/init.d/networking restart
Откройте браузер и убедитесь, что есть доступ в интернет.
Настройка брандмауэра с firehol
Редактирование файла конфигурации firehol и включение сервиса:
nano /etc/default/firehol
Измените
START_FIREHOL=NO
на
START_FIREHOL=YES
Обновим список зарезервированных адресов IANA:
get-iana
Откройте основной конфигурационный файл firehol:
nano /etc/firehol/firehol
Внизу добавьте правила для простого сценария: разрешаем входящие подключения только для SSH и разрешаем любые исходящие:
server ssh accept
Сохраните файл и запустите firehol:
firehol start
Ожидаемый вывод:
Activating new firewall (47 rules): OK
Проверить сгенерированные правила:
iptables --list
Важно: в более строгих средах стоит закрывать исходящие соединения и открывать конкретные сервисы, а также вести лог событий.
Установка FreeNX
Добавим PPA и установим FreeNX:
add-apt-repository ppa:freenx-team
aptitude update
aptitude install freenx
/usr/lib/nx/nxsetup --install
После установки вы можете сгенерировать пользовательские ключи NX. Ключи повышают безопасность: если сервер доступен снаружи, подумайте о создании собственных ключей и распространении их среди клиентов.
Генерация ключей FreeNX выполняется утилитой nxsetup либо вручную. Если вы генерируете ключи, сохраните копию приватного ключа в надёжном месте — он потребуется клиентам.
Конфигурация OpenSSH (рекомендации безопасности)
Резюме рекомендаций для sshd_config (/etc/ssh/sshd_config):
- Отключите вход root по паролю, используйте sudo для администрирования.
- Рассмотрите вариант отключения аутентификации по паролю (PasswordAuthentication no) и включения ключевой аутентификации (AuthorizedKeys). Это повысит безопасность, но потребует настройки ключей для пользователей.
- Ограничьте доступ в AllowUsers/AllowGroups, если необходимо.
- Поддерживайте актуальные ключи и проверяйте отпечатки при первом подключении.
Пример изменений:
PermitRootLogin no
PasswordAuthentication yes
AllowUsers alice bob
Если вы отключаете пароли, смените PasswordAuthentication на no и настройте SSH-ключи у пользователей.
Перезапустите SSH после изменений:
/etc/init.d/ssh restart
Важно: если вы работаете через SSH при редактировании конфигурации, оставьте активную сессию или настройте метод отката, чтобы не заблокировать себя.
Настройка fail2ban
fail2ban поможет блокировать IP, проявляющие подозрительную активность (много неверных попыток входа). Базовая конфигурация /etc/fail2ban/jail.conf содержит секцию для sshd. Пример минимальной настройки:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
Перезапустите fail2ban:
/etc/init.d/fail2ban restart
Проверьте баны:
fail2ban-client status sshd
Установка клиента NoMachine NX (клиентская сторона)
Перейдите на http://www.nomachine.com/download.php и скачайте клиент для вашей ОС. Установка стандартная. При первом запуске используйте мастера подключения (NX Connection Wizard):
- Назовите сессию.
- Укажите IP адрес сервера.
- Установите тип сети: LAN (скорее всего).
- Выберите окружение рабочего стола: GNOME для Ubuntu 9.10 по умолчанию.
- Укажите разрешение экрана и остальные параметры.
Если вы сгенерировали собственный ключ FreeNX, включите Advanced Configuration и импортируйте ключ в разделе Server -> Key.
При первом подключении проверьте отпечаток сервера SSH — он должен совпадать с тем, что вы записали при локальном тесте ssh 127.0.0.1.
Организация пользователей и права
Создавайте учётные записи пользователей для каждого человека: System -> Administration -> Users and Groups. Присвойте пользователям необходимые группы и права. Если вы хотите, чтобы каждый подключающийся имел отдельный сеанс рабочего стола, используйте стандартные учётные записи. Если требуется централизованная аутентификация, рассмотрите интеграцию с LDAP/Active Directory.
Проброс портов и доступ извне
Чтобы подключаться из интернета, пробросьте порт 22 на роутере на IP сервера. В бизнес-сценарии чаще ставят промежуточный брандмауэр/бастион и пробрасывают только его порт; внутри сети — ещё один брандмауэр между сервером и внутренней сетью.
Если сервер будет доступен извне, настоятельно рекомендуется:
- Генерировать собственные ключи FreeNX.
- Использовать ключевую аутентификацию SSH.
- Ограничивать список IP-адресов (если возможно).
Тестирование и приёмка (Критерии приёмки)
Критерии приёмки:
- SSH доступен локально и удалённо (с доверенного клиента).
- FreeNX установлен и служба запущена.
- Клиент может подключиться и получить рабочий стол GNOME.
- fail2ban фиксирует неверные попытки входа и блокирует подозрительные IP.
- firehol закрывает все входящие порты, кроме 22.
- Отпечаток SSH на клиенте совпадает с отпечатком, полученным локально.
Тест-кейсы:
- Попытка подключения по SSH с правильным логином/паролем — успешна.
- Попытка подключения по SSH с неверным паролем 6 раз — IP в бане.
- Подключение по NX — рабочий стол отображается, ввод-вывод адекватны.
- Перезапуск сетевой службы — сервер возвращает статический IP.
Ролики действий: чек-листы по ролям
Администратор (перед вводом в эксплуатацию):
- Настроить статический IP.
- Установить openssh-server, fail2ban, firehol, freenx.
- Проверить отпечаток SSH.
- Настроить брандмауэр и запустить firehol.
- Сгенерировать FreeNX-ключи (если требуется) и сохранить их в безопасном месте.
Пользователь (первое подключение):
- Скачал и установил NoMachine NX Client.
- Импортировал ключ, если требуется.
- Подключился, подтвердил отпечаток SSH.
- Сообщил администратору об ошибках.
Операционный SOP: быстрый набор команд
- Проверка статуса SSH:
service ssh status
- Проверка FreeNX:
ps aux | grep nx
/etc/init.d/freenx status # если служба доступна так называется
- Перезапуск firehol:
firehol restart
- Просмотр логов авторизации:
tail -n 200 /var/log/auth.log
- Проверка fail2ban:
fail2ban-client status
fail2ban-client status sshd
Инцидентный план и откат (Runbook)
Сценарий: сервер недоступен извне после изменения конфигурации SSH
Шаги отката:
- Откройте консоль на месте или подключитесь через KVM/VM.
- Восстановите файл /etc/ssh/sshd_config из резервной копии или отмените последние изменения.
- Перезапустите ssh: /etc/init.d/ssh restart
- Проверьте сетевые правила firehol: временно отключите firehol: firehol stop.
- Если причина в FreeNX — перезапустите службу или удалите недавно установленные широкие правила.
Всегда сохраняйте резервные копии конфигураций перед внесением изменений.
Безопасность: жёсткие рекомендации
- Используйте ключи SSH вместо паролей, когда это возможно.
- Запретите root-вход по SSH.
- Настройте fail2ban с разумными параметрами maxretry и bantime.
- Если сервер доступен публично, используйте VPN-бастион или ограничивайте доступ по IP.
- Обновляйте пакеты и применяйте патчи (в контексте устаревшей Ubuntu 9.10 это важно; рассмотрите обновление до поддерживаемой версии).
Important: Ubuntu 9.10 больше не поддерживается официально. По возможности обновите систему до поддерживаемой LTS-версии. Работа с устаревшей ОС повышает риски безопасности.
Альтернативы и сравнительная матрица
Кратко о вариантах:
- FreeNX / NoMachine NX — хороши при ограниченной пропускной способности и требовании шифрования через SSH.
- RDP (Windows Remote Desktop) — нативно для Windows, меньше подходит для Linux GUI по умолчанию.
- VNC — прост, но менее экономен по трафику и часто без встроенного шифрования.
- X2Go — современная альтернатива NX для Linux; использует NX-принципы и часто актуальнее для новых дистрибутивов.
Рекомендация: для новых проектов рассмотрите X2Go или современные версии NoMachine; FreeNX хорошо работает на Ubuntu 9.10, но экосистема развивалась.
Миграция старых клиентов / обратная совместимость
Если у вас есть старые клиенты или устаревшие операционные системы:
- Тестируйте соединение заранее.
- Подготовьте список поддерживаемых клиентов и версий.
- Для массового развёртывания создайте образ конфигурации клиента с импортированным ключом и параметрами подключения.
Факторы риска и меры смягчения (Risk matrix)
- Неподдерживаемая ОС (высокий риск) → Миграция на поддерживаемую версию.
- Открытый SSH для всего интернета (средний-высокий) → Включить ключи, ограничить IP, использовать VPN.
- Проброс порта на роутере без брандмауэра внутри (средний) → Разместить сервер за промежуточным брандмауэром.
Глоссарий (одна строка)
- SSH: защищённый протокол удалённого доступа по сети.
- NX: протокол удалённого рабочего стола, оптимизированный по пропускной способности.
- FreeNX: серверная реализация NX с открытым кодом.
- fail2ban: инструмент для автоматической блокировки злонамеренных IP.
- firehol: менеджер правил iptables на основе сценариев.
Частые ошибки и способы их устранения (Edge-case gallery)
- Клиент видит пустой экран при подключении: проверьте выбранное окружение рабочего стола (GNOME vs KDE).
- Отпечаток SSH не совпадает: не принимайте ключ, проверьте возможный MITM и сверяйте с локальным отпечатком.
- Невозможность подключиться извне: проверьте проброс портов на маршрутизаторе и правила firehol.
Пример конфигурации fail2ban и firehol — шаблоны
fail2ban (/etc/fail2ban/jail.local):
[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
firehol (низкоуровневый пример, /etc/firehol/firehol):
version 6
interface any world
policy accept
# loopback
interface lo
policy accept
# accept ssh from anywhere
server ssh accept
# остальные входящие закрыты по умолчанию
Адаптируйте под свою политику безопасности.
Решение при распространённых проблемах (Таблица действий)
- SSH не запускается: проверьте /var/log/auth.log и синтаксис /etc/ssh/sshd_config.
- FreeNX не принимает подключения: проверьте, что /usr/lib/nx/nxserver работает и нет конфликтов портов.
- Пользователь не видит рабочий стол: убедитесь, что у пользователя установлен графический сеанс GNOME и он в списке разрешённых.
Мини-методология развёртывания (шаблон по этапам)
- Подготовить ОС и выполнить обновления.
- Настроить сеть и DNS.
- Установить базовые сервисы (SSH, fail2ban, firehol).
- Установить и настроить FreeNX.
- Настроить клиентские машины и протестировать подключение.
- Провести аудит безопасности и документировать конфигурацию.
- Ввести в эксплуатацию и мониторить логи.
Decision flowchart (Mermaid)
flowchart TD
A[Начало: Есть Ubuntu 9.10?] -->|Да| B{Подключение извне нужно?}
A -->|Нет| Z[Установите Ubuntu или обновитесь]
B -->|Да| C[Настроить статический IP и проброс портов]
B -->|Нет| D[Настроить локальную сеть]
C --> E[Установить OpenSSH, fail2ban, firehol]
D --> E
E --> F[Установить FreeNX и сгенерировать ключи]
F --> G[Установить клиент NoMachine и протестировать]
G --> H[Ввести в эксплуатацию и мониторить]
Короткое руководство для анонса (внутреннее уведомление, 100–200 слов)
Короткий анонс: Мы внедрили терминальный сервер на базе Ubuntu 9.10 с FreeNX, обеспечивающий защищённый удалённый доступ к рабочим станциям по SSH. Приоритет — безопасность: сервер работает за firehol, настроен fail2ban и используется шифрование SSH. Для работы скачайте NoMachine NX Client и настройте сессию по адресу сервера. Для доступа из внешней сети потребуется проброс порта 22. Администрация обеспечивает поддержку настройки клиента и выдачу необходимых ключей.
Дополнительные ресурсы
- https://www.howtoforge.com/the-perfect-desktop-ubuntu-9.10-karmic-koala
- Ubuntu FreeNX Documentation
- Firehol
- Fail2ban
- NoMachine
FAQ
В: Можно ли использовать FreeNX на современных версиях Ubuntu?
О: FreeNX исторически работал на старых версиях. Для современных систем рекомендуются X2Go или актуальные версии NoMachine.
В: Нужно ли пробрасывать порт 22 для всех пользователей?
О: Для удалённого доступа извне — да, нужен проброс порта 22 или доступ через bastion/VPN. Рассмотрите безопасные альтернативы.
В: Что делать, если отпечаток SSH изменился?
О: Не подключайтесь и немедленно свяжитесь с администратором. Изменённый отпечаток может указывать на атаку типа “man-in-the-middle”.
Итог
Вы получили пошаговое руководство по развёртыванию терминального сервера на Ubuntu 9.10 с помощью FreeNX. Ключевые моменты: настройка статического IP, запуск OpenSSH, настройка firehol и fail2ban, установка FreeNX и клиентской части NoMachine. Не забывайте про меры безопасности и документируйте все изменения.
Похожие материалы

Ronggolawe: что это и как защититься
Автоматическое выключение Nest при похолодании

Отключать Wi‑Fi при подключении к Ethernet

Как поставить собственную картинку профиля в Netflix
