des services qu’il va héberger
Linux = polyvalent mais gros, *BSD plus minimaliste ?
Disponibilité des fonctionnalités souhaitées ?
du besoin d’avoir un support commercial (RHEL, SLES…)
parfois nécessaire pour le support des logiciels (Oracle…)
de la durée d’utilisation et la capacité de le maintenir à jour
RIP CentOS et bof pour BTW I use Arch
de la capacité à l’administrer !
Protéger le BIOS / UEFI
Mot de passe administrateur ?
Privilégier UEFI : SecureBoot
Mode 64 bits
Bit Intel VT-x / AMD V seulement si virtualisation nécessaire
Partitionner finement
N’installer que le strict minimum nécessaire
Pas d’interface graphique sur un serveur !
Durcir les options noyau (sysctl)
Durcir le système (règles sudoers granulaires…)
Durcir les services (empêcher les connexions root sur SSH…)
Filtrer les accès (Netfilter iptables / nftables)
Mot de passe root complexe et spécifique à ce système
Au coffre-fort ou dans un gestionnaire de mot de passe
Utiliser un secret distinct (passphrase ou token)
LUKS / LUKS2 (Linux) ou BitLocker (Windows Pro)
Impératif pour une station nomade !
Envisageable pour une station fixe
Permet d’éviter de disséminer des documents sensibles lors de la mise au rebus
Plus discutable pour un serveur
Comment saisir la passphrase ?
Prévoir une clé de séquestre (accident, réquisition judiciaire…)
Au coffre-fort ou dans un gestionnaire de mot de passe
| Point de montage |
Options | Description |
|---|---|---|
/ |
Racine, contient le reste | |
/boot |
nosuid,nodev,noexec( noauto optionnel) |
Contient le noyau et le bootloader, pas d’accès après démarrage sauf mise à jour |
/tmp |
nosuid,nodev,noexec |
Fichiers temporaires, ne doit pas contenir d’exécutables. Nettoyé après redémarrage, préférer du tmpfs |
/proc |
hidepid=2 |
Informations sur les processus et le système |
| Point de montage |
Options | Description |
|---|---|---|
/home |
nosuid,nodev,noexec( ro optionnel) |
Répertoires utilisateurs.ro si non utilisé.noexec à discuter sur station de travail |
/usr |
nodev |
Majorité des utilitaires (exécutables et bibliothèques) |
/var |
nosuid,nodev,noexec |
Fichiers variables pendant la vie du système (mails, BDD…) |
/var/log |
nosuid,nodev,noexec |
Journaux du système |
/var/tmp |
nosuid,nodev,noexec |
Fichiers temporaires conservés après extinction |
| Point de montage |
Options | Description |
|---|---|---|
/opt |
nosuid,nodev( ro optionnel) |
Packages additionnels.ro si non utilisé |
/srv |
nosuid,nodev( noexec,ro optionnels) |
Fichiers servis par un service |
D’après les Recommandations de sécurité relatives à un système GNU/Linux, ANSSI
Nota : utiliser correctement le système de fichier et se référer au Filesystem Hierarchy Standard, hier(7)
nodev empêche de jouer avec les fichiers spéciaux pour accéder sans droit ni titre à une partition autrement protégée (avec mknod utilisé par exemple sur une clé USB) :
brw-rw---- 1 root disk 8, 0 18 mars 16:29 sda
brw-rw---- 1 root disk 8, 1 18 mars 16:29 sda1
brw-rw---- 1 root disk 8, 2 18 mars 16:29 sda2
brw-rw---- 1 root disk 8, 3 18 mars 16:29 sda3
/var/log peut vous exploser à la figurer et bloquer le démarrage d’applications (comme X.org)
sysctl)Se référer aux Recommandations de sécurité relatives à un système GNU/Linux de l’ANSSI :
pour la pile réseau, durcir les configuration IPv4 et IPv6 face à des paquets peu commun ou non standards
ANSSI : serveur sans routage et avec adresse IPv6 statique
Pas d’IPv6 : net.ipv6.conf.all.disable_ipv6 = 1
pour le reste du systèmes, paramétrages de la mémoire, des processus, du système de fichiers…
# Pas de routage entre les interfaces
net.ipv4.ip_forward = 0
# Filtrage par chemin inverse
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ne pas envoyer de redirections ICMP
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Refuser les paquets de source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Ne pas accepter les ICMP de type redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# Loguer les paquets ayant des IPs anormales
net.ipv4.conf.all.log_martians = 1
# RFC 1337
net.ipv4.tcp_rfc1337 = 1
# Ignorer les réponses non conformes à la RFC 1122
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Augmenter la plage pour les ports éphémères
net.ipv4.ip_local_port_range = 32768 65535
# Utiliser les SYN cookies
net.ipv4.tcp_syncookies = 1
# Désactiver le support des "router solicitations"
net.ipv6.conf.all.router_solicitations = 0
net.ipv6.conf.default.router_solicitations = 0
# Ne pas accepter les "router preferences" par "router advertisements"
net.ipv6.conf.all.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
# Pas de configuration auto des prefix par "router advertisements"
net.ipv6.conf.all.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
# Pas d'apprentissage du routeur par défaut par "router advertisements"
net.ipv6.conf.all.accept_ra_defrtr = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
# Pas de configuration auto des adresses à partir des "router advertisements"
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
# Ne pas accepter les ICMP de type redirect
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Refuser les packets de source routing
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Nombre maximal d'adresses autoconfigurées par interface
net.ipv6.conf.all.max_addresses = 1
net.ipv6.conf.default.max_addresses = 1
# Désactivation des SysReq
kernel.sysrq = 0
# Pas de core dump des exécutables setuid
fs.suid_dumpable = 0
# Interdiction de déréférencer des liens vers des fichiers dont
# l'utilisateur courant n'est pas le propriétaire
# Peut empêcher certains programmes de fonctionner correctement
fs.protected_symlinks = 1
fs.protected_hardlinks = 1
# Activation de l'ASLR
kernel.randomize_va_space = 2
# Interdiction de mapper de la mémoire dans les adresses basses (0)
vm.mmap_min_addr = 65536
# Espace de choix plus grand pour les valeurs de PID
kernel.pid_max = 65536
# Obfuscation des adresses mémoire kernel
kernel.kptr_restrict = 1
# Restriction d'accès au buffer dmesg
kernel.dmesg_restrict = 1
# Restreint l'utilisation du sous système perf
kernel.perf_event_paranoid = 2
kernel.perf_event_max_sample_rate = 1
kernel.perf_cpu_time_max_percent = 1
Pour afficher ou masquer ces notes à côté des slides, ajouter dans l'URL :
Actions clavier :