Si vous avez un Mac mini 2019 qui traîne, vous pouvez lui donner une seconde vie en le transformant en un petit serveur maison. Avec ses 8 Go de RAM, son SSD de 256 Go et son processeur Intel Core 2 Duo de 2,26Ghz, ce Mac Mini est tout à fait capable de gérer plusieurs services essentiels pour un réseau domestique. Pourquoi recycler un Mac Mini en serveur ? Recyclage, économie et apprentissage : ces trois raisons suffisent pour se lancer ! Un serveur maison vous permet de centraliser vosservices réseau, de tester des configurations et de sécuriser la connexion Internet.
En l’occurrence, notre Mac mini sera utilisé pour :

  • Serveur DNS : pour gérer vos noms de domaine internes et améliorer la résolution des adresses locales.
  • Serveur DHCP : pour attribuer automatiquement les adresses IP aux appareils du réseau local.
  • Serveur VPN : pour accéder à votre réseau domestique de manière sécurisée depuis l’extérieur.
  • Accès SSH : pour administrer et configurer facilement le serveur à distance.

Ubuntu 22.04 LTS est un choix idéal pour un serveur maison. Stable, sécurisé et largement documenté. Il permet d’installer facilement tous les services dont on a besoin et de les gérer via le terminal ou à distance. Recycler un Mac mini en serveur maison est une excellente manière de prolonger la durée de vie de ce Mac tout en ajoutant des fonctionnalités pratiques au réseau domestique. Avec Ubuntu 22.04 et quelques configurations, on obtient un serveur fiable, sécurisé et flexible, capable de gérer DNS, DHCP, VPN et SSH, le tout dans un petit boîtier élégant et silencieux.


TABLE DES MATIÈRES

Téléchargement de Ubuntu Server 22.04.05 LTE
Création de la clé USB de démarrage avec Balena Etcher
Installation de Ubuntu Server
Adressage réseau du serveur
Mise à jours d'Ubuntu Server
Installation et configuration du serveur DHCP
Installation et configuration du serveur SSH
Installation et configuration du serveur DNS










 

 

1 - TÉLÉCHARGEMENT DE UBUNTU SERVER 22.04.05 LTE

La première étape consiste à récupérer l’image officielle d’Ubuntu Server. Rendez-vous sur le site Ubuntu Server pour télécharger la version 22.04.5 LTS. L’option “LTS” signifie Long Term Support, garantissant des mises à jour de sécurité pendant 5 ans. Téléchargez la version amd64 si votre ordinateur utilise un processeur Intel 64 bits. Vérifiez au préalable, que vous avez suffisamment d’espace disque sur votre ordinateur. Au moins 2 Go pour le fichier ISO. Après le téléchargement, vous pouvez vérifier le fichier ISO avec un checksum SHA256. Cette étape permet de s’assurer que le fichier n’a pas été corrompu ou modifié pendant le téléchargement.
Exemple de commande sur Linux/macOS :

sha256sum ubuntu-22.04.5-live-server-amd64.iso


Utilisation du Terminal poiur vérifier l'intégrité du fichier téléchargé.

💡 Conservez le fichier ISO dans un dossier dédié, il pourra servir pour créer plusieurs clés USB ou installer Ubuntu sur d’autres machines.
 

2 - CRÉATION DE LA CLÉ USB DE DÉMARRAGE AVEC BALENA ETCHER

Pour installer Ubuntu, il faut créer une clé USB de démarrage. Balena Etcher est une application gratuite disponible pour Windows, macOS et Linux. C'est une application simple et sûre pour concevoir une clé USB bootable. Utilisez une clé USB d'une capacité minimum de 4 Go. Pensez à sauvegarder les données présentes dessus, car elles seront supprimées duant le processus de création.


L'application Balena Etcher.

Ouvrez L'application Balena Etcher. Sélectionnez le fichier Iso téléchargé précédement. Sélectionnez la clé de destination puis cliquez sur “Flash”. Attttendez la fin du processus. Le logiciel écrit l’ISO sur la clé et la rend bootable. Une fois le flash terminé, vous pouvez éjecter la clé USB en toute sécurité. Votre clé est maintenant prête à démarrer l’installation.

3 - INSTALLATION DE UBUNTU SERVER

