# Hardening Linux
###### Tags: `Linux` `Hardening`
# Wiki Linux
## Contexte
Dans le cadre de notre module de sécurisation linux, nous devons hardener un linux selon les recommandations préconisées de l'ANSSI par le guide "Recommandations de sécurité relatives à un système GNU/LINUX".
Nous utilisons le guide en version 1.2.
> Score lynis de base : 58%
## Mise en oeuvre
### 🧰 Recommandations minimales
#### Application systématique des correctifs et des mises à jour
Il est important de suivre les mises à jour des composants installés sur le serveur. Pour ce faire, plusieurs possibilités s'offrent à nous.
##### ⚙ Installation automatique des mises à jour de sécurité
Il est possible d'installer de manière automatisée les mises à jours des paquets sur le serveur.
Pour ce faire, on peut utiliser l'outil `unattended-upgrades`.
###### Installation de l'outil
```bash
sudo apt install unattended-upgrades
sudo systemctl enable --now unattended-upgrades
```
###### Configuration
Afin d'automatiser l'installation des paquets de sécurité, il faut décommenter les deux lignes correspondant aux dépots sécurité.
```bash
# /etc/apt/apt.conf.d/50unattended-upgrades
...
Unattended-Upgrade::Origins-Pattern {
//"origin=Debian,codename=${distro_codename}-updates";
//"origin=Debian,codename=${distro_codename}-proposed-updates";
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
//"o=Debian,a=stable";
//"o=Debian,a=stable-updates";
//"o=Debian,a=proposed-updates";
//"o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
};
...
```
Enfin, il faut activer les mises à jour automatiques
```bash
# /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
```
- **Update-Package-Lists** : Mise à jour automatique des dépots.
- **Unattended-Upgrade** : Mise à jour automatique des paquets.
- **AutocleanInterval** : Nettoyage automatique des paquets tous les `X` jours.
#### Choix des dépôts de paquets
#### Protection des mots de passe stockés
Il est préférable de stocker les mots de passes des comptes utilisateurs de manière sécurisée. Pour cela, on peut notamment utiliser l'algorithme de hashage SHA-512. Cette configuration est à effectuer au niveau de PAM et du fichier `login.defs`.
```bash
# /etc/pam.d/common-password
...
password required pam_unix.so obscure sha512 rounds=65536
...
```
```bash
# /etc/login.defs
...
ENCRYPT_METHOD SHA512
SHA_CRYPT_MIN_ROUNDS 65536
...
```
#### Minimisation des services installés
Il est possible de lister les services réseaux actuellement en écoute sur le serveur afin d'effectuer un tri et de supprimer/désactiver les services inutiles.
```bash
ss -a -t state listening -p
```
#### Création d'une politique de mots de passe
##### Durée de vie des mots de passe
Afin de s'assurer que les mots de passes soient changés régulièrement, il faut éditer les directives suivantes :
```bash
# /etc/login.defs
...
PASS_MAX_DAYS 90 # 3 mois
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
...
```
Les directives sont les suivantes :
- **PASS_MAX_DAYS** : Correspond à la durée du vie maximale d'un mot de passe
- **PASS_MIN_DAYS** : Correspond à la durée de vie minimale d'un mot de passe
- **PASS_WARN_AGE** : Correspond au nombre de jour avant l'expiration pour envoyer une alerte concernant l'expiration d'un mot de passe
##### Installation & configuration de PAM
Pluggable Authentication Modules (PAM) permet de contrôler les authentifications et les autorisations sur un système Linux.
###### Installation de PAM
L'installation de PAM se fait via la commande suivante :
```bash
apt install libpam-pwquality
```
###### Configuration de PAM
PAM peut être utilisé afin de forcer une politique de mots de passes (notamment au niveau de leur format).
Pour cela, il faut éditer différents fichiers de configuration.
```bash
# /etc/pam.d/common-password
...
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1
...
```
Les paramètres sont les suivants :
- `retry=` : Nombre de tentatives de connexion autorisées
- `minlen=` : Longueur minimale du mot de passe
- `ucredit=` : Permet de force l'utilisation de caractère majuscule dans le mot de passe (`-1` = 1 majuscule obligatoire)
- `lcredit=` : Permet de force l'utilisation de caractère minuscule dans le mot de passe (`-1` = 1 minuscule obligatoire)
- `dcredit=` : Permet de force l'utilisation de caractère numériques dans le mot de passe (`-1` = 1 chiffre obligatoire)
```bash
# /etc/pam.d/common-auth
...
auth [success=1 default=ignore] pam_unix.so nullok remember=2
...
```
Les paramètres sont les suivants :
- `remember=` : Nombre de mot de passes enregistrés (impossible de réutiliser les X derniers mots de passes définis)
#### Sécurisation des services systemd
Il est possible de vérifier le niveau d'exposition de chaque service exécuté au travers de systemd via la commande suivante :
```bash
systemd-analyze security monservice
```
A l'issue de cette commande, un rapport est affiché avec un niveau d'exposition du service de manière globale ainsi que par mesure.
#### Politiques de connexion
->fail2ban
#### Installation d'un anti-malware
L'utilisation d'un anti-malware est tout aussi important sur linux que sur Windows.
Une protection en temps réelle est nécessaire afin d'éviter d'avoir son système compromis par des menaces existantes et connues.
Nous recommandons l'utilisation de Clam-AV, un anti-malware opensource connu et facile d'utilisation.
##### Installation des packages
```bash
apt install clamav clamav-deamon
```
##### Mise à jour de la base antivirale
```bash
freshclam
```
##### Activation des services
```bash
systemctl enable clamav-daemon
systemctl enable clamav-freshclam
```
##### Génération des configurations
```bash
clamconf -g freshclam.conf > /etc/clamav/freshclam.conf
clamconf -g clamd.conf > /etc/clamav/clamd.conf
```
##### Modification des configurations
```bash
#/etc/clamav/freshclam.conf
LogTime yes
LogSyslog yes
Checks 1
```
##### Creation d'une tâche cron pour un scan journalier
```bash
crontab -e
0 12 * * * clamav -r / --quiet
```
<hr>
### Recommandations Intermédiaire
#### Limitation des droits SUID
#### Sécurisation du service SSH
Toutes les mesures appliquées ci-dessous sont extraites de différents guides.
##### Forcer la version 2 du protocole SSH
Les versions antérieures à la version 2 d'SSH présentant des vulnérabilités structurelles et étant aujourd'hui déprécié, il est fortement recommandé de bloquer toutes les versions antérieures à cette dernière.
Pour ce faire, il suffit de définir la directive suivante dans la configuration du serveur SSH :
```bash
# /etc/ssh/sshd_config
Protocol 2
```
> Gains Lynis : 2 pts
##### Choisir les algorithmes de chiffrement
Les échanges au travers d'un tunel SSH sont chiffrés à l'aide d'algorithmes de chiffrement symétriques. Ce choix est effectué selon une négociation entre le serveur et le client. Afin d'interdir les algorithmes non fiables, il est nécessaire de spécifier une liste de méthodes explicitement autorisées de la manière suivante :
```bash
# /etc/ssh/sshd_config
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
```
##### Interdire les redirections de flux
Cette fonctionnalité étant souvent utilisée comme rebond pour accéder à d'autres serveur, sauf besoin spécifique, il est préférable d'interdire les redirections de flux au travers d'SSH.
```bash
# /etc/ssh/sshd_config
AllowTcpForwarding no
X11Forwarding no
```
##### Réduire le temps d'inactivité autorisé
Afin de prévenir un accès non autorisé à une connexion SSH établie, il peut être intéressant de réduire le temps d'inactivité autorisé avant rupture de la session.
```bash
# /etc/ssh/sshd_config
# Les connexions seront rompues au bout de 2x60=120sec d'inactivité
ClientAliveCountMax 2
ClientAliveInterval 60
```
##### Désactiver la compression
Afin de se prévenir des attaques de type [BREACH](https://en.wikipedia.org/wiki/BREACH), il est préférable de désactiver la compression au niveau du service SSH.
```bash
# /etc/ssh/sshd_config
Compression no
```
##### Adapter le niveau de logs
Afin de détecter les échecs de connexions au service SSH, il peut être intéressant de modifier le niveau de logs.
```bash
# /etc/ssh/sshd_config
LogLevel VERBOSE
```
##### Réduire le nombre de tentative d'authentification
Le fait de réduire le nombre de tentative d'authentification peut permettre de ralentir les tentatives d'attaques par force brute. En effet, la connexion sera fermé par le serveur au bout de X tentatives.
```bash
# /etc/ssh/sshd_config
MaxAuthTries 3
```
##### Réduire le nombre maximum de sessions simultannées
Afin de réduire l'exposition du serveur en cas de compromission, il peut être intéressant de réduire le nombre de session simultannées autorisées au stric minimum.
```bash
# /etc/ssh/sshd_config
MaxSessions 2
```
##### Interdire la connexion à l'utilisateur root
Les bonnes pratiques consistent à ne pas autoriser la connexion à l'utilisateur root via le protocole SSH. Il peut cependant dans certains cas être nécessaire de l'autoriser. On préférera alors utiliser une directive interdisant la connexion par mot de passe.
```bash
# /etc/ssh/sshd_config
PermitRootLogin no # Interdit la connexion à l'utilisateur root
#PermitRootLogin WITHOUT-PASSWORD # Interdit la connexion à l'utilisateur root via un mot de passe
```
#### Options de montage
Il est important de ségmenter les partitions afin de pouvoir délimiter les actions des différents services par les options de point de montage.
* nodev — Désactive les périphériques.
* nosuid — Désactive le bit SETUID et SETGID.
* noexec — Désactive l'exécution de binaire.
```bash!
#etc/fstab
/home /home ext4 defaults,nosuid,noexec,nodev 1 2
/tmp /tmp ext4 defaults,bind,nosuid,noexec,nodev 1 2
/var /var ext4 defaults,bind,nosuid,noexec,nodev 1 2
/usr /usr ext4 defaults,nodev 1 2
/srv /srv ext4 defaults,nosuid,nodev,noexec 1 2
/opt /opt ext4 defaults,nosuid,nodev 1 2
```
Gain Lynis : 3 points
Ce qui a changé dans le résultat de l'audit :
- Mount options of / [NON DEFAULT]
- Mount options of /boot [HARDENED]
- Mount options of /dev [PARTIALLY HARDENED]
- Mount options of /dev/shm [PARTIALLY HARDENED]
- Mount options of /home [HARDENED]
- Mount options of /run [HARDENED]
- Mount options of /tmp [HARDENED]
- Mount options of /var [HARDENED]
#### Règles de trafic local et sortant
##### Bloquer tout le trafic entrant et le transfert de paquets par défaut
Afin de limiter la surface d'attaque, il est préférable d'adopter une politique de type "Interdit par défaut" et d'ouvrir les flux réseau au cas par cas.
Pour bloquer les paquets par défaut, on utilise les commandes suivantes :
```bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # Autorise les connexions SSH entrantes
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Autorise les flux établis (typiquement les connexion initiés par le serveur)
```
##### Bloquer le trafic sortant
Afin d'éviter q'un serveur puisse interragir avec le monde extérieur de manière libre en cas de compromission, une bonne pratique consiste à filtrer les paquets sortants du serveur.
Ainsi, on bloque tout par défaut, et on autorise selon les besoins :
```bash
iptables -P OUTPUT DROP
```
#### Paramètrage des sysctl système
```bash
#/etc/sysctl.conf
# 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
```
Gain Lynis : 0 points
Ce qui a changé dans les résultats de l'audit:
- fs.protected_symlinks (exp: 1) [ OK ]
- kernel.perf_event_paranoid (exp: 3) [ DIFFÉRENT ]
- kernel.sysrq (exp: 0) [ OK ]
#### Paramètrage des sysctl réseau
```bash!
# 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
```
Gain Lynis : 3 points.
Ce qui a changé dans les résultats de l'audit :
- net.ipv4.conf.all.accept_redirects (exp: 0) [ OK ]
- net.ipv4.conf.all.accept_redirects (exp: 0) [ OK ]
- net.ipv4.conf.all.log_martians (exp: 1) [ OK ]
- net.ipv4.conf.all.rp_filter (exp: 1) [ OK ]
- net.ipv4.conf.all.send_redirects (exp: 0) [ OK ]
- net.ipv4.conf.default.accept_redirects (exp: 0) [ OK ]
- net.ipv4.conf.default.accept_source_route (exp: 0) [ OK ]
- net.ipv6.conf.all.accept_redirects (exp: 0) [ OK ]
- net.ipv6.conf.default.accept_redirects (exp: 0) [ OK ]
#### Répertoires temporaires
Afin de s'assurer qu'aucun utilisateur ne puisse accéder ni voir aux fichiers temporaires d'un autre autre utilisateur, il est possible de s'appuyer sur le module `pam_namespace`.
Pour ce faire, il faut dans un premier temps décommenter les lignes suivantes :
```bash
# /etc/security/namespace.conf
/tmp /tmp-inst/ level root,adm
/var/tmp /var/tmp/tmp-inst/ level root,adm
$HOME $HOME/$USER.inst/ level
```
Enfin, il faut s'assurer que la ligne suivante est présente :
```bash
# /etc/pam.d/login
...
session required pam_namespace.so
...
```
#### Désactivation des modules kernel inutiles
Pour désactiver les modules kernel inutilisés, il suffit d'ajouter le fichier suivant dans le dossier `/etc/modprobe.d` :
```bash
# /etc/modprobe.d/blacklist.conf
install dccp /bin/true
install sctp /bin/true
install rds /bin/true
install tipc /bin/true
```
> Ci dessus, une liste non exhaustive de modules souvent inutiles
#### Installation de paquet
Afin de garantir une installation plus sûre des différents paquets via l'utilitaire `apt`, il est possible d'installer des outils complémentaires :
- `apt-listbugs` : Vérifier qu'un paquet ne contienne pas de bug grave avant de l'installer.
- `apt-listchanges` : Afficher les nouvelles entrées du journal des modifications dans les archives des paquets Debian.
- `needrestart` : Vérifier quels démons doivent être redémarrés après la mise à jour des bibliothèques.
- `debsums` : Vérifier les sommes de contrôle MD5 des paquets Debian installés
### Recommandations Renforcé
#### Désactivation du chargement des modules noyau
Cette options permet d'empêcher certains pirates d'utiliser les LKM pour les rootkits (knark et adore) afin d'installer des portes dérobées sur des systèmes GNU/Linux.
```bash!
#/etc/sysctl.conf
kernel.modules_disabled = 1
```
Gain point Lynis : 0 point
Ce qui a changé dans les résultats de l'audit:
- kernel.modules_disabled (exp: 1) [ OK ]
#### Mot de passe du chargeur de démarrage
Il est important de mettre un mot de passe au chargeur de démarrage (GRUB) car il permet de lancer un shell root lors du démarrage du système sans mot de passe si cela n'est pas configuré.
##### Créer un mot de passe pour le grub
Rentrer le mot de passe suite à la commande suivante :
```bash!
grub-mkpasswd-pbkdf2
```
> Le hash PBKDF2 du mot de passe est : grub.pbkdf2.sha512.10000.94D20026B678543E8D170512325620C95CA8B719D05E4D7A6A4FA29ECA4BC2D81CA51D9B6985AEA968B8921C7B0AFD71790D1861FE2A3374A056BAD4CB5D92F9.22EBA19B56F3BF89A16D640A1A060198EF1E6276F111C5E6A8084128D70C9A6CA74DC65CE6108BC30F964D98079B685043E9BE8DCC549229E9CD2EE06FC69985
Copier la fin de la ligne correspondant à "grub.pbkdf2.sha512.1000.[...]"
##### Modification de la configuration du grub
```bash!
# /etc/grub.d/00_header | à la fin du fichier
cat << EOF
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.94D20026B678543E8D170512325620C95CA8B719D05E4>
EOF
```
##### Appliquer les modifications du grub
```bash
update-grub
```
Gain point Lynis : 1 point.
Ce qui a changé dans le résultat de l'audit :
- Checking for password protection [ OK ]
#### Configuration sysctl du module Yama
Yama permet de contrôler les droits d'accès à l'appel système *ptrace*. Cela permet d'éviter de récupérer des données sensibles par rebond lorsqu'un processus est compromis.
```
# /etc/sysctl.conf
kernel.yama.ptrace_scope = 1
```
Gain point Lynis : 0 point.
Ce qui a changé dans le réultat de l'audit :
- kernel.yama.ptrace_scope (exp: 1 2 3) [ OK ]
#### Journalisation de l'activité par auditd
L'activité du système doit être journalisé, l'ANSSI propose de le faire par auditd.
```bash
# /etc/audit/audit.rules
# Exécution de insmod , rmmod et modprobe
-w /sbin/insmod
-p x
-w /sbin/modprobe -p x
-w /sbin/rmmod
-p x
# Journaliser les modifications dans /etc/
-w /etc/ -p wa
# Surveillance de montage/démontage
-a exit ,always -S mount -S umount2
# Appels de syscalls x86 suspects
-a exit ,always -S ioperm -S modify_ldt
# Appels de syscalls qui doivent être rares et surveillés de près
-a exit ,always -S get_kernel_syms -S ptrace
-a exit ,always -S prctl
# Rajout du monitoring pour la création ou suppression de fichiers
# Ces règles peuvent avoir des conséquences importantes sur les
# performances du système
-a exit ,always -F arch=b64 -S unlink -S rmdir -S rename
-a exit ,always -F arch=b64 -S creat -S open -S openat -F exit=-EACCESS
-a exit ,always -F arch=b64 -S truncate -S ftruncate
-F exit=-EACCESS
# Verrouillage de la configuration de auditd
-e 2
```
Gaint point Lynis : 1 point.
Ce qui a changé dans le résultat de l'audit :
- Checking auditd [ ACTIVÉ ]
- Checking audit rules [ SUGGESTION ]
- Checking audit configuration file [ OK ]
- Checking auditd log file [ TROUVÉ ]
#### Restriction des accès des services déployés
#### Durcissement des composants de virtualisation
#### Restrictions d'accès sur le ?
#### Dépôts de paquets durcis
#### Désactivation des comptes utilisateurs inutilisés
Afin de prévenir toute intrusion, il est préférable dans la mesure du possible de désactiver tous comptes utilisateurs non utilisés ou tous comptes utilisateurs associés à un service.
Afin de désactiver un compte, il suffit d'exécuter les commandes suivantes :
```bash
# Verrouillage d'un compte
usermod -L <compte>
# Désactivation de son shell de login
usermod -s /bin/false <compte>
```
#### Valeur de UMASK
La valeur de UMASK pour les utilisateurs doit être positionné à 0077 (tout fichier créé par un utilisateur n’est lisible et modifiable que par lui-même).
```bash
# /etc/login.defs
...
UMASK 022
...
```
#### Modification DNS
Afin de sécuriser l'échange d'informations DNS et de garantir leur intégrité, il est recommandé d'activer DNSSEC ainsi que DNS over TLS :
```bash
# /etc/systemd/resolved.conf
[Resolve]
DNS= 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001
FallbackDNS= 9.9.9.9 2620:fe::fe
DNSSEC=yes
DNSOverTLS=yes
```
Afin d'appliquer les changements :
```bash
systemctl restart resolved
```
<hr>
### Recommandations Elevé
#### Desactiver les ports USB
Les ports USB peuvent devenir des portes d'entrée vulnérables quand le serveur n'est pas protégé physiquement.
```
#/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="nousb"
```
#### Outil de contrôle d'intégrité
Il est recommandé d'utiliser des outils permettant d'assurer que certains fichiers restent intègres.
Nous allons utiliser AIDE qui permet d'obtenir une base de donnée (Advanced Intrusion Detection Environment).
##### Installation du paquet AIDE
```bash!
apt install aide
```
##### Initialisation de AIDE
Il faut initialiser AIDE afin d'obtenir la base de signature initiale.
```bash!
aideinit
```
Cela créer une base dans le dossier **/var/lib/aide/aide.db.new**
Pour la mettre en place :
```bash!
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
```
L'agent est actif, il suffit de faire une tâche CRON pour mettre à jour la base de données et avoir un rapport tous les jours.
#### Activation du process accounting
#### Cloisonnement du service syslog par conteneur
#### Activation des profils de sécurité AppArmor
#### Activation de SELinux avec la politique targeted
#### Paramètrage des booléns SELinux
#### Désinstallation des outils de débogage de politique SELinux
#### Application de l'option IOMMU
L’activation du service d’IOMMU permet de protéger la mémoire du système vis-à-vis d’accès arbitraires réalisés par des périphériques.
```bash!
# /etc/default/grub
GRUB_CMDLINE_LINUX="iommu=force"
```
Score Lynis : +1 %
<hr>
<hr>
### Recommandations optionnelles
#### bannière / motd
/etc/issue
/etc/issue.net
#### Monitoring des ressources
## Kernel modules
/etc/modprobe.d/blacklist.conf
## Permission de ficher
/home
# Guide Linux ANSSI - Recommandations de sécurité relatives à un système GNU/LINUX
*Cf. https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/ v1.2- ANSSI*