Безопасность

3.1 Учётные записи пользователя и группы GDM

В целях безопасности, рекомендуется использовать выделенную учётную запись пользователя и группы. В большинстве систем это — «gdm». Но GDM можно настроить на использование любой другой учётной записи. Все графические программы GDM запускаются от имени этой учётной записи и взаимодействие происходит в рамках её прав. Поэтому желательно ограничить права пользователя и группы gdm.

Единственная специальная привелегия учётной записи «gdm», необходимая для работы — это возможность чтения и записи файлов Xauth в каталог <var>/run/gdm, который должен иметь владельца root:gdm и права доступа 1777.

You should not, under any circumstances, configure the GDM user/group to a user which a user could easily gain access to, such as the user nobody. Any user who gains access to an Xauth key can snoop on and control running GUI programs running in the associated session or perform a denial-of-service attack on it. It is important to ensure that the system is configured properly so that only the "gdm" user has access to these files and that it is not easy to login to this account. For example, the account should be setup to not have a password or allow non-root users to login to the account.

Конфигурация программы приветствия GDM хранится в GConf. Чтобы разрешить GDM записывать конфигурацию, необходимо учётной записи «gdm» дать права записи в свой домашний каталог $HOME. Пользователи могут самостоятельно изменять конфигурацию по умолчанию в GConf, чтобы избежать необходимости обечпечивать учётной записи «gdm» права записи в домашний каталог $HOME. При этом некоторые возможности GDM могут быть недоступны, если у него нет возможности записывать информацию в конфигурацию GConf.

3.2 Модуль аутентификации PAM

GDM использует модуль PAM для аутентификации при входе в систему. PAM означает: подключаемый модуль аутентификации (Pluggable Authentication Module), и используется большинством программ, требующим аутентификацию пользователя. Это позволяет администратору настроить способы аутентификации для разных программ входа в систему (например: ssh, login, хранителей экрана и так далее).

PAM является достаточно сложным модулем со множеством параметров конфигурации, поэтому в этом документе не представлены детали его настройки, а лишь даётся необходимая информация по настройке PAM для работы с GDM. Предполагается, что читатель, желающий настроить PAM, знаком с его документацией и понимает принципы конфигурирования PAM, а также термины, используемые в этом разделе.

PAM configuration has different, but similar, interfaces on different Operating Systems, so check the pam.d or pam.conf man page for details. Be sure you read the PAM documentation and are comfortable with the security implications of any changes you intend to make to your configuration.

По умолчанию GDM использует сервисы PAM с именем «gdm» для обычного входа и «gdm-autologin» для автоматического входа. Если эти сервисы не определены в конфигурационных файлах «pam.d» или «pam.conf», то GDM будет использовать обычное поведение PAM. На большинстве систем это сработает, но автоматический вход в систему может не работать, если не определен сервис PAM «gdm-autologin».

Сценарий PostLogin выполняется перед вызовом метода pam_open_session, а сценарий PreSession после, что позволяет системному администратору добавить любые сценарии до или после того, как PAM инициализирует сеанс.

Если вы хотите использовать с GDM другие типы аутентификации (например, сканирование отпечатков пальцев или карты SmartCard), то это реализовывается с помощью соответствующих сервисных модулей PAM, а не изменением кода GDM. За дополнительной информацией обращайтесь к документации PAM. То как использовать такие механизмы часто обсуждается в списке рассылки

, за дополнительной информацией можно обратиться в архив рассылки.

PAM имеет некоторые ограничения при работе с несколькими типами аутентификации одновременно, например возможность одновременного использования карт SmartCard и аутентификации путем ввода имени пользователя и пароля. Есть способы использования такой возможности, и лучший способ их изучить — это установить конфигурацию с такими настройками.

Если не работает автоматический вход в систему проверьте наличие сервиса «gdm-autologin» в конфигурации PAM. Для включения этой возможности необходимо использовать модуль PAM, который не производит аутентификации или возвращает PAM_SUCCESS со всех интерфейсов, например модуль pam_allow.so, с использованием которого конфигурация PAM с включённым сервисом «gdm-autologin» будет выглядеть следующим образом:

       gdm-autologin auth  required    pam_unix_cred.so.1
       gdm-autologin auth  sufficient  pam_allow.so.1
       gdm-autologin account  sufficient  pam_allow.so.1
       gdm-autologin session  sufficient  pam_allow.so.1
       gdm-autologin password  sufficient  pam_allow.so.1

The above setup will cause no lastlog entry to be generated. If a lastlog entry is desired, then use the following for the session:

       gdm-autologin сеанс требует  pam_unix_session.so.1

