Почему X11 представляет угрозу безопасности на серверах?

11

Я помню, что читал, что серверы не имеют графического интерфейса, потому что X11 представляет угрозу безопасности. Почему?

Orcris
источник

Ответы:

8

Документация сообщества Ubuntu объясняет реальные причины, по которым не рекомендуется запускать графический интерфейс в производственной серверной системе:

Большинство разработчиков Ubuntu Server не рекомендуют устанавливать X на сервер. Есть несколько причин не устанавливать графический интерфейс.

Некоторые причины не устанавливать графический интерфейс:

  1. У вас будет больше кода, подверженного уязвимостям безопасности, больше пакетов, которые требуют обновления, и больше простоя сервера.
  2. Пакеты X11 и настольные ПК не поддерживаются в течение всего 5-летнего жизненного цикла выпуска сервера LTS.
  3. Производительность может снизиться, поскольку ресурсы (память, пространство на жестком диске, процессор и т. Д.) Будут использоваться графическим интерфейсом.
  4. Рекомендуется устанавливать только необходимое программное обеспечение на производственном сервере.
  5. GUI может включать в себя другие сетевые службы, которые не подходят для сервера.
    1. Одна из целей Ubuntu Desktop Edition - облегчить пользователям использование Linux. При установке некоторых сред рабочего стола будут установлены службы, которые вам могут не понадобиться. Например, avahi-daemon , который используется для настройки сети, добавляет еще один открытый порт и может привести к нежелательным конфликтам DNS с доменом .local.

Поэтому для наиболее безопасного сервера лучше не устанавливать графический интерфейс.

«ServerGUI» от «Участников вики-документации по Ubuntu», воспроизведенный здесь в соответствии с разрешением CC-BY-SA 3.0 .

Вопреки распространенному заблуждению, X11, будучи сервером, на самом деле не имеет ничего общего с тем, почему запуск GUI на рабочем сервере считается неидеальным с точки зрения безопасности. По умолчанию X11 практически никогда не настроен на доступ к сети через любую операционную систему. Ни в одной версии Ubuntu X11 никогда не запускал доступный по сети сервер в конфигурации по умолчанию. (Чтобы получить доступ к X11 в Ubuntu через TCP, вы должны переслать его через SSH или вручную перенастроить сервер.)

Более того, даже если X11 действительно запускал доступный по сети сервер , это не было бы причиной не устанавливать его на систему производственного сервера. Предполагается, что любой пользователь, работающий с рабочим сервером, может настроить его для своих нужд и провести аудит, чтобы убедиться, что нежелательные службы не работают. (Если они не могут, это создаст гораздо большую угрозу для их безопасности, чем создаваемый графический интерфейс.) Даже если X11 должен был прослушивать порт на физическом сетевом интерфейсе ( что не так ), порт может быть легко заблокирован путем переконфигурирования встроенного с netfilterпомощью iptables(или как внешний интерфейс более высокого уровня, как ufw).

Напротив, проблемы, перечисленные выше, не так легко преодолеть путем реконфигурации.

Элия ​​Каган
источник
1
10.04 имел различное время поддержки для сервера и рабочего стола, 12.04 и более поздние - нет. Кроме того, неиспользуемый графический интерфейс не потребляет никакого процессора, и оперативная память, которую он использует, будет заменена.
psusi
@psusi Хорошее замечание об изменении жизненного цикла поддержки. Что касается проблем с ЦП и ОЗУ, (1) я не согласен с тем, что неработающий графический интерфейс никогда не потребляет ЦП, и (2) если графический интерфейс работает, то, когда кто-то работает на локальной машине, он, скорее всего, использует его, будь то хотят они или нет, и это заставит его потреблять больше ресурсов процессора и памяти. Однако пункты 1, 4 и 5 действительно являются (и, вероятно, всегда были) наиболее важными причинами, по которым следует избегать запуска графического интерфейса пользователя на производственном сервере, и они не зависят от проблем жизненного цикла поддержки или использования ресурсов.
Элия ​​Каган
Могу ли я добавить, что Xorg по умолчанию также работает от имени пользователя root.
Вади М.
5

Каждый запущенный процесс представляет собой угрозу безопасности. Особенно те, которые слушают через сетевой порт (X11 делает).

Общая хорошая практика - не запускать что-либо на сервере, который не обязательно должен быть там, и X11 определенно не обязательно должен быть на сервере, к которому вы будете подключаться по SSH.

Я сомневаюсь, что статья, о которой вы читали, говорила об определенной уязвимости в X11 (если бы она была исправлена, уязвимости обычно не задерживались нефиксированными надолго), а скорее просто полезной практикой.

цезий
источник
2
В большинстве современных дистрибутивов Linux (таких как Ubuntu) X-сервер по умолчанию не прослушивает сетевой порт, а только принимает локальные соединения через доменные сокеты.
Флориан Диш,
@FlorianDiesch Даже на ненастроенном с сервера?
Amith KK
Большое +1 за упоминание о том, что X11 является сетевым сервером.
Стефано Палаццо
2
Амит: Да. xinit / startx использует -nolisten tcpпо умолчанию
Florian Diesch
5

Это связано с тем, что система X Window представляет серьезную угрозу безопасности, если она не защищена должным образом. «Дисплей» X11 - это сервер X11, работающий на вашем рабочем столе и включающий экран, клавиатуру и мышь. Если ваш дисплей X11 небезопасен, он позволит программе, работающей в любом месте Интернета, подключиться к нему, и соединение может быть для вас полностью невидимым. После подключения эта программа получает полный доступ к вашему дисплею, что означает, что она может:

  • Просмотр и копирование содержимого экрана с помощью стандартных служебных программ X11;
  • Контролируйте свои нажатия клавиш;
  • Удаленно управляйте любым браузером Netscape на рабочем столе и нажимайте клавиши Forge, как если бы вы печатали их самостоятельно (хотя не все приложения X11 чувствительны к этому).

Эмпирическое правило НЕ используется xhost +- оно полностью отключает безопасность вашего дисплея.

Хороший способ - переслать X через ssh


Взято с : http://www2.slac.stanford.edu/computing/security/xwindow/

Амит КК
источник
1
Этой статье около 10 лет. Информация все еще действительна?
Стефано Палаццо
1
Главным образом, да ... потому что AFAIK у нас есть xhost +команда
Amith KK
xhost +не могу переопределить -nolisten tcp, просто открою вам любое соединение с локального хоста.
Алан
Будут ли эти проблемы решены путем запуска xserver для каждого приложения в отдельности?
phil294
-6

Настоящая причина в том, что администраторы могут думать о себе как о супер-умных, запуская вещи из командной строки. Нет риска безопасности при запуске графического интерфейса на сервере Ubuntu.

Rich Striker
источник