Avec la clé USB prête, vous pouvez installer Ubuntu sur votre ordinateur. Insérez la clé USB dans l’ordinateur. Allumez ou redémarrez la machine. Accédez au menu de démarrage en maintenant la touche option de votre Mac. Sélectionnez la clé USB  présente sur l'affichage comme périphérique de démarrage. L’installateur d’Ubuntu Server se lance et vous guide à travers les différentes étapes. L’installation elle-même est guidée par l’interface d’Ubuntu. L’utilisateur choisit la langue, configure le clavier, donne un nom au serveur et crée un compte administrateur sécurisé. Le réseau peut être configuré en IP statique ou par DHCP, et l’installateur propose le partitionnement automatique du disque ainsi que l’installation de paquets essentiels, comme le serveur OpenSSH pour gérer le serveur à distance. Pendant l’installation, certaines options peuvent être utiles pour mettre à jour et configurer le serveur. Je vous conseille de sélectionner les options par défaut à chaque écran. Ci-dessou, les différentes étapes de l'installation.

💡 Gardez la clé USB d’installation. Elle peut servir à réparer le système ou réinstaller Ubuntu le cas échéant.



L'installateur d'Ubuntu.




L'installation d’Ubuntu Server 22.04 s’avère être une étape accessible et structurée pour tout administrateur système ou passionné d’informatique souhaitant déployer un serveur fiable. Avec son processus d’installation guidé et ses options de configuration flexibles, cette version permet de poser les bases d’un environnement sécurisé et performant. Que ce soit pour l’hébergement web, le stockage de données ou la gestion de services réseau, Ubuntu Server 22.04 offre une stabilité et une compatibilité à long terme.

4 - ADRESSAGE RESEAU

L'installation d’Ubuntu Server ne se limite pas à l’installation des paquets. Elle inclut également une configuration réseau. Attribuer une adresse IP correcte, et surtout fixe, est crucial pour un serveur. Cela garantit que les services hébergés restent accessibles de manière constante. Cela facilite aussi la gestion des DNS et permet une administration stable du réseau. Ainsi, en combinant une configuration sécurisée et un adressage IP bien pensé, le serveur devient un outil fiable, prêt à répondre aux besoins des utilisateurs et des applications sans interruption ni confusion.

La commande suivante est utilisée comme point de départ pour s’assurer qu’on configure la bonne interface et pour éviter de modifier accidentellement la mauvaise carte réseau.

ip a

image 24
Affichage des différentes interfaces présentes.

On retiendra le nom de l'interface "enp0s10".

L’étape suivante consiste à éditer le fichier /etc/netplan/00-installer-config.yaml, qui gère la configuration réseau sur Ubuntu Server 22.04. C’est dans ce fichier que l’on définit :

  • L’interface réseau à configurer (repérée précédemment avec ip a).
  • L’adresse IP (statique ou dynamique) du serveur.
  • Le masque réseau, la passerelle et les serveurs DNS.

La gestion des permissions sur un fichier aussi sensible que celui de Netplan est un point critique pour la stabilité de votre serveur Ubuntu. Lorsqu'un fichier présente des droits en lecture et écriture pour tout le monde, comme c'est le cas avec le mode 666, vous exposez votre machine à des risques de sabotage ou d'interception de données puisque n'importe quel utilisateur non privilégié peut alors détourner votre flux réseau.

ls -l /etc/netplan/00-installer-config.yaml
-rw-rw-rw- 1 root root 250 févr 21 12:00 00-installer-config.yaml

D'un point de vue technique, le système d'exploitation considère cette permissivité comme une faille de sécurité majeure et Netplan risque d'ignorer purement et simplement vos instructions de configuration tant que les droits ne sont pas restreints. Il est donc impératif de s'assurer que seul l'utilisateur root possède un contrôle total sur ce document afin de garantir l'intégrité de la connectivité du serveur. En appliquant une restriction stricte, vous verrouillez l'accès aux paramètres IP et aux clés de sécurité éventuelles tout en respectant les standards de sécurité natifs de Linux.

sudo chmod 600 /etc/netplan/00-installer-config.yaml
ls -l /etc/netplan/00-installer-config.yaml
-rw------- 1 root root 250 févr 21 12:00 00-installer-config.yaml

image 25bis

 La création du fichier de configuration du Netplan est maintenant possible :

