Aller au contenu

Ubuntu Server

De Wiki Pat-Informatik
🏠 Accueil 📚 Index 🐧 Linux 🌐 Réseau 🔒 Cybersécurité 🖥️ Virtualisation ✅ Checklists d'intervention 📚 Tutoriels 🤝 Services

🐧 UBUNTU SERVER

Installation, administration et sécurisation d'un serveur Linux


Ubuntu Server est une distribution Linux conçue pour héberger des services informatiques : serveurs Web, bases de données, partage de fichiers, messagerie, DNS, virtualisation et bien plus encore.

Cette page présente les notions essentielles et les principales commandes pour installer, administrer et maintenir un serveur Ubuntu.

Objectif pédagogique : apprendre à administrer un serveur Ubuntu en ligne de commande, gérer les logiciels, configurer le réseau, sécuriser les accès et héberger des services.

1. Qu'est-ce qu'Ubuntu Server ?

Définition : Ubuntu Server est une édition d'Ubuntu adaptée aux serveurs. Elle permet d'exécuter des services informatiques de manière fiable, généralement sans interface graphique complète.

Ubuntu est basé sur Linux et fait partie de la famille des distributions Debian. Il est développé et maintenu par Canonical avec la participation de la communauté.

Ubuntu Server est utilisé pour :

  • Héberger des sites Web avec Apache ou Nginx.
  • Gérer des bases de données MySQL, MariaDB ou PostgreSQL.
  • Fournir des services réseau : DNS, DHCP et partage de fichiers.
  • Héberger des services de messagerie.
  • Exécuter des machines virtuelles et des conteneurs.
  • Stocker et partager des fichiers.
  • Héberger des applications professionnelles.

Ubuntu Desktop ou Ubuntu Server ?

Caractéristique Ubuntu Desktop Ubuntu Server
Utilisation principale Poste de travail Hébergement de services
Interface graphique Généralement présente Généralement absente par défaut
Administration Interface graphique et terminal Principalement en ligne de commande
Ressources Dépend des applications et de l'environnement graphique Peut fonctionner avec des ressources plus limitées
Exemples Navigation, bureautique, développement Web, DNS, messagerie, bases de données

2. Choisir une version d'Ubuntu Server

Ubuntu propose des versions régulières et des versions LTS (Long Term Support).

Conseil : pour un serveur qui doit rester en service pendant plusieurs années, privilégier une version LTS encore prise en charge et vérifier la compatibilité des applications installées.

Type de version Caractéristiques
LTS Version bénéficiant d'une période de maintenance prolongée. Adaptée à de nombreux serveurs.
Version intermédiaire Version plus fréquente, avec un cycle de support plus court.
Image ISO Fichier utilisé pour installer Ubuntu sur un serveur physique ou dans une machine virtuelle.

Avant une installation, vérifie la version proposée, la durée de support, les besoins matériels et la compatibilité avec les logiciels souhaités.

Téléchargement officiel :

3. Configuration matérielle

Les besoins dépendent des services qui seront installés. Un serveur de test n'a pas les mêmes exigences qu'un serveur Web ou de messagerie utilisé en production.

Ressource Rôle
Processeur Exécution du système et des applications.
Mémoire vive (RAM) Stockage temporaire des données utilisées par les programmes.
Disque SSD ou HDD Stockage du système, des journaux, des données et des sauvegardes locales.
Carte réseau Communication avec le réseau local et éventuellement Internet.
Connexion Internet Téléchargement des mises à jour et accès aux dépôts logiciels.

Pour un serveur de production, prévois des ressources supplémentaires en fonction du nombre d'utilisateurs, des services et de la quantité de données.

4. Installer Ubuntu Server

Étape 1 : télécharger l'image ISO

Rends-toi sur le site officiel d'Ubuntu et télécharge l'image ISO de la version choisie.

Étape 2 : préparer le support d'installation

Selon le matériel utilisé, tu peux créer une clé USB démarrable avec un outil comme Rufus ou balenaEtcher. Pour une machine virtuelle, il suffit généralement de monter l'image ISO dans le lecteur virtuel.

