Accès aux Épreuves

Sécurité Apache2

Dans ce tuto, nous allons apprendre à mettre en place une authentification BASIC, puis une authentification Digest ainsi qu'un site en HTTPS. Le tout, avec Apache2, et bind9 !

Authentification BASIC

Ne perdons pas de temps, commençons de suite :) Nous allons tout d'abord créer un utilisateur, pour cela, nous allons taper cette commande :

htpasswd -c /etc/apache2/users toto

htpasswd est la commande qui gèrera le fichier "secret" ou sont stockés les utilisateurs ainsi que leurs mots de passe... cryptés, bien sur. Le "-c" précise à la commande qu'il s'agit de la première utilisation, et donc, ce "-c" pour "-create" va créer le fichier "users" tout en entrant l'utilisateur "toto" que nous avons demandé dans notre commande.

Pour que l'authentification BASIC puisse fonctionner, nous devons activer le service Apache2 qui lui correspond. Pour cela nous allons utiliser la commande "a2enmod" suivi du nom du service. Mais avant cela, plaçons nous dans le dossier où sont stockés tous les services. Ici, en l'occurence :

cd /etc/apache2/mods-available
a2enmod auth_basic.load

Le service est activé ! Maintenant, rendez vous dans :

cd /etc/apache2/sites-available

Dans ce dossier, vous devez avoir tout vos sites activés. Pour plus d'infos sur la création des sites, cliquez ici.

Une fois dans ce dossier, faites la commande suivante sur le site que vous voulez sécuriser avec l'authentification BASIC :

nano votresite.conf

Une fois dans l'éditeur de fichier, vous devez ajouter ces quelques lignes :

<Directory /var/www/dindon>
  AuthType Basic
  AuthName "zone du dindon"
  AuthBasicProvider file
  AuthUserFile /etc/apache2/users
  Require valid-user
</Directory>

Ce qui vous donnera un fichier ressemblant à cela :
Conf BASIC

Ici, vous pouvez voir que le "ServerName" est le même que le "Directory". L'"AuthUserFile" est le fameux fichier "users" que nous avons créé avec la commande htpasswd. L'"AuthName" en BASIC est simplement ce qu'affichera la petite fenêtre qui s'ouvrira lors de la connexion au site. Il aura plus d'importance pour l'authentification Digest.

Vous n'avez plus qu'à faire un :

/etc/init.d/apache2 reload

Puis, accédez à votre site depuis un navigateur. Une demande va apparaitre.
Authentification BASIC

Vous n'avez plus qu'à rentrer l'utilisateur que vous avez créé avec htpasswd.

Authentification DIGEST

Passons à l'authentification DIGEST, comme le BASIC, nous allons commencer par créer l'utilisateur DIGEST. Pour cela, nous allons faire l'équivalent de "htpasswd" mais pour DIGEST ! Je cite :

htdigest /etc/apache2/users "la zone du poulet" baumert
Astuce : "la zone du poulet" est la valeur que nous mettrons dans "AuthName".

Nous allons activer le service d'authentification DIGEST ! :

cd /etc/apache2/mods-available
a2enmod auth_digest.load

Ensuite, rendez vous dans /etc/apache2/sites-available pour modifier le fichier de configuration du site que vous allez sécuriser en DIGEST.

nano baumert.conf

Puis, vous allez ajouter, comme en BASIC, quelques lignes qui vont faire fonctionner le DIGEST :

<Directory /var/www/baumert>
  AuthType Digest
  AuthName "la zone du poulet"
  AuthDigestProvider file
  AuthUserFile /etc/apache2/users
  Require valid-user
</Directory>

Faites attention à l'"AuthName", vous devez entrer la même chose que dans "htdigest". (Voir l'Astuce en bleue, plus haut)

Ensuite, faites :

/etc/init.d/apache2 restart

Essayez maintenant d'accéder à votre site depuis un navigateur. Une fenêtre devrait également s'ouvrir :
Authentification DIGEST

Vous n'avez plus qu'à rentrer l'utilisateur que vous avez créé avec htdigest.

Mise en place du HTTPS

Tout d'abord, un paquet est nécessaire pour faire du HTTPS. Nous avons besoin d'OpenSSL :

apt-get install openssl

Et, comme d'hab... activer le service !

cd /etc/apache2/mods-available
a2enmod ssl.load

Ensuite, il vous faudra générer le certificat. Pour cela :

openssl req -x509 -nodes -days 700 -newkey rsa:2048 -sha256 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Dans cette commande vous allez préciser beaucoup d'informations. Par exemple la durée de vie du certificat avec -days. Ici, mon certificat durera 700 jours. Ensuite je précise ou se situera le .crt (dans /etc/apache2/) ainsi que la clé (/etc/apache2/ également). Je les ai appelé "server.quelquechose" mais vous pouvez mettre ce que vous voulez, tant qu'il y a un ".crt" et un ".key". Comme par exemple :

dindon.crt
dindon.key

Ce qui vous génèrera un petit questionnaire que vous allez remplir intelligemment... prenons exemple sur ce screen !
Formulaire SSL
Et, pour que tout ce petit monde fonctionne, nous devons donner des droits au .crt ! Comme suit :

chmod 440 /chemin/server.crt

Une fois que c'est fait, nous devons configurer Apache2. La création d'un site en HTTPS diffère des autres. Je vais donc tout reprendre depuis le début. Tout d'abord, copier le fichier de configuration par défaut et en faire un fichier de conf !

cd /etc/apache2/sites-available
cp default-ssl.conf pintade.conf
nano pintade.conf

Mon fichier s'appelle donc "pintade.conf". N'oubliez pas de mettre le .conf à la fin du fichier ! Je vais donc modifier l'@IP dans la balise <VirtualHost>. Ensuite n'oubliez pas de lui donner un petit ServerName (comme pour les autres sites) Puis, la petite difficulté de notre configuration est ici ! Vous devriez voir deux lignes spéciales : "SSLCertificateFile" et "SSLCertificateKeyFile". Une fois que vous les avez repéré, vous allez mettre :

Comme vous pouvez le voir sur ce screenshot :
Configuration SSL

Une fois que c'est fait, vous n'avez plus qu'à démarrer votre site et redémarrer Apache2 :

a2ensite pintade.conf
/etc/init.d/apache2 restart

Il ne vous reste plus qu'à tester en tapant https://www.pintade.info/ dans l'URL de votre navigateur !

Vous voulez commenter ? Créez un compte !

Echec lors de la connexion à MySQL : (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known