sudo nano /etc/netplan/00-installer-config.yaml

 Contenu du fichier :

network:
version: 2
ethernets:
enp0s10:
dhcp4: no
addresses:
- 172.16.0.2/16
routes:
- to: 0.0.0.0/0
via: 172.16.0.1
nameservers:
addresses:
- 172.16.0.2
- 1.1.1.1
search: [bsalado.lan]

Explications :

  • dhcp4: no - on désactive le DHCP pour utiliser une IP fixe
  • addresses - IP statique 172.16.0.2 avec masque 255.255.0.0
  • gateway4 - passerelle de la box SFR
  • nameservers - pour l’instant, la box comme DNS, on changera plus tard

 L'activation d'une nouvelle configuration réseau sur Ubuntu ne se fait pas automatiquement après l'enregistrement du fichier YAML, car Netplan nécessite une commande spécifique pour charger et appliquer ces paramètres en mémoire. Une fois que vous avez terminé l'édition de votre fichier de configuration, il est impératif d'utiliser l'utilitaire de ligne de commande dédié pour transformer ces instructions textuelles en une configuration active pour vos interfaces réseau. On teste d'abord la configuration avec la commande suivante :

sudo netplan try

Vous avez 120 secondes pour tester la configuration. Au dela, la configuration revient à son état d'origine.
image 26

 Si aucun messsage d'erreur n'apparait, on active définitivement la configuration avec les commandes suivantes :

sudo netplan generate
sudo netplan apply

La vérification de l'adressage réseau est une étape de diagnostic essentielle qui permet de confirmer que votre serveur Ubuntu communique correctement avec son environnement local et l'Internet. La première instruction, 

ip a

affiche la configuration détaillée de toutes vos interfaces réseau, vous permettant de valider que l'adresse IP statique ou dynamique définie dans Netplan a bien été attribuée à la bonne carte. Cette commande est le point de départ indispensable pour détecter une interface restée inactive ou une erreur de saisie dans votre masque de sous-réseau.

image 27

Une fois l'adresse IP confirmée, la commande

ip route

sert à inspecter la table de routage du système pour s'assurer que le serveur sait quel chemin emprunter pour sortir du réseau local. Elle permet notamment de vérifier la présence de la "default gateway", ou passerelle par défaut, qui est le point de passage obligatoire pour toutes les données destinées à l'extérieur. Si cette route est absente ou pointe vers une mauvaise adresse, votre serveur restera isolé malgré une configuration IP locale correcte.
image 28

Pour valider concrètement cette connectivité, l'utilisation du protocole ICMP via la commande

ping 172.16.0.1

permet de tester la liaison directe avec votre passerelle ou votre routeur local. Un succès à ce stade garantit que votre câble réseau et votre configuration de couche basse sont fonctionnels.
image 29

Enfin, l'instruction

ping 8.8.8.8

étend ce test vers un serveur externe sur Internet, confirmant ainsi que votre routage est opérationnel et que vos paquets parviennent à franchir les limites de votre réseau privé.
image 30

La maîtrise de l'adressage réseau sur un serveur Ubuntu repose sur un équilibre rigoureux entre une syntaxe YAML précise et une gestion stricte des permissions de fichiers. Une configuration réussie ne se limite pas à l'attribution d'une adresse IP, mais englobe la protection de l'accès au fichier par l'utilisateur root afin de prévenir toute modification non autorisée de la connectivité du système.

5 - MISE À JOUR D'UBUNTU SERVER

Maintenir un serveur Ubuntu à jour est une étape fondamentale de l'administration système qui garantit à la fois la sécurité, la stabilité et la performance de vos services. La raison principale de cette rigueur réside dans la correction constante des vulnérabilités logicielles, car chaque jour de nouveaux défauts de sécurité sont découverts et pourraient être exploités par des attaquants si les correctifs ne sont pas appliqués rapidement. En plus de protéger vos données, les mises à jour régulières apportent souvent des optimisations de code qui réduisent la consommation des ressources système et corrigent des bogues mineurs susceptibles de provoquer des plantages imprévus. La première instruction,

sudo apt update

permet de synchroniser la base de données locale de votre serveur avec les dépôts officiels pour prendre connaissance des dernières versions disponibles.
image 31

Une fois cette liste actualisée, vous devez exécuter la commande 

