Escritorio remoto VNC x11vnc -acceso a la pantalla de login

Escritorio remoto VNC x11vnc -acceso a la pantalla de login

Índice 1 Intro...... 2 1.1 Opciones de seguridad más habituales...... 2 2 x11vnc (versión 0.9.13)...... 3 2.1 Instalación...... 3 2.2 El comando x11vnc...... 3 2.3 x11vnc con acceso a la pantalla de login...... 5 2.4 Algunos diagnósticos...... 7 3 Apéndice: Arquitecturas VNC y X server...... 8 3.1 X Server...... 8 3.2 VNC...... 9 3.3 VNC con XDMCP...... 9 4 Fuentes...... 10

1/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

1 Intro Un servidor VNC es un programa que comparte el escritorio con otros ordenadores de la red. Cada servidor VNC tiene sus puntos fuertes y sus puntos débiles y es más o menos adecuado para según qué uso le queramos dar.

1.1 Opciones de seguridad más habituales El aspecto más importante a la hora de configurar un servidor VNC es conceder acceso al escritorio sólo a los usuarios adecuados. La forma más segura sería que la persona sentada en el servidor decida reciba las peticiones y decida quién puede o no conectarse. Pero esta opción no es muy práctica si queremos, por ejemplo, conectarnos a nuestro propio ordenador desde un lugar remoto.

Si queremos confirmar cada conexión de forma manual, podríamos fijarnos en estas opciones:

• Solicitar acceso cada vez Aparece una ventana solicitando que confirmes cada petición de conexión.

• Acceso sólo-ver Se permite a los clientes ver el escritorio, pero no interactuar con él. Además de agregar algo de seguridad, se evitan los problemas típicos de ambos usuarios tratando de tomar el control del ratón.

Si queremos acceder al escritorio cuando no hay nadie sentado en el servidor, tendremos en cuenta estas opciones:

• Permitir sólo conexiones locales Permitir acceso sólo a los usuarios que ya tienen acceso al ordenador servidor.

• Arrancar el servidor VNC en modo “once” (una vez) Indicar al servidor que permita sólo una conexión y bloquear el resto de peticiones.

• Configurar una contraseña Solicitar al usuario una contraseña para la conexión.

2/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

2 x11vnc (versión 0.9.13) x11vnc nos permite ver y actuar remotamente con pantallas X reales utilizando cualquier cliente VNC. Es independiente del entorno gráfico utilizado y puede arrancarse incluso cuando el ordenador todavía esta mostrando la pantalla de login. Conviene desinstalar cualquier otro servidor VNC que tuviera instalado la máquina. Programas como RealVNC, TightVNC, etc. son utilizados normalmente como hace RDP en Windows, tal que el usuario tiene su propia sesión X independiente. x11vnc se suele utilizar para compartir una sesión X existente, de modo que puedes ver/controlar qué está pasando en el escritorio, incluido el inicio y/o cierre de sesión de usuarios).

2.1 Instalación Comprobar versión root@debian00:/# apt-cache policy x11vnc x11vnc: Instalados: (ninguno) Candidato: 0.9.13-1.2+b2

Instalar. root@debian00:/# apt-get install x11vnc Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho Se instalarán los siguientes paquetes extras: libvncclient0 libvncserver0 x11vnc-data

2.2 El comando x11vnc Para arrancar el servicio, ejecutar el comando x11vnc con las opciones deseadas. Ejemplos:

x11vnc -norc -repeat -forever -shared -display :0 -auth guess

x11vnc -xkb -norc -noxdamage -repeat -forever -shared -display :0 -auth guess -o /var/log/x11vnc.log -allow 192.168.1.

x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared

3/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

Opción Por defecto Descripción -modtweak X Trata de ajustar los modificadores AltGr y Shift para los diferentes idiomas de teclado entre el cliente y el servidor. -nomodtweak

-xkb X En modo “modtweak”, utiliza la extensión XKEYBOARD (del servidor X) para los modificadores del teclado. -noxkb

-rc filename Utilizar el fichero “filename” en lugar del fichero “$HOME/.x11vncrc” -norc No procesar ningún fichero de opciones “.x11vncrc”

