Gaetan J
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 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*

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully