Acces distant à medshake via vpn

Cette catégorie regroupe les demandes d'aide à l'utilisation du logiciel MedshakeEHR.
fabrice1811
Messages : 10
Inscription : 17 nov. 2020, 22:48

Acces distant à medshake via vpn

Message non lu par fabrice1811 »

Bonjour,
Je cherche un tuto pour configurer l'accès à distance au serveur local via vpn.
J'ai fais quelques recherche mais je me pert un peu dans la masse d'infos.
Pour infos j'utilise pour l'instant une box de chez sfr mais quelques mois j'aurais une box de chez free.

Je vous remercie par avance pour votre aide.
Fabrice

marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Acces distant à medshake via vpn

Message non lu par marsante »

Bonjour Fabrice,

Je n'ai pas encore eu le besoin de me connecter à distance et n'est donc pas expérimenté l'installation d'un VPN. Je vous partage cependant un tutoriel qui me semble encore d'actualité :

https://memo-linux.com/installer-facile ... et-centos/

les sources du script sont

Et si vous savez utiliser docker vous pouvez installer le VPN côté serveur avec ce tuto

Ensuite, ce qui vous intéresse de ce que je comprends est de fixer l'IP de votre machine hébergeant le VPN et peut être de lui associer un nom de domaine pour y avoir accès de l'extérieur ?

  • Il faudra déjà ouvrir le port de la machine hébergeant le VPN sur votre box, généralement dans un onglet appelé NAT.
    https://www.youtube.com/watch?v=m3AdTmiDyz8
  • Fixer l'IP dans un onglet appelé généralement DHCP. Je n'ai pas trouvé d'exemple pour SFR.

À partir de là vous pourrez accéder de l'extérieur à votre VPN via l'adresse ip indiquée par un site comme http://monip.org/

  • Si vous voulez vous connecter de l'extérieur à votre VPN avec une adresse de type nomdedomaine.fr, vous devez paramétrer un dyndns. ça dépend de ce que je peux comprendre plus de l'hébergeur de votre nom de domaine.
    https://lucasvidelaine.wordpress.com/20 ... yndns-ovh/

J'espère que ça pourra vous aidez en attendant peut être qu'une personne plus expérimenté vous réponde.

Avatar de l’utilisateur
Indelog
Administrateur
Messages : 71
Inscription : 10 juil. 2020, 10:06

Re: Acces distant à medshake via vpn

Message non lu par Indelog »

Bonjour,

En réponse rapide.

OpenVpn est le moyen que j'utilise actuellement pour fournir un accès à distance à une instance MedShake. Je pense que l'on pourrai aussi le faire de façon plus simple via l'utilisation de l'authentification via certificat dans Apache (https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html#accesscontrol) mais tant que je l'aurais pas réellement testé je ne me prononce pas dessus.

Si vous souhaitez utiliser OpenVpn, pensez bien a n'autoriser que les clients provenant du réseau VPN dans la config du serveur web (il ne faut pas considèrer l'absence de NAT dans le routeur comme une protection suffisante). Je dé-conseil assez l'utilisation de Docker à moins que la personne en connaisse bien le fonctionnement. Au final la maintenance sera plus compliqué (il faudra gérer les versions des images et s'occuper de la re-création régulière du conteneur au lieux de juste utiliser le gestionnaire de paquet et en cas de pb, son analyse et sa résolution seront aussi plus complexe, surtout que la les interface réseau virtuel du VPN entre en plus la dedans).

Je vais documenter sur le wiki comment j'ai configurer MedShake pour l'utiliser au travers d'OpenVpn. Mais je ne peut pas prendre le temps de le faire avant dimanche (si je veut faire un truc un peut sérieux).

DEMAREST Maxime (Indelog)
Avatar de l’utilisateur
Indelog
Administrateur
Messages : 71
Inscription : 10 juil. 2020, 10:06

Re: Acces distant à medshake via vpn

Message non lu par Indelog »

C'était un peut long à arriver mais voici la procédure : https://c-medshakeehr.fr/wiki/doc:access_distant

Finalement j'y traire les deux cas de figure :

  • Directement avec Apache
  • Avec OpenVPN

A utiliser avec prudence. Pour le moment personne que d'autre que moi ne l'a testé ni vérifié.

Je suis preneur pour une relecture.

DEMAREST Maxime (Indelog)
marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Acces distant à medshake via vpn

Message non lu par marsante »

Merci beaucoup.
J'ai fait une première relecture du texte, mais pas encore testé le code. J'essayerai prochainement.

fabrice1811
Messages : 10
Inscription : 17 nov. 2020, 22:48

Re: Acces distant à medshake via vpn

Message non lu par fabrice1811 »

Merci beaucoup pour vos réponses et le temps que vous avez passé afin de trouver une solution. Dès que j’aura essayé je vous donnerai mon retour. Encore merci.

fabrice1811
Messages : 10
Inscription : 17 nov. 2020, 22:48

Re: Acces distant à medshake via vpn

Message non lu par fabrice1811 »

Salut,
Je viens de tester la procédure en utilisant la méthode directement avec Apache, ça fonctionne super :)
Pour ceux qui veulent l'essayer voici quelques précisions d'après mon expérience:

Quand vous faites la config de votre VirtualHost ( /etc/apache/sites-available/medshake.conf )

# sur la ligne SSLCertificateKeyFile vérifiez que vous avez bien mis .key à la fin :
SSLCertificateKeyFile /var/local/easyrsa/medshake/pki/private/medshake.key

# vérifiez bien l'emplacement des fichiers html public de l'instance MedShake EHR/EDC, pour moi en l’occurrence c'est:
DocumentRoot /home/ehr/public_html

