Использование протокола SSH в системе X Window

Для работы системы X Window, которая основана на клиент-серверном взаимодействии, необходима аутентификация клиентов для обслуживания их графических ресурсов. Конечно, возможен вариант и без проверки клиентов, но тогда это огромная дыра в безопасности системы. По-умолчанию для авторизации диспетчер дисплеев (ДД) системы X Window использует специальные наборы куков (cookie), однако такая схема также является достаточной для обеспечения безопасности. Во-первых передаваемые данные между X-сервером и клиентами могут быть перехвачены, поскольку в данном случае передаваемый трафик никак не шифруется. Во-вторых, к cookie-набору может получить доступ посторонний пользователь. При организации системы X Window системным администраторам желательно продумывать эту схему с учётом применения защищённых соединений — таких как SSH, который идеально подходит для реализации работы X Window.

Схема работы SSH для X Window

Основным назначением SSH является аутентификация клиентов и шифрование передачи команд на удалённом терминале. Однако кроме всего прочего, SSH также способен передавать и общие данные, в том числе и данные X-сервера. Поскольку в работу SSH изначально заложены механизмы работы с X-сервером, в результате чего он (SSH) очень хорошо адаптирован для этого, то это является дополнительным стимулом для администраторов в использовании SSH в работе X Window. Это связано с тем, что в системе X Window используется механизм перенаправления портов, подобный тому, как это реализовано в SSH.

Некоторая сложность при использовании SSH для X Window заключается в том, что клиент SSH должен работать на той же машине, что и X-сервер. В то же время сервер SSH должен работать на той же машине, что и клиентские X-приложения. Путаницу также может вносить и тот факт, что SSH формирует виртуальный ДД, являющийся локальным по отношению к удалённой системе. На следующем рисунке показана схема работы системы X Window через протокол SSH:

Организация соединения SSH в X Window

Для SSH-соединения в системе X Window присваивается номер дисплея, начиная с 10 и увеличивается на единицу для каждого нового соединения (SSH). Нумерация дисплеев и связанныхс ними мониторов представляется в формате ND:NM, где ND – номер дисплея, а NM – номер соответствующего ему монитора. Для более наглядного примера следует рассмотреть следующий порядок действий:

x-server$ ssh -v -X x-client.mydomain.com
SSH-2.0-OpenSSH_5.1
debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to x-client.mydomain.com [192.168.15.9] port 22.
debug1: Connection established.
Enter passphrase for key '/home/john/. ssh/id_rsa':
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: Entering interactive session.
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Requesting authentication agent forwarding.
x-client$

Из этого вывода видно (последние две строки «debug1»), что после успешной аутентификации клиенту направляется запрос для организации перенаправления передачи данных для x-приложений. Вообще нужно отметить, что разрешение на перенаправление может быть получено как на стороне сервера SSH, так и на стороне его клиента, поскольку в этот момент сессия уже авторизована и защищена. Ключ -X в данном случае как раз и используется для того, чтобы явным образом запросить и разрешить перенаправление для X.

Как только пользователю удалось авторизоваться вышеописанным способом, он может просмотреть значение переменной DISPLAY, которая необходима для получения информации о том, по какому адресу и к какому дисплею должно обращаться x-приложение при подключении к X-серверу:

x-client$ echo $DISPLAY
localhost:12.0
x-client$ xauth list
x-client/unix:12 MIT-MAGIC-COOKIE-1 fdv345fade2f79nzbf5jf5bhnjmk45vg

В данном выводе команда xauth list показывает cookie-набор, необходимый для авторизации x-клиентов в системе X Window, когда SSH перенаправляет этот поток данных к X-серверу через организованный SSH виртуальный дисплей.

Из-за наличия механизмов перенаправления данная схема выглядит несколько нелогичной и запутанной, однако именно в таком виде обеспечивается высокий уровень безопасности при организации централизованной системы X Window через взаимодействие по SSH.

Отладка соединения

Следует обратить внимание, что при реализации подобных схем по SSH, переменная DISPLAY является переменной среды для виртуального дисплея, созданного SSH. Об этом стоит всегда помнить — это помогает избегать проблем при наладке системы X Window по SSH. Для других SSH-соединений, предназначенных для передачи данных x-приложений и созданных в том числе и другими пользователями, будут созданы соответствующие виртуальные дисплеи со своими номерами, а также переменными окружения, включая DISPLAY.

Если в процессе настройки X Window по SSH возникают проблемы, то нужно использовать опцию -v, которая выводит всю отладочную информацию, позволяющую увидеть скрытую проблему или просто отследить порядок действий при реализации перенаправлений при передаче данных, например:

x-client$ xeyes
debug1: client_input_channel_open: ctype x11 rchan 4 win 65536 max 16384
debug1: client_request_x11: request from 127.0.0.1 35411
debug1: channel 1: new [x11]
debug1: confirm x11
debug1: channel 1: FORCE input drain

Данный вывод показывает процесс запуска x-приложения xeyes (отображает глаза, которые следят за перемещением курсора мыши), после того как была успешно установлена SSH-сессия для X Window. Если эту сессию запускать с ключом -v, то будет выводиться также и отладочная информация, из которой будет чётко видно, как при запуске xeyes SSH получает запрос на создание X-соединения и перенаправляет его к X-серверу.

Таким образом, конечно в настройке X Window по SSH имеются свои недостатки, относительно того что сама по себе схема взаимодействия не является наглядной. Вдобавок шифрование снижает скорость передачи данных. Однако это единственный способ построить защищённую систему X Window для централизованного управления и контроля без ущерба для гибкости и масштабируемости рабочей среды как для пользователей, так и для администраторов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: