26 Sep. 19 Cybersécurité

Tutoriel :
Déploiement d’un serveur Ubuntu -la distribution Linux serveur de référence,
avec Apache -le serveur Web le plus utilisé

ubuntu : distribution Linux serveur de référence
Apache : serveur wb le plus utilisé

Le mot « Ubuntu » désigne une notion humaniste originaire du Sud de l’Afrique qui pourrait être traduite par « je suis ce que je suis grâce à ce que nous sommes tous ».

Ubuntu est aussi le nom de la distribution Linux développée et maintenue par la société Canonical. Cette distribution est basée sur la distribution Linux Debian dont elle est très proche.

Une version avec support étendu, dite LTS (Long Term Support), sort tous les deux ans au mois d’avril des années paires et a ses mises à jour assurées pendant 5 ans. Des versions intermédiaires sortent tous les 6 mois mais n’ont un support que de 9 mois. Pour installer un serveur, nous vous conseillons d’utiliser la dernière version LTS disponible.

La dernière version au moment de la rédaction de cet article est la 18.04, appelé « Bionic ».

Enfin, Ubuntu est la distribution Linux la plus utilisée pour les serveurs Web avec plus du tiers du marché.

Apache est également le serveur Web le plus utilisé du monde avec presque la moitié des serveurs Web du monde.

Le déploiement d’un serveur Ubuntu s’effectue en plusieurs étapes.

Téléchargement d'Ubuntu Server

Vous pouvez télécharger l’image ISO d’installation d’Ubuntu Server sur:

Vous obtiendrez un fichier dont le nom dérivera de « ubuntu-XX.04-live-server-amd64.iso ».

Installation d'Ubuntu

Tout au long de cette installation, avant de taper un mot de passe, vérifiez bien si vous êtes en clavier AZERTY ou QWERTY.

  • Démarrez avec le fichier ISO
  • Sélectionnez la langue du serveur
  • Identifiez votre clavier
  • Sélectionnez « Installer Ubuntu »
  • Configurez l’adresse IP fixe de votre serveur (on laisse rarement un serveur en IP dynamique). Sinon, nous verrons après comment configurer une adresse IP fixe post-installation.

Si vous n’avez pas de serveur proxy, ignorez l’étape suivante.

  • Sélectionnez le miroir Ubuntu par défaut.

Pour la configuration du système de fichiers :

  • Sélectionnez « Utiliser un disque entier » à moins que vous ne vouliez le faire manuellement.
  • Validez le disque choisi,
  • Lancez le formatage de la partition,
  • Confirmez que vous voulez formater la partition,
  • Créez le profil du premier utilisateur :
  • Choisissez d’installer le serveur OpenSSH afin de pouvoir vous connecter en SSH au serveur tout de suite après installation,
  • Sur l’écran suivant, pas besoin d’installer d’autres applications.
  • A la fin de l’installation, sélectionnez « Redémarrer maintenant ».

Configuration d'Ubuntu

Tout d’abord, nous allons changer la coloration par défaut de l’éditeur « vi » pour que les caractères soient plus lisibles, le fond noir habituel des clients SSH :

sudo vi /etc/vim/vimrc

Insérez la ligne suivante à la fin du fichier :

:colorscheme desert

Ensuite, fixez l’adresse IP locale du serveur si cela n’a pas déjà été fait à l’installation :

sudo vi /etc/netplan/50-cloud-init.yaml

Remplacez le texte par le bloc suivant (attention à respecter l’indentation) :

network:

  version: 2

  ethernets:

    ens33:

      dhcp4: no

      addresses: [192.168.192.10/24]

      gateway4: 192.168.192.2

      nameservers:

        addresses: [8.8.8.8,8.8.4.4]

Redémarrez le serveur pour prendre en compte cette modification.

Installation d'Apache

Une fois Ubuntu installé et configuré, le déploiement d’un serveur Ubuntu se poursuit avec l’installation du serveur Apache.

Actualisez la liste des paquets existants :

sudo apt update

Installez Apache 2 :

sudo apt install apache2

Après installation, le service Apache a automatiquement démarré et en accédant à votre serveur via un navigateur, vous verrez la page par défaut d’Apache :

Cette page est stockée par défaut dans le répertoire « /var/www/html/ ».

Le fichier de configuration du site par défaut est :

/etc/apache2/sites-enabled/000-default.conf

Durcissement d’Apache

Nous allons voir maintenant comment durcir la configuration de notre serveur Apache.

Offuscation des informations du serveur

Si vous avez une erreur HTTP (la requête demandée n’existe pas), par défaut, Apache laisse fuiter des informations intéressantes pour un attaquant comme le type de serveur (Ubuntu), le type et la version de serveur Web (Apache 2.4.29).

message d'eereur page not found, avec fuite d'informations ubuntu server et apache

Afin d’offusquer ces informations, nous allons éditer le fichier apache2.conf :

sudo vi /etc/apache2/apache2.conf

Ajoutez ces deux lignes à la fin du fichier :

ServerTokens Prod

ServerSignature Off

Recharger le service Apache :

sudo service apache2 reload

Les informations de votre serveur sont à présent offusquées lors de l’affichage d’une erreur HTTP :

message Page not Found, sans fuite d'information

Désactivation du listing de répertoire

Par défaut, Apache liste les fichiers contenus dans un répertoire dépourvu d’index.

Pour le vérifier, créez un répertoire et un fichier de test :

sudo mkdir /var/www/html/test

sudo touch /var/www/html/test/testfile

Si on accède à ce répertoire, on voit la liste avec le fichier de test, ce qui peut donner beaucoup d’informations à un attaquant :

listing de répertoire : information intéressante pour le pirate

Pour désactiver le listing des répertoires dépourvu d’index, éditez le fichier apache2.conf :

sudo vi /etc/apache2/apache2.conf

Cherchez « Indexes » (en tapant un « / » avant dans vi)

Options Indexes FollowSymLinks

Supprimez « Indexes » dans la ligne

Options FollowSymLinks

Rechargez le service Apache :

sudo service apache2 reload

Le listing des répertoires est maintenant désactivé :

l'accès au listing de répertoire est déasctivé, la page n'est plus accessible

Terminer par les étapes de sécurisations

  • Autorisation uniquement des requêtes GET/POST et désactivation des méthodes TRACE/….
  • Durcissement des flags au niveau des cookies ( httponly et secure flag)
  • Protection contre le clickjacking
  • Protection contre le XSS
  • etc.

Dans le cadre de ses missions d’intégration ou de formations, Certilience propose ses services d’hébergement et d’infogérance de services Web afin d’approfondir ces points de durcissements.