Введение

В X Window System программы выполняются как X-клиенты и, следовательно, подключаются к X-серверу отображения, возможно, через компьютерную сеть. Поскольку к сети могут иметь доступ другие пользователи, необходим механизм запрета доступа к программам, запущенным пользователями, отличными от вошедшего в систему. Существует пять стандартных механизмов контроля доступа, определяющих, может ли клиентское приложение подключиться к X-серверу отображения. Их можно сгруппировать в три категории: доступ на основе хоста, доступ на основе cookie и доступ на основе пользователя. Кроме того, как и любое другое сетевое соединение, может использоваться туннелирование.

Доступ на основе хоста

Метод доступа на основе хоста заключается в указании набора хостов, которым разрешено подключаться к X-серверу. Эта система обладает более низкой степенью безопасности, поскольку позволяет любому пользователю, имеющему доступ к такому хосту, подключаться к дисплею. Для активации этого механизма, а также для просмотра и изменения списка авторизованных хостов используются программа xhost и три базовых запроса протокола X Window System. Неправильное использование xhost может непреднамеренно предоставить всем хостам в Интернете полный доступ к X-серверу.

Доступ на основе файлов cookie

Методы авторизации на основе cookie основаны на выборе "волшебного cookie" (произвольного фрагмента данных) и передаче его серверу X при запуске; каждый клиент, способный подтвердить знание этого cookie, затем авторизуется для подключения к серверу. Эти cookie создаются отдельной программой и по умолчанию хранятся в файле Xauthority в домашней директории пользователя. В результате, любая программа, запущенная клиентом на локальном компьютере, может получить доступ к этому файлу и, следовательно, к cookie, необходимому для авторизации сервером. Если пользователь хочет запустить программу с другого компьютера в сети, cookie необходимо скопировать на этот компьютер. Способ копирования cookie зависит от системы: например, на Unix-подобных платформах можно использовать scp для копирования cookie. Две системы, использующие этот метод, – MIT MAGIC COOKIE 1 и XDM AUTHORIZATION 1. В первом методе клиент просто отправляет cookie по запросу для аутентификации. Во втором методе секретный ключ также хранится в файле Xauthority. Клиент создает строку, объединяя текущее время, идентификатор, зависящий от транспортного протокола, и cookie, шифрует полученную строку и отправляет ее на сервер. Утилита xauth предназначена для доступа к файлу Xauthority. Переменная окружения XAUTHORITY может быть определена для изменения имени и расположения этого файла cookie. Протокол Inter Client Exchange (ICE), реализованный библиотекой Inter Client Exchange Library для прямого взаимодействия между клиентами X11, использует тот же метод аутентификации MIT MAGIC COOKIE 1, но имеет собственную утилиту iceauth для доступа к файлу ICEauthority, расположение которого можно изменить с помощью переменной окружения ICEAUTHORITY. ICE используется, например, DCOP и протоколом управления сеансом X (XSMP).

Пользовательский доступ

Методы доступа на основе пользователей работают, авторизуя конкретных пользователей для подключения к серверу. Когда клиент устанавливает соединение с сервером, он должен подтвердить, что управляется авторизованным пользователем. Два метода, основанные на аутентификации пользователей с использованием сетевых систем управления идентификацией, – это SUN DES 1 и MIT KERBEROS 5. Первая система основана на защищенном механизме удаленных процедурных вызовов ONC, разработанном в SunOS. Второй механизм основан на доверии клиента и сервера к серверу Kerberos. Третий метод ограничен локальными соединениями и использует системные вызовы для определения пользователя, находящегося на другом конце локального сокета. Программа xhost может использоваться для добавления или удаления записей localuser и localgroup при использовании этого метода.

Прокладка туннелей

Утилита SSH (при вызове с опцией X или опцией ForwardX11) создает туннель для X11-трафика от удаленных клиентов к локальному серверу. Это достигается путем установки на удаленной машине переменной окружения DISPLAY, указывающей на локальный TCP-сокет, открытый там демоном sshd, который затем перенаправляет X11-коммуникацию обратно в SSH. Демон sshd также вызывает xauth для добавления на удаленной машине строки MIT MAGIC COOKIE 1 в файл Xauthority, что авторизует X11-клиенты на удаленной машине для доступа к локальному X-серверу пользователя SSH. X11-соединения между клиентом и сервером по сети также могут быть защищены другими протоколами безопасного канала, такими как Kerberos/GSSAPI или TLS, хотя эти варианты сейчас используются значительно реже, чем SSH.