sudo apt upgrade -y

qui télécharge et installe concrètement les mises à jour des logiciels et des composants de sécurité sur votre machine. Pour maintenir un système propre et optimisé, il est fortement recommandé d'utiliser ensuite l'instruction sudo apt autoremove. Cette commande supprime automatiquement les dépendances inutiles et les anciens noyaux qui ne sont plus utilisés, évitant ainsi l'encombrement inutile de votre espace disque.
image 32

Enfin, dans les cas où des mises à jour majeures du système ou du noyau sont installées, un redémarrage avec la commande

sudo reboot

est souvent nécessaire pour que les changements les plus profonds soient pleinement effectifs.

6 - INSTALLATION ET CONFIGURATION D'UN SERVEUR DHCP

Un serveur DHCP agit comme un administrateur automatisé au sein d'un réseau informatique en gérant l'attribution des adresses IP aux différents équipements qui s'y connectent. Au lieu de configurer manuellement chaque ordinateur, tablette ou serveur avec des paramètres statiques, ce service distribue dynamiquement une identité réseau unique à chaque appareil dès son apparition sur le réseau. Le rôle de ce serveur ne se limite pas à la simple distribution d'adresses IP, puisqu'il transmet également des informations cruciales comme l'adresse de la passerelle par défaut et les serveurs DNS à utiliser pour naviguer sur Internet. Ce mécanisme centralisé évite les erreurs humaines fréquentes, telles que les conflits d'adresses où deux machines tenteraient d'utiliser le même identifiant, ce qui paralyserait leur communication.
L'installation d'un serveur DHCP sur Ubuntu est une procédure directe qui s'appuie sur le paquet isc-dhcp-server, le standard historique pour la gestion dynamique des adresses IP

sudo apt install isc-dhcp-server -y

 Une fois le logiciel installé, la configuration se déroule en deux phases distinctes pour assurer que le serveur communique sur le bon segment de réseau. Vous devez d'abord éditer le fichier de déclaration des interfaces afin de spécifier explicitement sur quelle carte réseau physique le service doit écouter les requêtes des clients.

sudo nano /etc/default/isc-dhcp-server

 Cette précaution est essentielle pour éviter que votre serveur ne tente de distribuer des adresses IP sur une interface connectée à un réseau public ou à Internet.

INTERFACESv4="enp0s10"
INTERFACESv6=""

La seconde phase concerne la définition des règles d'attribution dans le fichier principal dhcpd.conf.

sudo nano /etc/dhcp/dhcpd.conf

 C'est à cet endroit que vous délimitez la plage d'adresses IP disponibles, appelée le "pool", ainsi que les options de réseau indispensables comme l'adresse de la passerelle par défaut et les serveurs DNS. Chaque appareil qui se connectera recevra alors un bail d'une durée déterminée, lui permettant de naviguer sur le réseau sans aucune intervention manuelle de votre part.

option domain-name "bsalado.lan";
option domain-name-servers 172.16.0.2;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;

authoritative;

subnet 172.16.0.0 netmask 255.255.0.0 {
  range 172.16.0.61 172.16.0.140;
  option routers 172.16.0.1;
  option broadcast-address 172.16.255.255;
}

Pour activer et valider votre serveur DHCP sur Ubuntu, vous devez manipuler le gestionnaire de services du système afin de prendre en compte vos modifications. La première instruction indispensable est

sudo systemctl restart isc-dhcp-server

qui lance le démon et commence la distribution des adresses IP sur votre réseau local. Si vous souhaitez que ce service s'exécute automatiquement à chaque démarrage du serveur, vous devez également utiliser la commande

sudo systemctl enable isc-dhcp-server

La vérification du bon fonctionnement s'appuie sur l'instruction

sudo systemctl status isc-dhcp-server

qui affiche un compte rendu détaillé de l'état du service. En cas d'erreur de syntaxe dans vos fichiers de configuration, cette commande mettra en évidence les lignes problématiques, vous permettant de corriger rapidement un point-virgule manquant ou une accolade mal fermée.
image 33

Enfin, un outil de diagnostic extrêmement pratique qui permet de transformer les données brutes du fichier des baux en un tableau lisible et synthétique. Contrairement à la lecture directe du fichier système, cette commande extrait et affiche proprement les colonnes essentielles telles que l'adresse MAC de l'équipement, l'adresse IP attribuée, le nom d'hôte de la machine cliente ainsi que la date précise d'expiration du bail.

