Thin client con Debian y xrdp
Instala Debian 9 con Remmina para conectar con xrdp
Si sois como yo, probablemente tenéis al menos un viejo PC o portátil acumulando polvo en algún lugar de vuestra casa. Hay muchas formas de darle vida a estos dispositivos, pero una opción muy sencilla es usarlos como thin clients para acceder en remoto a una máquina más potente y moderna.
Servidor
Vamos a configurar nuestro PC para que actúe como servidor. Asumiendo que tenemos Debian instalado, solamente necesitaremos instalar el software de servidor.
xrdp
Para este objetivo, usaremos xrdp que es un servidor de código abierto para el protocolo RDP. Para instalarlo, ejecutamos:
sudo apt install xrdp
Asegurando la conexión
Se usa Seguridad RDP Estándar, la cual no está a salvo de ataques de intermediario. El nivel de cifrado de la Seguridad RDP Estándar se controla con crypt_level.
– Manpages
Definitivamente deberíamos hacer algo para remediar esto por lo que vamos a usar TLS como capa de seguridad.
Los certificados necesarios se generan automáticamente durante la instalación del paquete ssl-cert pero necesitaremos añadir el usuario xrdp a este grupo para que pueda leer la clave privada:
sudo adduser xrdp ssl-cert
Ahora vamos a editar el archivo /etc/xrdp/xrdp.ini
y cambiar:
security_layer=negotiate
certificate=
key_file=
Por:
security_layer=tls
certificate=/etc/xrdp/cert.pem
key_file=/etc/xrdp/key.pem
Y reiniciamos el servicio:
sudo service xrdp restart
Con esto, nuestro PC está preparado para recibir conexiones remotas desde el thin client.
Cliente
A continuación podemos proceder con la configuración de la máquina que actuará como thin client.
Para ello necesitamos una instalación base de Debian 9 (stretch) con apenas unos cuantos paquetes adicionales. Por lo tanto, deberemos asegurarnos de que nada está marcado en el paso Software selection del proceso de instalación:
Posteriormente, una vez hayamos arrancado Debian, podemos instalar un gestor de pantalla y un gestor de ventanas para tener un simple entorno gráfico. Usaremos LightDM y Openbox respectivamente, y tint2 como barra de tareas liviana:
sudo apt install lightdm openbox tint2 xterm
Tras un reinicio, podremos ver la pantalla de acceso:
Vamos a configurar Openbox para que ejecute tint2 tras acceder al escritorio. Necesitamos copiar la configuración por defecto de Openbox a nuestra carpeta de usuario para poder modificarla:
mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/* ~/.config/openbox
Editaremos entonces el archivo ~/.config/openbox/autostart
para añadir, al
final, las siguientes líneas:
# Launch taskbar
tint2 &
Remmina
Para acceder a nuestro servidor remotamente, usaremos Remmina puesto que soporta varios protocolos (RDP, VNC, SSH, NX, XDMCP, etc.):
sudo apt install remmina
Una vez ha finalizada la instalación, editaremos de nuevo el archivo autostart
de Openbox para ejecutar Remmina:
# Start Remmina
remmina &
Tras acceder a nuestro escritorio, podemos crear una nueva conexión de Remmina pulsando Ctrl+N. Simplemente tenemos que poner un nombre para la conexión y la dirección o nombre de equipo de nuestro servidor:
Una vez hagamos click sobre Conectar, se guardará la nueva conexión y se nos pedirá que aceptemos el certificado TLS del servidor:
Si lo aceptamos, veremos la pantalla de acceso de nuestro servidor remoto:
Aquí simplemente tenemos que introducir el nombre de usuario y contraseña de nuestro servidor remoto y accederemos al escritorio. Si pulsamos R_Ctrl+F cambiaremos a pantalla completa para una experiencia más transparente:
Mostrar la ventana de acceso remoto tras arrancar
Podemos configurar nuestro thin client Debian para que acceda al escritorio de forma automática y Remmina lance la conexión a nuestro servidor de forma que se nos presente directamente la pantalla de acceso remoto.
Primero deberemos configurar LightDM para que acceda automáticamente al
escritorio de nuestro usuario local. Para ello, tenemos que editar el archivo
/etc/lightdm/lightdm.conf
como superusuario y configurar nuestro nombre de
usuario en la sección Seat configuration:
[Seat:*]
autologin-user=agus
Luego, debemos averiguar el nombre de archivo de nuestra conexión tal y como la
guarda Remmina. Las conexiones se guardan en $HOME/.remmina
, para versiones
antiguas, o en $XDG_DATA_HOME/remmina
para las más recientes.
~/.remmina
├── 1492192074855.remmina
└── remmina.pref
Conforme al nombre del archivo, tenemos que modificar la última línea del
archivo autostart
de Openbox:
# Start Remmina
remmina -c ~/.remmina/1492192074855.remmina &
Si reiniciamos ahora, nos conectaremos directamente a la máquina remota y veremos la pantalla de acceso:
Acceder al servidor remoto tras acceso en local
Podemos configurar Remmina para que guarde las credenciales del usuario remoto y nos dé acceso al servidor automáticamente:
Para ello, necesitamos guardar el nombre de usuario y contraseña en el perfil de la conexión:
Sin embargo, para mayor seguridad, deberíamos instalar el complemento de GNOME para Remmina de forma que la contraseña se guarde en el llavero de GNOME:
sudo apt install remmina-plugin-gnome seahorse
Necesitaremos deslogarnos y acceder al escritorio de nuevo para que se genere el llavero con nuestra contraseña local.
Ahora, si modificamos la conexión y añadimos las credenciales, la contraseña se guardará en el llavero de GNOME:
Puesto que nuestra contraseña local es necesaria para desbloquear el llavero y
recuperar la contraseña remota, deberemos deshacer los cambios en
/etc/lightdm/lightdm.conf
:
[Seat:*]
#autologin-user=agus
Si no, se nos pedirá desbloquear el llavero antes de que Remmina pueda conectarse con nuestro servidor remoto.
Poniendo orden
Puesto que esta máquina va a hacer poco más que ejecutar Remmina para conectarnos a nuestro servidor, podemos desinstalar algunos paquetes superfluos. Cosas como la administración de tareas o el registro de mensajes no tienen sentido:
sudo apt purge --auto-remove anacron cron rsyslog
Como nota adicional, si tenemos pensado conectarnos a una red inalámbrica, quizás nos interese instalar NetworkManager y su applet para facilitarnos las cosas:
sudo apt install network-manager-gnome
Sin embargo, puest que NetworkManager usa el llavero de GNOME, no seremos capaces de acceder localmente de forma automática de forma transparente.
Conclusión
Como he visto, usar un viejo PC o portátil como thin client es una buena manera de dar nueva vida a estos dispositivos.
Los requisitos de hardware son muy bajos puesto que usará principalmente la red. Puedes ver la carga en un sistema con sólo 128 MB de RAM:
Leer más
- Problem found with Debian systems running systemd · Issue #190 · neutrinolabs/xrdp · GitHub
- TLS security layer · neutrinolabs/xrdp Wiki · GitHub
- Remmina Usage FAQ · FreeRDP/Remmina Wiki · GitHub
- Audio Output Virtual Channel support in xrdp · neutrinolabs/xrdp Wiki · GitHub
- TransparentEncryptionForHomeFolder - Debian Wiki
- Linux Terminal Server Project - Welcome to LTSP.org
- ThinStation by Donald A. Cupp Jr.