-xdamage X Utilizar la extensión X DAMAGE para detectar cambios en el buffer de frames. Esta extensión reduce la carga cuando la pantalla no cambia demasiado y detecta cambios en pequeñas áreas más rápidamente. Pero es demasiado conservadora y a menudo detecta áreas grandes como “dañadas” incluso cuando el cambio se produce en una región mucho más pequeña. -noxdamage

-repeat Auto-repetición de tecla de servidor X cuando los clientes VNC están conectados y la entrada del teclado VNC no lleva inactiva más de 5 minutos. -norepeat X Evita un bug de pulsaciones repetidas (activado por retrasos de procesamiento entre los eventos de pulsar la tecla y levantar el dedo de la tecla: bien por cambios grandes en pantalla o debido a una elevada latencia)

-once X Termina después de que el primer cliente se desconecta. -forever Sigue escuchando para posteriores conexiones en lugar de terminar cuando el primer cliente se desconecta.

-shared off Si la pantalla compartida está activada, más de un cliente puede conectarse simultáneamente.

-display :0 Pantalla del servidor X11 a la que conectarse, normalmente es la 0.

4/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

-auth file Configurar “file” como fichero de autoridad X -auth guess Utilizar el mecanismo “-findauth” para intentar averiguar el fichero XAUTHORITY y utilizarlo.

-o logfile Escribe los mensajes de error en el fichero en lugar de en la terminal.

-allow Sólo permite conexiones de los hosts indicados. Pueden utilizarse host1[,host2 nombres o IPs. Pueden utilizarse prefijos de red terminados en ...] punto “.”

2.3 x11vnc con acceso a la pantalla de login Si ejecutamos el comando x11vnc, el servidor se comporta como un servidor VNC “normal”: es necesario que exista una sesión iniciada por el usuario en el servidor para que el cliente pueda conectarse.

Para ejecutarlo como un servicio del sistema, primero creamos un archivo para systemd. root@debian00:/# nano /etc/systemd/system/x11vnc.service

El contenido del fichero. [Unit] Description="x11vnc" Requires=display-manager.service After=display-manager.service

[Service] ExecStart=/usr/bin/x11vnc -xkb -norc -noxdamage -repeat -forever -shared -displ$ ExecStop=/usr/bin/killall x11vnc Restart=on-failure Restart-sec=2

[Install] WantedBy=multi-user.target

Habilitamos este servicio para que se inicie al arrancar el sistema. root@debian00:/# systemctl enable x11vnc Created symlink from /etc/systemd/system/multi- user.target.wants/x11vnc.service to /etc /systemd/system/x11vnc.service.

5/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

A partir de aquí, ya podemos reiniciar el sistema. Una vez iniciado, podremos conectarnos al servidor incluso cuando está mostrando la ventana de login. De este modo, cualquier usuario del sistema podrá acceder al escritorio.

Aquí, por ejemplo, vemos cómo iniciamos sesión con martin.

6/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

Es importante tener en cuenta que el servidor refleja todo lo que hacemos en el cliente, y viceversa.

Nota: Conseguimos conectarnos con el cliente TightVNC (Windows), pero no con otros como Remmina (Ubuntu) o MultiVNC (Windows).

2.4 Algunos diagnósticos

Comprobar puerto 5900 abierto y el programa que lo está ejecutando. root@debian00:/# netstat -tunap | grep 5900 tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 7514/x11vnc tcp 0 0 10.33.0.2:5900 10.33.0.10:59786 ESTABLISHED 7514/x11vnc tcp6 0 0 :::5900 :::* LISTEN 7514/x11vnc

Ver líneas del archivo de log correspondientes al cliente, que tiene la IP 10.33.0.10 root@debian00:/# cat /var/log/x11vnc.log | grep 10.33.0.10 11/05/2017 12:25:00 Got connection from client 10.33.0.10 11/05/2017 12:25:00 check_access: client 10.33.0.10 matches pattern 10. 11/05/2017 12:25:00 incr accepted_client=1 for 10.33.0.10:59786 sock=12 11/05/2017 12:25:00 Pixel format for client 10.33.0.10:

7/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

