Guía de instalación : Ubuntu (Producción)

Última modificación por Aurelie Bertrand el 2024/08/28 10:49

Esta guía contiene instrucciones de instalación y configuración para un entorno de producción en Ubuntu 20.04 y Ubuntu 22.04.

Existen diferencias en función de la versión de Ubuntu utilizada.
Se especificará al principio del párrafo si las instrucciones sólo se aplican a una de las versiones.

Versiones soportadas

Se admiten las siguientes versiones:

  • Tomcat 9 :  último parche
  • OpenLDAP : del último parche 2.5.x al último parche 2.6.x por defecto del gestor de paquetes
  • MariaDB :  versión del sistema operativo o última versión LTS, último parche
  • Nginx : versión del sistema

Digdash

OpenJDK 11

Utilizar la versión 11 de openjdk

# Instalar la última versión de openjdk
sudo apt install default-jdk

# Comprobar la instalación
java -version

Tomcat 9

Instalación

sudo apt install tomcat9

Creación de las carpetas utiles

# Localización de los webapps
sudo mkdir -p /home/digdash/webapps/default/
# Repertorio de trabajo
sudo mkdir -p /home/digdash/appdata/default/
# Localización de los archivos .properties
sudo mkdir -p /etc/digdash/
# Localización de los logs
sudo mkdir -p /var/log/digdash/

Modificación de los atributos y permisiones de las carpetas

sudo chown -R tomcat:tomcat /home/digdash
sudo chown -R tomcat:tomcat /var/log/digdash
sudo chmod a+w /var/log/digdash

Configuración del archivo server.xml

Ubicación : /etc/tomcat9/server.xml

Ubicación de los webapps

# Cambiar el valor del atributo appBase
<Host name="localhost"  appBase="webapps"

# con este
<Host name="localhost"  appBase="/home/digdash/webapps/default"

Valve Reverse Proxy

# Añadir este valve en el elemento Host acerca del fin del archivo
<Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="127\.0\.[0-1]\.1"
               remoteIpHeader="X-Forwarded-For"
               requestAttributesEnabled="true"
               protocolHeader="X-Forwarded-Proto"
               protocolHeaderHttpsValue="https"></Valve>

En casos muy raros, el reverse proxy no está instalado en la máquina. En este caso, sustituir :

internalProxies="127\.0\.[0-1]\.1"
por
internalProxies=".*"

Valve Log

# Añadir este valve en el elemento Host acerca del fin del archivo
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" ></Valve>

Modificación del context.xml

Ubicación : /etc/tomcat9/context.xml

# Añadir la línea siguiente en la etiqueta <Context>
<Resources cachingAllowed="true" cacheMaxSize="100000"></Resources>

https://redmine.digdash.com/attachments/download/34111/clipboard-202401241144-pb3ta.png

Modificación de la RAM

# Editar el siguiente archivo
sudo vi /etc/default/tomcat9

# Sustituir la variable JAVA_OPTS existente por
JAVA_OPTS="-Djava.awt.headless=true -XX:+UseShenandoahGC -Xms6G -Xmx6G -Djava.security.egd=file:/dev/urandom -DPROP_MAX_CONCURRENT_TOTAL=5000 -DPROP_MAX_CONCURRENT_CON_PER_HOST=5000"

# Cambia el parámetro 6G según la capacidad de la máquina, dejando al menos 2G para el SO.
# En el ejemplo anterior, la máquina tiene 8G de RAM.
# Se recomienda utilizar el mismo valor para Xms y Xmx.

Habilitar Tomcat para escribir registros

# Crear la carpeta en /etc/systemd/system/
sudo mkdir -p /etc/systemd/system/tomcat9.service.d

# Crear el archivo
sudo vi /etc/systemd/system/tomcat9.service.d/logging-allow.conf

# Añadir las líneas siguientes
[Service]
ReadWritePaths=/var/log/digdash/

# Actualizar la configuración de los "daemon"
sudo systemctl daemon-reload

sudo systemctl restart tomcat9.service

Activación del lanzamiento automático del servicio al inicio

sudo systemctl enable tomcat9

Despliegue de la versión 2023R1 de DigDash

Descarga la versión de DigDash

Descomprime la versión que acaba de descargar

Archivos properties

Colocar el archivo digdash.properties (contenido en la raíz de la carpeta descomprimida) en la carpeta /etc/digdash.

Crear los siguientes archivos en la carpeta /etc/digdash :

