Durcissement Linux : Une liste de contrôle en 15 étapes pour un serveur Linux sécurisé

Gus Khawaja

La plupart des gens supposent que Linux est sécurisé, et c’est une fausse hypothèse. Imaginez que votre ordinateur portable soit volé sans être durci au préalable. Un voleur supposerait probablement que votre nom d’utilisateur est « root » et votre mot de passe est « toor » car c’est le mot de passe par défaut sur Kali et la plupart des gens continuent de l’utiliser. Et toi ? J’espère que non.

Les conséquences négatives sur la carrière du choix de ne pas durcir votre hôte Linux Kali sont graves, donc je vais partager les étapes nécessaires pour sécuriser votre hôte Linux, y compris la façon dont j’utilise les tests de pénétration et Kali Linux pour faire le travail. Il est important de noter que, bien qu’il s’agisse de nombreuses distributions (AKA distributions) de Linux et que chacune diffère de la perspective de la ligne de commande, la logique est la même. Utilisez les conseils suivants pour durcir votre propre boîte Linux.

1- Documentez les informations d’hôte

Chaque fois que vous travaillez sur un nouveau travail de durcissement Linux, vous devez créer un nouveau document contenant tous les éléments de la liste de contrôle répertoriés dans cet article, et vous devez cocher chaque élément que vous avez appliqué. De plus, en haut du document, vous devez inclure les informations sur l’hôte Linux:

  • Nom de la machine
  • Adresse IP
  • Adresse Mac
  • Nom de la personne qui effectue le durcissement (très probablement vous)
  • Date
  • Numéro d’actif (Si vous travaillez pour une entreprise, vous devez inclure le numéro d’actif que votre entreprise utilise pour étiqueter les hôtes .)

2- Protection du BIOS

Vous devez protéger le BIOS de l’hôte avec un mot de passe afin que l’utilisateur final ne puisse pas modifier et remplacer les paramètres de sécurité dans le BIOS; il est important de protéger cette zone contre toute modification. Chaque fabricant d’ordinateur dispose d’un jeu de clés différent pour entrer en mode BIOS, il s’agit alors de trouver la configuration où vous définissez le mot de passe administratif.

Ensuite, vous devez désactiver le démarrage à partir de périphériques multimédias externes (USB / CD / DVD). Si vous omettez de modifier ce paramètre, n’importe qui peut utiliser une clé USB contenant un système d’exploitation amorçable et accéder aux données de votre système d’exploitation.

+ Vous voulez en savoir plus sur Linux ? En savoir plus avec Pluralsight, une plateforme d’apprentissage technologique. Apprenez Linux maintenant. +

Les cartes mères des derniers serveurs disposent d’un serveur Web interne où vous pouvez y accéder à distance. Assurez-vous de changer le mot de passe par défaut de la page d’administration ou de le désactiver si c’est possible.

3 – Chiffrement du disque dur (confidentialité)

La plupart des distributions Linux vous permettront de chiffrer vos disques avant l’installation. Le cryptage du disque est important en cas de vol car la personne qui a volé votre ordinateur ne pourra pas lire vos données si elle connecte le disque dur à sa machine.

Dans l’image ci-dessous, choisissez la troisième option dans la liste: Guidée – utilisez le disque entier et configurez LVM chiffré (LVM signifie gestionnaire de volume logique.)

Si votre distribution Linux ne prend pas en charge le cryptage, vous pouvez utiliser un logiciel comme TrueCrypt.

4- Protection du disque (disponibilité)

Les sauvegardes présentent de nombreux avantages en cas de système endommagé, de bugs dans la mise à jour du système d’exploitation. Pour les serveurs importants, la sauvegarde doit être transférée hors site en cas de sinistre. La sauvegarde doit également être gérée. Par exemple, combien de temps conserverez-vous les anciennes sauvegardes ? Quand avez-vous besoin de sauvegarder votre système (tous les jours, toutes les semaines …) ?

Les systèmes critiques doivent être séparés en différentes partitions pour:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

Le portionnement des disques vous offre la possibilité de performances et de sécurité en cas d’erreur système. Dans l’image ci-dessous, vous pouvez voir l’option de séparation des partitions dans Kali Linux lors de l’installation.

5- Verrouiller le répertoire de démarrage

Le répertoire de démarrage contient des fichiers importants liés au noyau Linux, vous devez donc vous assurer que ce répertoire est verrouillé aux autorisations en lecture seule en suivant les étapes simples suivantes. Tout d’abord, ouvrez le fichier « fstab ».

Ensuite, ajoutez la dernière ligne en surbrillance en bas.

Lorsque vous avez terminé de modifier le fichier, vous devez définir le propriétaire en exécutant la commande suivante:

#chown root:root /etc/fstab

Ensuite, j’ai défini quelques autorisations pour sécuriser les paramètres de démarrage:

  • Définit le propriétaire et le groupe de /etc/grub.conf à l’utilisateur root:

#chown root:root /etc/grub.conf

  • Définissez l’autorisation sur le fichier /etc/grub.fichier conf à lire et à écrire pour root uniquement:

