Recherche de site Web

Configuration initiale du serveur avec Ubuntu 20.04/18.04 et 16.04


Ce didacticiel vous guidera dans les premières étapes de base que vous devez configurer sur un nouveau serveur Ubuntu installé afin d'augmenter la sécurité et la fiabilité de votre serveur.

Les configurations expliquées dans cette rubrique sont presque les mêmes pour tous les systèmes de serveur Ubuntu, en ce qui concerne la plate-forme du système d'exploitation sous-jacente, que Ubuntu soit installé sur un serveur nu, dans une machine virtuelle privée ou une machine virtuelle. déployé dans un cloud public VPS.

Exigences

  • Installation du serveur Ubuntu 20.04
  • Installation du serveur Ubuntu 18.04
  • Installation du serveur Ubuntu 16.04

Mettre à jour et mettre à niveau le système Ubuntu

La première étape à laquelle vous devez veiller en cas de nouvelle installation du serveur Ubuntu ou d'un nouveau VPS Ubuntu déployé est de vous assurer que le système et tous les composants du système, tels que le noyau, le gestionnaire de packages apt et tous les autres packages installés sont à jour avec les dernières versions publiées et les correctifs de sécurité.

Pour mettre à jour le serveur Ubuntu, connectez-vous à la console du serveur avec un compte avec les privilèges root ou directement en tant que root et exécutez les commandes ci-dessous afin d'effectuer le processus de mise à jour et de mise à niveau.

sudo apt update 

Après avoir exécuté la commande update, vous verrez le nombre de packages disponibles pour le processus de mise à niveau et la commande utilisée pour répertorier les mises à niveau des packages.

sudo apt list --upgradable

Après avoir consulté la liste des packages disponibles pour la mise à niveau, exécutez la commande ci-dessous pour démarrer le processus de mise à niveau du système.

sudo apt upgrade

Afin de supprimer tous les packages deb téléchargés localement et tous les autres caches apt-get, exécutez la commande ci-dessous.

sudo apt autoremove
sudo apt clean

Créer un nouveau compte dans Ubuntu

Par défaut, par mesure de sécurité, le compte root est complètement désactivé dans Ubuntu. Afin de créer un nouveau compte sur le système, connectez-vous au système avec l'utilisateur du compte doté des privilèges root et créez un nouveau compte avec la commande ci-dessous.

Ce nouveau compte bénéficiera des privilèges root via la commande sudo et sera utilisé pour effectuer des tâches administratives dans le système. Assurez-vous de configurer un mot de passe fort pour protéger ce compte. Suivez l'invite adduser pour configurer les détails de l'utilisateur et le mot de passe.

sudo adduser ubuntu_user

Si ce compte sera attribué à un autre administrateur système, vous pouvez forcer l'utilisateur à changer son mot de passe lors de la première tentative de connexion en exécutant la commande suivante.

sudo chage -d0 ubuntu_user

Pour l'instant, le nouvel utilisateur ajouté ne peut pas effectuer de tâches administratives via l'utilitaire sudo. Pour accorder à ce nouveau compte utilisateur des privilèges administratifs, vous devez ajouter l'utilisateur au groupe système « sudo » en exécutant la commande ci-dessous.

sudo usermod -a -G sudo ubuntu_user

Par défaut, tous les utilisateurs appartenant au groupe « sudo » sont autorisés à exécuter des commandes avec les privilèges root via l'utilitaire sudo. La commande Sudo doit être utilisée avant d'écrire la commande nécessaire à l'exécution, comme indiqué dans l'exemple ci-dessous.

sudo apt install package_name

Testez si le nouvel utilisateur dispose des privilèges root accordés en vous connectant au système et en exécutant la commande apt update préfixée par sudo.

su - ubuntu_user
sudo apt update

Configurer le nom d'hôte du système dans Ubuntu

Habituellement, le nom d'hôte de la machine est configuré lors du processus d'installation du système ou lorsque le VPS est créé dans le cloud. Vous devriez cependant changer le nom de votre machine afin de mieux refléter la destination de votre serveur ou de mieux décrire sa finalité.

Dans une grande entreprise, les machines sont nommées selon des schémas de dénomination complexes afin d’identifier facilement la machine dans les racks du centre de données. Par exemple, si votre machine Ubuntu exploite un serveur de messagerie, le nom de la machine doit refléter ce fait et vous pouvez configurer le nom d'hôte de la machine comme mx01.mydomain.lan, par exemple.

Pour afficher les détails sur le nom d'hôte de votre machine, exécutez la commande suivante.

hostnamectl

Afin de changer le nom de votre machine, émettez la commande hostnamectl avec le nouveau nom que vous configurerez pour votre machine, comme illustré dans l'extrait ci-dessous.

sudo hostnamectl set-hostname tecmint

Vérifiez le nouveau nom de votre système avec l'une des commandes ci-dessous.

hostname
hostname -s
cat /etc/hostname 

Configurer SSH avec l'authentification par clé publique dans Ubuntu

