Configuration initiale du serveur avec Ubuntu 20.04/18.04 et 16.04

Configuration initiale du serveur avec Ubuntu 20.04/18.04 et 16.04

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

Les configurations expliquées dans ce sujet sont presque les mêmes pour tous les systèmes de serveurs Ubuntu, concernant la plate-forme OS sous-jacente, que ce soit Ubuntu est installé sur un serveur à métal nu, dans une machine virtuelle privée ou une machine virtuelle tournée dans un cloud public VPS.

Exigences

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

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

La première étape dont vous devez prendre soin en cas de nouvelle installation de Ubuntu serveur ou un nouveau déployé Vps ubuntu est pour s'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 et correctifs de sécurité publiés.

Pour mettre à jour le serveur Ubuntu, pour vous connecter à la console du serveur avec un compte avec des privilèges racine ou directement en racine et exécuter les commandes ci-dessous afin d'effectuer le processus de mise à jour et de mise à niveau.

$ sudo apt mise à jour 
Mettre à jour le serveur Ubuntu

Après avoir exécuté la commande de mise à jour, 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 - Opgradable 
Packages Ubuntu à mise à niveau de la liste

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

$ sudo apt mise à niveau 
Mettre à niveau les packages de serveur Ubuntu

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 
Packages et cache AutoreMove APT

Créer un nouveau compte dans Ubuntu

Par défaut, en tant que mesure de sécurité, le compte racine 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 avec les privilèges racine et créez un nouveau compte avec la commande ci-dessous.

Ce nouveau compte sera accordé avec les privilèges des pouvoirs racinaires 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 solide pour protéger ce compte. Suivre la adducteur invite pour configurer les détails de l'utilisateur et le mot de passe.

$ sudo addUser ubuntu_user 
Créer un utilisateur dans Ubuntu

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

$ sudo chage -d0 ubuntu_user 

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

$ sudo usermod -a -g sudo ubuntu_user 

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

$ sudo apt install package_name 

Testez si le nouvel utilisateur a les privilèges racine accordés, en vous connectant au système et en exécutant le mise à jour apte commande préfixée avec sudo.

$ su - ubuntu_user $ sudo apt update 
Vérifiez le nouvel utilisateur

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

Habituellement, le nom d'hôte de la machine est configuré pendant le processus d'installation du système ou lorsque le VPS est créé dans le cloud. Cependant, vous devez modifier le nom de votre machine afin de mieux refléter la destination de votre serveur ou de mieux décrire son objectif final.

Dans une grande entreprise, les machines sont nommées d'après des schémas de dénomination complexes afin d'identifier facilement la machine dans les racks de Datacenter. Par exemple, si votre machine Ubuntu exploitera 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 des détails sur votre machine, le nom d'hôte exécute la commande suivante.

$ hostnamectl 

Afin de modifier le nom de votre machine, émettez 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 
Définir le nom d'hôte dans le serveur Ubuntu

Configurer SSH avec l'authentification de la clé publique dans Ubuntu

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

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

$ su - ubuntu_user $ ssh-keygen -t rsa -b 2048 
Configuration des touches SSH dans Ubuntu

Pendant que la clé est générée, vous serez invité à ajouter phrase secrète Afin de sécuriser la clé. Vous pouvez entrer une phrase secrète solide 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 utilisateur distant avec les autorisations et les informations d'identification appropriées pour vous connecter au serveur distant.

$ ssh-copy-id [Protégé par e-mail] _Server 
Copier la clé SSH sur le serveur distant

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

Une fois que vous vous êtes connecté au serveur distant, vous pouvez commencer à exécuter des commandes, telles que Commandement W Pour répertorier SSH à distance connecté aux utilisateurs, comme indiqué dans la capture d'écran ci-dessous.

Tapez la sortie de la console pour fermer la session SSH distante.

$ ssh [e-mail protégé] _Server $ w $ exit 
Vérifiez la connexion sans mot de passe SSH

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

$ cat ~ /.ssh / id_rsa.pub 
Afficher la clé SSH

Secure SSH Server dans Ubuntu

Afin de sécuriser le démon SSH, vous devez modifier le numéro de port SSH par défaut à partir de 22 à un port aléatoire, plus élevé que 1024, et interdire l'accès SSH distant au compte racine via le mot de passe ou la clé, en ouvrant le fichier de configuration principale du serveur SSH et apportez les modifications suivantes.

$ sudo vi / etc / ssh / sshd_config 

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

Port 2345 

Ne fermez pas le fichier, faites défiler vers le bas et recherchez la ligne #Permitrootlogin oui, Décommente la ligne en supprimant le # signe (hashtag) depuis le début de la ligne et modifiez la ligne pour ressembler à l'extrait ci-dessous.

Permutrootlogine no 
Service SSH sécurisé

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

$ sudo systemctl redémarrer sshd 

Exécutez également netstat ou 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 
Vérifiez le port SSH Article associé: 7 Conseils de sécurité SSH utiles pour durcir le serveur OpenSSH

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

Afin d'activer cette fonctionnalité, exécutez la commande ci-dessous, qui ajoute le Tmout Variable de bash sur votre compte .bashrc Fichier caché et force chaque connexion SSH faite avec le nom de l'utilisateur pour être déconnecté ou abandonné après 5 minutes d'inactivité.