If the computer is used by several people, which makes automatic login unsuitable, you may want to allow some users to log in without entering their password. This feature can be enabled as a per-user option in the users-admin tool from the gnome-system-tools; it is achieved by checking that the user is member a Unix group called "nopasswdlogin" before asking for a password. For this to work, the PAM configuration file for the "gdm" service must include a line such as:

      gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

3.3 Базы utmp и wtmp

GDM создает записи в базах данных utmp и wtmp учёта пользователей во время входа и выхода пользователей из системы. База данных utmp содержит информацию о пользователе и его правах доступа, которая доступна с помощью команд: finger, last, login и who. База данных wtmp содержит историю базы utmp. Для получения дополнительной информации обратитесь к страницам man utmp и wtmp.

3.4 Xserver Authentication Scheme

Xserver authorization files are stored in a newly created subdirectory of <var>/run/gdm at start up. These files are used to store and share a "password" between X clients and the Xserver. This "password" is unique for each session logged in, so users from one session can't snoop on users from another.

GDM only supports the MIT-MAGIC-COOKIE-1 Xserver authentication scheme. Normally little is gained from the other schemes, and no effort has been made to implement them so far. Be especially careful about using XDMCP because the Xserver authentication cookie goes over the wire as clear text. If snooping is possible, then an attacker could simply snoop your authentication password as you log in, regardless of the authentication scheme being used. If snooping is possible and undesirable, then you should use ssh for tunneling an X connection rather then using XDMCP. You could think of XDMCP as a sort of graphical telnet, having the same security issues. In most cases, ssh -Y should be preferred over GDM's XDMCP features.

3.5 Безопасность XDMCP

Не смотря на то, что дисплей защищен аутентификационной информацией (в cookies), события XEvents и соответствующие нажатия клавиш при вводе пароля будут переданы по сети в открытом виде и их легко перехватить.

XDMCP в основном предназначен для использования в лабораторных терминалах, где клиентам необходима сеть лишь для соединения с сервером. Лучшей политикой безопасности будет использование таких клиентов в отдельной подсети к которой нет доступа извне, и единственной точкой доступа во внешние сети является сам сервер. Подобные конфигурации нельзя использовать в сетях с неуправляемыми концентраторами или прослушиваемых сетях.

3.6 Управление доступом XDMCP

Контроль доступа XDMCP реализован с использованием библиотеки TCP Wrappers. В некоторых операционных системах GDM собран без поддержки TCP Wrappers, поэтому подобные возможности могут быть недоступны.

Необходимо использовать имя демона gdm в файлах <etc>/hosts.allow и <etc>/hosts.deny. Например, чтобы запретить машинам из домена .evil.domain входить в систему, необходимо добавить следующее:

gdm: .evil.domain

в файл <etc>/hosts.deny. Возможно, также необходимо добавить

gdm: .your.domain

в файл <etc>/hosts.allow, если по умолчанию запрещены все сервисы со всех машин. За деталями обратитесь к станицам man hosts.allow(5).

3.7 Безопасность сетевого экрана

Even though GDM tries to outsmart potential attackers trying to take advantage of XDMCP, it is still advised that you block the XDMCP port (normally UDP port 177) on your firewall unless really needed. GDM guards against denial of service attacks, but the X protocol is still inherently insecure and should only be used in controlled environments. Also each remote connection takes up lots of resources, so it is much easier to do a denial of service attack via XDMCP than attacking a webserver.

It is also wise to block all of the Xserver ports. These are TCP ports 6000+ (one for each display number) on your firewall. Note that GDM will use display numbers 20 and higher for flexible on-demand servers.

X is not a very safe protocol when using it over the Internet, and XDMCP is even less safe.

3.8 Средство PolicyKit

GDM можно настроить на использование средства PolicyKit, чтобы позволить системному администратору управлять видимостью кнопок выключения и перезагрузки системы на экране программы приветствия.

Видимость этих кнопок регулируется действиями:org.freedesktop.consolekit.system.stop-multiple-users и org.freedesktop.consolekit.system.restart-multiple-users соответственно. Политика этих действий может быть установлена с помощью утилиты polkit-gnome-authorization или консольной программой polkit-auth.

3.9 RBAC: управление доступом по ролям

GDM may be configured to use RBAC instead of PolicyKit. In this case the RBAC configuration is used to control whether the login screen should provide the shutdown and restart buttons on the greeter screen.

For example, on Oracle Solaris, the "solaris.system.shutdown" authorization is used to control this. Simply modify the /etc/user_attr file so that the "gdm" user has this authorization.