Editar el archivo digdash.properties copiado previamente

# Añadir estas líneas al principio del archivo

# Ubicación de las logs
ddenterpriseapi.ddlog4j.properties.file=/etc/digdash/log4j2_api.properties
studio.ddlog4j.properties.file=/etc/digdash/log4j2_studio.properties
digdash_dashboard.ddlog4j.properties.file=/etc/digdash/log4j2_dash.properties

# Ubicación del appadata
ddenterpriseapi.AppDataPath=/home/digdash/appdata/default
digdash_dashboard.AppDataPath=/home/digdash/appdata/default
studio.AppDataPath=/home/digdash/appdata/default
adswrapper.ads.instance.name=/home/digdash/appdata/default/ldapdigdash

adminconsole.adminconsole_domain=adminconsole
adminconsole.webstudio_domain=studio
adminconsole.server_domain_list=ddenterpriseapi
adminconsole.dashboard_domain=digdash_dashboard

studio.DOMAIN=ddenterpriseapi
studio.FORCEDOMAIN=true
studio.SERVERURL=http://localhost:8080
studio.FORCESERVERURL=true
studio.adminconsole_domain=adminconsole

digdash_dashboard.DOMAIN=ddenterpriseapi
digdash_dashboard.FORCEDOMAIN=true
digdash_dashboard.SERVERURL=http://localhost:8080
digdash_dashboard.FORCESERVERURL=true
digdash_dashboard.adminconsole_domain=adminconsole

########### Limpieza automática de los archivos programados
########### Scheduled automatic file cleaning
ddenterpriseapi.startCleaner=true

########### Limpieza de los archivos inutilizados al iniciar el servidor
########### Clean up unused files on server startup
ddenterpriseapi.cleanOnStart=false

########### Respaldo automático programado
########### Scheduled automatic backup
ddenterpriseapi.autoBackup=true
ddenterpriseapi.autoBackupKeepDays=7
digdash_dashboard.CANCHANGEPASSWORD=true

Ubicacion de los webapps (archivos.war)

Colocar los siguientes elementos (contenidos en el directorio apache_tomcat/webapps de la carpeta descomprimida) en la carpeta /home/digdash/webapps/default:

  • adminconsole.war
  • ddenterpriseapi.war
  • digdash_dashboard.war
  • studio.war
  • la carpeta ROOT/

OpenLDAP

Instalación

Instalar el servidor OpenLDAP

Iniciar la instalación

d#apt-get install slapd

Definir la contraseña para el administrador del directorio LDAP

Mot_passe

Configurar el servidor OpenLDAP

#dpkg-reconfigure slapd

No cambiar el nombre de dominio (domain name) ni el nombre de la entidad (organization name).

En la primera ventana que se muestra, seleccionar No.

1700240806070-141.png

Comprobar el nombre de dominio : digdash.com.

1700241012039-650.png

Compropar el nombre de entidad (Organization name) :  digdash.

1700241074326-639.png

Introducir la contraseña del administrador del directorio LDAP (la definida en el paso Instalar el servidor OpenLDAP).

1700241104149-123.png

Seleccionar No en la siguiente pantalla :

1700241122056-777.png

Seleccionar Yes en la siguiente pantalla :

1700241140024-669.png

Arrancar los servicios OpenLDAP

 service slapd start

Respaldo de OpenLDAP

sudo slapcat -n 1 -l data.ldif

sudo slapcat -n 0 -l config.ldif

 

Configuración de OpenLDAP

Cargar el módulo de política de contraseñas: ppolicy

Este párrafo sólo se aplica a Ubuntu 20.04 y es opcional.
La versión de OpenLDAP instalada para Ubuntu 22.04 no contiene el módulo ppolicy.

sudo ldapmodify -a -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif

💡Si no se encuentra el comando ldapmodify, instale primero las utilidades opendlap con el siguiente comando:
sudo apt-get install ldap-utils

Comprobación

sudo ldapsearch -Y EXTERNAL -s one -H ldapi:/// -b cn=schema,cn=config cn -LLL

Activar el módulo ppolicy

Este párrafo sólo se aplica a Ubuntu 20.04 y es opcional.
La versión de OpenLDAP instalada para Ubuntu 22.04 no contiene el módulo ppolicy.

vi ppolicy-module.ldif

Añadir las siguientes líneas al archivo creado :

dn: cn=module{0},cn=config
changeType: modify
add: olcModuleLoad
olcModuleLoad: ppolicy

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ppolicy-module.ldif