#chmod og-rwx /etc/grub.conf

  • Authentification requise pour le mode mono-utilisateur:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6- Désactiver l’utilisation de la clé USB

Selon la critique de votre système, il est parfois nécessaire de désactiver l’utilisation des clés USB sur l’hôte Linux. Il existe plusieurs façons de refuser l’utilisation du stockage USB; en voici une populaire:

Ouvrez la « liste noire.fichier « conf » à l’aide de votre éditeur de texte préféré:

#nano /etc/modprobe.d/blacklist.conf

Lorsque le fichier s’ouvre, ajoutez la ligne suivante à la fin du fichier (enregistrer et fermer):

blacklist usb_storage

Après cela, ouvrez le rc.fichier local:

#nano /etc/rc.local

Enfin, ajoutez les deux lignes suivantes:

modprobe -r usb_storage

exit 0

7- Mise à jour du système

La première chose à faire après le premier démarrage est de mettre à jour le système; cela devrait être une étape facile. Généralement, vous ouvrez la fenêtre de votre terminal et exécutez les commandes appropriées. Dans Kali Linux, vous y parvenez en exécutant les commandes de l’image ci-dessous:

8- Vérifiez les paquets installés

Listez tous les paquets installés sur votre système d’exploitation Linux et supprimez ceux qui ne sont pas nécessaires. Vous devez être très strict si l’hôte que vous essayez de durcir est un serveur, car les serveurs nécessitent le moins d’applications et de services installés sur eux. Voici un exemple de la façon de lister les paquets installés sur Kali Linux:

N’oubliez pas que la désactivation des services inutiles réduira la surface d’attaque, il est donc important de supprimer les services hérités suivants si vous les avez trouvés installés sur le serveur Linux:

  • Serveur Telnet
  • Serveur RSH
  • Serveur NIS
  • Serveur TFTP
  • Serveur TALK

9- Vérifier les ports ouverts

Identifier les connexions ouvertes à Internet est une mission critique. Dans Kali Linux, j’utilise la commande suivante pour repérer les ports ouverts cachés:

10- SSH sécurisé

Oui, en effet SSH est sécurisé, mais vous devez également durcir ce service. Tout d’abord, si vous pouvez désactiver SSH, c’est un problème résolu. Cependant, si vous souhaitez l’utiliser, vous devez modifier la configuration par défaut de SSH. Pour ce faire, accédez à /etc/ssh et ouvrez le fichier « sshd_config » en utilisant votre éditeur de texte préféré.

  • Remplacez le numéro de port par défaut 22 par autre chose, par exemple 99.
  • Assurez-vous que root ne peut pas se connecter à distance via SSH:

PermitRootLogin no

  • Autoriser certains utilisateurs spécifiques:

AllowUsers

La liste peut s’allonger encore et encore, mais cela devrait suffire pour commencer. Par exemple, certaines entreprises ajoutent des bannières pour dissuader les attaquants et les décourager de continuer plus loin. Je vous encourage à consulter le manuel du SSH pour comprendre toutes les configurations de ce fichier, ou vous pouvez visiter ce site pour plus d’informations.

Voici quelques options supplémentaires dont vous devez vous assurer qu’elles existent dans le fichier « sshd_config:

  • Protocol2
  • IgnoreRhosts à yes
  • Hostbasedauthentification no
  • PermitEmptyPasswords no
  • X11pournon de stockage
  • MaxAuthTries 5
  • Chiffrements aes128-ctr, aes192- ctr, aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM oui

Enfin, définissez les autorisations sur le fichier sshd_config afin que seuls les utilisateurs root puissent modifier son contenu:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Activer SELinux

Security Enhanced Linux est un mécanisme de sécurité du noyau pour prendre en charge la stratégie de sécurité de contrôle d’accès. Le SELinux dispose de trois modes de configuration:

  • Désactivé : Désactivé
  • Permissif : Affiche les avertissements
  • Enforcing: La stratégie est appliquée

À l’aide d’un éditeur de texte, ouvrez le fichier de configuration:

#nano /etc/selinux/config

Et assurez-vous que la politique est appliquée:

SELINUX=enforcing

12- Paramètres réseau

La sécurisation des activités de votre réseau hôte Linux est une tâche essentielle. Ne supposez pas toujours que votre pare-feu s’occupera de tout. Voici quelques fonctionnalités importantes à prendre en compte pour sécuriser votre réseau hôte :

– Désactivez le transfert IP en définissant le réseau.ipv4.paramètre ip_forward à 0 dans « /etc/sysctl.conf »

– Activez la protection des messages d’erreur défectueux en définissant le réseau.ipv4.paramètre icmp_ignore_bogus_error_responses à 1 dans « /etc/sysctl.conf »

Je recommande fortement d’utiliser le pare-feu Linux en appliquant les règles iptable et en filtrant tous les paquets entrants, sortants et transférés. La configuration de vos règles iptables prendra un certain temps, mais cela en vaut la peine.