3 Apéndice: Arquitecturas VNC y X server utiliza el Sistema X Window (abreviado X) como su GUI. X es una GUI un tanto especial. Por ejemplo: un servidor X es, literalmente, un programa servidor de red. Los servicios de red ofrecen a los clientes acceso a recursos locales, y así sucede también para un servidor X. Lo especial en el caso del servidor X es que los “recursos locales” son la pantalla, el teclado y el ratón del usuario. De este modo, cualquier programa (LibreOffice, GIMP, …) son clientes X que utilizan el protocolo de red X, el cual acepta la entrada del usuario y produce la salida en pantalla, todo ello en el mismo ordenador.

3.1 X Server Cuando se utiliza X en una red, sin embargo, el usuario se sienta en el servidor X y los clientes X son los programas que el usuario quiere que se ejecuten en otro ordenador. Esta configuración requiere un segundo protocolo de red para iniciar la conexión. Este segundo protocolo puede ser telnet, SSH o XDMCP (X Display Manager Control Protocol). Para este protocolo de login, el cliente X ejecuta la parte servidor y el servidor X ejecuta la parte cliente.

El acceso remoto X requiere de un cliente y un servidor en ambos ordenadores. Las flechas indican el inicio de sesión. En el caso de XDMCP, el cliente está integrado en el programa servidor X.

Este tipo de configuración funciona bien en muchas redes locales, pero tiene sus inconvenientes. Por ejemplo, requiere un protocolo de incialización de dos vías, lo que nos puede causar problemas con algunos cortafuegos o con los routers NAT. Además, aunque los servidores X están disponibles para la mayoría de plataformas, no suelen estar instalados en ordenadores Windows. Por eso, entre otras cosas, en general se prefiere utilizar otro protocolo: el RFB (Remote Frame Buffer), que viene implementado en la familia de programas VNC (Virtual Network Computing).

8/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

3.2 VNC VNC es una herramienta multiplataforma que proporciona acceso remoto a Linux, , Mac OS, Windows y otros sistemas desde cualquier tipo de cliente. Con VNC, el usuario se sienta en el ordenador cliente y accede al servidor remoto. En Linux, el servidor VNC o bien refleja el contenido de la pantalla del servidor X local en el ordenador remoto, o bien incluye su propio servidor X que puede operar independientemente del servicio que administra la pantalla local. Esta configuración elimina la necesidad de una conexión de red inversa, y puesto que los clientes y servidores VNC están disponibles para un montón de sistemas operativos, los usuarios pueden utilizar un sólo cliente para acceder a cualquier servidor.

Un servidor VNC incluye un servidor X que puede comunicarse con los clientes X locales. Las flechas indican el inicio de sesión.

El inconveniente de VNC es que la autenticación RFB está basada en contraseñas sin nombres de usuario. Así, cada usuario debe lanzar una sesión VNC server independiente y conectar a esa instancia VNC especificando el puerto correcto. Este requisito podría resultar tolerable en un sistema monousuario, pero es extremadamente incómodo en un ordenador multiusuario.

3.3 VNC con XDMCP Para evitar estos contratiempos, se pueden enlazar las dos aproximaciones. Podemos reconfigurar nuestro servidor XDMCP local para ayudar al servidor X integrado en VNC para que proporcione autenticación multiusuario. Ahora, cuando un usuario VNC remoto contacta con el servidor VNC, puede loguearse con su nombre de usuario y contraseña para acceder a su sesión VNC única, de modo que el ordenador puede manejar tantos usuarios como queramos.

9/10 Escritorio remoto VNC x11vnc -acceso a la pantalla de login

Añadir XDMCP a la configuración VNC proporciona mayor flexibilidad Las flechas indican el inicio de sesión.

4 Fuentes http://www.karlrunge.com/x11vnc/ http://www.softpanorama.org/Xwindows/VNC/vnc_on_linux.shtml https://askubuntu.com/questions/549982/whats-the-difference-between-realvnc-and-x11vnc https://www.ibm.com/developerworks/library/os-multiuserloginsvnc/ https://help.ubuntu.com/community/VNC/Servers https://linux.die.net/man/1/x11vnc https://linuxadas.blogspot.com.es/2017/04/servidor-vnc-con-acceso-pantalla-de.html

r.17.5 @aula30x

10/10