Pour augmenter le degré de sécurité du système d'un serveur Ubuntu, vous devez configurer l'authentification par clé publique SSH pour un compte local. Afin de générer une paire de clés SSH, la clé publique et privée, en spécifiant une longueur de clé, telle que 2048 bits, exécutez la commande suivante sur la console de votre serveur.

Assurez-vous que vous êtes connecté au système avec l'utilisateur pour lequel vous configurez la clé SSH.

su - ubuntu_user
ssh-keygen -t RSA -b 2048

Pendant la génération de la clé, vous serez invité à ajouter une phrase secrète afin de sécuriser la clé. Vous pouvez saisir une phrase secrète forte ou choisir de laisser la phrase secrète vide si vous souhaitez automatiser les tâches via le serveur SSH.

Une fois la clé SSH générée, vous pouvez copier la clé publique sur un serveur distant en exécutant la commande ci-dessous. Pour installer la clé publique sur le serveur SSH distant, vous aurez besoin d'un compte d'utilisateur distant avec les autorisations et informations d'identification appropriées pour vous connecter au serveur distant.

ssh-copy-id remote_user@remote_server

Vous devriez pouvoir vous connecter automatiquement via SSH au serveur distant en utilisant la méthode d'authentification par clé publique. Vous n'aurez pas besoin d'ajouter le mot de passe de l'utilisateur distant lors de l'utilisation de l'authentification par clé publique SSH.

Après vous être connecté au serveur distant, vous pouvez commencer à exécuter des commandes, telles que la commande w pour répertorier les utilisateurs connectés à distance SSH, comme indiqué dans la capture d'écran ci-dessous.

Tapez exit dans la console pour fermer la session SSH distante.

ssh remote_user@remote_server
w
exit

Pour voir le contenu de votre clé publique SSH afin d'installer manuellement la clé sur un serveur SSH distant, exécutez la commande suivante.

cat ~/.ssh/id_rsa.pub

Serveur SSH sécurisé dans Ubuntu

Afin de sécuriser le démon SSH, vous devez modifier le numéro de port SSH par défaut de 22 à un port aléatoire, supérieur à 1024, et interdire l'accès SSH distant au compte root via mot de passe ou clé, en ouvrant le fichier de configuration principal du serveur SSH et en apportant les modifications suivantes.

sudo vi /etc/ssh/sshd_config

Tout d'abord, recherchez la ligne commentée #Port22 et ajoutez une nouvelle ligne en dessous (remplacez le numéro du port d'écoute en conséquence) :

Port 2345

Ne fermez pas le fichier, faites défiler vers le bas et recherchez la ligne #PermitRootLogin yes, décommentez la ligne en supprimant le signe # (hashtag) du début de la ligne et modifiez la ligne pour qu'elle ressemble à celle indiquée dans l'extrait ci-dessous.

PermitRootLogin no

Ensuite, redémarrez le serveur SSH pour appliquer les nouveaux paramètres et testez la configuration en essayant de vous connecter depuis une machine distante à ce serveur avec le compte root via le nouveau numéro de port. L'accès au compte root via SSH doit être restreint.

sudo systemctl restart sshd

Exécutez également netstat ou la commande ss et filtrez la sortie via la commande grep afin d'afficher le nouveau numéro de port d'écoute pour le serveur SSH.

sudo ss -tlpn| grep ssh
sudo netstat -tlpn| grep ssh

Il existe des situations dans lesquelles vous souhaiterez peut-être déconnecter automatiquement toutes les connexions SSH distantes établies sur votre serveur après une période d'inactivité.

Afin d'activer cette fonctionnalité, exécutez la commande ci-dessous, qui ajoute la variable bash TMOUT au fichier caché .bashrc de votre compte et force chaque connexion SSH établie avec le nom du l'utilisateur doit être déconnecté ou abandonné après 5 minutes d'inactivité.

echo 'TMOUT=300' >> .bashrc

Exécutez la commande tail pour vérifier si la variable a été correctement ajoutée à la fin du fichier .bashrc. Toutes les connexions SSH ultérieures seront désormais automatiquement fermées après 5 minutes d'inactivité.

tail .bashrc

Dans la capture d'écran ci-dessous, la session SSH distante de la machine Drupal vers le serveur Ubuntu via le compte ubuntu_user a été expirée et s'est déconnectée automatiquement après 5 minutes.

Configurer le pare-feu Ubuntu UFW

Chaque serveur a besoin d'un pare-feu bien configuré afin de sécuriser le système au niveau du réseau. Le serveur Ubuntu utilise l'application UFW pour gérer les règles iptables sur le serveur.

Vérifiez l'état de l'application de pare-feu UFW dans Ubuntu en exécutant les commandes ci-dessous.

sudo systemctl status ufw
sudo ufw status

Habituellement, le démon du pare-feu UFW est opérationnel sur le serveur Ubuntu, mais les règles ne sont pas appliquées par défaut. Avant d'activer la politique de pare-feu UFW dans votre système, vous devez d'abord ajouter une nouvelle règle pour autoriser le trafic SSH à traverser le pare-feu via le port SSH modifié. La règle peut être ajoutée en exécutant la commande ci-dessous.