Après l’édition du VirtualHost ne pas oublier de l'activer avec la commande:
sudo a2ensite medshake.conf

Il faut également faire la redirection des ports sur votre routeur.
En général vous devez aller dans la partie « Réseau » puis « NAT/PAT » ou « Transferts de port ».
Ajoutez les règles Http (80) et https (443), protocole TCP ainsi que l'adresse locale du serveur.

Ensuite ajouter la ligne suivante à votre fichier host:
exemple :
192.168.X.X nom_du_domaine_utilisé

Testez en saisissant l’adresse IP publique de votre box.
fabrice1811
Messages : 10
Inscription : 17 nov. 2020, 22:48

Re: Acces distant à medshake via vpn

Message non lu par fabrice1811 »

Par contre impossible de se connecter avec un mobile, car pas de possibilité de modifier le fichier host.
Du coup pas possible d'utiliser l'option PhoneCapture

Si quelqu'un sait comment faire pour contourner ce problème. Peut être faut il mettre en place un serveur dns ?
marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Acces distant à medshake via vpn

Message non lu par marsante »

cool, si tu as le temps tu peux peut être documenter ton expérience sur le wiki ?

Dans un contexte d'une box local, la livebox par ex propose des domaines locaux en .home. Je ne sais plus où se fait la conf (il faut fixer l'ip puis attribuer un nom à la machine), mais admettons que tu es un msehr.home, en tapant cette adresse sur n'importe quelle machine dans le réseau local sans modification du fichier host ça sera ok. Pour les autres box j'imagine qu'il doit exister des solutions équivalentes. Si par contre tu as besoin d'un accès distant on revient soit à la nécessité d'éditer un fichier host, soit pour la livebox de faire un dydns, soit au vpn, sauf erreur de ma part.
Avatar de l’utilisateur
Indelog
Administrateur
Messages : 71
Inscription : 10 juil. 2020, 10:06

Re: Acces distant à medshake via vpn

Message non lu par Indelog »

Avec du recul la configuration apache proposé un peut simple. J'en ai testé une nouvelle de mon coté qui me semble OK y comprise pour les accès smart phone et tablette. Je vais aller mettre à jour la page du wiki.

Sans parlé du problème de DNS, vous ne pouvez pas accéder à Medshake depuis le smartphone car celui-ci ne dispose pas de certificats pour pouvoir s'authentifier auprès d'apache. Il nous faut adapter un peut la configuration du serveur web :

Premièrement il faut modifier la directive SSLVerifyClient et remplacer require par optional (pour permettre aux client ne disposant pas de certificat valide : les smartphone et tablette, d’accéder à l'installation).

Puis modifier dans le bloc <Directory /var/www/medshake/> la directive Require ssl-verify-client en Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS' .

Il faut maintenant autoriser certaines zones à être accéder depuis des client du réseau local (ici j'utilise le réseau 192.168.1.0/24 si le votre diffère pensez à le modifier) qui ne possède pas de certificat valides (typiquement les zones pour phonecapture et public qui est utilisé pour la signature des documents). Pour cela on ajoutes les diréctives suivantes à la configuration Apache :

(j'utilise la directive <Location> et non <Directory> car ma config Apache perso utilise php-fpm et non le mod php d'Apache, j'ai mis un encart sur le sujet sur la page Accès distant du wiki, normalement cela devrais fonctionner tout pareil avec la conf classique.

Code : Tout sélectionner

	# Accès aux url commençant par /phonecapture/ et /pubic/ autorisé pour les clients du réseau local sans présenter ce certificat valide
	<Location ~ /(phonecapture|public)/>
		Require ip 192.168.1.0/24
		# client de partout avec un certificat valide
		Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS
	</Location>

	# Autorise l'accès aux assets (js, css et images) et pages de maintenance autorisé pour les clients du réseau local sans présenter ce certificat valide
	<Location ~ /(components/|thirdparty/|scss/|img/|js/|favicon.ico|maintenancePublic.html|maintenance.html)>
		# Ces ressources peuvent êtres mise en cache
		Header setifempty Cache-Control "must-revalidate"
		# Fix un bug présent dans le version de apache utilisé dans Debian 10 (2.4.38)
		# qui gènère une entête http Etag mal formé et empéche un retrour 304
		# quant la ressource est en cache.
		# voire https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22
		RequestHeader edit "If-None-Match" '^"((.*)-gzip)"$' '"$1", "$2"'
		Require ip 192.168.1.0/24
		# client de partout avec un certificat valide
		Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS
	</Location>

	# Bloque les accès aux fichiers composer (juste c'est plus propre)
	<Location ~ /composer.(json|lock)>
		Require all denied
	</Location>

C'est possible que le client Android chouine a cause du certificat auto-signé vous pouvez ajouter le certificat de la CA sur votre smartphone pour régler le pb (en le copiant sur la carte SD par exemple) ou utiliser l'autorité de certification lets'encrypt pour disposer d'un certificat signé (compatible avec l'authentification des clients avec certificat ssl de la CA perso, il faut juste changer les directives (SSLCertificateFile et SSLCertificateKeyFile avec les éléments fournis par lets'encrypt).

Comme le dit marsante pour le DNS la plus part des box permettent de surcharger les ip fournis par les résolveur en amont, c'est l'option la plus simple. Et pour l'accès a distance pourquoi ne pas vous prendre un domaine chez un registraire, je vous recommande Gandi. Si vous utiliser Gandi et que voitre FAI change votre ipv4 régulièrement je peut vous fournir un script à lancer avec cron qui met à jours automatiquement votre ipv4 en utilisant l'api Gandi (ce qui permet de ce passer de service de dynDNS).

DEMAREST Maxime (Indelog)
Répondre