Guide d'installation Linux

Modifié par Aurelie Bertrand le 2024/11/12 09:46

Vous trouverez dans ce guide les instructions d'installation et de configuration dans un environnement de production sur Ubuntu 20.04 et Ubuntu 22.04.

Il existe des différences selon la version d'Ubuntu utilisée.
Il sera spécifié en début de paragraphe si les instructions s'appliquent uniquement à une des versions.

❗Il est recommandé d'utiliser OpenDJ à la place d'OpenLDAP (déprécié). Les 2 installations sont décrites ici mais nous préconisons désormais d'utiliser OpenDJ.

Versions supportées

Les versions supportées sont les suivantes :

  • Tomcat 9 : dernier patch
  • OpenDJ (recommandé) : version 4.6.2 et ultérieure
  • OpenLDAP (non recommandé) : dernier patch 2.5.x au dernier patch 2.6.x par défaut du gestionnaire de package
  • MariaDB : version de l'OS ou dernière version LTS dernier patch
  • Nginx : version du système 

Digdash

OpenJDK 11

Utiliser la version 11 de openjdk

# Installer la dernière version de openjdk
sudo apt install openjdk-11-jdk

# Vérifier l'installation
java -version

Tomcat 9

Installation

sudo apt install tomcat9

Création de l'arborescence

# Emplacement des webapps
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 /home/digdash
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

# Modifier la valeur appBase
<Host name="localhost"  appBase="webapps"

# par celle ci
<Host name="localhost"  appBase="/home/digdash/webapps/default"

Valve Connector

# Compléter la valve Connector
<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" ></Connector>

# comme suit
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               maxConnections="30000"
               maxParameterCount="100000"
               maxThreads="10000" maxPostSize="62914560"
             redirectPort="8443" compression="on" ></Connector>

Valve Reverse Proxy

❗Dans le cas des authentifications SSO (SAML ou OpenID), la valve ci-dessous doit être placée avant la valve SSO.

# Ajouter cette valve dans l'élément Host vers la fin du fichier
<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>

Dans le cas d'un serveur en ipv6, utilisez :  

<Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="127\.0\.[0-1]\.1|0:0:0:0:0:0:0:1|::1"
               remoteIpHeader="X-Forwarded-For"
               requestAttributesEnabled="true"
               protocolHeader="X-Forwarded-Proto"
               protocolHeaderHttpsValue="https"></Valve>

Dans de très rares cas, le reverse proxi n'est pas installé sur la machine. Remplacez alors la valeur "127\.0\.[0-1]\.1" par l'addresse ip du reverse proxy.
❗Attention : l'utilisation de ".*" ne doit être faite qu'en dernier recours.

Valve Log

# Ajouter cette valve dans l'élément Host vers la fin du fichier
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" ></Valve>

Limiter le fichier localhost_access_log (optionnel)

Pour limiter la taille du fichier localhost_access_log, ajouter le paramètre maxDays dans la valve Access Log et lui donner la valeur du nombre de jours de votre choix.

# Par exemple
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" maxDays="10" ></Valve>

Modification du context.xml

Emplacement : /etc/tomcat9/context.xml

# Ajouter la ligne suivante dans la balise <Context>
<Resources cachingAllowed="true" cacheMaxSize="100000"></Resources>

clipboard-202401241144-pb3ta.png

Modification de la RAM

# Editer le fichier suivant
sudo vi /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.
# Dans l'exemple ci-dessus, la machine dispose de 8G de RAM.
# Il est recommandé d'utiliser la même valeur pour Xms et Xmx.

Activation de l'autorisation d'écriture des logs par tomcat

# Créer le dossier dans /etc/systemd/system/
sudo mkdir -p /etc/systemd/system/tomcat9.service.d

# Créer le fichier
sudo vi /etc/systemd/system/tomcat9.service.d/logging-allow.conf

# Ajouter les lignes suivantes
[Service]
ReadWritePaths=/var/log/digdash/ /home/digdash/

