Ответы:
Документация сообщества Ubuntu объясняет реальные причины, по которым не рекомендуется запускать графический интерфейс в производственной серверной системе:
Большинство разработчиков Ubuntu Server не рекомендуют устанавливать X на сервер. Есть несколько причин не устанавливать графический интерфейс.
Некоторые причины не устанавливать графический интерфейс:
- У вас будет больше кода, подверженного уязвимостям безопасности, больше пакетов, которые требуют обновления, и больше простоя сервера.
- Пакеты X11 и настольные ПК не поддерживаются в течение всего 5-летнего жизненного цикла выпуска сервера LTS.
- Производительность может снизиться, поскольку ресурсы (память, пространство на жестком диске, процессор и т. Д.) Будут использоваться графическим интерфейсом.
- Рекомендуется устанавливать только необходимое программное обеспечение на производственном сервере.
- GUI может включать в себя другие сетевые службы, которые не подходят для сервера.
- Одна из целей 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
).
Напротив, проблемы, перечисленные выше, не так легко преодолеть путем реконфигурации.
Каждый запущенный процесс представляет собой угрозу безопасности. Особенно те, которые слушают через сетевой порт (X11 делает).
Общая хорошая практика - не запускать что-либо на сервере, который не обязательно должен быть там, и X11 определенно не обязательно должен быть на сервере, к которому вы будете подключаться по SSH.
Я сомневаюсь, что статья, о которой вы читали, говорила об определенной уязвимости в X11 (если бы она была исправлена, уязвимости обычно не задерживались нефиксированными надолго), а скорее просто полезной практикой.
-nolisten tcp
по умолчанию
Это связано с тем, что система X Window представляет серьезную угрозу безопасности, если она не защищена должным образом. «Дисплей» X11 - это сервер X11, работающий на вашем рабочем столе и включающий экран, клавиатуру и мышь. Если ваш дисплей X11 небезопасен, он позволит программе, работающей в любом месте Интернета, подключиться к нему, и соединение может быть для вас полностью невидимым. После подключения эта программа получает полный доступ к вашему дисплею, что означает, что она может:
Эмпирическое правило НЕ используется xhost +
- оно полностью отключает безопасность вашего дисплея.
Хороший способ - переслать X через ssh
Взято с : http://www2.slac.stanford.edu/computing/security/xwindow/
xhost +
команда
xhost +
не могу переопределить -nolisten tcp
, просто открою вам любое соединение с локального хоста.
Настоящая причина в том, что администраторы могут думать о себе как о супер-умных, запуская вещи из командной строки. Нет риска безопасности при запуске графического интерфейса на сервере Ubuntu.