Étape 3 : démarrer sur le support

Configure le démarrage du serveur pour utiliser la clé USB, le lecteur virtuel ou le média d'installation approprié.

Étape 4 : suivre l'assistant

Pendant l'installation, les choix principaux concernent :

  • La langue et le clavier.
  • La configuration du réseau.
  • Le partitionnement du disque.
  • Le nom du serveur.
  • La création du compte utilisateur.
  • L'installation éventuelle du serveur OpenSSH.

Étape 5 : redémarrer

À la fin de l'installation, retire le support d'installation si nécessaire, puis redémarre le serveur.

Attention : le partitionnement peut effacer des données présentes sur le disque. Vérifie soigneusement le disque sélectionné et sauvegarde les données importantes avant de commencer.

5. Première connexion et commandes essentielles

Après le démarrage, connecte-toi avec le compte utilisateur créé pendant l'installation.

Identifier le système

hostname
hostnamectl
uname -r
lsb_release -a
  • `hostname` affiche le nom de la machine.
  • `hostnamectl` fournit des informations sur le système et le nom d'hôte.
  • `uname -r` affiche la version du noyau Linux.
  • `lsb_release -a` affiche les informations de version si la commande est disponible.

Vérifier les ressources

uptime
free -h
df -h
lsblk

| Commande | Fonction | |- | `uptime` | Temps de fonctionnement et charge système. | `free -h` | Utilisation de la mémoire vive. | `df -h` | Espace utilisé et disponible sur les systèmes de fichiers. | `lsblk` | Liste les disques et les partitions.

Se déplacer dans les dossiers

pwd
ls -lah
cd /etc
cd ..
  • `pwd` affiche le répertoire courant.
  • `ls -lah` affiche les fichiers, y compris les fichiers cachés, avec leurs tailles.
  • `cd /etc` accède au répertoire de configuration.
  • `cd ..` remonte d'un niveau.

6. Comprendre l'arborescence Linux

Linux organise les fichiers dans une arborescence qui commence à la racine `/`.

Répertoire Utilité
`/` Racine du système de fichiers.
`/home` Répertoires personnels des utilisateurs.
`/etc` Fichiers de configuration.
`/var` Données variables : journaux, files d'attente et données de services.
`/var/log` Journaux du système et des applications.
`/tmp` Fichiers temporaires.
`/usr` Programmes, bibliothèques et ressources.
`/opt` Applications supplémentaires installées hors de l'organisation habituelle des paquets.
`/srv` Données utilisées par certains services.
`/mnt` Point de montage temporaire ou administré manuellement.
`/root` Répertoire personnel du compte administrateur système `root`.

7. Gérer les logiciels avec APT

APT permet d'installer, de mettre à jour et de supprimer les logiciels provenant des dépôts configurés.

Mettre à jour la liste des paquets

sudo apt update

Cette commande actualise la liste des paquets disponibles. Elle n'installe pas, à elle seule, les mises à jour.

Installer les mises à jour

sudo apt upgrade

Cette commande propose d'installer les versions mises à jour des paquets selon les règles d'APT.

Installer un logiciel

sudo apt install nom-du-paquet

Exemple :

sudo apt install curl

Rechercher un paquet

apt search apache2

Supprimer un logiciel

sudo apt remove nom-du-paquet

Pour supprimer également les fichiers de configuration gérés par le paquet :

sudo apt purge nom-du-paquet

Nettoyer les paquets devenus inutiles

sudo apt autoremove

Bonne pratique : consulte les opérations proposées par APT avant de les confirmer, en particulier sur un serveur qui héberge déjà des services.

8. Administrer les utilisateurs et les permissions

Créer un utilisateur

sudo adduser nouvelutilisateur

Remplace `nouvelutilisateur` par le nom souhaité. La commande demande un mot de passe et quelques informations facultatives.

Ajouter un utilisateur au groupe sudo

sudo usermod -aG sudo nouvelutilisateur

L'utilisateur pourra utiliser `sudo` pour les opérations administratives après une nouvelle connexion, si la configuration du système le permet.

Attention : n'accorde les privilèges administratifs qu'aux comptes qui en ont réellement besoin.