#recharger la configuration des "daemon"
sudo systemctl daemon-reload

sudo systemctl restart tomcat9.service

Activation du lancement automatique du service au démarrage

sudo systemctl enable tomcat9

Déploiement de Digdash Version 23R2

Télécharger la version de Digdash

Dézipper la version que vous venez de télécharger

Fichiers properties

Placer le fichier digdash.properties (contenu à la racine du dossier dézippé) dans le dossier /etc/digdash.

Créer les fichiers suivants dans le dossier /etc/digdash :

Modifier le fichier digdash.properties précédemment copié :

# Ajouter ces lignes au début du fichier

# 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 (contenu dans le répertoire apache_tomcat/webappps du dossier dézippé) dans le dossier /home/digdash/webapps/default :

  • adminconsole.war
  • ddenterpriseapi.war
  • digdash_dashboard.war
  • studio.war
  • le dossier ROOT/

OpenDJ (recommandé)

Installation

  1. Commencer par récupérer la dernière version du fichier opendj-4.x.x_all.deb sur le site https://github.com/OpenIdentityPlatform/OpenDJ/releases :
wget https://github.com/OpenIdentityPlatform/OpenDJ/releases/download/4.x.x/opendj-4.x.x_all.deb
  1. Lancer l’installation : 
sudo dpkg -i opendj_4.x.x_all.deb

Paramétrage initial