sudo dhcp-lease-list

Image 34

La réservation d'adresses IP est une fonctionnalité avancée du serveur DHCP qui permet d'attribuer une adresse spécifique et immuable à un appareil en se basant sur son adresse physique, ou adresse MAC. Cette technique garantit qu'un équipement critique, comme une imprimante réseau ou un serveur de fichiers, conservera toujours la même identité IP au sein du réseau, tout en continuant de bénéficier de la gestion centralisée du protocole DHCP. Pour réaliser cette configuration, vous devez éditer le fichier principal de votre serveur

sudo nano /etc/default/isc-dhcp-server

et y ajouter un bloc spécifique pour chaque machine concernée. À l'intérieur de ce bloc, vous devez renseigner le nom que vous souhaitez attribuer à l'hôte, son adresse MAC exacte relevée au préalable et l'adresse IP fixe que vous voulez lui allouer de manière permanente. Il est impératif que cette adresse réservée soit choisie en dehors de la plage dynamique définie dans votre configuration principale afin d'éviter tout conflit avec les autres appareils.

# Réservations

host PC1 {
  hardware ethernet a4:fc:14:18:ab:41;
  fixed-address 172.16.0.141;
}

host PC2 {
  hardware ethernet a4:fc:14:21:54:4d;
  fixed-address 172.16.0.142;
}

host Imprimante { hardware ethernet 00:3e:e1:cb:68:0e; fixed-address 172.16.0.143; } host tv_samsung { hardware ethernet 60:f4:45:ea:35:34; fixed-address 172.16.0.144; } host Scanner { hardware ethernet 14:7d:da:9b:52:63; fixed-address 172.16.0.145; }

Pour valider les modification du serveur DHCP sur Ubuntu, vous devez redémarrer le gestionnaire de services du système afin de prendre en compte vos modifications. L'instruction est

sudo systemctl restart isc-dhcp-server

puis effectuer la vérification du bon fonctionnement avec l'instruction

sudo systemctl status isc-dhcp-server

qui affiche un compte rendu détaillé de l'état du service. En cas d'erreur de syntaxe dans vos fichiers de configuration, cette commande mettra en évidence les lignes problématiques, vous permettant de corriger rapidement un point-virgule manquant ou une accolade mal fermée.

image 33

6 - INSTALLATION ET CONFIGURATION DU SERVEUR SSH

L'implémentation d'un serveur SSH sur une machine Ubuntu transforme radicalement la gestion du système en substituant l'accès physique contraignant par une passerelle virtuelle hautement sécurisée. En établissant un tunnel chiffré entre votre station de travail et le serveur, SSH garantit l'intégrité et la confidentialité de chaque commande envoyée, rendant toute tentative d'interception de données par des tiers totalement inopérante. Cette technologie s'avère indispensable pour l'administration moderne, car elle permet de s'affranchir de la nécessité d'un écran ou d'un clavier directement reliés à l'unité centrale, facilitant ainsi la maintenance de serveurs situés dans des centres de données distants ou des environnements cloud. L'usage de clés cryptographiques pour l'authentification renforce encore ce dispositif en éliminant les vulnérabilités liées aux mots de passe classiques. Finalement, la mise en œuvre de SSH offre une flexibilité opérationnelle totale, permettant à l'administrateur d'intervenir sur son infrastructure Ubuntu avec la même réactivité que s'il se trouvait physiquement devant la machine, tout en bénéficiant d'un niveau de protection adapté aux exigences de sécurité actuelles.
La première étape consiste à mettre à jour vos dépôts locaux pour garantir l'installation de la version la plus stable

sudo apt update

Il suffit ensuite d'exécuter la commande 

sudo apt install openssh-server -y

Le système télécharge les binaires nécessaires, crée les clés d'hôte uniques pour votre machine et configure le démon (le service qui "écoute" les connexions entrantes) pour qu'il démarre automatiquement à chaque boot.
Après l'installation, il est crucial de s'assurer que le service est actif. En utilisant

sudo systemctl status ssh

Image 35
Dans le cas ou le service ne serait pas actif, on force le démarrage du serveur avec la commande

