FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Comment cacher la version de son serveur web Apache ?

18 octobre 2021 à 16:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à cacher la version du serveur web Apache dans les en-têtes HTTP envoyées par notre serveur Apache mais aussi sur les pages d'erreurs.

Pourquoi cacher la version de son serveur web ?

La version d'un serveur web ou d'une autre application serveur est une information très utile aux pirates, car en fonction de la version utilisée, ils peuvent tester diverses attaques et failles connues sur ces versions. Si vous utilisez Apache en version 2.4.49, le pirate pourra rechercher les failles existantes et connues sur cette version, ce qui lui facilite la tâche.

La meilleure protection face à cela étant bien entendu de garder son serveur web à jour, mais il est aussi possible afin de rendre la tâche des attaquants plus longue, et donc plus difficile, de cacher la version de son serveur web Apache. C'est simple à mettre en place, alors pourquoi s'en priver ?

II. Afficher le numéro de version d'Apache

En tant qu'administrateurs, nous avons accès au serveur en direct. Il est alors facile d'afficher dans la console le numéro de version correspondant à notre serveur Apache local.

  • En local sur le serveur Apache

Sous Debian, on peut afficher la version installée avec la commande suivante :

apt-cache policy apache2

Nous aurons alors un résultat comme celui-ci :

apt-cache policy apache2
Exemple - apt-cache policy apache2

Nous voyons donc bien que la version installée est la "2.2.22-13".

Mais, on peut aussi utiliser la commande apachectl, intégrée à Apache avec l'option "-v" ou "-V" (plus de détails). Personnellement, j'utilise plutôt cette méthode.

sudo apachectl -v

Ce qui donne :

Afficher la version d'Apache avec apachectl -v
Afficher la version d'Apache avec apachectl -v

On peut voir, là aussi, que mon serveur est en version 2.4.51.

  • À distance, en tant que visiteur

Depuis une machine distante sous Linux et du paquet Curl, on peut interroger notre serveur Web (par son nom de domaine ou son adresse IP) et obtenir sa version grâce aux informations de l'en-tête HTTP.

curl -I 192.168.100.120

Ce qui donne :

Encore plus simple, on peut générer une page d'erreur à partir d'un navigateur. Par exemple, en accédant à une page qui n'existe pas :

http://192.168.100.120/blabla.html

Au sein de cette page d'erreur 404 (Not Found), on peut voir "Apache/2.4.51" !

Afficher la version d'Apache avec une simple page introuvable
Afficher la version d'Apache avec une simple page introuvable

III. Cacher la version d'Apache

Pour cacher la version d'Apache, il faut changer quelques options dans sa configuration qui se situe par défaut dans "/etc/apache2". Dans ce dossier racine, il y a plusieurs sous-dossiers et fichiers. Le fichier de configuration principal "apache2.conf" appelle les fichiers du dossier "conf-enabled".

Le fichier "/etc/apache2/conf-enabled/security.conf" contient les options ServerTokens et ServerSignature que nous allons modifier. On peut aussi modifier ces options directement via "apache2.conf" en ajoutant ces directives à la fin du fichier.

Modifiez ce fichier (ou ajoutez les lignes à la fin de "apache2.conf") :

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

On va venir remplacer :

ServerTokens OS

Par le niveau le plus restrictif :

ServerTokens Prod

Cela va permettre de masquer la version d'Apache. Néanmoins il restera toujours la mention "Apache Server".

En complément, si l'on veut masquer la mention "Apache Server", il faut venir remplacer :

ServerSignature On

Par :

ServerSignature Off

On enregistre et on ferme le fichier de configuration. Après toute modification, il faut recharger la nouvelle configuration du serveur Apache pour qu'elle soit prise en compte :

sudo systemctl restart apache2

On voit donc bien que la version du serveur Apache n'est plus affichée, tout comme la mention "Apache Server".

Voilà, votre serveur n'affichera plus la version d'Apache lorsqu'il sera interrogé. Même si la signature du serveur est masquée, c'est-à-dire la mention "Apache" sans la version, dans certains cas on peut l'obtenir malgré tout (comme avec l'outil Curl).

The post Comment cacher la version de son serveur web Apache ? first appeared on IT-Connect.

Comment conteneuriser une application web avec Docker ?

15 septembre 2021 à 10:00

I. Présentation

Aujourd'hui, nous allons voir comment conteneuriser votre application web / site web avec Docker, par l'intermédiaire d'un exemple simple. Vous vous demandez surement dans quel but/objectif conteneuriser un projet ? Et bien cela permettra à une tierce personne de tester "On the fly" votre projet, en outrepassant une phase d'installation (de dépendances, etc.) qui peut s'avérer longue en fonction du type de solution. En effet, celle-ci sera intégrée directement dans l'image du conteneur Docker. Si vous souhaitez que quelqu'un puisse tester votre projet, c'est une bonne manière de lui simplifier le déploiement !

