Securité Dolibarr : le fichier install.lock ne doit pas être considéré comme optionnel sur vos installations

Bonjour à tous
Une bonne pratique serait d’ajouter un fichier .htaccess pour n’autoriser le dossier install qu’à certaines adresses ip. Certes c’est pas natif Dolibarr mais ça sécurise dur !

# Restriction des adresses IP
# Ordre de priorité des instructions : refuser puis autoriser
Order Deny,Allow
# On n’autorise personne à accéder au site…
Deny from all
# …Sauf l’adresse IP x.x.x.x
Allow from x.x.x.x

A noter que tout intégrateur doit se poser la question de la sécurité sans faire une confiance à Dolibarr. La faille peut venir du serveur aussi, des droits…
Quand je vois l’état de certaines installations « maison » ça fait peur !
@+

@Philazerty attention, je viens d’apprendre que nginx ne tient pas compte du htaccess…

voir aussi ce module Maintenance Mode
(peut-être qu’il génère un htaccess)

Oui c’est vrai, il faut importer le .htaccess dans le nginx.conf il me semble.

Après l’installation il suffit de supprimer le dossier htdocs/install et il n’y a plus de problème d’accès à ce dossier.

Non car certaine tables sont creer à l’activation des modules (comme le module ticket) et les fichiers de création sont dans htdocs/install. Et aprés comment vous faites les mise a jour de Dolibarr ?

Pour une mise à jour il y a un nouveau dossier install de créé qui provient de la nouvelle version.
Quand à l’installation des modules, une fois dolibarr configuré ce n’est pas une opération qu’on fait tous les jours, rien n’empêche de remettre en place le dossier provisoirement en cas de besoin.
Le maillon faible étant le dossier install, il est logique pour moi de le supprimer une fois qu’il n’est plus nécessaire.

Mais comme déjà évoqué si Dolibarr n’est utilisé que par un nombre de personnes restreint, on passe sur un réseau privé avec wireguard et on est tranquille.

je me cite,

Il faut toujours apprendre de ce que font les autres, j’ai installé un wordpress et tenté de relancer l’installation pour créer un nouveau compte admin, cela est naturellement impossible.
A titre d’info dans les principes de déclaration de faille, il n’est pas expressément notifié qu’il faille ajouter ce fichier.
Je vais donc voir comment empêcher la création d’un nouveau compte admin si il y en a déjà un en activité, même si le fichier install.lock (et le fichier conf.php) est déjà présent.

Il n’y a rien besoin de plus…

1 « J'aime »

ce n’est pas le seul problème; dans l’absolu il faudrait pouvoir avoir un écran (?) qui permette de basculer en mode maintenance en indiquant une IP autorisée ou un système équivalent qui marche aussi bien avec Apache que nginx.
Parce que sinon, il faut prier que personne n’essaye d’accéder à Dolibarr au milieu d’une migration…
(bien sûr les geeks comme nous vont jouer sur le htaccess ou le paramétrage de nginx pour faire cela, mais ce n’est pas donné à tout le monde… et il faut ne pas oublier de le faire)

Pour ma part je rajouterai un test sur une variable pour l’action de création de compte utilisateur.
Mais oui, il faut que Dolibarr soit sécurisé de base et que si l’on souhaite réaliser des opérations qui ouvre des « portes » que ce soit clairement explicité et de la responsabilité de l’administrateur, pas l’inverse.
Une fois de plus, il n’est pas normal de pouvoir relancer les étapes de mise à jour et créer un utilisateur admin si il y en a déjà un existant !!!

2 « J'aime »

Ainsi qu’avec Caddy, lighttpd et tous les autres…

1 « J'aime »

Pas mal comme idée, mais si on va jusquau bout, il faudrait que la maj puisse se lancer depuis l’interface utilisateur par un user-admin. A ce moment, une fois lancée, seule l’ordinateur lié devrait pouvoir agir sur le script d’install (CSRF token, limitation ip ou mac adress ?)

A la fin de la mise à jour, il conviendrait dafficher la liste des modification effectuée en bdd mais aussi letat de la bdd en ce qui concerne les users-admin voire tous les user.

1 « J'aime »

Dolibarr integre déjà un mode maintenance qui pour ma par marche tres bien car je l’active pour restrindre les acces des utilisateur a celui du super admin uniquement en ensuite je demare la mise à jour.

Ah bon ? Où ça ?

la constante MAIN_ONLY_LOGIN_ALLOWED

1 « J'aime »

Merci @FHenry
@altatof c’est dans le wiki * MAIN_ONLY_LOGIN_ALLOWED ► Only the specified login is allowed to log in Dolibarr (maintenance mode).

Ce n’est pas cela qui va empêcher quiconque d’accéder à l’installation.

3 « J'aime »

Bonjour,

Je m’immisce dans ce thread pour un point de vue utilisateur assez frustrant qui concerne effectivement la sécurité. J’avais réussi à être conforme sur tous les points en suivant les recommandations de ce fil :

