Guide d'installation Ubuntu 20.04 - Production
- Digdash
- OpenLDAP
- Configuration de OpenLDAP
- Débloquer un compte bloqué manuellement
- Augmenter la mémoire de la base de données MDB
- MariaDB (Préconisé)
- NGINX (Optionnel)
Digdash
OpenJDK 11
sudo apt install openjdk-11-jdk
# Vérifier l'installation
java -version
Tomcat 9
Installation
Création de l'arborescence
sudo mkdir -p /home/digdash/webapps/default/
# Répertoire de travail
sudo mkdir -p /home/digdash/appdata/default/
# Emplacement fichier .properties
sudo mkdir -p /etc/digdash/
# Emplacement des logs
sudo mkdir -p /var/log/digdash/
Modification des droits sur les dossiers
sudo chown -R tomcat:tomcat /var/log/digdash
sudo chmod a+w /var/log/digdash
Configuration du server.xml
emplacement : /etc/tomcat9/server.xml
Emplacement des webapps
<Host name="localhost" appBase="webapps"
# par celle ci
<Host name="localhost" appBase="/home/digdash/webapps/default"
Valve Reverse Proxy
<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>
Valve Log
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" ></Valve>
Modification de la RAM
sudo nano /etc/default/tomcat9
# Remplacer la variable JAVA_OPTS existante par
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"
# Changer le paramètre 6G en fonction de la capacité de la machine en laissant au minimum 2G pour l OS
Activer l'autorisation d'écriture des logs par tomcat
sudo mkdir -p /etc/systemd/system/tomcat9.service.d
# Créer le fichier
sudo nano /etc/systemd/system/tomcat9.service.d/logging-allow.conf
# Ajouter les lignes suivantes
[Service]
ReadWritePaths=/var/log/digdash/
#recharger la configuration des "daemon"
sudo systemctl daemon-reload
sudo systemctl restart tomcat9.service
Activation du lancement automatique du service au démarrage
Déploiement de Digdash Version 22R2
Fichiers properties
Placer les fichiers suivant dans le dossier /etc/digdash
- digdash.properties (contenu à la racine du dossier dézippé)
Modifier le fichier digdash.properties précédemment copié
# Emplacement des 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
# Emplacement du 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
########### Nettoyage automatique des fichiers programmé
########### Scheduled automatic file cleaning
ddenterpriseapi.startCleaner=true
########### Nettoyage des fichiers inutilisés au démarrage du serveur
########### Clean up unused files on server startup
ddenterpriseapi.cleanOnStart=false
########### Sauvegarde automatique programmée
########### Scheduled automatic backup
ddenterpriseapi.autoBackup=true
ddenterpriseapi.autoBackupKeepDays=7
digdash_dashboard.CANCHANGEPASSWORD=true
Emplacement des war
- Placer les éléments suivants dans le dossier /home/digdash/webapps/default
- adminconsole.war
- ddenterpriseapi.war
- digdash_dashboard.war
- studio.war
- le dossier ROOT/
OpenLDAP
Configuration de OpenLDAP
Installation
Installer le serveur OpenLDAP
Configurer le serveur OpenLDAP
OpenLDAP sous Linux 1
Démarrer les services OpenLDAP
Activer le lancement automatique du service au démarrage
BackUp d’OpenLDAP
Configuration de OpenLDAP
Charger le module de password policy : ppolicy
Vérification
Activer le module ppolicy module
Vérification
A Hasher les mots de passe et bloquer les compte utilisateur ppolicy-conf
Vérification
- olcPPolicyDefault: Indique un DN de configuration utilisé par défaut (cf. paragraphe suivant).
- olcPPolicyHashCleartext: Indique si les mots de passe doivent être cryptés systématiquement. Ce paramètre devrait être à TRUE sauf cas exceptionnel.
- olcPPolicyUseLockout: Indique si le message d’erreur retourné en cas de tentative de connexion à un compte verrouillé est un message spécifique à cet état de verrouillage (TRUE), ou un message général d’echec de connexion (FALSE). FALSE est plus sécurisé (pas d’indication à un éventuel pirate), TRUE est plus pratique.
Définition d’une politique de mot de passe
Vérification
Création d’une nouvelle organisation
Création d’un utilisateur admin avec les bon droit
Le super admin bypass les politiques de mot de passe, s' il est définie comme compte de connexion dans Digdash les politiques de mot de passe LDAP ne seront pas appliquées!
Définir le mot de passe du nouvel admin
Étendre la limite de 500 pour les recherches LDAP
Débloquer un compte bloqué manuellement
Overriding password policy and unlocking accounts
Augmenter la mémoire de la base de données MDB
Nécessaire en cas d’erreur de type “MDB_MAP_FULL: Environment mapsize limit reached”
Créer le fichier de configuration “increase_mem.ldif” avec le contenu suivant :
olcDbMaxSize doit être exprimé en bytes. Dans l’exemple ci-dessus le réglages est à 10GB
Exécuter la commande :
MariaDB (Préconisé)
La base de données MariaDB va servir à stocker les éléments suivants : Commentaires, données d'audit et formulaires de saisies.
Cette base est plus pérenne qu'une base H2 c'est pourquoi nous préconisons son utilisation. Si vous possédez déjà une base de données sur laquelle digdash peut écrire et lire alors passez à l'étape de configuration.
Cela fonctionne aussi avec Mysql ou Postgresql.
Installation
sudo systemctl start mariadb
#Arrêt de mariadb
sudo systemctl stop mariadb
#Reload pour prise en compte de modification de configuration
sudo systemctl reload mariadb
sudo systemctl force-reload mariadb
#Connaître la version
mariadb --version
Lancer mysql_secure_installation, cela va permettre de sécuriser l'installation
# Répondez oui à toutes les étapes
Activation du lancement automatique du service au démarrage
Configuration côté base de données
Nous allons créer une base pour chaque domaine et chaque webapps (par exemple prod_ddaudit et dev_ddaudit et ainsi de suite)
Dans l'exemple ci dessous nous allons considérer qu'il n'existe qu'un environnement 'default'.
sudo mariadb -u root -p
# Créer toutes les bases de données nécessaires domaine_module
CREATE DATABASE default_ddaudit;
CREATE DATABASE default_comment;
CREATE DATABASE default_ddentry;
# Créer un user pour chaque base de données domaine_user_module
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';
# Attribuer les droits aux utilisateurs sur les bonnes bases
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';
Configuration côté Digdash
Aller dans Configuration -> Paramètres serveur -> Commentaires et renseigner ici l’URL, l’utilisateur et le mot de passe.
Cette solution permet de sécuriser l’accès à la base de données de commentaires.
Faire la même manipulation pour la base de données : Données d’audit.
NGINX (Optionnel)
Nous utilisons Nginx comme reverse proxy
Installation
Activation du lancement automatique du service au démarrage
Configuration
Créer le fichier de configuration portant le nom de votre machine ou de votre environnement (ici documentation)
Dans le dossier /etc/nginx
sudo nano /etc/nginx/sites-available/001-digdash.conf
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;";
}
}
Puis créer un lien symbolique dans site enabled
Créer le fichier digdash_ssl_params contenant la politique de securité.
# 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;