Serveur réseau minimaliste - notre configuration

Réseaux informatiques, postes serveur et client, mode visite.
stoutouloutou
Messages : 17
Inscription : dim. 2 nov. 2014 11:34

Serveur réseau minimaliste - notre configuration

Message par stoutouloutou » lun. 26 sept. 2016 21:55

Bonjour,

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 :o (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.
Ainsi, nous avons opté pour un ACER ES1-31C, changeant son disque dur de base par un SSD, moins gourmand en consommation électrique et pas sujet à des pannes mécaniques (point peu documenté pour le moment).
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
Sécurité

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 ! :D

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.
Voila voila !
En espérant que cela puisse être utile...

stout

Avatar de l’utilisateur
TChatenet
Messages : 438
Inscription : mar. 21 févr. 2012 12:53
Localisation : Au milieu de l'océan

Re: Serveur réseau minimaliste - notre configuration

Message par TChatenet » mar. 27 sept. 2016 11:33

Ils ne savaient pas que c'était impossible , alors ils l'ont fait
Bravo !
Mais pourquoi avoir choisi le wifi, connu pour être source de difficultés , comme d'ailleurs le confirme votre expérience ?
Bonne journée
TC

Avatar de l’utilisateur
Cruanes
Messages : 451
Inscription : jeu. 16 juin 2011 20:54
Localisation : Ile de la Réunion

Re: Serveur réseau minimaliste - notre configuration

Message par Cruanes » mar. 27 sept. 2016 11:56

Bravo et merci pour le partage.

Vous avez raison d'insister sur le fait qu'ALMAPRO n'est initialement pas prévu pour fonctionner de cette manière. Attention pour ceux qui voudrai tenter de bien y réfléchir à 2 fois.

Votre solution doit permettre un accès à distance. En pratique utilisez vous ce confort ?

Avez vous rencontrer des difficultés d'installation/utilisation pour
La BCB ?
Affid ?
CerfaDoc ?
Le DMP/Efficience ?
Apycript/Bioserveur ?

Je tique également sur le choix du WIFI qui me parait être une solution bien fragile pour un réseau professionnel.

stoutouloutou
Messages : 17
Inscription : dim. 2 nov. 2014 11:34

Re: Serveur réseau minimaliste - notre configuration

Message par stoutouloutou » mar. 27 sept. 2016 20:39

Bonjour,

Pour le wifi, je suis surpris de vos remarques pointant cette technologie comme fragile : l'usage très répandu quotidien fonctionne très bien, et de façon + "pro", à l’hôpital publique où je travaille, ainsi qu'au CHU du coin, le Wifi est très utilisé pour les postes mobiles, de plus en plus nombreux.
Dans notre cas, un médecin utilise une connexion filaire, l'autre une connexion wifi, son PC n'ayant pas de port ethernet, et il l'utilise en déplacement : le wifi permet de limiter le nombre de branchement / débranchement...
Almapro semble planter quand la requête Mysql n’aboutit pas immédiatement (quel timeout est défini coté client ?), mais tout le reste, sûrement plus tolérant aux latences, fonctionnait nickel (internet, mail, ...)
Depuis que j'ai rapproché le routeur wifi, aucun problème.

Concernant l'accès à distance, en effet, cela est tout à fait envisageable, SAUF si ce problème de crash est bien lié à des exigence de latence très réduite, dans ce cas, cela risque de planter souvent...
L'utilité serait de pouvoir bosser chez soi sur des dossiers, il faudrait mettre en place un VPN, on a pas encore pris le temps de le faire.

D'ailleurs j'avais dans l'idée un montage un peu tordu pour partir en consultation de façon simple, même dans des endroits où l'on a pas d'accès réseau :
- Si connexion il y a, via le VPN, où que l'on soit, le poste client se connecte au serveur.
- La base de donnée du serveur est synchronisée de façon régulière avec une base de donnée Mysql locale sur le poste client (mode esclave de Mysql).
- en cas d'indisponibilité du réseau, c'est la base de donnée locale du poste client qui est utilisée. Ainsi, on a accès à des données récentes.
Pour ce faire, je pensais au DNS : ce service est pensé de base pour utiliser un second serveur si le 1er n'est pas disponible.
Donc :
- DNS primaire qui pointe sur un serveur DNS sur le serveur, qui attribue l'IP définie dans Almapro client vers le serveur.
- DNS secondaire qui pointe sur un serveur DNS sur le poste client, qui attribue l'IP définie dans Almapro client vers localhost.
Le problème, c'est le risque de modification de base de donnée alors en mode local : il faudrait un accès à la base localhost en lecture seule, pour éviter les pertes de données. (Je ne sais pas si Almapro client le supporterait, ou si ca le ferait planter)
(une politique de merging fréquents sous mysql parait un peu acrobatique, avec risque de plantage, sur ce que l'on m'a dit...)

Pour l'instant, pas de soucis avec la BCB, ni AFFID, ni Apicrypt. (pour ce dernier, on a une adresse et des clefs du cabinet, qui couvre les deux adresses des médecins).
(a part la petite bidouille pour l'accès au répertoire HPRIM partagé décrite plus haut)

On n'utilise pas CerfaDoc, et je ne sais pas ce que c'est que DMP/Efficience...

Avatar de l’utilisateur
Cruanes
Messages : 451
Inscription : jeu. 16 juin 2011 20:54
Localisation : Ile de la Réunion

Re: Serveur réseau minimaliste - notre configuration

Message par Cruanes » mar. 27 sept. 2016 20:58

Le DMP et Efficience

C'est à la page 148 de la notice papier

Il existe une partie dédiée dans ce forum (certes un peu maigrichonne)

stoutouloutou
Messages : 17
Inscription : dim. 2 nov. 2014 11:34

Re: Serveur réseau minimaliste - notre configuration

Message par stoutouloutou » mer. 28 sept. 2016 13:35

Oups, oui, en fait je vois bien ce que c'est le DMP.
Mais ma valence paranoïaque me fait craindre la centralisation étatique de données de santé, donc je ne regarde pas cela de près...

Avatar de l’utilisateur
Cruanes
Messages : 451
Inscription : jeu. 16 juin 2011 20:54
Localisation : Ile de la Réunion

Re: Serveur réseau minimaliste - notre configuration

Message par Cruanes » jeu. 29 sept. 2016 14:05

Cela pourrait être sympa d'écrire un une page dédiée sur le Wiki AlmaPro

Vous seriez partants ?

stoutouloutou
Messages : 17
Inscription : dim. 2 nov. 2014 11:34

Re: Serveur réseau minimaliste - notre configuration

Message par stoutouloutou » mer. 5 oct. 2016 09:13

Pas de problème, je m'y mets !

stoutouloutou
Messages : 17
Inscription : dim. 2 nov. 2014 11:34

Re: Serveur réseau minimaliste - notre configuration

Message par stoutouloutou » jeu. 6 oct. 2016 21:02

Bonjour,

je réécris pour évoquer un problème qu'on essaie de d'investiguer, qui concerne la réception HPRIM via apicrypt :
nous constatons que certaines biologies disparaissent :
on relève les messages dans Almapro, et voyons le téléchargement de plusieurs messages en bas de la fenêtre, puis rien, ces messages/biologies disparaissent.
L'outil apiwebmail, qui permet d’accéder aux messages des 2 dernières semaines même ceux téléchargés et effacés montre bien l'existence de ces message fantômes pour almapro !

Ma question et la suivante : à votre avis, est ce que cela peut être lié au fait que le répertoire HPRIM de téléchargement est un dossier partagé SAMBA ?
Il faut que je fasse davantage de tests, mais cela me donne cette impression, sans que je comprenne pourquoi...
Le caractère aléatoire de ces disparitions rend le diagnostic difficile...

Connaissez vous le process un peu plus intime de la réception de messages HPRIM ?
à priori il s'agit d'un téléchargement d'emails, qui doivent être stockés temporairement quelque part avant d'être décodés, c'est peut être là que quelque chose rate...
(dans le dossier "HPRIM", je ne vois que les fichiers téléchargés mais non HPRIM, pas ceux au format HPRIM, mais peut être y a t il une écriture/suppression rapide qui m'échappe)

merci !

Répondre