Puis passage en V15, et là, rebelote…

et là, la dynamique du thread me fait penser que soit tout le monde sait gérer la sécurité de son dolibarr et pif paf pouf en trois chmod a une installation clean… Soit c’est trop complexe et on passe vite à autre chose en fermant les yeux et en croisant les doigts. (Sans connaître réellement les risques objectifs la plupart du temps).

Le fichier install.lock, puisque c’est l’objet principal de l’OP n’est clairement pas le plus compliqué à créer pour un utilisateur lambda, que ce soit depuis un explorateur de fichier sur cpanel ou en local ou même en ligne de commande. Le fait qu’il soit créé automatiquement serait une bonne chose, mais cela reste un élément de sécurité parmi d’autres pour l’utilisateur lambda.

Imaginez moi derrière mon ordi:

*"wouuuhouu j’ai créé mon fichier install.lock, je suis trop fort, mais… c’est quoi tous les autres :

warning pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals, pcntl_wifstopped, pcntl_signal, pcntl_sigprocmask, pcntl_async_signals, passthru, shell_exec, system, proc_open, popen, shell_exec"*

Ok, bon je verrai plus tard :thinking:, machin m’a demandé un devis! :money_mouth_face:

Je sais que tous ici êtes bénévoles, je connais la philosophie du libre. C’est juste un point de vue. Si je savais aider sur ce point je le ferai, je n’ai tout simplement pas les compétences, comme beaucoup de vos utilisateurs à priori.

Bonjour @KPBLS et merci de nous faire part de votre frustration.
Quelles sont vos attentes ou vos conseils pour y remédier ?

Bonjour @altatof,

Pour venir de temps en temps sur le forum, il est assez facile d’identifier qui fait quoi. Bien que bénévoles, vous avez tous vos domaines de prédilection, c’est assez facile à identifier entre les contributeurs au core, les contributeurs de modules complémentaires, les spécialistes des questions de compta (opendsi) etc… Il y a un noyau dur (et tant mieux!) et c’est en allant sur github que l’on peut voir qui est réellement investi sur le projet.

Par contre, je ne suis pas en mesure de dire qui s’occupe des questions de sécurité, qui vous en conviendrez, ont une priorité intrinsèque.

Alors bien sur, les vrais problèmes de sécurité peuvent être remontés sur github, outre le fait que c’est en anglais et plutôt jargonneux, ce n’est pas très compliqué à faire. Mais encore une fois, pour l’utilisateur lambda ce n’est pas toujours facile de savoir ce qui relève du bug, ou de la faille de sécurité ou ce qui relève de la configuration. Et combien de vos utilisateurs lambdas connaissent github?

Même entre vous, les dev, vous vous apprenez mutuellement des choses : pas plus tard qu’hier, j’ai lu un dev dire à un autre que la constante MAIN_JE_SAIS_PLUS_QUOI n’était pas nécessaire et qu’il valait mieux cocher la case « faire la même chose » dans l’écran de configuration du module en question.

Enfin, je vois souvent passer des threads très fournis de réponses pour de nouvelles fonctionnalités le plus souvent via des modules externes, plus rarement du core, très intéressantes au demeurant car cela démontre la maturité et le dynamisme du projet. Mais il s’agit, la plupart du temps, de discussion de développeur à développeur, de eoxia à opendsi, de eldy à ksar, de defrance à ptibogxiv de PM17 à philazerty… (Tous ne sont peut être pas développeurs, mais tous sont des utilisateurs avisés du forum)

A mon sens donc, sur le forum les dev parlent aux dev et cela se vérifie, sur le site dolibarr.org - forums - sujets top -depuis toujours, vous retrouverez majoritairement les personnes que j’ai cité de mémoire 5 lignes plus haut. Peut etre suis-je le seul utilisateur à avoir ce ressenti, mais je ne pense pas.

D’ou je parle?

Avant de venir sur dolibarr, je ne connaissais pas le libre ou plutôt vaguement. Mon premier logiciel de compta était celui d’une grooooooôôsse boite américaine pas libre du tout et plutôt cher (Quickb…ks) qui malgré tout ce qu’on peut en penser, quickb**ks à très vite su prendre en compte l’expérience de leurs nouveaux utilisateurs français. Trois fois je suis allé, sur invitation (entre 2015 et 2018), à Paris à la journée dans un grand hôtel, rencontrer l’équipe, participer à des entretiens sur l’expérience utilisateur.

Ok, c’est incomparable en termes de moyens. Et ça tombe bien car vous avez entre les mains un outil bien supérieur à ce que j’ai connu avant, beaucoup plus complet et complexe parfois. De plus, il est tout à fait possible de faire la même chose sans forcément aller dans un grand hôtel, ni même se déplacer de chez soi/du bureau.