Si vous n'êtes pas très à l'aise avec Docker, je vous encourage à lire le cours suivant d'OpenClassrooms. La conteneurisation avec Docker est une technologie à part entière comme Git, vous ne pourrez pas saisir et comprendre tous les concepts et mécanismes en 1 heure... 🙂

En complément, je vous invite à consulter la ressource suivante si la technologie de conteneurisation est encore très floue pour vous : Principe des DockerFile.

II. Rédaction du fichier Dockerfile

Dans le cas présenté ci-dessous, je souhaite conteneuriser une page web que j'ai développée, permettant d'afficher un compte à rebours en fonction d'une date précise. Dans la pratique, ce n'est clairement pas la peine de conteneuriser cela, car le projet peut tourner facilement sur n'importe quel ordinateur en local disposant d'un navigateur web compatible avec JavaScript Internet Explorer. Mais, imaginez un plus gros projet digne de ce nom, requérant des outils comme PHP, NodeJS, Maven ou autre chose.

Le fait de conteneuriser son application (avec Docker ou autre) prend alors tout son sens, car cela évitera à la personne souhaitant tester l'application d'installer un environnement spécifique (long et fastidieux), si cela est simplement pour un vulgaire test.

Passons à la pratique... Ouvrez un terminal et saisissez les deux commandes suivantes pour créer le dossier "myWebApp" et le fichier "Dockerfile" à l'intérieur :

mkdir myWebApp
touch myWebApp/Dockerfile

Il est important de créer un dossier (à l'emplacement que vous souhaitez) et stocker le fichier DockerFile à l'intérieur. En fait, quand nous allons construire notre image, tout le contenu du dossier sera ajouté à notre image, d'où l'intérêt de "l'isoler".

Le fichier DockerFile va contenir toutes les instructions nécessaires à la fabrication de l'image de notre container. On va préciser l'image de base, ainsi que tous les paquets à installer et les données de notre site Web.

Editez le fichier avec votre éditeur de texte préféré, en insérant le contenu suivant : 

# Utilisation d'une image Ubuntu (par défaut la dernière en date) pour construire notre image docker file
FROM ubuntu 
# Mise à jour des repository distant du container, avant d'installer les paquets requis pour le projet
RUN apt update && apt upgrade -y
# Permet d'éviter d'avoir le bug concernant le choix de la timezone
RUN DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata 
# Installation des paquets requis pour le projet à savoir git et le service web apache2
RUN apt-get install -y -q git apache2 
# Le conteneur s'éxécutera en se basant sur le service apache2
ENTRYPOINT /usr/sbin/apache2ctl -D FOREGROUND 
# Renommage du fichier de base d'apache2 index.html vers index.html.old
RUN mv /var/www/html/index.html /var/www/html/index.html.old 
# Récupération de mon repository Git avec le mini projet
RUN git clone https://github.com/archidote/get-ready-simple-countdown-html-css-js 
# Copie des fichiers du mini projet web vers la racine de mon serveur web
RUN cd get-ready-simple-countdown-html-css-js && cp * /var/www/html/

Dès lors, enregistrez le fichier DockerFile, puis exécutez la commande suivante :

docker build .
# ou, si vous souhaitez nommer votre image Docker en "mywebapp" :
docker build -t mywebapp .

Une fois l'image construite, affichez les images présentes sur votre hôte Docker avec la commande suivante :

docker images 

Vous devriez voir la vôtre. Dans mon cas, elle est identifiée par l'ID suivant : 9e39...

III. Instanciation du container

L'image étant créée, il faut maintenant instancier un conteneur à partir de celle-ci. Utilisez la commande suivante :

docker run -d -p 8080:80 <id>
  • -d permets de lancer le conteneur en arrière plan (tâche de fond)
  • -p 8080:80 : permet d'exposer le port 8080 (de votre machine hôte Docker) vers le port 80 de votre container (là où est installé le service web, ainsi que le mini projet. C'est grâce à ce mécanisme, que vous allez pouvoir accéder à votre container depuis votre hôte Docker (via un navigateur web)

Vérifiez, que le conteneur est bien en cours d'exécution avec la commande suivante :

docker ps

Dès lors, ouvrez un navigateur et indiquez l'adresse IP de votre machine (hôte) ou localhost, en spécifiant le port "8080" que nous avons choisit précédemment.

Voilà ! L'application web en question, tourne sur le container que je viens de créer.

Si vous voulez interagir directement avec le shell du conteneur, pour éditer un fichier ou autres, entrez la commande suivante :

docker exec -it <id> bash

III. Conclusion

Le Dockerfile que je vous ai présenté peut vous servir de bonne base, pour la rédaction du vôtre. A vous d'adapter la configuration système et les dépendances requises en fonction des prérequis de votre application web :-).

The post Comment conteneuriser une application web avec Docker ? first appeared on IT-Connect.
❌