Skip to main content

Création de la template Debian

Pour se simplifier la vie et gagner du tempstemps, nous allons créer uneun template que nous allons cloner. aÀ certains momentmoments, nous la rallumerons pour faire certaines modifications mais je préciseraisciserai à 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ée nous allons créer notre VM Template avec 2 coeur,coeurs, 2 gigaGo de ramRAM et 16Go de stockage. Pour la majorité des services que nous allons utilisé,utiliser, ceci est largement suffisant. D'autant plus qu'à la fin de la mise en place dedu template nous allons de nouveau réduire sa taille afin que les VM soient leles minimumplus possible.minimales possibles.

Attention, qqchquelque chose de très important!important on! On ne fait jamais le easy install! çÇa ne sert à rien

SISi Dansdans l'hypervieurshyperviseur Debian 13 n'est pas proposé dans VMWare, utiliséutilisez debianDebian 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,installation classique, cela ne change pas. jeJe faitfais personnellement avec interfaceInstall car je suis plus habitué

AÀ titre personnelpersonnel, je met toujours mes machines Linux en anglais car il existe plein de tutotutos qui sont en anglais et que je préfèresre (je maismets 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électionnerlectionnez en LOCALE celle des États-Unis

celaCela 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

ceciCeci 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 parlesparle beaucoup. Comme j'aime beaucoup le seigneurs des anneaux je vais l'appeler "sauron"sauron. Je rappelrappelle que ceci est un tutotutoriel à but non non-commercial, en entreprise veillez à respecter la charte de l'entreprise si vous ne voulez pas vous faire détruire par votre DSI.

pourPour 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

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

parPar 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ée ne sera effacée

pasPas besoin de scanner d'autres medias d'installations, nous allons ensuite utiliser les dépotpôts 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 peu 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 "Standardstandard system utilities" qui vont nounous ssimplifiersimplifier la vie pour plus tard

Choississez d'installer grub sur le disque principal et sélectionner lectionnez-le, cela fera gagner du temps à chaque démarrage de la VM

Une fois tout cela fait on peut redémarrer la machine. (Et avoir pris un café en attendant que l'installation se termine)

Une fois la machine redémarrermarrée on fait un update dans le doute pour être sursûr d'avoir la dernière version des paquets

sudo apt update && sudo apt upgrade -y

Configuration de sshd

Maintenant pour se simplifier les commande,commandes, nous allons utiliser ssh depuis un terminal pour opuvoirpouvoir 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 l'accepter.

Clé ssh

seSe connecter par mot de passe c'est simple mais pas sécurisés.. Même si le protocolprotocole est chiffré, il fautvaut 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.

etEt si on réessaye désormais de cese connecter en indiquandindiquant 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 doitdois 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

onOn va désormais modifier sa configuration pour interdire certainscertaines truc.choses. Sur Debian, le fichier de configuration du serveur est /etc/ssh/sshd_config

dansDans 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émmaremarre ensuite le service ssh pour qu'il estaie c'estcette nouvelle configuration

sudo systemctl restart sshd

Si vous pouvez toujours vous connecter avec la clé sshssh, bravo vous avez réussisussi 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éoublier que la plupart des attaques viennesviennent 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

pourPour 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,atteint, ce qui limite la zone d'attaque

laLa 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;
    }
}

puisPuis on n'oublie pas d'enable et de redémarrer le service

sudo systemctl enable nftables
sudo systemctl restart nftables

desDes bons moyens de vérifier que cela fonctionne c'estsont 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                                     [::]:*

depuisDepuis une machine distante (remplacerremplacez 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

attentionAttention avec nmap, si vous faitefaites du scan de portports sur une machine qui ne vous appartient pas, cela peut vous causer des soucis juridiquejuridiques 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 parrraitraitparraîtrait un peu trop suspect selon des règles prédéfinisfinies

installations

sudo apt install fail2ban -y

configuration

Fail2ban peut être très dangereux, on ne compte plus le nombre de personnepersonnes qui ont bloqué leur machine avec de fail2ban. Impossible de se connecter en ssh.ssh et ils ont du se connecter en physique dessus

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

avecAvec tout ceci, le serveur Debian a une base très solide. Il faudra faire attention dès qu'on installerasinstallera un serviceservice, qu'on ouvre bien le/les port(s) correspondant.correspondant(s).