¿Por qué es X11 un riesgo de seguridad en los servidores?

11

Recuerdo haber leído que los servidores no tienen una GUI porque X11 es un riesgo de seguridad. ¿Por qué?

Orcris
fuente

Respuestas:

8

La documentación de la comunidad de Ubuntu explica las razones reales por las que no se recomienda ejecutar una GUI en un sistema de servidor de producción:

La mayoría de los desarrolladores de Ubuntu Server no recomiendan instalar X en un servidor. Hay varias razones para no instalar una GUI.

Algunas razones para no instalar una GUI incluyen:

  1. Tendrá más código sujeto a vulnerabilidades de seguridad, más paquetes que deben actualizarse y más tiempo de inactividad del servidor.
  2. X11 y los paquetes de escritorio no son compatibles con el ciclo de vida completo de 5 años de la versión del servidor LTS.
  3. El rendimiento puede verse afectado porque la GUI consumirá los recursos (memoria, espacio en el disco duro, CPU, etc.).
  4. Se recomienda instalar solo el software necesario en un servidor de producción.
  5. La GUI puede incluir otros servicios de red que son inapropiados para un servidor.
    1. Uno de los objetivos de Ubuntu Desktop Edition es facilitar a los usuarios el uso de Linux. Al instalar algunos entornos de escritorio, se instalarán servicios que quizás no desee específicamente. Por ejemplo, avahi-daemon , que se usa para ayudar a configurar las redes, agrega otro puerto abierto y puede introducir conflictos DNS no deseados con un dominio .local.

Entonces, para el servidor más seguro, es mejor no instalar una GUI.

"ServerGUI" de "Colaboradores del wiki de documentación de Ubuntu", reproducido aquí según lo permitido por CC-BY-SA 3.0 .

Contrariamente a una idea errónea algo común, X11 ser un servidor realmente no tiene nada que ver con por qué ejecutar una GUI en un servidor de producción no se considera ideal desde una perspectiva de seguridad. X11 prácticamente nunca está configurado de manera predeterminada para ser accesible a través de una red, en cualquier sistema operativo. Ninguna versión de Ubuntu ha hecho que X11 ejecute un servidor accesible en red en la configuración predeterminada. (Para acceder a X11 en Ubuntu a través de TCP, debe reenviarlo a través de SSH o configurar manualmente el servidor).

Además, incluso si X11 ejecutara un servidor accesible en red , esto no sería una razón para no tenerlo instalado en un sistema de servidor de producción. Cualquiera que ejecute un servidor de producción es presumiblemente capaz de configurarlo para sus necesidades y auditarlo para asegurarse de que no se ejecuten servicios no deseados. (Si no pueden, que supondrán una amenaza mucho mayor para su seguridad que se crearía por tener instalada una interfaz gráfica de usuario.) Aunque X11 tenía que tener un puerto de escucha en una interfaz de red física ( que no es el caso ), el puerto fácilmente podría ser bloqueado mediante la reconfiguración de la incorporada en netfilterel uso iptables(o una interfaz de alto nivel como ufw).

Por el contrario, los problemas enumerados anteriormente no son tan fáciles de superar mediante la reconfiguración.

Eliah Kagan
fuente
1
10.04 tenía una vida útil de soporte diferente para servidor frente a escritorio, 12.04 y posterior no. Además, una interfaz gráfica de usuario inactiva no consume ninguna CPU, y la memoria RAM que usa se cambiará.
psusi
@psusi El punto sobre el cambio del ciclo de vida de soporte es bueno. En cuanto a los problemas de CPU y RAM, (1) no estoy de acuerdo con la experiencia de que una GUI inactiva nunca consuma CPU, y (2) si se está ejecutando una GUI, entonces cuando alguien está trabajando en la máquina local, es probable que la esté utilizando, ya sea quieren o no, y eso hará que consuma más recursos de CPU y memoria. Sin embargo, los puntos 1, 4 y 5 realmente son (y probablemente siempre lo hayan sido) las razones más importantes para considerar que no se ejecute una GUI en un servidor de producción, y son independientes del ciclo de vida de soporte o de los problemas de utilización de recursos.
Eliah Kagan
¿Puedo agregar que Xorg también se ejecuta como root de forma predeterminada?
Wadih M.
5

Cada proceso en ejecución es un riesgo de seguridad. Particularmente aquellos que escuchan en un puerto de red (X11 sí).

Una buena práctica general es no ejecutar nada en un servidor que no necesita estar allí, y X11 ciertamente no necesita estar en un servidor en el que se SSH.

Dudo que el artículo que leyó hablara de una vulnerabilidad específica en X11 (se habría solucionado si es así, las vulnerabilidades no tienden a quedarse sin reparar por mucho tiempo), sino más bien solo una buena práctica general.

Cesio
fuente
2
En la mayoría de las distribuciones modernas de Linux (como Ubuntu), el servidor X por defecto no escucha en un puerto de red, sino que solo acepta conexiones locales a través de sockets de dominio.
Florian Diesch
@FlorianDiesch ¿Incluso en el no configurado del servidor?
Amith KK
Big +1 por mencionar que X11 es un servidor de red.
Stefano Palazzo
2
Amith: si. xinit / startx utiliza -nolisten tcppor defecto
Florian Diesch
5

Esto se debe a que el sistema X Window presenta un grave riesgo de seguridad si no está debidamente asegurado. Una "pantalla" X11 es el servidor X11 que se ejecuta en su escritorio e incluye la pantalla, el teclado y el mouse. Si su pantalla X11 no es segura, permitirá que un programa que se ejecuta en cualquier lugar de Internet se conecte a ella y la conexión puede ser completamente invisible para usted. Una vez conectado, ese programa tiene acceso completo a su pantalla, lo que significa que puede:

  • Vea y copie los contenidos de su pantalla, utilizando los programas de utilidad estándar X11;
  • Controla tus pulsaciones de teclas;
  • Controle de forma remota cualquier navegador Netscape en su escritorio y Forge pulsaciones de teclas como si las estuviera escribiendo usted mismo (aunque no todas las aplicaciones X11 son susceptibles a esto).

NO se debe utilizar una regla general xhost +: deshabilita completamente la seguridad de su pantalla.

Una buena manera es reenviar X es a través de ssh


Tomado de : http://www2.slac.stanford.edu/computing/security/xwindow/

Amith KK
fuente
1
Este artículo tiene unos 10 años. ¿La información sigue siendo válida?
Stefano Palazzo
1
Sobre todo, sí ... porque AFAIK tenemos el xhost +comando
Amith KK
xhost +sin -nolisten tcpembargo, no se puede anular , solo te abre a cualquier conexión desde el host local.
alanc
¿Se resolverían estos problemas iniciando un servidor x para cada aplicación individualmente?
phil294
-6

La verdadera razón es que los administradores pueden considerarse súper inteligentes al ejecutar cosas desde la línea de comandos. No hay riesgo de seguridad de ejecutar una GUI en el servidor Ubuntu.

Rich Striker
fuente