Création de la template Debian
Pour se simplifier la vie et gagner du temps nous créer une template que nous allons cloner. a certains moment nous la rallumerons pour faire certaines modifications mais je préciserais à quel moment.
Donc dans un premier temps nous allons récupérer l'ISO de Debian 13 disponible ici.
Une fois l'image téléchargé nous allons créer notre VM Template avec 2 coeur, 2 giga de ram et 16Go de stockage. Pour la majorité des services que nous allons utilisé, ceci est largement suffisant. D'autant plus qu'à la fin de la mise en place de template nous allons de nouveau réduire sa taille afin que les VM soient le minimum possible.
Attention, qqch de très important! on ne fait jamais le easy install! ça ne sert à rien
SI Dans l'hypervieurs Debian 13 n'est pas proposé dans VMWare, utilisé debian 12, mais utilisé l'ISO Debian 13
Vous devez avoir une ressemblance comme ceci
Configuration Debian
Pour la configuration on peut faire avec l'interface graphique ou en interface, cela ne change pas. je fait personnellement avec interface car je suis plus habitué

]
(https://wiki.cclaudel.fr/uploads/images/gallery/2026-02/fTljJINzKnOMFLyo-image-1771940512625.png)
A titre personnel je met toujours mes machines Linux en anglais car il existe plein de tuto qui sont en anglais et que je préfères (je mais ensuite le clavier en azerty) mais là vous pouvez faire ce que vous voulez

Pour la région j'habite en France, je vais donc mettre France

Si vous avez fait comme moi, sélectionner en LOCALE celle des États-Unis

cela vous demandera ensuite le clavier et là mettez ce que vous préférez

Pour le hostname, il faut toujours mettre un nom parlant, dans mon cas ce sera debian-template

Pour le moment on laisse le domaine à vide

ceci est un long débat sur comment administrer une machine Linux. Pour moi, il ne faut pas utiliser le compte root, il ne faut donc pas lui donner de mot de passe comme cela, ce sera notre utilisateur qui sera dans le groupe sudo et root n'a pas de mot de passe

Pour le nom d'utilisateur, nous allons donner un nom qui nous parles beaucoup. Comme j'aime beaucoup le seigneurs des anneaux je vais l'appeler "sauron". Je rappel que ceci est un tuto à but non commercial, en entreprise veillez à respecter la charte de l'entreprise si vous ne voulez pas vous faire détruire par votre DSI.

pour son mot de passe mettez en un, mais on ne vas pas s'en servir beaucoup. Il faut juste qu'il soit assez sécurisées selon l'ANSII (au moins 14 caractères)
Le stockage on ne vas pas le chiffrer car cela pourrait compromettre certaines applications

et pour la répartition, nous sommes un serveur, utilisons la répartition serveurs. La répartion "All files in one partiotion" est très bien aussi et si vous avez peur de mal faire qqch, utilisez là sans soucis.

par la suite n'oubliez pas d'effacer ce qu'il y a sur le disque. Pas de panique, les environnements sont isolés donc aucune donnée privé ne sera effacé
pas besoin de scanner d'autres medias d'installations, nous allons ensuite utiliser les dépot apt. Sélectionnez le plus proche de vous pour attendre le moins

Pour l'usage des paquets il est toujours préférable de le désactiver car cela garde un d'anonymat. Très utile quand on veut gérer une infra qui n'est pas publique

Pour la configuration de base, nous allons juste garder "SSH server" et "Standard system utilities" qui vont nou ssimplifier la vie pour plus tard

Choississez d'installer grub sur le disque principal et sélectionner le, cela fera gagner du temps à chaque démarrage de la VM
Une fois tout cela fait on peut redémarrer la machine.
Une fois la machine redémarrer on fait un update dans le doute pour être sur d'avoir la dernière version des paquets
sudo apt update && sudo apt upgrade -y
Configuration de sshd
Maintenant pour se simplifier les commande, nous allons utiliser ssh depuis un terminal pour opuvoir copier les commandes.
Pour se connecter à ssh il nous faut d'abord l'IP de la machine avec la commande ip a
Et on regarde si on peut se connecter avec le mot de passe
$ ssh sauron@172.16.37.156
The authenticity of host '172.16.37.156 (172.16.37.156)' can't be established.
ED25519 key fingerprint is SHA256:VS4y14DFvnqnTrRkuzQAPVqJQGsBxEpDl4TIB8M9Npc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.37.156' (ED25519) to the list of known hosts.
sauron@172.16.37.156's password:
Linux debian-template 6.12.73+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.73-1 (2026-02-17) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
sauron@debian-template:~$
a la première connection on vous mettra cette alerte, c'est normal il faut y accepter.
Clé ssh
se connecter par mot de passe c'est simple mais pas sécurisés. Même si le protocol est chiffré, il faut mieux utiliser une clé ssh.
Sur la machine hôte on va créer une clés ssh avec la commande ssh suivante
ssh-keygen -t ed25519 -C "infra-admin@cclaudel.fr" -f ~/.ssh/dev_key
puis ensuite nous allons ensuite la pousser avec la commande ssh-copy-id
$ ssh-copy-id -i ~/.ssh/dev_key.pub sauron@172.16.37.156
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cclaudel/.ssh/dev_key.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sauron@172.16.37.156's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -i /home/cclaudel/.ssh/dev_key 'sauron@172.16.37.156'"
and check to make sure that only the key(s) you wanted were added.
et si on réessaye désormais de ce connecter en indiquand la clé privée à utiliser
$ ssh -i ~/.ssh/dev_key sauron@172.16.37.156
Linux debian-template 6.12.73+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.73-1 (2026-02-17) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Feb 24 15:40:52 2026 from 172.16.37.1
Configuration ssh
Ce tuto est un peu long je suis d'accord (Et c'est encore plus long pour moi car je doit tout rédiger en faisant le tuto directement)
Mais on s'accroche, cette partie est très longue, mais très importante pour sécurisés son serveur
on désormais modifier sa configuration pour interdire certains truc. Sur Debian, le fichier de configuration du serveur est /etc/ssh/sshd_config
dans le fichier il faut décommenter et/ou modifier les informations suivantes
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 2
PasswordAuthentification no
PermitEmptyPasswords no
On redémmare ensuite le service ssh pour qu'il est c'est nouvelle configuration
sudo systemctl restart sshd
Si vous pouvez toujours vous connecter avec la clé ssh bravo vous avez réussis cette étape !
Sécurisation du serveur
Bien que le serveur ne soit pas exposés directement à internet (en tout cas ceux dans Lan admin), il ne faut pas oublié que la plupart des attaques viennes de l'intérieur du réseau. On va donc rajouter deux outils simples et essentiels pour plus de sécurités:
- nftables: pare feu interne à la machine
- fail2ban: une protection des attaques par brutes forces sur le serveur
nftabels
installation
pour installer nftables sur la vm, la commande est simple
sudo apt install nftables -y
Configuration
Dans la template nous allons ouvrir uniquement le port ssh, le reste n'a pas besoin de communiquer et d'être atteind, ce qui limite la zone d'attaque
la règle SSH doit être active à chaque redémarrage. Pour que ce soit effectif, nous allons changer le fichier de configuration présent /etc/nftables.conf
#!/usr/sbin/nft -f
# On vide les règles existantes
flush ruleset
table inet filter {
chain input {
# Politique par défaut : on bloque tout ce qui entre
type filter hook input priority 0; policy drop;
# Autoriser le trafic sur la boucle locale (indispensable au système)
iif "lo" accept
# Autoriser le trafic des connexions déjà établies (pour que le serveur puisse répondre)
ct state established,related accept
# Autoriser le port SSH (22)
tcp dport 22 accept
}
chain forward {
# Politique par défaut : on bloque le routage (inutile sauf si c'est un routeur)
type filter hook forward priority 0; policy drop;
}
chain output {
# Politique par défaut : on autorise tout ce qui sort du serveur
type filter hook output priority 0; policy accept;
}
}
puis on oublie pas d'enable et de redémarrer le service
sudo systemctl enable nftables
sudo systemctl restart nftables
des bons moyens de vérifier que cela fonctionne c'est d'utiliser les outils ss et nmap
En local sur le serveur
$ ss -ltun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 172.16.37.156:68 0.0.0.0:*
udp UNCONN 0 0 [fe80::3a7e:e4e1:998:3f06]%ens33:546 [::]:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
depuis une machine distante (remplacer l'ip par la votre)
$ sudo nmap -sV -p- 172.16.37.156
Starting Nmap 7.95 ( https://nmap.org ) at 2026-02-24 16:27 CET
Nmap scan report for 172.16.37.156
Host is up (0.00036s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 10.0p2 Debian 7 (protocol 2.0)
MAC Address: 00:0C:29:1E:1D:3B (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 104.66 seconds
attention avec nmap, si vous faite du scan de port sur une machine qui ne vous appartient pas, cela peut vous causer des soucis juridique car c'est complètement illégal
On n'oublie pas d'essayer dans une nouvelle session de se reconnecter en ssh!
fail2ban
fail2ban est un standard de la sécurité pour bloquer ce qui parrraitrait un peu trop suspect selon des règles prédéfinis
installations
sudo apt install fail2ban -y
configuration
Fail2ban peut être très dangereux, on ne compte plus le nombre de personne qui ont bloqué leur machine avec de fail2ban. Impossible de se connecter en ssh.
on va donc créer une sauvegarde de notre fichier de base avec la commande suivante
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bck
puis ensuite nous alonns créer le fichier /etc/fail2ban/jail.local avec le contenu suivant
[DEFAULT]
banaction = nftables-multiport
banaction_allports = nftables-allports
backend = systemd
[sshd]
enabled = true
port = ssh
filter = sshd
bantime = 3600
maxretry = 3
et puis on redémmare le service
sudo systemctl restart fail2ban
Conclusion
avec tout ceci, le serveur Debian a une base très solide. Il faudra faire attention dès qu'on installeras un service on ouvre bien le/les port(s) correspondant.



