Informations sécurité
Cette page est un point d'entrée sur les différentes informations relatives à Dolibarr ERP CRM en rapport avec la sécurité.
Alertes de sécurité
Le projet a mis en place un processus de notification temps réel pour les alertes officielles sur les vulnérabilités de sécurité connues sur le projet Dolibarr (agrégation des CVE officielles publiées avec les Private Vulnerability Disclosure, et issues/tickets estampillés "Sécurité" du projet). Vous pouvez:
- Consulter la section "Dernières alertes de sécurité" disponible sur cette page https://cti.dolibarr.org#securityalerts,
- Ou vous abonner au flux RSS sur https://cti.dolibarr.org/index-security.rss si vous avez besoin de recevoir ou de consulter les alertes en temps réel sur votre smartphone (par exemple avec l'application Android Feeder).
- Si vous souhaitez également recevoir des alertes de sécurité non encore connues de l'équipe projet, et publiées dans la base de données internationale CVE (très rare, les vulnérabilités étant en général remontées au projet avant d'être publié en CVE et donc déjà remontées via la méthode précédente), vous pouvez souscrire à un service d'alerte CVE. Par exemple https://opencve.io
Fonctionnalités de sécurité
Dolibarr intègre les mécanismes de sécurité suivant :
Fonctions de Chiffrement
- Chiffrement des mots de passe utilisateurs en base [*7] [*8] par un algorithme non réversible (par défaut utilisation du password_hash PHP basé sur l'agorithme crypt blowfish actuellement).
- Chiffrement d'autres données sensibles, ayant un besoin de lecture en clair, par un algorithme réversible [*7] [*8] (utilisation d'une fonction interne dolEncrypt/dolDecrypt utilisant une clé issue du fichier conf.php).
- Chiffrement du mot de passe technique de la base de données dans le Fichier de configuration (conf.php) [*8].
- Forçage du mode HTTPS [*9].
//conf/conf.php file
//example of $dolibarr_main_force_https configuration
$dolibarr_main_force_https = '1';//to force https
Values | Description |
---|---|
0 |
No forced redirect |
1 |
Force redirect to https, until SCRIPT_URI start with https into response |
2 |
Force redirect to https, until SERVER["HTTPS"] is 'on' into response |
Force redirect to the https domain name mydomain (recommended method) |
Fonction anti Hacks et cracks
- Support du mode register_globals on ou off ("off", valeur par défaut de PHP, recommandé) [*2].
- Support du mode safe_mode on ou off de PHP ("on" recommandé) [*3].
- Option de production pour inhiber toute remontée d'information technique comme débogage, info d'erreurs, info de version (Voir le Fichier de configuration) [*6].
- WAF: Web Application Firewall intégré pour une protection anti injection SQL [2*].
- WAF: Web Application Firewall intégré pour une protection anti injection XSS (Cross Site Scripting) [*1].
- Système de protection anti injection SSRF (tous les appels d'URL externes faite par l'application passent via la méthode getDolURLContent)
- Système de protection anti CSRF (Cross Site Request Forgery) [*5] (utilisation d'un jeton dans chaque formulaire HTML avec plusieurs règles de renouvellement, par session, par page)
- Possibilité de paramétrer les entêtes HTTP de l'application ("HTTP Referer-Policy", 'HTTP Strict-Transport-Security", "HTTP Permissions Policy", ""HTTP Content-Security-Policy")
Notez qu'il reste préférable d'ajouter aussi la protection côté serveur Web en désactivant l'option Apache
AcceptPathInfo Off
Accès pages et fichiers
- Pages et contenus protégées par un système centralisé de vérification des habilitations accordées aux groupes ou utilisateurs pour chaque module fonctionnel [*4] [*10].
- Isolation des fichiers stockés par Dolibarr dans une arborescence différente de la racine web (donc non téléchargeable sans passer par le wrapper de sécurité) [*3] [*10].
- Possibilité d'avoir l'intégralité des sources de l'application en lecture seule ou sur un filesystem en lecture seul.
- Assainissement des noms de répertoires et fichiers (fonction interne dol_sanitizeFilename() et dol_sanitizePathname().
- Fonction de limitation des fichiers téléchargées (taille max en téléchargement et téléversement, restriction sur l'extension,...)
Virus
- Possibilité d'insérer un contrôle antivirus sur tout fichier téléversé (GNU/Linux uniquement) [*3].
Protection login
- Retardateur anti brute force cracking sur la page de login [*7]. Actuellement ce délai est fixe (mais pourra devenir exponentiel dans une version future).
- Code graphique optionnel anti robot (CAPTCHA) sur la page de login [*7].
- Restriction des accès au backoffice pour certaines IP uniquement [*7].
- Aucun traçage de mot de passe dans les logs (ni techniques ni fonctionnelles) [*7].
- Système d'audit interne pour journaliser de manière permanente les événements en rapport avec l'administration utilisateurs et les connexions en succès ou en échec.
- Possibilité de tracer un enregistrement en fichier log (Le module Debug Log doit être activé avec au moins le niveau 5 - LOG_NOTICE) après un succès ou un échec de connexion ainsi vous pouvez ajouter des règles fail2ban ou crowdsec pour bloquer les brute force attacks. Vous pouvez vérifier les enregistrements avec la syntax :
"YYYY-MM-DD HH:MM:SS (ERROR|NOTICE|INFO|DEBUG) IP functions_dolibarr::check_user_password_.* Authentication KO"
Des exemples de règles fail2ban son fournis avec le projet.
Centralisation de toutes les informations Sécurité
- A partir de la version 14, vous trouverez dans le menu Accueil - Outils d'administration - Sécurité, un centre d'information sur la sécurité vous rapporte toutes les recommandations faites et à faire liées à votre installation.
Une CI pour la sécurité
Une plateforme d'intégration continue (Continuous Integration) exécute des tests unitaires de sécurité et une analyse de code statique à chaque modification de code.
Une empreinte par fichier, pour chaque version packagée
Notre processus de publication intègre à chaque version un fichier d'empreinte (également disponible en ligne) pour valider tous les fichiers de votre installation locale (et détecter la moindre modification par rapport à la référence) via l'outil intégré disponible dans le menu Accueil - Outils Administration - Infos Dolibarr - Vérification intégrité des fichiers.
Protection DOS (Deny Of Service) et modération Brute force
- Fonction intégrées AntiDOS via des quota par IP sur les actions publiques.
- Le projet fournit de plus des exemples de règles fail2ban pour bloquer les tentatives de force brute ou les accès abusifs sur la page de connexion, la page de mot de passe oublié et sur toutes les pages publiques. Voir https://github.com/Dolibarr/dolibarr/tree/develop/dev/setup/fail2ban
OpenSourceSSF
Dolibarr passe avec succès le niveau de conformité Sécurité et Bonnes Pratiques définies par l'OpenSourceSSF : https://bestpractices.coreinfrastructure.org/projects/5521
Remonter une faille de sécurité
Le projet publie sa politique de remontée de vulnérabilité via le fichier standard suivant: https://github.com/Dolibarr/dolibarr/blob/develop/SECURITY.md
Les corrections de sécurité sont en général traitées (comprendre "commités et disponible dans le code source") sous 15 jours. La remontée aux utilisateurs se fait en automatique dans l'heure qui suit le commit via le flus RSS dédié https://cti.dolibarr.org/index-security.rss
Campagnes de Bug bounty et VDP
Des campagnes de bug bounties sont réalisées régulièrement par le projet et financées par l'Association Dolibarr. Ces campagnes sont de type VDP privées (Vulnerability Disclosure Programs) gérées par des partenaires spécialisés (Exemple: https://yogosha.com, https://huntr.com/). Les corrections de ces campagnes sont publiées sous 15 jours comme pour toute autre remontée publique de vulnérabilités (délai "constaté" par le projet communautaire, se rapprocher d'un partenaire commercial pour un délai "contractuel")
Ouvrir l'accès à sa machine / son serveur local vers internet
Une installation chez un hébergeur (généraliste ou spécialisé Dolibarr) donne accès à n'importe quelle machine reliée à internet.
Si vous avez fait le choix d'installer Dolibarr en local, sur votre machine : il est tout de même possible de partager Dolibarr avec d'autres machines.
Deux cas sont à prendre en compte :
- le partage local : seules les machines présentes physiquement sur le même réseau auront accès aux données par leur navigateur. Pour cela il suffit d'attribuer une IP fixe à la machine "serveur" et de paramétrer correctement les antivirus/firewall de cette machine. (ce forum ayant vocation à l'unique utilisation de Dolibarr : il faudra vous documenter par vous même sur les paramétrages à mettre en place, ou demander de l'aide sur le forum). Les autres machines auront lors accès à Dolibarr avec une adresses similaire à "http://192.168.1.148/xxxxx" où "xxxxxx" est potentiellement le sous répertoire dans le quel vous avez installé dolibarr)
- le partage via internet : la procédure est identique au partage local, il vous faudra en plus :
- paramétrer une redirection de port sur votre accès internet vers le "serveur". Cette ouverture de port n'est pas anodine d'un point de vue sécurité : formez vous correctement ou faites appel à un professionnel.
- avoir une IP fixe de pour votre accès internet, ou une résolution DNS dynamique.
La solution idéale, restera de confier l'hébergement, la sécurité et les sauvegardes de votre Dolibarr à un hébergeur professionnel...
Oui : cela à un coût... mais en regard du risque de "tout perdre", il est important de se poser la question !
NB : une installation locale avec des données existantes est très facilement migrable vers ce type d'hébergement.
(*X) Ce mécanisme répond à une criticité numéro X du classement Top Ten de l'OWASP 2007. La position X peut avoir évoluée.