serveur_hebergement:apache2:proteger_une_page_web

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
serveur_hebergement:apache2:proteger_une_page_web [2022/05/10 13:52] – créée fateserveur_hebergement:apache2:proteger_une_page_web [2023/08/08 14:00] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Protéger une page web ====== ====== Protéger une page web ======
  
-On va voir dans cet article comment protéger l’accès à une page web (phpsysinfo par exemple) par mot de passe car toutes les interfaces web n’ont pas toujours de fonction native pour protéger l’accès.+On va voir dans cet article comment protéger l’accès à une page web (phpsysinfo par exemple) par mot de passecar toutes les interfaces web n’ont pas toujours de fonction native pour protéger l’accès.
  
 ===== Création du fichier Digest ===== ===== Création du fichier Digest =====
Ligne 7: Ligne 7:
 On va utiliser une authentification Digest qui permettra de sécuriser la connexion le temps de l’échange de l'identifiant et du mot de passe, contrairement à l’authentification Basic qui laisse passer le mot de passe en clair. On va utiliser une authentification Digest qui permettra de sécuriser la connexion le temps de l’échange de l'identifiant et du mot de passe, contrairement à l’authentification Basic qui laisse passer le mot de passe en clair.
  
-Tout d’abord, il faut activer le module Digest de Apache si ce n’est déjà fait. Pour l’activer, tapez la commande+Tout d’abord, il faut activer le module Digest d’Apache si ce n’est déjà fait. Pour l’activer, tapez la commande
 <code bash>a2enmod auth_digest</code> <code bash>a2enmod auth_digest</code>
  
Ligne 25: Ligne 25:
 Maintenant que notre fichier htdigest est créé, il faut dire à Apache de l’utiliser. Maintenant que notre fichier htdigest est créé, il faut dire à Apache de l’utiliser.
  
-===== Configuration de Apache =====+===== Configuration d’Apache =====
  