Afin de simplifier le paramétrage d'OpenDJ, nous allons créer un fichier “setupOpenDJ.props” contenant les options disponibles pour répondre à l'utilitaire "setup" d’OpenDJ (cela permet d'éviter l’interface de paramétrage).
Le contenu de ce fichier est détaillé ci-dessous :

❗N'oubliez pas de remplacer les paramètres par les vôtres. Par exemple, le mot de passe par celui désiré (ici "adminOpenDJ1").

#
# Sample properties file to set up OpenDJ directory server
# See OpenDJ Setup command man for more options
#
rootUserDN                      =cn=Directory Manager
rootUserPassword                =adminOpenDJ1
hostname                        =localhost.localdomain
ldapPort                        =389
adminConnectorPort              =4444
backendType                     =je
baseDN                          =dc=digdash,dc=com
addBaseEntry                    =true
ldapsPort                       =636
enableStartTLS                  =false
generateSelfSignedCertificate   =true
start                           =true
#sampleData                     =2000

Après avoir enregistré le fichier, exécuter la ligne de commande suivante :

sudo /opt/opendj/setup --cli --propertiesFilePath setupOpenDJ.props --acceptLicense --no-prompt

Paramétrage supplémentaire

  1. Se placer dans le répertoire d’installation d’OpenDJ :
cd /opt/opendj/bin/
  1. Les fichiers LDIF peuvent être téléchargés en cliquant sur le lien suivant LDIF_OpenDJ.

  2. Créer les organisations grâce au fichier “neworganisation.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" neworganisation.ldif
dn: ou=default,dc=digdash,dc=com

objectClass: organizationalUnit

ou: default
  1. Définir le vérificateur de mot de passe "Custom Character-set Password Validator": 
sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1"  --validator-name "Custom Character-set Password Validator" --set character-set:1:abcdefghijklmnopqrstuvwxyz --set character-set:1:ABCDEFGHIJKLMNOPQRSTUVWXYZ --set character-set:1:0123456789 --set "character-set:1:\!\"#$%&'()*+,-./:;<=>?@[]^_\`{|}~" --set enabled:true --type character-set --no-prompt --trustAll --set allow-unclassified-characters:true
  1.  Créer le second vérificateur de mot de passe "Custom length Password Validator":
sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1"  --validator-name "Custom length Password Validator" --set min-password-length:12 --set enabled:true --type length-based --no-prompt
  1. Appliquer les deux vérificateurs de mot de passe :
sudo /opt/opendj/bin/dsconfig set-password-policy-prop --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --policy-name "Default Password Policy" --set password-validator:"Custom Character-set Password Validator" --set password-validator:"Custom length Password Validator" --no-prompt
  1. Définir la politique de mot de passe pour les utilisateurs grâce au fichier “ppolicy.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy.ldif
dn: cn=ppolicy,ou=default,dc=digdash,dc=com
objectClass: top
objectClass: subentry
objectClass: pwdPolicy
cn: ppolicy
pwdAttribute: userPassword
pwdAllowUserChange: TRUE
pwdCheckQuality: 1
pwdExpireWarning: 600
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 900
pwdMaxAge: 0
pwdMaxFailure: 5
pwdMinAge: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
subtreeSpecification: {base "ou=users", specificationFilter "!(uid=admin)" }
  1. Définir une seconde politique de mot de passe pour l’admin grâce au fichier “ppolicy-admin.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy-admin.ldif
dn: cn=ppolicy-admin,ou=default,dc=digdash,dc=com
objectClass: top
objectClass: subentry
objectClass: pwdPolicy
cn: ppolicy-admin
pwdAttribute: userPassword
pwdAllowUserChange: TRUE
pwdCheckQuality: 1
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: FALSE
pwdMaxAge: 0
pwdMinAge: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
subtreeSpecification: {base "ou=users", specificationFilter "(uid=admin)" }
  1. Modifier la politique de mot de passe pour autoriser les mots de passe pré-encodés (utiles pour les restaurations dans Digdash) :
sudo /opt/opendj/bin/dsconfig set-password-policy-prop --policy-name "Default Password Policy" --set allow-pre-encoded-passwords:true --hostname localhost --trustAll --bindDN "cn=directory manager" --bindPassword "adminOpenDJ1" --no-prompt
  1. Créer un utilisateur admin pour digdash via le fichier “create_user_admin.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" create_user_admin.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: Admin Domain Default
sn: Default
uid: admin_default
  1. Lui affecter les droits nécessaires en utilisant les fichiers “add_admin_right.ldif” et “add_admin_right2.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right.ldif
dn: ou=default,dc=digdash,dc=com
changetype: modify
add: aci
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow write on userpassword and shadowlastchange for admin"; allow(write) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read,write on userpassword and shadowlastchange for auth users"; allow(read) (userdn = "ldap:///all");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read on userpassword and shadowlastchange for anonymous"; allow(selfwrite) (userdn = "ldap:///anyone");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow write on * for admin"; allow(all) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow read on * for anonymous"; allow(read) (userdn = "ldap:///all");)
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right2.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
changetype: modify
add: ds-privilege-name
ds-privilege-name: config-read
ds-privilege-name: password-reset
  1. Générer un mot de passe pour l’administrateur et le conserver en mémoire pour plus tard :
sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "u:admin"

💡 Si l'on souhaite définir son propre mot de passe pour l'utilisateur admin, il faut utiliser une variante de la commande précédente :

sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "u:admin" --newPassword "mdpAdmin" 

Activation du lancement automatique du service au démarrage

  1. Créer le fichier opendj.service :
sudo vi /etc/systemd/system/opendj.service
  1. Et y coller les lignes suivantes :
[Unit]

Description=OpenDJ Server Daemon

Wants=network-online.target

After=network-online.target

Conflicts=shutdown.target

 [Service]

Type=simple

Restart=no

TimeoutSec=5min

IgnoreSIGPIPE=no

KillMode=process

GuessMainPID=no

RemainAfterExit=yes

ExecStart=/opt/opendj/bin/start-ds --quiet

ExecStop=/opt/opendj/bin/stop-ds --quiet

 [Install]

WantedBy=multi-user.target
  1. Ensuite taper les commandes suivantes :
systemctl daemon-reload

systemctl enable --now opendj

systemctl status opendj

Fonction utile

L'opération ci-dessous ne fait pas partie de l'installation.
Il peut néanmoins être utile de la connaître pour une utilisation ultérieure.

Étendre la limite pour les recherches LDAP

Étendre la limite de recherche du LDAP à plus de 1000 utilisateurs avec le fichier “extend_search_limit.ldif” ci-dessous :

sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" extend_search_limit.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
changetype: modify
add: ds-rlim-size-limit
ds-rlim-size-limit: 10000

OpenLDAP (non recommandé)

 Si possible, préférez l’utilisation d’OpenDJ plutôt qu’OpenLDAP 

Installation

Installation serveur OpenLDAP

Lancer l'installation

d#apt-get install slapd

Définir le mot de passe de l'administrateur de l'annuaire de LDAP

Mot_passe

Configuration du serveur OpenLDAP

#dpkg-reconfigure slapd

Ne pas modifier le Nom de domaine et le le Nom d'entité.

Dans la première boite de dialogue qui s'affiche, sélectionner No.

Omettre_configuration

Vérifier le nom de domaine : digdash.com.

Nom_domaine

Vérifier le nom de d'entité : digdash.

Nom_entité*

Entrer le mot de passe de l'administrateur de l'annuaire LDAP (celui défini à l'étape Installer le serveur OpenLDAP).

Mot_passe

Sélectionner No sur l'écran suivant :

Purge

Sélectionner Yes sur l'écran suivant :

Déplacer_ancienne_base

Démarrage des services OpenLDAP

service slapd start

Activation du lancement automatique du service au démarrage

sudo systemctl enable slapd Ac

BackUp d’OpenLDAP

sudo slapcat -n 1 -l data.ldif

sudo slapcat -n 0 -l config.ldif

Configuration de OpenLDAP

Chargement du module de password policy : ppolicy

Ce paragraphe concerne uniquement la version 20.04 d'Ubuntu et est optionnel.

La version de OpenLDAP installée pour Ubuntu 22.04 ne contient pas le module ppolicy.

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

💡Si la commande ldapmodify n'est pas trouvée, installez au préalable les utilitaires de opendlap avec la commande suivante :
sudo apt-get install ldap-utils

Vérification

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

Activation du module ppolicy module

vi ppolicy-module.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

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

Vérification

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

Hachage des mots de passe et blocage des comptes utilisateur ppolicy-conf

vi ppolicy-conf.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

Vérification

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

  1. olcPPolicyDefault: Indique un DN de configuration utilisé par défaut (cf. paragraphe suivant).

  2. olcPPolicyHashCleartext: Indique si les mots de passe doivent être cryptés systématiquement. Ce paramètre devrait être à TRUE sauf cas exceptionnel.

  3. 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

vi ppolicy-defaut.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

Vérification

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

Création d’une nouvelle organisation

vi neworganisation.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

Création d’un nouvel utilisateur admin avec les bons droits

Le super admin bypass les politiques de mot de passe, s'il est défini comme compte de connexion dans Digdash les politiques de mot de passe LDAP ne seront pas appliquées!

vi create_user_admin.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

Ajouter les lignes suivantes dans le fichier créé :

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

Définir le mot de passe du nouvel admin (mot de de passe du LDAP DigDash)

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

Fonctions utiles

Les opérations ci-dessous ne font pas partie de l'installation.
Il peut néanmoins être utile de les connaître pour une utilisation ultérieure.

Étendre la limite de 500 pour les recherches LDAP

vi extend_limit_search.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

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

Débloquer un compte bloqué manuellement

vi unlock.ldif

Ajouter les lignes suivantes dans le fichier créé :

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

Pour plus d'informations, vous pouvez consulter la documentation Overriding password policy and unlocking accounts.

Augmenter la mémoire de la base de données MDB (optionnel)

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 :

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

olcDbMaxSize doit être exprimé en bytes. Dans l’exemple ci-dessus le réglages est à 10GB.

Exécuter la commande :

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

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 apt install mariadb-server
#Démarrage de mariadb
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

sudo mysql_secure_installation

# Répondez oui à toutes les étapes

Activation du lancement automatique du service au démarrage

sudo systemctl enable mariadb

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'.

# Lancer mariadb
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. Le mot de passe est un nouveau mot de passe à créer.
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';

NGINX (Optionnel)

Nous utilisons Nginx comme reverse proxy.

Installation

sudo apt install nginx

Activation du lancement automatique du service au démarrage

sudo systemctl enable nginx

Configuration

Créer le fichier de configuration portant le nom de votre machine ou de votre environnement. Dans cet exemple, on utilise 001-digdash.

Dans le dossier /etc/nginx :

# Créer le fichier de conf
sudo vi /etc/nginx/sites-available/001-digdash.conf
# Ajouter le contenu suivant à l'intérieur.
# Remplacer .mondomaine.com pour server et les chemins Certificate(s) and private key, par vos informations.
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

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

Créer le fichier digdash_ssl_params contenant la politique de securité.

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;

Configuration DigDash après installation

Lancement de Digdash

  1. Redémarrer le service Tomcat.
sudo service tomcat9 restart
  1. Vérifier le déploiement des war dans le dossier d’installation home/digdash/webapps/default.
  2. Accéder à DigDash sur l’adresse suivante : http://localhost:8080/adminconsole.
    Le login / mot de passe sera admin / admin.

Page_accueil

Branchement de Digdash au serveur OpenDJ (ou OpenLDAP) installé

 Aller dans Configuration -> Paramètres serveur-> Serveurs -> LDAP.

  • Port :  389
  • Utilisateur : uid=admin, ou=default,dc=digdash,dc=com
  • Mot de passe : mot de passe admin de OpenDJ (ou OpenLDAP)

1675171192455-197.png

Cliquer ensuite sur Requêtes LDAP, et entrer "ou=default" dans le champ Arbre du domaine pour que les champs soient automatiquement renseignés comme ci-dessous.

1675171204379-473.png

Modification du mot de passe superviseur et création du compte LDAP

Modification du mot de passe superviseur

Aller dans Configuration  -> Paramètres serveur > Serveurs -> Serveur Enterprise et entrer un nouveau mot de passe dans le champ Mot de passe du Superviseur.

Serveur enterprise

Création du compte LDAP

  1. Aller dans Configuration -> Gestion des utilisateurs -> Utilisateurs
  2. Créer un nouvel utilisateur admin et lui attribuer tous les rôles et groupes d'autorisation.
  3. Dans le champ Mot de passe, entrer le nouveau mot de passe du superviseur défini ci-dessus.

Compte LDAP

Configuration des bases de données

Base de données Données d'audit

Aller dans Configuration -> Paramètres serveur -> Base de données -> Données d'audit et renseigner ici l’URL, l’utilisateur et le mot de passe.

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

Cette solution permet de sécuriser l’accès à la base de données d'audit.

Données_audit

Base de données Commentaires

Aller dans Configuration -> Paramètres serveur -> Base de données -> Commentaires et renseigner ici l’URL, l’utilisateur et le mot de passe.

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

Cette solution permet de sécuriser l’accès à la base de données de commentaires.

Commentaires

Base de données Saisie de données

Aller dans Configuration -> Paramètres serveur -> Base de données -> Saisie des données.

Cocher la case Activer la saisir de données et sélectionner une base de données dans la liste déroulante.

Saisie données

Il faut, au préalable, avoir créé une connexion à la base de données depuis le Gestionnaire des connexions aux de données dans le Studio. Consultez la page Gestionnaire des connexions aux bases de données pour plus de détails. 
Entrer default.user.ddentry pour l'utilisateur et le mot de passe défini à l'étape précédente. 
Le nom défini dans le champ Nom de connexion est celui qui apparaîtra dans la liste déroulante de sélection de la base de données.