Pour information, pour permettre à d'autres utilisateurs d'Almapro d'étendre les possibles utilisations du logiciel, et aussi pour avoir vos retours, remarques, conseils, ... nous souhaitions partager notre installation réseau du logiciel dans le cabinet médical.
Nous sommes deux médecins avec chacun son cabinet et son ordinateur, et souhaitions donc utiliser Almapro en mode réseau.
Nous préférions utiliser une machine sous GNU/linux pour faire serveur :
- nous sommes bien plus familiers avec l'administration d'un serveur sous GNU/Linux (Debian par exemple) que sous Windows
- des distributions GNU/Linux sont bien moins gourmandes en ressources machine que Windows, ce qui est intéressant en terme de coût d'achat et de consommation électrique.
- nous sommes très sensibles à l'aspect "logiciel libre".
Nous avons donc essayé de comprendre comment marchait le serveur Almapro, afin de voir s'il était possible de mettre en place les services nécessaires à son fonctionnement sans Windows, et y sommes parvenus :
Principe de fonctionnement
Le mode réseaux du logiciel ALMAPRO fonctionne sur un mode client/serveur :
- le serveur partage une base de donnée Mysql ainsi que des répertoires (BDMED, ALMAPRO, HPRIM) via le protocole de partage SAMBA
- les clients équipés du logiciel ALMAPRO s'y connectent
L'accès à la base de données Mysql se fait par authentification générique (un seul nom d'utilisateur/mot de passe pour tous !)
Pour y avoir accès, il faut écrire à l'association, et signer un document qui nous rend responsable de ce que l'on fait, et nous informe que nous ne bénéficieront pas de maintenance dans le cadre de cette utilisation. cfviewtopic.php?f=43&t=3137
L'accès aux partages samba se fait via Windows (si l'on parvient à accéder aux dossiers partagés via Windows, ALMAPRO parvient à y accéder)
Choix du serveur
Une machine de faible puissance (en 2016 !) suffit pour faire tourner un serveur Mysql et de partage de dossiers.
Nous souhaitions installer un système GNU/linux, du fait de nos connaissances de ce système, de sa fiabilité, de l'aspect open source.
Il nous faut donc un PC compatible GNU/linux, qui va tourner 24h/24, qui dispose d'une interface réseau LAN, qui consomme peu, qui soit fiable.
Nous avons hésité entre une minimachine (NUC / raspberry pi / ...) ou un PC portable, et avons opté pour ce dernier :
- des machines récentes à refroidissement passif, de consommation modérée existent.
- la batterie integrée rend l'alimentation plus fiable en cas de débranchement (ménage, coupure EDF...)
- disposer d'un clavier et écran rend la maintenance plus facile
- relativement, le coût d'une telle machine reste bas.
Coût du PC : 250€, et du SSD : 70€ (Samsung Serie 850 EVO de 120Go)
En pratique
On a installé LUBUNTU http://lubuntu.net, DEBIAN jessie ayant posé des problèmes à l'installation sur cette machine contrairement à LUBUNTU.
On a créé un utilisateur, dont le répertoire "home" est chiffré, qui contient la base de donnée Mysql ainsi que les dossiers partagés (BDMED, ALMAPRO, et HPRIM)
A l'usage, on a aussi ajouté un dossier partagé qui reçoit les documents scannés, qui sont ainsi accessibles depuis les deux postes clients.
Attention avec le dossier HPRIM :
pour que Almapro "voit" le dossier partagé dans la configuration HPRIM, une manipulation est nécessaire sur les postes clients sous windows 10 : il faut connecter le partage en "disque réseau", puis modifier la base de registre comme ceci :
- ouvrir regedit, HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Policies -> System
- à droite, il y a : ConsentPromptBehaviorAdmin, ConsentPromptBehaviorUser ... etc.
- cliquer dans un espace vide, ajouter un DWORD(32bit), nommé "EnableLinkedConnections".
- double cliquer desssus afin de lui assigner la valeur "1".
- Redemarrer
Vue la sensibilité des données hébergées (données de santé), nous avons opté pour un chiffrement des données stockées sur le serveur.
Nous avons choisi un chiffrement du répertoire utilisateur et non du disque entier (LUKS) afin de rendre le dépannage à distance possible (SSH) en cas de redémarrage.
Cela a pour contrainte qu'une ouverture de session est un préalable nécessaire pour le bon fonctionnement du serveur Mysql et samba, et que donc le serveur de peut pas redémarrer tout seul et être fonctionnel sans l'intervention d'un humain qui connaît le mot de passe.
Ceci est évident vu le choix de sécurité fait, mais il faut bien l’intégrer !
Ainsi, si le PC tombe entre de mauvaises mains (perte, vol, ...), même allumé, les données de santé restent inaccessibles.
REM : en fait, il aurait été possible de chiffrer le disque entier, avec un accès SSH "dropbear", qui se charge très précocement au démarrage, j'ai découvert cela après...
Partage samba
L'accès au dossiers te fichiers partagés est limités aux utilisateurs configurés pour, en l’occurrence les comptes clients.
mysql
L'utilisation du compte générique est forcée par ALMAPRO, on ne peut pas configurer les clients pour qu'ils utilisent un nom d'utilisateur / mot de passe spécifique...
Il reste la possibilité de restreindre l’accès à certaines adresses IP dans la configuration du serveur.
Il faut bien penser à déplacer le répertoire de stockage de la base de donné dans le répertoire chiffré, sinon, les données sont stockées en clair sur le serveur.
Autres fonctionnalités
Pour la sauvegarde des donnée, on a opté pour un backup quotidien :
la base de donnée est sauvegardée (dump), ainsi que les répertoires partagés (utilisation de backupninja https://labs.riseup.net/code/projects/backupninja, le tout est synchronisé sur les postes clients, via Syncthing https://syncthing.net (simple, possibilité de versionning)
Surprises
On a eu quelques plantages d'Almapro, qui en fait provenaient du fait que les deux postes clients n'utilisaient pas la même version d'Almapro !
D'autres plantages on eu lieu, qui semblent liés à des problèmes de connexion au serveur Mysql : si une requête n'aboutit pas, le logiciel crash immédiatement. (c'est un peu violent comme comportement, il ne semble pas y avoir de retry, et le timeout n'est pas bien long...)
En fait, il s'agissait d'un problème réseau : la connexion WIFI entre un poste client et le serveur était limite limite, et en rapprochant le routeur wifi, on a plus de problème.
Ceci réglé, tout fonctionne correctement. (installation qui tourne depuis quelques semaines maintenant)
Conclusion
On y est arrivés !
Cette configuration réseau nous a permis de mieux percevoir le fonctionnement d'Almapro, et je me permets de pointer quelques problèmes de sécurité :
- l’utilisation d'un mot de passe unique pour la base de données MySQL me parait insuffisante:
n'importe quelle personne se connectant au réseau (une prise RJ45 qui traîne, un wifi peu sécurisé...) et qui dispose de ce mot de passe (je l'avais trouvé sur un forum internet à l'époque) peut récupérer l'ensemble de la base de données du logiciel, données patients extrêmement sensibles. - de même, les partages samba sont par défaut (si l'on suit la documentation standard) bien peu sécurisés, et les fichiers incorporés (pdfs, images), sont accessibles à n'importe qui ayant l'accès au réseau.
En espérant que cela puisse être utile...
stout