Comprobación

sudo sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectClass=olcModuleList)" olcModuleLoad -LLL

Encriptar las contraseñas y bloquear las cuentas de usuario ppolicy-conf

Este párrafo sólo se aplica a Ubuntu 20.04 y es opcional.
La versión de OpenLDAP instalada para Ubuntu 22.04 no contiene el módulo ppolicy.

vi ppolicy-conf.ldif

Añadir las siguientes líneas al archivo creado :

dn: olcOverlay=ppolicy,olcDatabase={1}mdb,cn=config
objectClass: olcPpolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=ppolicy,dc=digdash,dc=com
olcPPolicyUseLockout: TRUE
olcPPolicyHashCleartext: TRUE

sudo ldapmodify -a -Y EXTERNAL -H ldapi:/// -f ppolicy-conf.ldif

Comprobación

sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectClass=olcPpolicyConfig)" -LLL

  1. olcPPolicyDefault: Indica un DN de configuración utilizado por defecto (véase el párrafo siguiente)..

  2. olcPPolicyHashCleartext: Indica si las contraseñas deben cifrarse sistemáticamente. Este parámetro debe ser igual a TRUE salvo en casos excepcionales.

  3. olcPPolicyUseLockout: Indica si el mensaje de error devuelto cuando se intenta conectar a una cuenta bloqueada es un mensaje específico de este estado bloqueado (TRUE), o un mensaje general de fallo de conexión (FALSE). FALSE es más seguro (ninguna indicación a un hacker potencial), TRUE es más práctico.

Definir una política de contraseñas

Este párrafo sólo se aplica a Ubuntu 20.04 y es opcional.
La versión de OpenLDAP instalada para Ubuntu 22.04 no contiene el módulo ppolicy.

vi ppolicy-defaut.ldif

Añadir las siguientes líneas al archivo creado :

dn: cn=ppolicy,dc=digdash,dc=com
objectClass: device
objectClass: pwdPolicyChecker
objectClass: pwdPolicy
cn: ppolicy
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdCheckQuality: 1
pwdExpireWarning: 600
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 900
pwdMaxAge: 0
pwdMaxFailure: 5
pwdMinAge: 0
pwdMinLength: 12
pwdMustChange: FALSE
pwdSafeModify: FALSE

sudo ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=digdash,dc=com -W -f ppolicy-defaut.ldif

Comprobación

sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b dc=digdash,dc=com "(objectClass=pwdPolicy)" -LLL

Creación de una nueva organización

vi neworganisation.ldif

Añadir las siguientes líneas al archivo creado :

dn: ou=default,dc=digdash,dc=com
objectClass: organizationalUnit
ou: default

ldapadd -H ldap://localhost -D cn=admin,dc=digdash,dc=com -x -W -f neworganisation.ldif

Crear un nuevo usuario admin con los derechos adecuados

El super admin no tiene en cuenta las políticas de contraseñas, si se define como cuenta de inicio de sesión en Digdash no se aplicarán las políticas de contraseñas LDAP.

vi create_user_admin.ldif

Añadir las siguientes líneas al archivo creado :

dn: uid=admin,ou=default,dc=digdash,dc=com
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: Admin Domain Default
sn: Default
uid: admin_default

ldapadd -H ldap://localhost -D cn=admin,dc=digdash,dc=com -x -W -f create_user_admin.ldif

vi add_right_admin.ldif

Añadir las siguientes líneas al archivo creado :

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcaccess: {0}to dn.subtree=ou=default,dc=digdash,dc=com attrs=userpassword,shadowlastchange by dn.exact=uid=admin,ou=default,dc=digdash,dc=com write by self write by anonymous auth by * read
olcaccess: {1}to dn.subtree=ou=default,dc=digdash,dc=com  by dn.exact=uid=admin,ou=default,dc=digdash,dc=com write by * read

sudo ldapmodify -a -Y EXTERNAL -H ldapi:/// -f add_right_admin.ldif

Establecer la nueva contraseña del nuevo admin (es la contraseña del LDAP de DigDash)

ldappasswd -H ldap://localhost -x -D "cn=admin,dc=digdash,dc=com" -W -S "uid=admin,ou=default,dc=digdash,dc=com"

Funciones útiles

Las operaciones que se indican a continuación no forman parte de la instalación.
Sin embargo, puede ser útil familiarizarse con ellas para su uso futuro.

Ampliar el límite de 500 para las búsquedas LDAP