Afficher les utilisateurs connectés

who
w

Comprendre les permissions

Linux utilise notamment les droits de lecture (`r`), d'écriture (`w`) et d'exécution (`x`).

Exemple :

ls -l fichier.txt

Modifier les permissions d'un fichier :

chmod 640 fichier.txt

Modifier le propriétaire d'un fichier :

sudo chown utilisateur:utilisateur fichier.txt

Important : adapte le propriétaire et les permissions au service concerné. Évite les permissions excessives, notamment `chmod 777`, qui donne des droits très larges.

9. Configurer le réseau avec Netplan

Ubuntu Server utilise généralement Netplan pour décrire la configuration réseau.

Afficher les interfaces réseau

ip addr
ip route
  • `ip addr` affiche les interfaces et les adresses IP.
  • `ip route` affiche les routes réseau, notamment la route par défaut.

Identifier les fichiers Netplan

ls -l /etc/netplan/

Les fichiers de configuration présents dans ce répertoire sont généralement au format YAML.

Exemple de configuration DHCP

Exemple indicatif pour une interface nommée `enp1s0` :

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: true

Le nom de l'interface doit correspondre à celui de ton serveur.

Exemple d'adresse IP statique

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: false
      addresses:
        - 192.168.1.20/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 9.9.9.9

Dans cet exemple :

  • `192.168.1.20/24` est l'adresse IP du serveur.
  • `192.168.1.1` est la passerelle.
  • Les adresses indiquées sous `nameservers` sont des résolveurs DNS d'exemple. Tu peux utiliser les DNS de ton réseau.

Appliquer une configuration

Avant toute modification, conserve une copie du fichier d'origine.

sudo cp /etc/netplan/01-config.yaml /etc/netplan/01-config.yaml.bak

Le nom `01-config.yaml` est un exemple : utilise le nom réel de ton fichier.

Vérifier puis appliquer la configuration :

sudo netplan generate
sudo netplan try

`netplan try` permet de tester une configuration et de revenir en arrière si elle n'est pas confirmée dans le délai prévu.

Attention : une modification réseau incorrecte peut couper une connexion SSH. Pour un serveur distant, utilise si possible une console locale ou un accès de secours et vérifie la configuration avant de l'appliquer.

10. Administrer les services avec systemd

Sur Ubuntu, `systemd` permet de gérer de nombreux services.

Vérifier l'état d'un service

systemctl status nom-du-service

Démarrer un service

sudo systemctl start nom-du-service

Arrêter un service

sudo systemctl stop nom-du-service

Redémarrer un service

sudo systemctl restart nom-du-service

Activer un service au démarrage

sudo systemctl enable nom-du-service

Pour activer un service et le démarrer immédiatement :

sudo systemctl enable --now nom-du-service

Exemple avec Apache

sudo systemctl status apache2
sudo systemctl restart apache2

Le nom du service dépend du logiciel installé. Vérifie toujours le nom correct avant d'exécuter une commande.

11. Installer un serveur Web Apache

Apache HTTP Server permet d'héberger des sites Web et des applications accessibles par HTTP ou HTTPS.

Installer Apache

sudo apt update
sudo apt install apache2

Vérifier le service

sudo systemctl status apache2

Tester la configuration

sudo apache2ctl configtest

La réponse `Syntax OK` indique que le contrôle syntaxique n'a pas détecté d'erreur.

Emplacements importants

Chemin Utilité
`/var/www/html` Répertoire Web par défaut dans une installation courante.
`/etc/apache2` Configuration d'Apache.
`/etc/apache2/sites-available` Définitions des sites disponibles.
`/etc/apache2/sites-enabled` Sites activés.
`/var/log/apache2` Journaux d'accès et d'erreurs.

Pour un site public, configure correctement le nom de domaine, le pare-feu et le HTTPS. Ne publie pas un service sans vérifier ses paramètres de sécurité.

12. Accéder au serveur à distance avec SSH

SSH permet d'administrer le serveur depuis un autre ordinateur à travers une connexion chiffrée.

Installer le serveur SSH

