11/4/20

Apache Guacamole con PostgreSQL y Google Authenticator en Docker

En un articulo anterior mostré como instalar una puerta de enlace de escritorio remoto web utilizando Apache Guacamole; en este nuevo articulo vamos a mejorar la instalación haciendo que almacene la información en una base de datos PostgreSQL lo cual nos brindará una interfaz gráfica de administración mejorada, adicionalmente habilitaremos una extensión de autentificación en dos pasos para brindar una capa de seguridad adicional, todo esto en Ubuntu Server 18.04 con Docker en contenedores separados relacionados por un mismo stack de Docker-Compose.

Para hacer la instalación mas sencilla he creado un script:

#!/bin/bash
#Creado por: JManzur
#Actualizamos los repositorios de Ubuntu:
apt-get update && sudo apt-get upgrade -y
#Instalamos docker y docker-compose
apt-get install docker.io docker-compose -y
#Creamos los directorios necesarios:
mkdir -p /docker/guacamole/config/extensions
#Descargamos el plugin necesario para la autentificación en dos pasos:
cd /docker/guacamole/config/extensions
wget http://archive.apache.org/dist/guacamole/1.0.0/binary/guacamole-auth-totp-1.0.0.tar.gz
tar -xvpzf guacamole-auth-totp-1.0.0.tar.gz
mv guacamole-auth-totp-1.0.0/guacamole-auth-totp-1.0.0.jar .
rm -rf guacamole-auth-totp-1.0.0.jar guacamole-auth-totp-1.0.0.tar.gz
#Descargamos el .yml con el cual levantaremos todos los contenedores:
cd /docker/guacamole
wget https://gist.githubusercontent.com/JManzur/bc0af3d0fb7849e1304346b1f5b6ef47/raw/5cc34feb85ac195e80664fa5bdcf3eaeaf18d745/docker-compose.yml
#Creo el archivo de variables
touch /docker/guacamole/.env
echo "POSTGRES_USER=sqladmin" >> /docker/guacamole/.env
echo "POSTGRES_PASSWORD=T3mp0r4l" >> /docker/guacamole/.env
#FIN
El cual pueden descargar y ejecutar del siguiente modo:

Cambiar a sudo:

sudo su

Descargar el script:

wget https://gist.githubusercontent.com/JManzur/6a433c3df5aec8645e809ca978b0be1e/raw/9fb7c5d021204a8ead48fc2b986fa05d29d23ffa/prep_guacamole.sh

Hacerlo ejecutable:

chmod +x prep_guacamole.sh

Ejecutarlo:

./prep_guacamole.sh

IMPORTANTE: Una vez finalice la ejecución del script es recomendable que editen el archivo de variable de entorno que genera y coloquen su propio usuario y contraseña para la base de datos, para ello editen el archivo /docker/guacamole/.env

El script también se encargó de bajar el docker-compose.yml el cual contiene los 4 contenedores necesarios:

version: "3"
services:
init-guac-db:
image: guacamole/guacamole:latest
command: ["/bin/sh", "-c", "test -e /init/initdb.sql && echo 'init file already exists' || /opt/guacamole/bin/initdb.sh --postgres > /init/initdb.sql" ]
volumes:
- dbinit:/init
postgres:
image: postgres:latest
container_name: SQL
restart: always
volumes:
- dbinit:/docker-entrypoint-initdb.d
- dbdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER:-guacdb}
POSTGRES_PASSWORD:
depends_on:
- init-guac-db
guacd:
image: guacamole/guacd:latest
container_name: GUACD
restart: always
guac:
image: guacamole/guacamole:latest
container_name: GUACAMOLE
restart: always
ports:
- "8084:8080"
volumes:
- /docker/guacamole/config:/opt/local
environment:
GUACAMOLE_HOME: /opt/local
GUACD_HOSTNAME: guacd
POSTGRES_HOSTNAME: postgres
POSTGRES_DATABASE: ${POSTGRES_USER:-guacdb}
POSTGRES_USER: ${POSTGRES_USER:-guacdb}
POSTGRES_PASSWORD:
depends_on:
- postgres
- guacd
volumes:
dbinit:
driver: local
dbdata:
driver: local
Y antes del primer inicio necesitamos ejecutar el contenedor que genera la base de datos:

docker-compose up init-guac-db

NOTA: El proceso anterior solo se realiza por única vez antes del primer inicio.
Y una vez finalice levantamos todo con:

docker-compose up -d

Hecho esto ya podemos ingresar a

http://IP:8084/guacamole/#/

Con los credenciales:
  • Usuario: guacadmin
  • Contraseña: guacadmin
Al ingresar se nos presentará un código QR, (es recomendable respaldarlo) el cual tendremos que escanear con la app Google Authenticator disponible para Android y iOS y así podremos hacer la autentificación en dos pasos.

Ejemplo:

Clic en la imagen para agrandar

NOTA: Cada vez que creemos un nuevo usuario debemos marcarle la opción "permitir el cambio de contraseña" a modo de que puede utilizar la autentificación  en dos pasos.


2 comentarios :

  1. Buy indoor plants online near dwarka, new delhi - Birthright offers indoor plants for home online in India. At our online nursery, We have a team of talented brand shapers who have the capability, passion and knowledge to deal with clients.
    As a Graphic Design Services In India, We have a team of talented and Creative Graphic Designers to Create Custom Graphics.
    Get contact details and address of Renovation Services, Renovation Works firms and a home renovation services is Negotiable.
    Use the Blink Monitor App for Android to check in on what's happening at home from anywhere at any time. The app connects your home to your phone in HD video
    Getlisting Provides Complete Solution If You Facing The PlentyOfFish (POF). Can't log in? Issues in United States. If your file is being reviewed for some reason, such as being reported by another Plenty of Fish user, your account might be temporarily suspended while the company investigates.

    ResponderEliminar