Ajouter de la sécurité (Apache2)

Accès sécurisé avec OpenSSL

Création d'un certificat auto-signé avec cette méthode. D'abord la clé privé et la demande de certificat :

openssl req -new -newkey rsa:2048 -sha512 -nodes -out /etc/ssl/self-signed.bruno-tatu.com.csr -keyout /etc/ssl/private/self-signed.bruno-tatu.com.key -days 3650 -subj "/C=FR/ST=France/L=DansLeSud/O=Auto-signed/CN=*.bruno-tatu.com"

Puis on créer le certificat :

openssl x509 -req -sha512 -days 2560 -in /etc/ssl/self-signed.bruno-tatu.com.csr -signkey /etc/ssl/private/self-signed.bruno-tatu.com.key  -out /etc/ssl/certs/self-signed.bruno-tatu.com.crt

On pourra l'insérer ainsi dans le vhost :

<IfModule mod_ssl.c>
<VirtualHost *:443>
   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/self-signed.bruno-tatu.com.crt
   SSLCertificateKeyFile /etc/ssl/private/self-signed.bruno-tatu.com.key
   
   # On désactive certaines prises en charge de protocole
   SSLProtocol All -SSLv2 -SSLv3
</VirtualHost>
</IfModule>

On a besoin de ce module :

a2enmod ssl

Site de recommandation :

Site de vérification qui vont tester la qualité de chiffrage :

Protéger un répertoire

Mode Basic

  • Par utilisateurs

Ce mode est celui expliqué dans de nombreux tutoriel. Il est le plus simple et le plus rapide à mettre en place.

Dans le dossier en question créer le .htacess et modifier le virtualhost en conséquence :

<VirtualHost *:80>
<Directory "/var/www/html">
        AuthName "Accès limité!"
        AuthType Basic
        AuthBasicProvider file
        AuthUserFile /var/www/html/.htpasswd
        Require user utilisateur
</Directory>
</VirtualHost>

Crééons l'utilisateur :

htpasswd -c /var/www/html/.htpasswd utilisateur

Admettons que l'on ajoute un autre compte mais qui n'a pas encore le droit d'accès vu qu'il n'est pas déclaré dans le contexte (</virtualhost>) :

htpasswd /var/www/html/.htpasswd utilisateur2secour
  • Par groupe

Reprenons la configuration précédente ainsi que les utilisateurs :

On ajoutera / modifiera ces directives

<VirtualHost *:80>
<Directory "/var/www/html">
    AuthUserFile /var/www/html/.htpasswd
    AuthGroupFile /var/www/html/.htgroup
    AuthName "Mot de passe"
    AuthType Basic
    Require group admin
</Directory>
</VirtualHost>

On devra ajouter un fichier qui spécifie précisément quel utilisateur appartient à quel groupe.

 nano /var/www/html/.htgroup
admin: utilisateur
urgence: utilisateur2secour

Mode Digest

Ce mode est un poil plus long à mettre en place avec en plus une communication sécurisée lors de l'émission de la requête d'authenficiation.

<VirtualHost *:80>
<Directory "/var/www/html">
        AuthName "zone_privee"
        AuthType Digest
        AuthDigestProvider file
        AuthUserFile /var/www/html/.htpasswd_digest
        Require user utilisateur
</Directory>
</VirtualHost>

Créeons le groupe et l'utilisateur :

htdigest -c /var/www/html/.htpasswd_digest zone_privee utilisateur
Le mot clé zone_privee est relié à la directive AuthName. S'ils sont différent ça ne fonctionnera pas.

N'oublions pas d'activer le module mod_auth_digest :

a2enmod auth_digest

Cacher la version du logiciel

 nano /etc/apache2/conf-enabled/security.conf

Changer ces valeurs ou les ajouter dans le fichier :

ServerSignature Off
ServerTokens Prod