sudo ufw allow 2345/tcp

Après avoir autorisé le trafic SSH, vous pouvez activer et vérifier l'application de pare-feu UFW avec les commandes suivantes.

sudo ufw enable
sudo ufw status

Pour ajouter de nouvelles règles de pare-feu pour d'autres services réseau installés ultérieurement sur votre serveur, tels qu'un serveur HTTP, un serveur de messagerie ou d'autres services réseau, utilisez les exemples de commandes de pare-feu ci-dessous comme guide.

sudo ufw allow http  #allow http traffic
sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

Pour répertorier toutes les règles de pare-feu, exécutez la commande ci-dessous.

sudo ufw status verbose

Définir l'heure du serveur Ubuntu

Pour contrôler ou interroger l'horloge du serveur Ubuntu et d'autres paramètres d'heure associés, exécutez la commande timedatectl sans argument.

Afin de modifier les paramètres de fuseau horaire de votre serveur, exécutez d'abord la commande timedatectl avec l'argument list-timezones pour répertorier tous les fuseaux horaires disponibles, puis définissez le fuseau horaire de votre système comme indiqué dans l'extrait ci-dessous.

sudo timedatectl 
sudo timedatectl list-timezones 
sudo timedatectl set-timezone Europe/Vienna

Le nouveau client démon systemd systemd-timesyncd peut être utilisé dans Ubuntu afin de fournir une heure précise pour votre serveur sur l'ensemble du réseau et de synchroniser l'heure avec un serveur homologue supérieur.

Pour appliquer cette nouvelle fonctionnalité de Systemd, modifiez le fichier de configuration du démon systemd-timesyncd et ajoutez les serveurs NTP géographiquement les plus proches à la ligne d'instruction NTP, comme indiqué dans l'extrait de fichier ci-dessous :

sudo nano /etc/systemd/timesyncd.conf

Ajoutez la configuration suivante au fichier timesyncd.conf :

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Pour ajouter vos serveurs NTP géographiquement les plus proches, consultez la liste des serveurs du projet pool NTP à l'adresse suivante : http://www.pool.ntp.org/en/

Ensuite, redémarrez le démon Systemd timesync pour refléter les modifications et vérifier l'état du démon en exécutant les commandes ci-dessous. Après le redémarrage, le démon commencera à synchroniser l'heure avec le nouveau homologue du serveur NTP.

sudo systemctl restart systemd-timesyncd.service 
sudo systemctl status systemd-timesyncd.service

Désactiver et supprimer les services inutiles dans Ubuntu

Afin d'obtenir une liste de tous les services réseau TCP et UDP opérationnels par défaut sur votre serveur Ubuntu, exécutez la commande ss ou netstat.

sudo netstat -tulpn
OR
sudo ss -tulpn

À partir de la version Ubuntu 16.10, le résolveur DNS par défaut est désormais contrôlé par le service systemd-resolved, comme le révèle la sortie de netstat ou commandes ss.

Vous devez également vérifier l'état du service systemd-resolved en exécutant la commande suivante.

sudo systemctl status systemd-resolved.service

Le service systemd-resolved se lie à toutes les interfaces réseau activées et écoute sur les ports 53 et 5355 TCP et UDP.

L'exécution d'un démon DNS de mise en cache résolu par le système sur un serveur de production peut être dangereuse en raison du grand nombre d'attaques DDOS effectuées par des pirates malveillants contre des serveurs DNS non sécurisés.

Afin d'arrêter et de désactiver ce service, exécutez les commandes suivantes.

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Vérifiez si le service a été arrêté et désactivé en exécutant la commande ss ou netstat. Les ports d'écoute résolus par systemd, 53 et 5355 TCP et UDP, ne doivent pas être répertoriés dans la sortie de la commande netstat ou ss, comme illustré ci-dessous.

Vous devez également redémarrer la machine afin de désactiver complètement tous les services démons résolus par systemd et restaurer le fichier /etc/resolv.conf par défaut.

sudo ss -tulpn
sudo netstat -tulpn
sudo systemctl reboot

Bien que vous ayez désactivé l'exécution de certains services réseau indésirables sur votre serveur, d'autres services sont également installés et exécutés sur votre système, tels que le processus lxc et le service snapd. Ces services peuvent être facilement détectés via les commandes ps, top ou pstree.

sudo ps aux
sudo top
sudo pstree

Si vous n'utilisez pas la virtualisation de conteneurs LXC sur votre serveur ou ne commencez pas à installer des logiciels fournis via le gestionnaire de packages Snap, vous devez désactiver et supprimer complètement ces services en exécutant les commandes ci-dessous.

sudo apt autoremove --purge lxc-common lxcfs
sudo apt autoremove --purge snapd

C'est tout! Désormais, le serveur Ubuntu est désormais prêt à installer des logiciels supplémentaires nécessaires aux services ou applications réseau personnalisés, tels que l'installation et la configuration d'un serveur Web, d'un serveur de base de données, d'un service de partage de fichiers ou d'autres applications spécifiques.