En el articulo anterior, dejamos lista una instancia de AWS con S.O. Ubuntu 18.04, con la intención de instalar en la misma un servidor Guacamole, y así dar acceso a nuestro conjunto de maquinas virtuales (que instalaremos en un futuro)
Bien pues ya podemos dar inicio a nuestro trabajo. Para ello, nos conectamos a nuestra cuenta en AWS, (ver los pasos en el anterior articulo), y, a continuación realizamos una conexión por putty, o por web-browser, según comentamos anteriormente; a partir de ese punto, recordad que entramos como usuario sin privilegios, por lo que lo primero que deberemos realizar es adquirir permisos de «root», y para ello, nos bastara con hacer un
$ sudo su
veréis que a partir de este momento, el «PROMPT termina en # por lo que estamos en modo root y podemos empezar con la instalación
Instalando Tomcat y dependencias
Lo primero que debemos hacer, es instalar el servidor tomcat, ya que es con el que va a trabajar Guacamole, para eso, podemos hacer:
# apt install tomcat8 tomcat8-admin tomcat8-common tomcat8-user -y
y a continuación, instalamos también todas las dependencias de Guacamole
apt install -y gcc-6 g++-6 libcairo2-dev libjpeg-turbo8-dev libpng-dev \ libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev libfreerdp-dev \ libpango1.0-dev libssh2-1-dev libvncserver-dev libssl-dev libvorbis-dev libwebp-dev
Al finalizar, ya tendremos instalado el servidor Tomcat, que funciona en el puerto 8080, y todas las dependencias que necesitamos para poder compilar Guacamole, ya que el server no lo podemos encontrar compilado…
Pero, para que nuestra maquina sea visible en el puerto 8080, deberemos abrir el firewall de AWS, y para eso, vamos a ver nuestra instancia :
nos desplazamos totalmente hacia la derecha, y en la columna de «Security Groups» pulsamos encima del nuestro; en mi caso se llama «launch-wizard-8» para modificar los permisos.
Nos aparece la lista de todos las reglas de seguridad que hayamos creado, y que de momento solo es una,
de forma que volvemos a hacer clic, esta vez encima de ella y nos aparece las reglas de Inbound/outbound que soporta esa entrada
vemos que solo tenemos abierto el puerto 22 para SSH, pero, podemos pulsar en «Edit inbound rule» para abrir el puerto 8080 que es el que necesitamos para Tomcat
y, como no deseamos modificar esta (IMPORTANTE!!!!), si no añadir una nueva, podemos pulsar el botón de «Add»
y le añadimos una nueva regla, en donde damos acceso por el puerto 8080, desde cualquier direccion (0.0.0.0/0)
Ahora ya podemos pulsar en «Save rules»
Y si queremos verificar como funciona Tomcat, podemos ver la direccion IP publica de nuestro servidor
en mi caso: 15.188.194.171, y, sabiendo que tomcat tiene que escuchar en el puerto 8080, escribimos en el navegador
http://15.188.194.171:8080/
y veréis aparecer la información de vuestro servidor; en mi caso:
Instalando Guacamole
Vamos a descargar ahora la ultima version de Guacamole Server
# wget https://mirror.dkd.de/apache/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
Descomprimimos el archivo
# tar vfx guacamole-server-1.1.0.tar.gz
y cambiamos directorio, para entrar en él
# cd guacamole-server-1.1.0/
Y. antes de seguir, añadir un modulo mas, del que depende nuestro servidor, si queremos acceder sin problemas a equipos Windows.
# apt-get install -y freerdp2-x11 freerdp2-dev
Utilizamos una opcion que nos permite configurar automáticamente nuestro servidor
# autoreconf -fi
Y ya podemos realizar la configuración
# ./configure --with-init-dir=/etc/init.d
Al finalizar la misma, nos informara de las opciones seleccionadas y será algo como esto
Vemos que ya soporta los protocolos RDP y VNC, con lo que no deberíamos tener problemas para conectarnos a maquinas que tengan estos supervisores remotos. Podemos realizar la compilación e instalación.
# make # make install
Podemos configurar para que cada vez que arranquemos, se active el demonio «guacd» responsable de las conexiones, y a continuación, ya lo dejamos activado
# ldconfig # systemctl enable guacd # systemctl start guacd
Instalacion del cliente Guacamole.
Lo primero que debemos aclarar es que no debemos confundirnos con la utilización de la palabra «cliente», para referirnos a este software. Se trata de un cliente, porque va a utilizar los recursos del servidor recién instalado, para trabajar; sin embargo, desde nuestro punto de vista, como usuarios de Guacamole, no dejara de ser un servicio del servidor.
Esta parte es la que se encarga de mostrar la pantalla de login, verificar la contraseña e invocar a «guacd» para conectar la maquina remota con el usuario.
En este caso, podemos conseguir el software ya compilado , por lo que los descargamos, creamos un directorio en /etc para conservar el .war, y es donde podremos añadir los ficheros de configuración que necesitamos, por ultimo, añadiremos la variable «GUACAMOLE_HOME»
# wget http://us.mirrors.quenda.co/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war # mkdir /etc/guacamole # cp guacamole-1.1.0.war /etc/guacamole/guacamole.war # ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/ # mkdir /etc/guacamole/{extensions,lib} # echo "GUACAMOLE_HOME=/etc/guacamole" | tee -a /etc/default/tomcat8
Configurando el aplicativo
Nos queda establecer como se conecta el cliente, al demonio «guacd», y eso lo hacemos en el fichero /etc/guacamole/guacamole.properties, de forma que podemos abrirlo con
# nano /etc/guacamole/guacamole.properties
y salimos salvando con Ctrl + 0, Enter, Ctrl + x
Nos encargamos que se pueda leer este archivo desde Tomcat, creando un enlace simbólico de este fichero, en el directorio de tomcat
# ln -s /etc/guacamole /usr/share/tomcat8/.guacamole
Ya solo queda crear usuarios, y esto, lo podríamos hacer en una base de datos, pero de momento, vamos a utilizar un fichero de configuración que también tiene esa misión, y que es /etc/guacamole/user-mapping.xml, con lo que utilizando nuevamente
# nano /etc/guacamole/user-mapping.xml
Si suponemos que tenemos un usuario UNO que va a utilizar la contraseña PASS para poder acceder a una máquina Linux por SSH, o a un servidor Windows por RDP, podríamos escribir algo como esto
<user-mapping> <authorize username="UNO" password="PASS" > <!-- Primera conexion --> <connection name="Ubuntu-Server"> <protocol>ssh</protocol> <param name="hostname">15.188.194.171</param> <param name="port">22</param> <param name="username">ubuntu</param> </connection> <!-- Segunda conexion --> <connection name="Windows 10"> <protocol>rdp</protocol> <param name="hostname">15.188.48.194</param> <param name="port">3389</param> <param name="security">any</param> <param name="ignore-cert">true</param> </connection> </authorize> </user-mapping>
Podemos probar que hasta ahora todo funciona, reiniciando demonios
# systemctl restart tomcat8 # systemctl restart guacd
y accediendo a la IP, en mi caso http://15.188.194.171:8080/guacamole , recibimos la pantalla de login
Indicamos el usuario y la contraseña indicada en user-mapping.xml y vemos aparecer la lista de conexiones que hemos autorizado a ese usuario
El que nos podamos conectar a esas maquinas, dependerá que existan, pero de momento, hemos llegado hasta aquí.
Tambien, quiero dejar una nota acerca de un posible problema que podeis encontrar al hacer la conexion con W10. Si no consigue conectar, puede que tengais que modificar el registro de Windows 10 modificando en
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
Los siguientes valores
Change “SecurityLayer” value to 1
Verify “UserAuthentication” value is 0
De cualquier forma dejamos para más adelante la creación de las máquinas virtuales…..
Nuestro siguiente paso será preparar la autentificación