sudo apt update
sudo apt install openssh-server

Vérifier son état

sudo systemctl status ssh

Se connecter depuis un autre ordinateur

ssh utilisateur@192.168.1.20

Remplace `utilisateur` par le compte présent sur le serveur et l'adresse IP par celle de ta machine.

Bonnes pratiques SSH

  • Utiliser des mots de passe robustes ou, de préférence lorsque c'est possible, des clés SSH.
  • Maintenir OpenSSH à jour.
  • Limiter les comptes autorisés à se connecter.
  • Éviter l'accès direct par le compte `root`.
  • Contrôler les journaux de connexion.
  • Ne pas exposer inutilement le port SSH à Internet.

Avant de modifier la configuration SSH, vérifie qu'un autre accès administratif fonctionne et teste la nouvelle configuration sans fermer ta session existante.

13. Sécuriser le serveur avec UFW

UFW (Uncomplicated Firewall) fournit une interface simplifiée pour gérer les règles du pare-feu.

Vérifier l'état du pare-feu

sudo ufw status verbose

Autoriser SSH avant activation

sudo ufw allow OpenSSH

Autoriser le trafic Web

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Activer UFW

sudo ufw enable

Vérifier les règles

sudo ufw status numbered

Prudence : si tu administres ton serveur à distance, autorise d'abord le mode d'accès SSH réellement utilisé. Une règle incorrecte peut interrompre la connexion. N'ouvre que les ports nécessaires aux services installés.

14. Installer et vérifier les mises à jour de sécurité

La maintenance régulière est essentielle pour limiter les risques de vulnérabilités connues.

Mise à jour manuelle

sudo apt update
sudo apt upgrade

Installer les mises à jour automatiques

sudo apt install unattended-upgrades

Cette fonctionnalité peut installer automatiquement certaines mises à jour, notamment de sécurité, selon sa configuration.

Vérifier si un redémarrage est nécessaire

if [ -f /var/run/reboot-required ]; then
  echo "Un redémarrage est recommandé"
else
  echo "Aucun redémarrage signalé"
fi

Avant un redémarrage, vérifie les services hébergés et prévois une interruption si nécessaire.

15. Surveiller les journaux et les performances

Les journaux permettent d'identifier des erreurs, des échecs de connexion et des problèmes de service.

Consulter les journaux système

sudo journalctl -p warning -b

Affiche les messages de niveau avertissement ou plus grave depuis le démarrage actuel.

Consulter les dernières lignes d'un journal

sudo journalctl -u apache2 -n 50

Suivre les journaux en direct

sudo journalctl -u apache2 -f

Vérifier les ressources

top
free -h
df -h
uptime

Ces commandes aident à repérer une consommation élevée de mémoire, une saturation du disque ou une charge importante du processeur.

16. Sauvegarder les données

Une sauvegarde est une copie des données qui permet de les restaurer après une panne, une erreur humaine ou un incident de sécurité.

Il faut distinguer :

  • La sauvegarde des fichiers et documents.
  • La sauvegarde des bases de données.
  • La sauvegarde des configurations système.
  • La sauvegarde des certificats et des données applicatives.
  • La sauvegarde complète d'une machine virtuelle, si le serveur est virtualisé.

Exemple simple de copie avec rsync

sudo rsync -aHAX --numeric-ids /etc/ /mnt/sauvegarde/etc/

Cet exemple copie le contenu de `/etc/` vers `/mnt/sauvegarde/etc/`. Le point de montage de destination doit exister et correspondre au support de sauvegarde souhaité.

Important : une copie sur le même disque ne protège pas contre la panne de ce disque. Prévois une destination distincte et teste régulièrement la restauration. Pour les bases de données et les applications actives, utilise une méthode de sauvegarde cohérente avec le logiciel concerné.

17. Héberger plusieurs services sur Ubuntu

Un serveur Ubuntu peut héberger plusieurs services, à condition de gérer correctement les ressources, les accès et les dépendances.