sudo systemctl start ssh

et on procède à nouveau à la vérification du bon démarrage du serveur avec la commande 

sudo systemctl status ssh

À ce stade, le serveur écoute par défaut sur le port 22, prêt à recevoir des requêtes de connexion. on peut le vérifier avec la commande

sudo ss -tlnp | grep ssh

Image 36

 La prochaine étape est la tentative de connexion depuis une machine cliente. En utilisant la commande

ssh Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.2

Générer une paire de clés SSH est la méthode recommandée par tous les experts en cybersécurité pour remplacer l'authentification par mot de passe. C'est un saut qualitatif en termes de protection et de confort d'utilisation. Les serveurs exposés sur Internet subissent quotidiennement des milliers de tentatives de connexion automatisées tentant de deviner les mots de passe (souvent admin, root ou 123456). En configurant votre serveur pour n'accepter que les clés SSH, vous rendez ces attaques totalement inoffensives : le serveur rejette immédiatement toute tentative qui ne présente pas la signature numérique valide, sans même demander de mot de passe. Les clés reposent sur la cryptographie asymétrique. Contrairement à un mot de passe qui peut être deviné, intercepté ou "bruteforcé" (testé par des milliers de combinaisons par seconde), une clé privée est un fichier complexe presque impossible à craquer.
Générer des clés permet également de fluidifier votre travail. Une fois vos clés configurées, vous pouvez vous connecter à votre serveur Ubuntu sans avoir à saisir votre mot de passe. C'est un gain de temps précieux, mais c'est aussi une nécessité technique pour les outils d'automatisation
Vous pouvez ajouter une "passphrase" lors de la génération de votre clé privée. Cela crée une sécurité à deux niveaux : il faut posséder le fichier physique (ce que vous avez) et connaître la passphrase (ce que vous savez). Si un intrus vole votre ordinateur, il ne pourra toujours pas accéder à vos serveurs sans ce code secret.
Avant d'effectuer la modification d'un fichier aussi sensible que la configuration SSH, on crée toujours une copie de sécurité. Si une erreur survient, vous pourrez ainsi restaurer l'accès facilement. 

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Tout commence sur votre machine locale (le client). Nous allons forger une clé utilisant l'algorithme Ed25519, réputé pour sa robustesse et sa rapidité. L'option -f permet de nommer spécifiquement votre clé. Cela évite d'écraser vos clés existantes (comme le classique id_rsa). Deux fichiers sont générés dans votre dossier caché .ssh. La clé privée (votre secret) et la clé publique(l'empreinte à distribuer).

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_macmini -C "macminiserver"

Cela créera deux nouveaux fichiers :

~/.ssh/id_ed25519_macmini
~/.ssh/id_ed25519_macmini.pub

Une fois la clé créée, il faut faire "connaître" votre machine au serveur. Cette commande injecte votre clé publique dans le fichier des invités autorisés du serveur. C'est la seule fois où votre mot de passe vous sera demandé.

ssh-copy-id -i ~/.ssh/id_ed25519_macmini.pub Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.2

Sous Linux, la sécurité passe par les droits d'accès. Si vos dossiers de clés sont trop "ouverts", le service SSH refusera la connexion par pure prudence. Ici, on applique la loi du moindre privilège. Seul l'utilisateur propriétaire peut lire ou modifier ces fichiers sensibles. 

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

On vérifie ensuite la réussite de l'opération :

ls -l ~/.ssh
ls -l ~/.ssh/authorized_keys

Un dossier en drwx------ et un fichier en -rw-------. Si vous voyez cela, vos verrous sont bien posés.

drwx------ .ssh
-rw------- authorized_keys

image 37

Il est temps de dire au serveur comment se comporter. On accède au fichier de configuration principal, le centre nerveux du service SSH. C'est ici que vous pourrez changer le port par défaut ou, étape ultime de sécurité, désactiver totalement l'usage des mots de passe pour forcer l'usage des clés.

sudo nano /etc/ssh/sshd_config

Modification du fichier

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

Port 2222
PermitRootLogin no

#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

LoginGraceTime 5m
#PermitRootLogin prohibit-password
#StrictModes yes
MaxAuthTries 3
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile     .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #UseDNS no #PidFile /run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server

image 40

Avant de relancer le service, effectuez toujours un "test". Cette commande vérifie la syntaxe de votre fichier. Si aucune erreur ne s'affiche, vous pouvez procéder sans crainte d'être banni de votre propre machine.

sudo sshd -t

Pour appliquer les nouveaux réglages, le service doit être réinitialisé. Sur Ubuntu, nous utilisons le gestionnaire de services systemd.

sudo systemctl stop ssh
sudo systemctl start ssh

Vérification de l'état du serveur

sudo systemctl status ssh

image 38

 Vérifier que le service SSH tourne

sudo systemctl is-active ssh

Si le terminal répond "active", votre serveur communique désormais via un canal cryptographique de haut vol, protégé contre les attaques par force brute.

Active

image 39

Dans un environnement de production, l'efficacité d'un administrateur se mesure à sa capacité à automatiser et à simplifier ses flux de travail. Si la sécurisation du serveur est une priorité absolue, l'optimisation de la machine cliente est le secret de la productivité. Examinons comment transformer une commande de connexion complexe et sujette à l'erreur en un processus fluide et structuré. Par défaut, une connexion sécurisée sur un port non-standard avec une clé spécifique impose une syntaxe lourde :

ssh -p 2222 -i ~/.ssh/id_ed25519_macmini_server Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

Cette méthode présente trois défauts majeurs. Une faute de frappe dans l'IP ou le port interrompt le flux de travail. L'historique de votre shell conserve des détails sensibles sur l'infrastructure. Les outils tiers (scripts, IDE, gestionnaires de fichiers) ont souvent des difficultés à interpréter des arguments de ligne de commande complexes. Le protocole OpenSSH intègre nativement un moteur de gestion de profils via le fichier "~/.ssh/config". Ce fichier agit comme une base de données locale reliant des "alias" (noms d'hôtes logiques) à des paramètres techniques précis. Sur votre machine cliente, assurez-vous que le fichier existe et qu'il possède les permissions de sécurité adéquates (lecture/écriture pour l'utilisateur uniquement).

nano ~/.ssh/config

image 41 

Chaque directive remplace un argument de votre ancienne commande :

Host : Le label arbitraire que vous utiliserez pour appeler la connexion.
HostName : L'adresse IP ou le FQDN (nom de domaine) du serveur cible.
IdentityFile : Le chemin absolu vers la clé privée correspondant à la clé publique déposée sur le serveur.
IdentitiesOnly yes : Force SSH à utiliser uniquement la clé spécifiée, évitant ainsi les échecs de connexion si vous possédez de nombreuses clés (ce qui peut déclencher une protection anti-brute force sur le serveur).
ServerAliveInterval 60 : Envoie un signal de maintien de connexion toutes les 60 secondes pour éviter les déconnexions intempestives dues à l'inactivité ou à un pare-feu intermédiaire.

7 - INSTALLATION ET CONFIGURATION D'UN SERVEUR VPN AVEC WIREGUARD

Le Réseau Privé Virtuel, plus connu sous l'acronyme VPN, s'est imposé comme l'outil indispensable pour quiconque souhaite reprendre le contrôle de sa navigation. En créant un lien direct et chiffré entre votre appareil et un serveur distant, cette technologie transforme radicalement la manière dont vos données circulent. Au lieu de laisser vos informations transiter en clair sur les réseaux publics, le VPN les enveloppe dans une couche de protection impénétrable. Cette méthode garantit non seulement que votre identité reste anonyme derrière une adresse IP d'emprunt, mais elle sécurise également vos échanges contre toute interception malveillante, tout en libérant l'accès à un internet sans frontières géographiques. 
Alors que le monde de la cybersécurité a longtemps reposé sur des protocoles complexes et vieillissants, WireGuard a fait irruption comme une véritable révolution logicielle. Ce protocole de communication moderne privilégie une approche radicalement minimaliste pour atteindre des performances jusqu'alors inégalées. En utilisant des algorithmes de cryptographie de pointe sur une base de code extrêmement légère, il élimine les lenteurs habituelles liées au chiffrement. Il en résulte une connexion presque instantanée et une stabilité exemplaire, même lors de changements de réseaux sur mobile. WireGuard ne se contente pas d'être plus rapide que ses prédécesseurs ; il redéfinit les standards de sécurité en offrant une surface d'attaque réduite et une efficacité énergétique optimale pour tous vos appareils.
Vous commencez par vous connecter au serveur principal via SSH car toutes les opérations doivent être effectuées directement sur la machine qui hébergera le VPN. Cette connexion permet d’administrer le serveur à distance tout en conservant votre authentification par clé SSH déjà en place.