vi extend_limit_search.ldif

Añadir las siguientes líneas al archivo creado :

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: 3000

sudo ldapmodify -a -Y EXTERNAL -H ldapi:/// -f extend_limit_search.ldif

Desbloquear una cuenta bloqueada manualmente

vi unlock.ldif

Añadir las siguientes líneas al archivo creado :

dn: uid=olivier,ou=users,dc=digdash,dc=com
changetype: modify
delete: pwdAccountLockedTime

ldapmodify -x -H ldap://localhost -D cn=admin,dc=digdash,dc=com -W -f unlock.ldif

Para más información, consultar la documentación Overriding password policy and unlocking accounts.

Aumentar la memoria de la base de datos MDB (opcional)

Necesario en caso de error del tipo  “MDB_MAP_FULL: Environment mapsize limit reached”

Cree el archivo de configuración "increase_mem.ldif" con el siguiente contenido:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcDbMaxSize
olcDbMaxSize: 10000000000

olcDbMaxSize debe expresarse en bytes. En el ejemplo anterior la configuración es 10GB.

Ejecutar el comando :

ldapmodify -H ldapi:/// -Y EXTERNAL -f increase_mem.ldif

MariaDB (Recomendado)

La base de datos MariaDB se utilizará para almacenar los siguientes elementos: Comentarios, datos de auditoría y datos ingreasados con formulario.

Esta base de datos es más duradera que una base de datos H2, por lo que recomendamos su uso. Si ya tienes una base de datos en la que DigDash puede escribir y leer, entonces salta a la etapa de configuración.

Esto también funciona con Mysql o Postgresql.

Instalación

sudo apt install mariadb-server
#Arrancar mariadb
sudo systemctl start mariadb
#Detener mariadb
sudo systemctl stop mariadb
#Recarga para tener en cuenta los cambios de configuración
sudo systemctl reload mariadb
sudo systemctl force-reload mariadb
#Conocer la versión
mariadb --version

Ejecutar mysql_secure_installation para asegurar la instalación

sudo mysql_secure_installation

# Contestar sí a todos los pasos

Configuración de la base de datos

Crearemos una base de datos para cada entorno y cada webapp (por ejemplo prod_ddaudit y dev_ddaudit y así sucesivamente).

En el siguiente ejemplo, supondremos que sólo hay un entorno "default".

# Arrancar mariadb
sudo mariadb -u root -p

# Crear todas las bases de datos necesarias entornos_modulo.
CREATE DATABASE default_ddaudit;
CREATE DATABASE default_comment;
CREATE DATABASE default_ddentry;

# Crear un usuario para cada base de datos env_user_module. La contraseña es una nueva contraseña que se creará.
CREATE USER 'default_user_ddaudit'@'localhost' IDENTIFIED BY 'mynewpassword';
CREATE USER 'default_user_comment'@'localhost' IDENTIFIED BY 'mynewpassword';
CREATE USER 'default_user_ddentry'@'localhost' IDENTIFIED BY 'mynewpassword';

# Asignar derechos a los usuarios sobre la base adecuada
GRANT ALL PRIVILEGES ON default_comment.* TO 'default_user_comment'@'localhost';
GRANT ALL PRIVILEGES ON default_ddaudit.* TO 'default_user_ddaudit'@'localhost';
GRANT ALL PRIVILEGES ON default_ddentry.* TO 'default_user_ddentry'@'localhost';

NGINX (Opcional)

Utilizamos Nginx como reverse proxy.

Instalación

sudo apt install nginx

Configuración

Cree un archivo de configuración con el nombre de su máquina o entorno. En este ejemplo, se utiliza 001-digdash.

En la carpeta /etc/nginx :

# Crear el archivo de configuración
sudo vi /etc/nginx/sites-available/001-digdash.conf
# Añadir el siguiente contenido dentro.
# Sustituir .midominio.com por el del servidor y las rutas de Certificado(s) y clave privada por su información.
upstream backend_tomcat{
    least_conn;
    server localhost:8080 fail_timeout=0;
}


server {
  listen [::]:80;
  listen      80;
  server_name *.mondomaine.com;

 # Redirect all non-https requests
 rewrite ^ https://$host$request_uri? permanent;

  error_log  /var/log/nginx/digdash.com.error_log  warn;
  access_log  /var/log/nginx/digdash.com.access.log;
}

