Dépôt accessible depuis l’extérieur avec un mot de passe

De WIKI Les fourmis du libre
Aller à : navigation, rechercher

!!!!!

ATTENTION, Sur ce type de configuration, si vous n'activez pas l'https, vous êtes vulnérable a une attaque Man-in-the-middle

!!!!!


Pourquoi ?

Pourquoi mettre un mot de passe sur un dépôt ?

Je souhaitais que mon dépôt wapt soit accessible depuis l’extérieur.

Cela peut être très pratique pour les pc qui ne revienne pas souvent dans l'établissement.

Il suffit simplement que l'adresse http://waptpassword.lesfourmisduweb.org/wapt et http://waptpassword.lesfourmisduweb.org/wapt-host soit accessible depuis l’extérieur.

En revanche, on ne veut pas forcement que notre dépôt soit accessible pour le monde entier.

Sécuriser l’accès au dépôt

Le but est de mettre un mot de passe lorsque le repo wapt est contacté depuis l’extérieur.

Moi ce que je fais c'est que je le touche pas au serveur wapt. Je fais un proxypass sur ma dmz

Le principe est le suivant :

proxypass

Client_extérieur_sur_internet => DMZ(apache proxy_pass) => SERVEUR_WAPT

Configuration apache2

Pré requis: La DMZ doit être en linux avec apache2

Voici donc a quoi peux ressembler la conf sur l'apache de la dmz:

vi /etc/apache2/sites-available/wapt.conf


<VirtualHost *:80>
       ServerName waptpassword.lesfourmisduweb.org
<Location />
   ProxyPass "http://172.30.1.10/"
   ProxyPassReverse "http://172.30.1.10/"
   AuthType Basic
   AuthName "Authenticated proxy"
   AuthUserFile "/etc/htpasswd/.htpasswd"
   Require valid-user
</Location>
</VirtualHost>

Ou ceci si vous souhaitez l'https :

<VirtualHost *:443>
   ServerName waptpassword.lesfourmisduweb.org
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/certwapt.pem
   SSLCertificateKeyFile /etc/apache2/ssl/keywapt.pem
<Location />
   ProxyPass "http://172.30.1.10/"
   ProxyPassReverse "http://172.30.1.10/"
   AuthType Basic
   AuthName "Authenticated proxy"
   AuthUserFile "/etc/htpasswd/.htpasswd"
   Require valid-user
</Location>
</VirtualHost>

La 443 n'est pas obligatoire mais fortement conseillée car cela sécurise la connexion

Dans la partie 443 nous avons rajoutée:

 SSLEngine on
 SSLCertificateFile /etc/apache2/ssl/certwapt.pem
 SSLCertificateKeyFile /etc/apache2/ssl/keywapt.pem

Vous pouvez donc copier :

/opt/wapt/waptserver/apache/ssl/cert.pem
/opt/wapt/waptserver/apache/ssl/key.pem 

(présent sur le serveur wapt interne) et le coller dans :

/etc/apache2/ssl/

Activer ensuite la conf :

a2ensite wapt.conf


Il faut cependant activer préalablement le module authentification

 a2enmod auth_basic

Si ce n'est pas déjà fait, activer aussi le module ssl:

 a2enmod ssl

Ensuite générer il faut générer le fichier .htpasswd :

  htpasswd -c /etc/htpasswd/.htpasswd userwapt

Puis redémarrer apache

 service apache2 restart


Test :

Vous pouvez tester du coup a votre adresse: https://waptpassword.lesfourmisduweb.org/wapt

Avec le nom d'utilisateur et le mot de passe indiqué plus haut

Configurer le client wapt en conséquence

Dans la partie :

 c:\wapt\wapt-get.ini

Je ne change pas la partie wapt_server, les informations remonterons uniquement lors du retour dans l'entreprise.

 wapt_server=https://waptpassword.lesfourmisduweb.org
 

Je change par contre :

 repo_url=https://waptpassword.lesfourmisduweb.org/wapt

et le remplace par :

 repo_url=https://userwapt:password@waptpassword.lesfourmisduweb.org/wapt

Si vous n'avez pas activée l'https dans apache2, remplacez simplement (dans la partie repo_url https par http