-Allez dans le répertoire /etc/apache2/sites-enabled/ et ouvrez le fichier 000-default-ssl.conf (ou  000-default.conf si vous n’utilisez pas le https). Si vous accédez à votre interface via un nom de domaine (http://exemple.org/phpsysinfo par exemple), il faudra modifier le fichier de configuration Apache de ce nom de domaine.+Allez dans le répertoire /etc/apache2/sites-enabled/ et ouvrez votre fichier de configuration Apache. (/var/www/phpsysinfo par exemple) 
  
-On va garder l’exemple de phpsysinfo, qui est situé dans /var/www/phpsysinfo. +Petite parenthèse. Si le répertoire que vous voulez protéger ne se trouve pas dans le DocumentRoot indiqué dans le fichierde config, il faudra utiliser un Alias. Il vous suffit de rajouter la ligne <code apache>Alias /nomdel'alias répertoiredel'alias</code> 
-Voici à quoi ressemble mon fichier 000-default-ssl.conf :+Ca donnerait par exemple <code apache>Alias /phpsysinfo /var/www/phpsysinfo</code>Il faut que l'utilisateur Apache ait accès à ce répertoire également. Fin de la parenthèse.
  
-<code apache><IfModule mod_ssl.c> +Ajoutez les lignes suivantes dans votre virtualhost pour protéger l'accès à tout le site :
-        <VirtualHost _default_:443> +
-                ServerAdmin webmaster@localhost+
  
-                DocumentRoot /var/www +<code apache><Location /> 
- + AuthType Digest 
-                <Directory /> + AuthName "Realm" 
-                Options FollowSymLinks + AuthDigestDomain /var/www/ https://www.exemple.fr 
-                AllowOverride None + AuthDigestProvider file 
-                </Directory> + AuthUserFile /etc/apache2/passwords 
-                <Directory /var/www/+ Require valid-user 
-                Options Indexes FollowSymLinks MultiViews + </Location></code>
-                AllowOverride None +
-                Order allow,deny +
-                allow from all +
-                </Directory> +
- +
-                # Available loglevelstrace8, ..., trace1, debug, info, notice, warn, +
-                # error, crit, alert, emerg. +
-                # It is also possible to configure the loglevel for particular +
-                # modules, e.g. +
-                LogLevel warn +
- +
-                ErrorLog ${APACHE_LOG_DIR}/error.log +
-                CustomLog ${APACHE_LOG_DIR}/access.log combined +
- +
-                SSLEngine on +
- +
-                SSLCertificateFile    /etc/letsencrypt/live/www.memodugeek.info/fullchain.pem +
-                SSLCertificateKeyFile /etc/letsencrypt/live/www.memodugeek.info/privkey.pem +
- +
-                <FilesMatch "\.(cgi|shtml|phtml|php)$"> +
-                                SSLOptions +StdEnvVars +
-                </FilesMatch> +
-                <Directory /usr/lib/cgi-bin> +
-                                SSLOptions +StdEnvVars +
-                </Directory> +
- +
-                BrowserMatch "MSIE [2-6]" \ +
-                                nokeepalive ssl-unclean-shutdown \ +
-                                downgrade-1.0 force-response-1.0 +
-                # MSIE 7 and newer should be able to use keepalive +
-                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown +
- </VirtualHost> +
-</IfModule></code+
- +
-Le répertoire racine pour ce fichier est indiqué par “DocumentRoot /var/www” et est donc /var/www. +
-Il faut donc que le répertoire que vous souhaitez protéger par mot de passe se trouve dans /var/www. +
- +
-Petite parenthèse. Si votre répertoire ne se trouve pas dans /var/www il faudra utiliser un Alias. Il vous suffit de rajouter la ligne <code apache>Alias /nomdel'alias répertoiredel'alias</code> +
-Ca donnerai par exemple <code apache>Alias /Roundcube /opt/roundcube</code>. Fin de la parenthèse. +
- +
-On va rajouter les lignes suivantes après la dernière balise </Directory>+
  
 +Si vous souhaitez protéger que l'accès à une page en particulier, rajoutez le chemin dans "Location" comme suit
 <code apache><Location /phpsysinfo> <code apache><Location /phpsysinfo>
  AuthType Digest  AuthType Digest
- AuthName "Phpsysinfo"+ AuthName "Realm"
  AuthDigestDomain /var/www/phpsysinfo/ https://www.exmple.fr/phpsysinfo  AuthDigestDomain /var/www/phpsysinfo/ https://www.exmple.fr/phpsysinfo
  AuthDigestProvider file  AuthDigestProvider file
  AuthUserFile /etc/apache2/passwords  AuthUserFile /etc/apache2/passwords
  Require valid-user  Require valid-user
- SetEnv R_ENV "/var/www/phpsysinfo" 
  </Location></code>  </Location></code>
  
-Quelques info sur ce bloc :+Quelques infos sur ce bloc :
  
-      * Location indique le répertoire concerné dans le répertoire racine (ou l’alias si le répertoire n’est pas dans le répertoire racine)+      * Location indique le répertoire concerné 
       * AuthType indique le type d’authentification.       * AuthType indique le type d’authentification.
       * AuthName doit correspondre au Realm que vous avez choisi lors de la création de l’utilisateur avec la commande htdigest. Ca permettra à Apache de savoir quel utilisateur choisir dans le fichier passwords.       * AuthName doit correspondre au Realm que vous avez choisi lors de la création de l’utilisateur avec la commande htdigest. Ca permettra à Apache de savoir quel utilisateur choisir dans le fichier passwords.
       * AuthDigestDomain doit avoir le chemin complet du répertoire à protéger suivi de l’url de l’interface web (ou du répertoire dans ce cas où vous voulez protéger un répertoire).       * AuthDigestDomain doit avoir le chemin complet du répertoire à protéger suivi de l’url de l’interface web (ou du répertoire dans ce cas où vous voulez protéger un répertoire).
       * AuthUserFile doit être renseigné avec le chemin du fichier contenant l’utilisateur et le mot de passe.       * AuthUserFile doit être renseigné avec le chemin du fichier contenant l’utilisateur et le mot de passe.
-      * SetEnv R_ENV doit lui aussi être renseigné avec le chemin complet du répertoire à protéger. 
  
 Il vous reste plus qu’à sauvegarder et à redémarrer Apache. Il vous reste plus qu’à sauvegarder et à redémarrer Apache.
Ligne 111: Ligne 67:
 Si tout a fonctionné, en rentrant l’utilisateur et le mot de passe configuré plus haut, vous aurez accès au contenu. Si tout a fonctionné, en rentrant l’utilisateur et le mot de passe configuré plus haut, vous aurez accès au contenu.
  
-===== Pensez à protéger l’accès http et https =====+===== Pensez à rediriger les  connexions http vers https =====
  
-Dans mon cas, toutes les connexions http sont redirigées vers le https (voir ici comment faire), donc je n’ai besoin que de modifier le fichier de configuration SSL. Si ce n’est pas votre cas, il vous faudra faire la même modification sur le fichier 000-default.conf, sinon l’interface sera protégée quand on y accède en https mais sera sans aucune protection quand on y accède en http+Dans mon cas, toutes les connexions http sont redirigées vers le https, donc je n’ajoute la protection que dans le vhost du port 443. Si vous ne redirigez pas les connexions http vers https l’interface sera sans aucune protection quand on y accède en http.
-Idem si vous accéder à votre interface via un nom de domaine. Si vous n’avez pas de redirection https pensez bien à rajouter cette modif dans le vhost du port 80 ET dans le vhost du port 443.+
  
  • serveur_hebergement/apache2/proteger_une_page_web.1652190737.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)