Service Logiciel ou technologie Usage
Serveur Web Apache, Nginx Hébergement de sites et d'applications.
Messagerie Postfix, Dovecot Transport et accès aux courriels.
Base de données MariaDB, MySQL, PostgreSQL Stockage des données applicatives.
Partage de fichiers Samba, NFS Échange de fichiers sur le réseau.
Accès distant OpenSSH Administration sécurisée à distance.
Virtualisation KVM, QEMU, libvirt Exécution de machines virtuelles.
Conteneurs Docker, Podman Déploiement d'applications isolées.

Pour chaque service, prévois une configuration, des mises à jour, des sauvegardes et des règles réseau adaptées.

18. Ubuntu Server et la virtualisation

Ubuntu Server peut être installé directement sur un serveur physique ou dans une machine virtuelle.

Installation physique

Ubuntu utilise directement les ressources matérielles du serveur. Cette solution peut convenir à un serveur dédié à plusieurs services.

Installation virtuelle

Ubuntu Server peut être installé dans une machine virtuelle créée avec un hyperviseur comme KVM, Proxmox VE, Hyper-V ou VMware.

Avantages :

  • Tester de nouvelles configurations sans modifier directement le système principal.
  • Créer des environnements de formation.
  • Isoler certains services.
  • Faciliter certains scénarios de sauvegarde et de restauration.

Voir aussi : Virtualisation et Cloud Computing.

19. Dépannage : problèmes fréquents

Problème Vérifications utiles
Impossible de se connecter en SSH Vérifier l'adresse IP, le service SSH, le pare-feu et les identifiants.
Le site Web ne répond pas Vérifier Apache, les ports 80/443, le DNS, les journaux et la configuration du site.
Plus d'espace disque Exécuter `df -h`, examiner les répertoires volumineux et vérifier les journaux.
Le serveur n'a plus accès à Internet Contrôler `ip addr`, `ip route`, le DNS et la connectivité.
Un service ne démarre pas Examiner `systemctl status` et `journalctl -u nom-du-service`.
Les mises à jour échouent Vérifier la connexion, les dépôts APT, l'espace disque et les messages d'erreur.

Méthode de dépannage

  1. Identifier précisément le symptôme.
  2. Vérifier l'état du service concerné.
  3. Consulter les journaux.
  4. Examiner les changements récents.
  5. Modifier un seul paramètre à la fois.
  6. Tester la correction.
  7. Documenter la solution.

20. Bonnes pratiques d'administration

  • [ ] Maintenir le système à jour.
  • [ ] Utiliser des comptes nominatifs et limiter les privilèges.
  • [ ] Sécuriser les accès SSH.
  • [ ] Configurer un pare-feu adapté.
  • [ ] Vérifier régulièrement l'espace disque.
  • [ ] Surveiller les journaux et les services.
  • [ ] Effectuer des sauvegardes sur un support distinct.
  • [ ] Tester les restaurations.
  • [ ] Documenter les adresses IP, les noms de domaine et les ports utilisés.
  • [ ] Planifier les redémarrages et les opérations de maintenance.
  • [ ] Vérifier la durée de support de la version d'Ubuntu utilisée.

21. Glossaire

Terme Définition
Linux Famille de systèmes utilisant le noyau Linux.
Distribution Ensemble comprenant un noyau, des logiciels et des outils système.
LTS Version bénéficiant d'un support à long terme.
Terminal Interface permettant d'exécuter des commandes.
Shell Programme qui interprète les commandes saisies.
sudo Permet d'exécuter certaines commandes avec des privilèges élevés.
APT Outil de gestion des paquets logiciels sur Ubuntu et Debian.
SSH Protocole chiffré utilisé notamment pour l'administration distante.
UFW Outil simplifié de gestion du pare-feu.
Netplan Outil de configuration réseau utilisé sur Ubuntu.
systemd Système d'initialisation et de gestion de nombreux services.
DNS Système qui associe des noms de domaine à des informations réseau.
Adresse IP Adresse utilisée pour identifier une interface sur un réseau IP.
Paquet Archive logicielle installable par le gestionnaire de paquets.
Journal système Enregistrement des événements et messages du système ou des services.

22. Ressources et documentation

23. Pages associées


⬆ Retour en haut