ssh macminiserver

image 43

Une fois connecté, il est important de mettre à jour le système Ubuntu afin d'installer les dernières corrections de sécurité et d'éviter tout conflit de dépendances avant l'installation du logiciel VPN.

 sudo apt update sudo apt upgrade -y 

WireGuard est disponible directement dans les dépôts officiels d'Ubuntu 22.04. Son installation ajoute les outils nécessaires pour gérer les interfaces VPN et la cryptographie utilisée pour sécuriser les communications.

 sudo apt install wireguard -y 

Le serveur VPN doit pouvoir transmettre les paquets entre le réseau VPN et le réseau local. Pour cela il faut activer le routage IP dans la configuration du noyau Linux.

 sudo nano /etc/sysctl.conf 

Dans ce fichier il faut activer la ligne suivante afin d'autoriser le serveur à faire du routage réseau.

 net.ipv4.ip_forward=1 

image 42

La modification doit ensuite être appliquée immédiatement pour activer le routage sans redémarrer le serveur.

 sudo sysctl -p 

WireGuard utilise un système de clés publiques et privées pour authentifier les connexions VPN. Il faut donc créer un dossier sécurisé pour stocker les clés et les fichiers de configuration.

sudo mkdir -p /etc/wireguard
cd /etc/wireguard
sudo chmod 700 /etc/wireguard

La génération des clés cryptographiques du serveur permet d'identifier de manière unique le serveur VPN lors des connexions des clients. Notez les clé en utilisant un éditeur de texte.

 wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key 

L'étape suivante consiste à créer l'interface VPN appelée wg0. Cette interface virtuelle sera utilisée par le serveur pour gérer les connexions WireGuard.

 sudo nano /etc/wireguard/wg0.conf 

Dans ce fichier vous devez ajouter la configuration suivante qui définit l'adresse du réseau VPN, le port d'écoute et les règles réseau nécessaires pour permettre aux clients VPN d'accéder au réseau interne.

[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = LA CLE PRIVEE ICI - LA CLE PRIVEE ICI LA CLE PRIVEE ICI   

PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -o enp0s10 -j ACCEPT
PostUp = iptables -A FORWARD -i enp0s10 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o enp0s10 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -o enp0s10 -j ACCEPT
PostDown = iptables -D FORWARD -i enp0s10 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -s 10.10.0.0/24 -o enp0s10 -j MASQUERADE
PostDown = sysctl -w net.ipv4.ip_forward=0

[Peer]
PublicKey = LA CLE DU CLIENT ICI - LA CLE DU CLIENT ICI - LA CLE DU CLIENT ICI
AllowedIPs = 10.10.0.2/32
Endpoint = 82.216.149.77:34907

Le fichier de configuration doit être protégé afin d'empêcher l'accès à la clé privée du serveur.

 sudo chmod 600 /etc/wireguard/wg0.conf 

Le serveur VPN peut maintenant être démarré. Cette commande initialise l'interface réseau wg0 et active le tunnel WireGuard.

 sudo systemctl start wg-quick@wg0 

image 44

Afin que le VPN démarre automatiquement après un redémarrage du serveur, il est nécessaire d'activer le service correspondant dans systemd.

 sudo systemctl enable wg-quick@wg0 

Enfin il est possible de vérifier l'état du serveur WireGuard afin de confirmer que l'interface VPN fonctionne correctement et qu'elle est prête à accepter des connexions clients.

 sudo wg 

image 45

Le serveur VPN est maintenant opérationnel. Il pourra être utilisé pour sécuriser l'administration ainsi que les communications entre les différentes machines de l'infrastructure.

Lorsqu’un client VPN sera créé (ordinateur d’administration ou serveur secondaire 172.16.0.4), sa clé publique devra être ajoutée dans le fichier wg0.conf du serveur afin de l’autoriser à se connecter.

[Peer]
PublicKey = CLE_PUBLIQUE_CLIENT
AllowedIPs = 10.20.0.2/32