TP2 : AUDIT ET SECURISATION D’UN SERVEUR WEB
IV. Travail demandé
1. Installation d’apache
1- Installer les rpm et apache2.
➔ RPM (Redhat Package Manager) est un système de gestion de paquets de logiciels utilisé
sur certaines distributions GNU/Linux.
➔ RPM s'utilise en ligne de commande ou avec une interface graphique et permet d'installer,
de désinstaller, de vérifier, d'interroger et de mettre à jour des paquets logiciels. Chaque
paquet de logiciels se compose d'une archive de fichiers et d'informations relatives au
paquet, tels que sa licence, sa version, sa description, ses dépendances, etc.
sudo apt-get install apache2
2- Activer le service apache2
2. Configuration d’apache
1. Faire une copie du fichier de configuration d’apache (apache_backup.conf) sous le chemin
/etc/apache2/
2- Lancer le serveur Web
3. Vérifier si le service web est fonctionnel à travers l’accès à l’url : http://127.0.0.1/ ou
http://localhost. Donner un autre moyen pour vérifier que le service fonctionne correctement
4. Observer ensuite les fichiers logs/access_log et logs/error_log (ou sous /var/log) et mentionner
est ce qu’ils peuvent être utilisé durant l’audit de sécurité et qu’est-ce qu’ils comportent comme
informations utiles ?
5. Vérifier si le fichier de configuration du serveur web ne comporte pas des erreurs. Donner la
commande qui permet cette vérification.
sudo apachectl configtest
6. Essayer de collecter des informations sur le serveur web à partir de sa page d’acceuil et en
testant aussi un chemin inexistant au niveau du serveur.
7. Quelles vulnérabilités peuvent être détectées suite à cette opération ?
Une page d’erreur révèle souvent la version du serveur. C’est le cas dans l’accès à un chemin
inexistant au niveau du serveur. Le serveur Apache ne va pas indiquer sa version au niveau des
échanges http, mais la page d’erreur produite par l’appel à une page inexistante affiche cette
information. C’est également le cas des pages d’index générées par le serveur.
8. Limiter les informations affichées par le serveur
a. Modifier la ligne ServerTokens OS avec ServerTokens Prod dans le fichier de configuration .
b. Redémarrer le service web, taper la commande telnet localhost 80 et emettre une requête http.
Commenter le résultat.
c. Accéder à une page inexistante avec votre navigateur, commenter le résultat
d. Modifier la ligne ServerSignature On avec ServerSignature Off.
10. Désactiver le module cgi en tapant la commande suivante : sudo a2dismod cgi
3. Contrôle d’accès d’apache
Le travail demandé pour cette étape consiste à créer deux répertoires "public" et "secret" sous le
chemin : /var/www/html. Pour le premier, nous laissons le droit à toute personne de consulter le
contenu. Pour le second, le contrôle d'accès doit être activé.
1. Créer le répertoire /var/www/html/secret, y placer quelques pages HTML.
2. Créer dans ce répertoire à protéger le fichier .htaccess. En voici une écriture standard :
AuthUserFile /etc/apache2/users
AuthName "Accès privé"
AuthType Basic
require valid-user
.htaccess est un fichier de configuration destiné à être utilisé sur les serveurs web qui exécutent le
logiciel Apache Web Server. Lorsqu’un fichier .htaccess est placé dans un répertoire qui est à son
tour “chargé via le serveur web Apache”, le fichier .htaccess est détecté et exécuté par le logiciel
du serveur web Apache. Ces fichiers .htaccess peuvent être utilisés pour modifier la configuration
du logiciel de serveur web Apache afin d’activer/désactiver des fonctionnalités et des
caractéristiques supplémentaires que le logiciel de serveur web Apache a à offrir. Ces
fonctionnalités comprennent une fonction de redirection de base, par exemple en cas d’erreur dans
un fichier 404 non trouvé, ou pour des fonctions plus avancées telles que la protection par mot de
passe du contenu ou la prévention des liens chauds des images.
3. Créer un premier compte Apache en utilisant l’utilitaire htpasswd.
cd /etc/apache2
htpasswd -c users admin
4. Examiner le fichier /etc/apache2/users . Interpréter le résultat
5. Tester l’accès au répertoire http://127.0.01/secret . Pourquoi la protection ne semble-t-elle pas
fonctionner?
-> la prise en compte de .htaccess est désactivée
6. Rechercher dans le fichier de configuration la section <Directory /var/www/html/secret> qui
fixe des directives par défaut pour le site principal. Mettre si nécessaire la clause AllowOverride
all
7. Tester une autre fois l’accès au répertoire http://127.0.01/secret .
8. Observer le trafic HTTP avec wireshark (ou bien en utilisant Tcpdump) lors d’un accès au
répertoire privé depuis une machine distante. Où se trouve le mot de passe? Est-il lisible?
4. Installation du certificat SSL
L’objectif de cette étape est de configurer une connexion sécurisée vers le serveur web via SSL.
Pour cela, il faut commencer par créer les clefs et le certificat pour le serveur. Un certificat doit
être généré.
1. Activer le module ssl en tapant la commande suivante : sudo a2enmod ssl
2. openssl genrsa -des3 -out server.key 1024
« Entrez la phrase de passe PEM » car openssl ne veut pas sortir la clé privée en texte clair. Le mot de
passe est utilisé pour sortir la clé privée chiffrée
3. openssl req -new -x509 -days 365 -key server.key -out server.crt
Expliquer les étapes précédentes et les arguments utilisés.
4. Modifier maintenant le fichier de configuration en ajoutant à la fin les lignes suivantes :
<VirtualHost _default_:port>
DocumentRoot chemin des fichiers
ServerName nom de serveur
SSLEngine on
SSLCertificateFile chemin de certificat
SSLCertificateKeyFile chemin de clé privée
</VirtualHost>
5. Redémarrer apache
6. Tester la connexion, commenter.
5. Limitations contre les attaques DoS
Analyser le fichier de configuration d’apache et donner trois paramètres qui doivent être
personnalisé par l’administrateur pour limiter la portée d’une attaque de type DoS.