server {
  listen [::]:443 ssl http2 default_server;
  listen      443 ssl http2 default_server;
  server_name *.mondomaine.com;

  client_max_body_size 4G;
  proxy_read_timeout 300;
  proxy_connect_timeout 300;
  proxy_send_timeout 300;

  error_log  /var/log/nginx/digdash.com.error_log  warn;
  access_log  /var/log/nginx/digdash.com.access.log;

 # Certificate(s) and private key
 ssl_certificate_key /emplacement/de/la/clé/macle.key;
  ssl_certificate /emplacement/du/certificat/moncertif.crt;

 #DigDash Management SSL
 include digdash_ssl_params;

   location / {
        include proxy_params;
        proxy_intercept_errors on;
        proxy_pass  http://backend_tomcat;
        proxy_cookie_path ~^/(.+)$ "/$1; HTTPOnly; Secure;samesite=none;";
  }
}

Crear un enlace simbólico en sites-enabled

sudo ln -s  /etc/nginx/sites-available/001-digdash.conf /etc/nginx/sites-enabled/001-digdash.conf

Crear el archivo digdash_ssl_params que contiene la política de seguridad.

sudo vi digdash_ssl_params
# Or, generate random dhparam
# openssl dhparam 4096 -out /etc/ssl/dhparam.pem
#ssl_dhparam /etc/ssl/dhparam.pem;

ssl_protocols TLSv1.3 TLSv1.2;

ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_ciphers EECDH+AESGCM:EECDH+AES256;

ssl_session_cache shared:TLS:2m;
ssl_buffer_size 4k;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001]; # Cloudflare

# Set HSTS to 365 days
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always;

Configuración de DigDash tras la instalación

Arrancar DigDash

  1. Reiniciar el servicio Tomcat.
sudo service tomcat9 restart
  1. Comprobar el despliegue del war en la carpeta de instalación /home/digdash/webapps/default.
  2. Acceda a DigDash en la siguiente dirección:: http://localhost:8080/adminconsole.
    El nombre de usuario/contraseña son admin / admin.

Accueil

Conexión de Digdash al servidor OpenLDAP instalado

Ir en Configuración > Parametros del servidor > LDAP....

  • Port :  389
  • Usuario : uid=admin, ou=default,dc=digdash,dc=com
  • Contraseña : contraseña supervisor de OpenLDAP

1700239578861-453.png

Hacer clic en Consultas LDAP, y ingresar "ou=default" en el campo Árbol de dominios  para que los campos a continuacion sean automaticamente ingresados como abajo.

1700239710491-870.png

Cambio de la contraseña del supervisor y creación de una cuenta LDAP

Cambio de la contraseña del supervisor

Ir en Configuración > Parametros del servidor > Servidor Enterprise y ingresar una nueva contraseña en el campo Contraseña del supervisor.

1700239872208-430.png

Creación de una cuenta LDAP

  1. Ir en Configuration -> Gestion de los usuarios -> Usuarios
  2. Crea un nuevo usuario admin y asígnale todos los roles y grupos de autorización.
  3. En el campo Contraseña, introduzca la nueva contraseña de supervisor definida anteriormente.

1700240026873-974.png

Configuración de la base de datos

Base de datos Datos de auditoría

Ir en Configuración > Parametros del servidor -> Datos de auditoria y ingresar la URL, el nombre de usuario y su contraseña.

URL jdbc:mariadb://localhost:3306/default_ddaudit

Usuario : default_user_ddaudit

Esta solución asegura el acceso a la base de datos de auditoría.

1700240383935-642.png

Base de datos Comentarios

Ir en Configuración > Parametros del servidor -> Comentarios y ingresar la URL, el nombre de usuario y su contraseña.

URL : jdbc:mariadb://localhost:3306/default_comment

Usuario : default_user_comment

Esta solución asegura el acceso a la base de datos de comentarios.

1700240196702-249.png

Base de données Saisie de données

Ir en Configuración > Parametros del servidor -> Parámetros adicionales -> Entrada de datos.

Marcar la casilla Habilitar la entrada de datos y seleccionar una base de datos en la lista desplegable.

1700240483681-771.png

Primero, se debe crear una conexión de base de datos desde el Gestor de conexiones de base de datos en Studio. Consulte la página Gestor de conexiones de bases de datos para obtener más información. 
Introduzca default.user.ddentry para el usuario y la contraseña definidos en el paso anterior. 
El nombre definido en el campo Nombre de conexión es el que aparecerá en la lista desplegable de selección de base de datos.