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é
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.
Afin de vous faciliter la maintenance de votre SI, Certilience vous propose des contrats d’infogérance qui s’adaptent à toutes vos architectures.
Découvrez tous les avantages des services d’infogérance Certilience !
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).
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 :
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 :
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é :
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.