13- Politiques de mots de passe

Les gens réutilisent souvent leurs mots de passe, ce qui est une mauvaise pratique de sécurité. Les anciens mots de passe sont stockés dans le fichier « /etc/security/opasswd ». Nous allons utiliser le module PAM pour gérer les politiques de sécurité de l’hôte Linux. Sous une distribution debian, ouvrez le fichier « /etc/pam.d/common-password  » à l’aide d’un éditeur de texte et ajoutez les deux lignes suivantes:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 ( Ne permettra pas aux utilisateurs de réutiliser les quatre derniers mots de passe.)

Une autre stratégie de mot de passe qui devrait être forcée est les mots de passe forts. Le module PAM offre un pam_cracklib qui protège votre serveur contre les attaques par dictionnaire et par force brute. Pour accomplir cette tâche, ouvrez le fichier /etc/pam.d/system-auth en utilisant n’importe quel éditeur de texte et ajoutez la ligne suivante:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux hachera le mot de passe pour éviter de l’enregistrer en texte clair, vous devez donc vous assurer de définir un algorithme de hachage de mot de passe sécurisé SHA512.

Une autre fonctionnalité intéressante consiste à verrouiller le compte après cinq tentatives infructueuses. Pour cela, vous devez ouvrir le fichier « /etc/pam.d/password-auth » et ajoutez les lignes suivantes:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Nous n’avons pas encore terminé; une étape supplémentaire est nécessaire. Ouvrez le fichier « /etc/pam.d/system-auth » et assurez-vous d’avoir les lignes suivantes ajoutées:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Après cinq tentatives infructueuses, seul un administrateur peut déverrouiller le compte en utilisant la commande suivante:

#/usr/sbin/faillockuseruser < userlocked >resetreset

De plus, une autre bonne pratique consiste à définir le mot de passe pour qu’il expire après 90 jours, pour accomplir cette tâche, vous devez:

  • Définissez le paramètre PASS_MAX_DAYS sur 90 dans « /etc/login.defs »
  • Modifiez l’utilisateur actif en exécutant la commande suivante :

#chage --maxdays 90 <user>

La prochaine astuce pour améliorer les stratégies de mots de passe consiste à restreindre l’accès à la commande su en définissant le pam_wheel.so paramètres dans « /etc/pam.d/su » :

authentification requise pam_wheel.so use_uid

La dernière astuce pour la stratégie de mots de passe consiste à désactiver les comptes système pour les utilisateurs non root en utilisant le script bash suivant:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14- Permissions et vérifications

Préparez-vous mentalement car la liste va être longue. Mais les autorisations sont l’une des tâches les plus importantes et les plus critiques pour atteindre l’objectif de sécurité sur un hôte Linux.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Définissez les droits et les autorisations sur « /var/spool/cron » pour « crontab racine »

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Définir le Propriétaire de l’utilisateur/Groupe et l’autorisation sur le fichier « passwd »

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Définir le Propriétaire et l’autorisation de l’Utilisateur/du Groupe sur le fichier « groupe »

#chmod 644 /etc/group

#chown root:root /etc/group

Définir le propriétaire de l’utilisateur/du groupe et l’autorisation sur le fichier « shadow »

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Définir le Propriétaire de l’utilisateur/du groupe et l’autorisation sur le fichier « gshadow »

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- Durcissement de processus supplémentaire

Pour ce dernier élément de la liste, j’inclus quelques conseils supplémentaires qui devraient être pris en compte lors du durcissement d’un hôte Linux.

Tout d’abord, limitez les décharges de noyau par:

  • Ajout du noyau dur 0 au « /etc/security/limits ».conf » fichier
  • Ajout de fs.suid_dumpable = 0 au « /etc/sysctl.fichier « conf »

Deuxièmement, configurez le bouclier Exec par:

  • Ajout du noyau.exec-shield =1 au « /etc/sysctl.conf » fichier

Troisièmement, activez le Placement aléatoire de la Région de Mémoire virtuelle par:

  • Ajout du noyau.randomize_va_space =2 vers le « /etc/sysctl.fichier « conf »

Mots finaux

Dans ce court article, nous avons couvert de nombreuses configurations importantes pour la sécurité Linux. Mais, nous venons de rayer la surface du durcissement Linux — il y a beaucoup de configurations complexes et granuleuses. Pour en savoir plus sur la façon de durcir vos serveurs Linux pour une meilleure sécurité, consultez mes cours sur Pluralsight.

Gus Khawaja est consultant en sécurité et auteur chez Pluralsight. Il travaille dans les domaines de la sécurité, de l’informatique et du développement d’applications Web et crée des cours pour Pluralsight. Gus a fourni et développé avec succès des solutions informatiques pour des entreprises partout au Canada. Après de nombreuses années d’expérience en informatique, il s’est tourné vers la cybersécurité et l’importance que la sécurité apporte à ce champ de mines. Sa passion pour le piratage éthique mélangée à son expérience en programmation en font un sage professionnel du couteau suisse dans le domaine de l’informatique.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.