$ echo 'tmout = 300' >> .bashrc 

Exécutez la commande de queue pour vérifier si la variable a été correctement ajoutée à la fin de .bashrc déposer. Toutes les connexions SSH suivantes seront automatiquement fermées après 5 minutes d'inactivité à partir de maintenant.

$ queue .bashrc 

Dans la capture d'écran ci-dessous, la session SSH distante de Drupal Machine au serveur Ubuntu via le compte Ubuntu_User a été chronométrée et auto-logout après 5 minutes.

Débrancher automatiquement les sessions SSH

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. Ubuntu Server utilise Ufw Application pour gérer les règles iptables sur le serveur.

Vérifiez l'état de la demande de pare-feu UFW à Ubuntu en émettant les commandes ci-dessous.

$ sudo systemctl status ufw $ sudo ufw status 
Vérifiez l'état du pare-feu UFW

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

$ sudo ufw autoriser 2345 / TCP 

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

$ sudo ufw activer le statut de $ sudo ufw 
Ouvrez le port SSH et vérifiez

Pour ajouter de nouvelles règles de pare-feu pour d'autres services réseau installés par la suite sur votre serveur, tels que le 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 autoriser http #allow http trafic $ sudo ufw autoriser le proto tcp de n'importe quel port 25 443 # autoriser le trafic HTTPS et SMTP 

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

$ sudo ufw status verbose 
Vérifiez les règles du pare-feu UFW Article associé: Comment configurer un pare-feu UFW sur le serveur Ubuntu

Définir l'heure du serveur Ubuntu

Pour contrôler ou interroger l'horloge du serveur Ubuntu et d'autres paramètres de temps connexes, exécutez la commande timeDatectl sans argument.

Afin de modifier les paramètres du fuseau horaire de votre serveur, exécutez d'abord Commande timeDatectl avec un argument List-TimeZones pour répertorier tous les fuseaux horaires disponibles et, ensuite, définissez le fuseau horaire de votre système comme indiqué dans l'extrait ci-dessous.

$ sudo timedatectl $ sudo timedatectl liste-timezones $ sudo timedatectl set-timezone europe / Vienna 
Définir le fuseau horaire Ubuntu

Le nouveau systemd-tmesyncd Systemd Daemon Client peut être utilisé dans Ubuntu afin de fournir un moment précis pour votre serveur sur le réseau et de synchroniser le temps avec un serveur de pairs supérieur.

Pour appliquer cette nouvelle fonctionnalité de Systemd, modifiez systemd-tmesyncd Fichier de configuration de démon et ajouter 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.confli 

Ajouter la configuration suivante à TimesyNCD.confli déposer:

[Temps] ntp = 0.piscine.NTP.org 1.piscine.NTP.org fallbackntp = ntp.ubuntu.com 
Configuration du temps NTP

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

Ensuite, redémarrez le démon TimesYNC SystemD 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 le temps avec le nouveau pair du serveur NTP.

$ sudo systemctl redémarrer systemd-tmesyncd.service $ sudo systemctl status systemd-tmesyncd.service 
Service de début TimesYNCD

Désactiver et supprimer les services inutiles à Ubuntu

Afin d'obtenir une liste de tous les services réseau TCP et UDP à la sortie par défaut dans votre serveur Ubuntu, exécutez le SS ou commande netstat.

$ sudo netstat -tulpn ou $ sudo ss -tulpn 
Listez tous les services en cours d'exécution

Regarder avec Ubuntu 16.dix libération, le résolveur DNS par défaut est désormais contrôlé par résolu service, comme révélé par la sortie de netstat ou Commandes SS.

Vous devez également vérifier le résolu État du service en exécutant la commande suivante.

$ sudo systemctl status systemd-résolu.service 
Vérifier l'état résolu SystemD

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

En cours résolu La mise en cache du démon DNS sur un serveur de production peut être dangereuse en raison du nombre d'attaques DDOS effectuées par des pirates malveillants contre les 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-résolu $ sudo systemctl désactiver systemd-résolu 
Désactiver le service résolu SystemD

Vérifiez si le service a été arrêté et désactivé en émettant SS ou commande netstat. Les ports d'écoute résolus Systemd, 53 et 5355 TCP et UDP, ne doivent pas être répertoriés dans la sortie de commande NetStat ou SS, comme illustré dans ce qui est ci-dessous.

Vous devez également redémarrer la machine afin de désactiver complètement tous les services de démon résolus Systemd et de restaurer la valeur par défaut / etc / résolv.confli déposer.

$ sudo ss -tulpn $ sudo netstat -tulpn $ sudo systemctl redémarrage 
Vérifiez tous les services de course

Bien que vous ayez désactivé certains services de réseautage indésirables à exécuter dans votre serveur, il existe également d'autres services installés et exécutés dans votre système, comme LXC processus et snapd service. Ces services peuvent être facilement détectés via PS, TOP ou ptree commandes.

$ sudo ps aux $ sudo top $ sudo ptree 
Liste des services d'exécution au format d'arbre

Dans le cas où vous n'allez pas utiliser la virtualisation du conteneur LXC dans votre serveur ou commencer à installer un logiciel emballé via Snap Package Manager, vous devez complètement désactiver et supprimer ces services, en émettant 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éparé pour 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, un serveur de base de données, un service de partage de fichiers ou d'autres applications spécifiques.