Table des matières
Debian 13 - Perfect Server
Installation
L'installation de Debian se fait sur base du stricte minimum, sans aucun package sélectionné lors de l'installation. On installera manuellement uniquement ce qui est nécessaire.
Outils de base
Cette liste d'outil est utile de base pour le serveur et son administration de base
apt install htop systemd-timesyncd ssh bash-completion ca-certificates wget
| Package | Déscription |
|---|---|
| htop | Gestionnaire de tâche, plus user friendly que top |
| systemd-timesyncd | Service NTP pour la synchronisation de l'horloge |
| ssh | Serveur et client SSH pour l'accès à distance |
| bash-completion | Permet de compléter facilement les commandes avec la touche *TAB* |
| ca-certificates | Magasin de certificat SSL |
| wget | Outil pour télécharger des fichiers |
Configuration de systemd-timesyncd
La configuration se passe dans etc/systemd/timesyncd.conf
[Time] NTP=pool.ntp.org
Note: Le pool de ntp.org propose automatiquement une IP proche de chez vous. Si vous avez un serveur NTP local, utilisez celui-là
On active le service et on le démarre en même temps :
systemctl enable --now systemd-timesyncd
Configuration de base
Package pour machine virtuelle (guest)
# Dans le cas d'une VM apt install open-vm-tools # Dans le cas d'un QEMU/KVM apt install qemu-guest-agent
Un redémarrage est nécessaire
Note: Il est possible que ce package soit nativement installé
Package pour machine physique (host)
Dans le cas d'une machine physique, il est nécessaire d'installer le microcode correspondant au processeur (amd64 ou intel)
apt install intel-microcode apt install amd64-microcode
Changer le hostname (Facultatif)
hostnamectl hostname <NewName>
Fichier a éditer :
/etc/hosts
Un redémarrage est nécessaire
Configuration réseau
1. Adressage de la carte réseau
La configuration réseau se trouve dans
/etc/network/interfaces
. Le nom de l'interface peut changer, dans mon cas elle se nomme “ens33”
DHCP
allow-hotplug ens33 iface ens33 inet dhcp
Static
allow-hotplug enp0s3 iface ens33 inet static address 192.168.88.200/24 gateway 192.168.88.1
Note: L'instruction netmask est déprécié, le champ est renseigné dans l'instruction address sous forme ip/netmask
Après le changement : systemctl restart networking
2. Serveur DNS
La configuration DNS se trouve dans /etc/resolv.conf
Note: Si la carte réseau a été en DHCP avant, le fichier contient le dernier serveur DNS qu'il a obtenu via DHCP.
nameserver <dns1> nameserver <dns2> domain <domain.local> search <domain1 domain2 domain3 ...>
Après avoir édité le fichier, vous pouvez bloquer son édition par sécurité avec chattr +i /etc/resolv.conf
Configuration du serveur SSH
Avant d'activer les paramètres d'authentification par clé publique, il est important d'avoir ajouté sa propre clé dans “authorized_keys”
Le fichier de configuration de base se trouve dans /etc/ssh/sshd_config mais commence par sourcer les fichiers se trouvant dans le dossier /etc/ssh/sshd_config.d/*.conf (Vide par défaut). Nous allons profiter de ce dossier pour écraser les valeurs par défaut
- /etc/ssh/sshd_config.d/10_base.conf
- ## Réseau
- # Changement du port d'écoute recommandé
- Port 22
- # Désactivation du TCP Forwarding (permettant de créer un tunnel sur le serveur)
- # ⚠️ Un tunnel est toujours possible au départ d'un shell
- AllowTcpForwarding no
- # Ne pas autoriser X11 (Interface graphique au départ de SSH)
- X11Forwarding no
- ## Authentication
- # Refuser le login root
- PermitRootLogin no
- # Autoriser uniquement les logins nécessaire
- AllowUsers gary
- ## Sécurité
- # Logging
- LogLevel VERBOSE
- # Logging SFTP
- Subsystem sftp /usr/lib/openssh/sftp-server -f AUTHPRIV -l INFO
Si vous souhaitez activer l'authentification par clé uniquement :
- /etc/ssh/sshd_config.d/20_auth.conf
- # Désactivation du login par mot de passe, par challenge/réponse, par mot de passe vide, par le module PAM
- # ⚠️ Nécessite une clé pour s'identifier !
- # <!--
- PasswordAuthentication no
- ChallengeResponseAuthentication no
- KbdInteractiveAuthentication no
- UsePAM no
- # Activation du login par clé publique uniquement (N'autorisera plus par mot de passe)
- PubkeyAuthentication yes
- AuthenticationMethods publickey
- # -->
N'oubliez pas de redémarrer le service ssh : systemctl restart sshd
Configuration supplémentaire
Mise à jour automatique
Afin de garder la distribution à jour de manière automatique
apt install unattended-upgrades apt-listchanges
Pour activer les mises à jour automatique:
dpkg-reconfigure unattended-upgrades
Cette commande créer le fichier /etc/apt/apt.conf.d/20auto-upgrades
La configuration se fait dans /etc/apt/apt.conf.d/50unattended-upgrades, vous pourrez par exemple ajouter votre mail afin d'avoir un rapport :
//Unattended-Upgrade::Mail "";
Firewall
Afin que le serveur ne soit pas inutilement exposé, un firewall basique va permettre de diminuer la surface d'attaque
apt install ufw
# Exemple d'autorisation du SSH ufw allow 22/tcp # Si on veut limiter sur une IP(/plage) ufw allow proto tcp from 192.168.0.0/24 to any port 22 # Activation du firewall ufw enable
Pour contrôller le status du firewall:
ufw status verbose
Changelog
Changement par rapport à l'article précédent (Debian 12 - Perfect Server):
- Moins de package de base à installer. Ils le sont déjà (dbus, nano, …)
- Configuration du serveur NTP
- Usage de hostnamectl pour changer le hostname de la machine
- Configuration SSH sur base de fichier source sans écraser la configuration d'origine (+ modulaire)
- Ajout de l'installation du microcode pour une machine physique