Il y a aussi chez moi une certaine expérience en tant que formateur (dans le sport) qui consiste justement à prendre en considération le point de vue de l’utilisateur en contexte, je vous épargne les théories des actions situées et du courant théorique et méthodologique du cours d’action même si Lucy Suchman à déjà abordé en 1987 le dialogue entre l’homme novice et la machine intelligente : c’est justement ça, le point de départ des actions situées.

Ce que je suggère

« Tout formulaire informatique est une maltraitance »

Dixit Benjamin Bayard, (FFDN) s’appelant lui même volontiers « le vieux c*n des internets », personnage forcément connu par un grand nombre d’entre vous.

Certains connaissent bien sur son exemple sur le ministre délégué au numérique d’une époque récente, Olivier Ô, bien embêté pour saisir les trois premiers caractères de son nom de famille dans un champ déroulant… (video thinkerview sur youtube pour les curieux)

Globalement, dolibarr manque de documentation, ce n’est un secret pour personne, vous en êtes tous déjà très conscients. Cela concerne la sécurité puisque c’est le sujet de ce thread, les modules core, les bonnes pratiques, les flux de travail, bref l’expérience utilisateur.

Des choses qui vont dans le bon sens fleurissent à gauche à droite, comme cette série de vidéos très bien faite sur dolibarr, tellement bien faites qu’elles complètent désormais les articles du wiki il me semble. C’est bien avec cette série de vidéo que j’ai fini par comprendre que les « extrafields » c’était bête comme chou! MAIS… Elles n’existent que depuis un an, ce qui est peu par rapport à la longévité de dolibarr.

Je veux bien contribuer, mais en fait c’est ce que je fais déjà à l’instant même, je suis sur que plein de gens sont prêts à contribuer, mais c’est à vous les développeurs de créer le cadre le moins « maltraitant » possible et pour cela c’est aussi à vous d’aller à la pêche aux expériences utilisateurs.

Cela fait deux ans que je passe 5h par jour sur dolibarr, j’ai pas encore tout compris. En deux ans, a bidouiller sur les projets, les taches, les temps consommés, je viens juste de réaliser (ces jours ci) que je pouvais créer une intervention depuis un temps consommé en cochant une case d’action globale en face d’une ligne de temps consommés. Alors peut être que c’est nouveau en V16? Mais Peut être que ça a toujours été là, bien caché tant qu’on a pas coché une seule case…

Hier soir, je me suis dit que c’était beaucoup plus pertinent de n’utiliser les modèles de factures récurrentes UNIQUEMENT pour les contrats/abonnements, dans le sens ou X services sur un temps donné, = X factures souvent identiques et donc que la récurrence était paramétrable en fonction de la durée et récurrence des services de ce même contrat.

Bref, c’est ce que dans mon jargon a moi on appelle de « l’utilisabilité en contexte », soit l’outil est une prothèse, soit il est transparent, il devient incarné. Dolibarr n’est pas transparent pour l’utilisateur même si je sais que je ne trouverai pas mieux ailleurs. (Et comme dit plus haut, un logiciel quel qu’il soit sera toujours une prothèse, ou une maltraitance selon les termes de B.bayard, mais plus ou moins grande. L’ergonomie ne concerne pas que les objets matériels en somme.)

Pour en revenir à la sécurité, ma réponse c’est documentez! documentez!

exemple :

PHP disable_functions =
Vous devriez désactiver les fonctions PHP: pcntl_alarm, pcntl_fork, blah blah…

Pour vous c’est une infobulle qui dit

« ajoutez ce qui suit à la fin de votre fichier php.ini et faites un sudo systemctl restart phpd »

Pour l’utilisateur qui débute son auto-hébergement cela peut-être des heures de recherche web, pour un dev, c’est … une ligne dans un fichier, non? (oui, ok, multiplié par x infobulles, … )

un tel petit guide de paramétrage existe par exemple sur le module compta avancé… Un exemple ailleurs, libreoffice ouvre sur un « le saviez vous? »

Que dire de plus? Comme beaucoup de monde, je ne pose jamais de questions quand j’ai déjà la réponse et les devs c’est vous, vous connaissez la solution et si vous ne la connaissez pas encore, vous êtes aussi des spécialistes de l’intelligence collective.

Pour conclure, dolibarr est le meilleur outil que je connaisse à ce jour, et va le rester car je n’ai pas envie d’aller voir ailleurs. les fonctionnalités sont suffisantes voire trop importantes pour une grande majorité d’utilisateurs (ma main à couper!).

ET oui, je suis prêt à m’investir, comme vous, quand je peux (compétences : J’ai appris a comprendre un mot sur trois sur une ligne de code, par la force des choses, mais je suis incapable d’écrire la moindre ligne moi-même. ) et quand j’ai le temps (bénévolat)

Par conséquent, sur un forum ou les développeurs semblent parler aux développeurs je ne sais pas quelle est ma place aujourd’hui, mais je peux imaginer celle que les developpeurs ouvriront aux utilisateurs demain. :wink:

2 « J'aime »