Concepts Fondamentaux de Sécurité (Triade CIA) sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une expérience pratique des principes fondamentaux de la sécurité de l'information, connus sous le nom de Triade CIA : Confidentialité, Intégrité et Disponibilité. En travaillant dans un environnement Linux, vous apprendrez des compétences pratiques pour protéger les données et assurer la fiabilité du système. Le laboratoire vous guidera à travers la configuration des permissions de fichiers, la démonstration de l'intégrité des fichiers avec des hachages cryptographiques et la simulation d'une surveillance de service de base pour comprendre comment ces concepts clés sont appliqués dans des scénarios réels.

Vous commencerez par manipuler les permissions de fichiers Linux en utilisant la commande chmod pour renforcer la confidentialité et l'intégrité d'un fichier sensible, en vous assurant qu'il n'est accessible et modifiable que par les utilisateurs autorisés. Ensuite, vous explorerez l'intégrité des fichiers en générant des hachages MD5 et SHA256 pour créer une référence, puis vous vérifierez que le fichier reste inchangé. Enfin, vous simulerez un service simple et utiliserez des commandes de surveillance de base pour comprendre le concept de disponibilité et comment détecter les interruptions de service.

Configurer les Permissions de Fichiers Linux pour la Confidentialité et l'Intégrité

Dans cette étape, vous apprendrez à utiliser les permissions de fichiers Linux fondamentales pour appliquer deux principes clés de la sécurité de l'information : la confidentialité et l'intégrité. La confidentialité garantit que les données ne sont accessibles qu'aux utilisateurs autorisés, tandis que l'intégrité garantit que les données ne sont pas modifiées de manière non autorisée. Vous allez créer un fichier, examiner ses permissions par défaut, puis utiliser la commande chmod pour restreindre l'accès et empêcher les modifications. Toutes les opérations seront effectuées dans votre répertoire de projet personnel, ~/project.

Maintenant, à l'intérieur du répertoire ~/project, créez un fichier d'exemple représentant des données sensibles. Nous utiliserons la commande echo pour y placer du texte.

echo "Top Secret Details" > confidential_data.txt

Vérifions que le fichier a été créé et affichons ses permissions par défaut à l'aide de la commande ls -l, qui fournit un format de liste détaillé.

ls -l confidential_data.txt

Vous verrez une sortie similaire à celle-ci. L'heure et la taille exactes peuvent varier.

-rw-rw-r-- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Décomposons la chaîne de permissions -rw-rw-r-- :

  • Le premier caractère - indique qu'il s'agit d'un fichier régulier.
  • Les trois caractères suivants rw- sont les permissions pour le propriétaire (utilisateur labex). r signifie lecture, w signifie écriture.
  • Les trois suivants rw- sont pour le groupe (groupe labex). Le groupe peut lire et écrire dans le fichier.
  • Les trois derniers r-- sont pour les autres (tous les autres utilisateurs du système). Ils ne peuvent également que lire le fichier.

Ce paramètre par défaut viole la confidentialité car tout utilisateur du système peut lire notre fichier "Top Secret". Corrigeons cela en modifiant les permissions de manière à ce que seul le propriétaire puisse lire et écrire. Nous utiliserons la commande chmod avec des codes numériques (octaux) : 4 pour la lecture, 2 pour l'écriture et 1 pour l'exécution. Pour donner au propriétaire l'accès en lecture/écriture (4+2=6) et supprimer tout accès pour le groupe (0) et les autres (0), nous utilisons le code 600.

chmod 600 confidential_data.txt

Vérifiez à nouveau les permissions :

ls -l confidential_data.txt

La sortie reflète maintenant les nouvelles permissions, plus sécurisées, qui renforcent la confidentialité.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Ensuite, protégeons l'intégrité du fichier en le rendant en lecture seule, même pour le propriétaire. Cela empêche les modifications accidentelles. Nous définirons les permissions sur 400, ce qui signifie lecture seule pour le propriétaire uniquement, maintenant ainsi la confidentialité et l'intégrité.

chmod 400 confidential_data.txt

Maintenant, essayons de modifier le fichier en y ajoutant du nouveau texte.

echo "This should not be added." >> confidential_data.txt

L'opération échouera et vous verrez une erreur "Permission denied". Cela démontre que l'intégrité du fichier est protégée contre les modifications.

zsh: permission denied: confidential_data.txt

Enfin, vérifiez les permissions une dernière fois pour voir l'état en lecture seule.

ls -l confidential_data.txt
-r-------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Vous avez configuré avec succès les permissions de fichiers pour protéger à la fois leur confidentialité et leur intégrité.

Démontrer l'Intégrité des Fichiers avec le Hachage (MD5/SHA256)

Dans cette étape, vous apprendrez à utiliser le hachage cryptographique pour vérifier l'intégrité des fichiers. Bien que les permissions de fichiers puissent empêcher les utilisateurs non autorisés de modifier un fichier, elles ne protègent pas contre les changements accidentels par un utilisateur autorisé ou des attaques plus sophistiquées. Une fonction de hachage crée une empreinte digitale unique (une chaîne de caractères de longueur fixe) pour un fichier. Même un changement d'un seul bit dans le fichier produira un hachage complètement différent, ce qui en fait un excellent outil pour détecter les falsifications. Nous utiliserons la commande sha256sum, un outil de hachage standard et sécurisé sous Linux.

Tout d'abord, assurez-vous d'être dans le bon répertoire. Si vous continuez depuis l'étape précédente, vous devriez déjà être dans ~/project.

Lors de la dernière étape, nous avons rendu confidential_data.txt en lecture seule pour protéger son intégrité. Pour démontrer le fonctionnement du hachage, nous devons d'abord rendre le fichier à nouveau inscriptible pour le propriétaire. Nous utiliserons chmod pour redonner les permissions d'écriture à l'utilisateur (u+w).

chmod u+w confidential_data.txt
ls -l confidential_data.txt

Les permissions devraient maintenant être -rw-------, indiquant que le propriétaire peut à nouveau écrire dans le fichier tout en maintenant la confidentialité.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Maintenant, générons le hachage SHA256 pour notre fichier original et fiable. Ce hachage servira de référence pour les vérifications d'intégrité.

sha256sum confidential_data.txt

La commande affichera une longue chaîne de caractères, qui est le hachage, suivie du nom du fichier.

106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Pour faciliter la vérification ultérieure, il est courant de sauvegarder cette valeur de hachage de référence dans un fichier séparé. Redirigeons la sortie de la commande vers un nouveau fichier nommé hashes.sha256.

sha256sum confidential_data.txt > hashes.sha256

Vous pouvez afficher le contenu de ce nouveau fichier pour confirmer que le hachage a été sauvegardé.

cat hashes.sha256
106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Maintenant, simulons une modification non autorisée. Nous allons ajouter une nouvelle ligne de texte à notre fichier sensible.

echo "This is an unauthorized modification." >> confidential_data.txt

Le fichier confidential_data.txt a maintenant été modifié. Pour vérifier son intégrité, nous pouvons utiliser l'option -c (ou --check) avec sha256sum, lui indiquant de comparer le hachage actuel du fichier avec la valeur de référence stockée dans hashes.sha256.

sha256sum -c hashes.sha256

Étant donné que le contenu du fichier a changé, le nouveau hachage ne correspondra pas au hachage stocké. La commande signalera un échec, prouvant que l'intégrité du fichier a été compromise.

confidential_data.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

Cette technique puissante vous permet de vérifier rapidement et de manière fiable si des fichiers ont été modifiés par rapport à leur état d'origine.

Simuler la Disponibilité du Service et la Surveillance de Base

Dans cette étape, vous explorerez le principe de l'Disponibilité, le troisième composant de la triade de sécurité CIA. La disponibilité garantit que les systèmes et les services sont opérationnels et accessibles lorsque nécessaire. Vous simulerez un service web simple, apprendrez à vérifier s'il est en cours d'exécution, simulerez une défaillance de service, puis rédigerez un script de surveillance de base pour automatiser la vérification de la disponibilité.

Tout d'abord, assurez-vous d'être dans le répertoire ~/project.

Nous utiliserons le serveur web intégré de Python pour simuler un service en cours d'exécution. Cette commande démarrera un serveur web sur le port 8000 et servira les fichiers du répertoire courant. Le & à la fin exécute le processus en arrière-plan, vous permettant de continuer à utiliser votre terminal.

python3 -m http.server 8000 &

Vous verrez un message indiquant que le processus a démarré, ainsi que son identifiant de processus (PID).

[1] 12345

Appuyez sur Entrée pour continuer.

Votre service est maintenant en cours d'exécution. Une manière basique de vérifier si un service est en cours d'exécution est de voir si son processus existe. Nous pouvons utiliser la commande pgrep pour trouver le PID d'un processus par son nom.

pgrep -f http.server

Cela devrait renvoyer le PID du processus serveur, confirmant qu'il est en mémoire.

12345

Cependant, un processus en cours d'exécution ne garantit pas que le service fonctionne correctement. Une meilleure vérification consiste à essayer de s'y connecter, comme le ferait un utilisateur. Nous utiliserons la commande curl pour envoyer une requête à notre serveur local.

curl http://localhost:8000/confidential_data.txt

Étant donné que le service est disponible, il répondra avec le contenu du fichier que vous avez créé lors des étapes précédentes.

Top Secret Details
This is an unauthorized modification.

Maintenant, simulons une défaillance de service. Nous utiliserons la commande kill pour terminer le processus du serveur web. Vous aurez besoin du PID que vous avez trouvé précédemment.

## Remplacez 12345 par le PID réel obtenu avec la commande pgrep
kill 12345

Après avoir exécuté kill, vous pourriez voir un message "Terminated" pour le job en arrière-plan. Essayons maintenant d'accéder à nouveau au service avec curl.

curl http://localhost:8000/confidential_data.txt

Cette fois, la commande échouera car le service n'est plus en cours d'exécution et ne peut pas accepter la connexion. Cela démontre un manque de disponibilité.

curl: (7) Failed to connect to localhost port 8000 after 0 ms: Connection refused

Enfin, créons un script de surveillance simple pour automatiser cette vérification. Créez un nouveau fichier nommé monitor.sh en utilisant nano.

nano monitor.sh

Entrez le script suivant dans l'éditeur. Ce script utilise curl pour vérifier le service. S'il obtient une réponse réussie (200 OK), il indique que le service est "UP" ; sinon, il indique "DOWN".

#!/bin/bash

## Vérifie si le service à localhost:8000 répond
if curl -s --head http://localhost:8000 | grep "200 OK" > /dev/null; then
  echo "Service Status: UP"
else
  echo "Service Status: DOWN"
fi

Enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y, et Entrée.

Rendez le script exécutable en utilisant chmod :

chmod +x monitor.sh

Exécutez maintenant votre script de surveillance. Comme le service est arrêté, il devrait indiquer "DOWN".

./monitor.sh
Service Status: DOWN

Vous avez maintenant appris à démarrer un service, à vérifier sa disponibilité, à simuler une défaillance et à créer un script de base pour le surveiller.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique des principes fondamentaux de la triade de sécurité CIA (Confidentialité, Intégrité, Disponibilité) à l'aide d'outils Linux courants. Vous avez appris à appliquer la Confidentialité en manipulant les permissions de fichiers sous Linux avec la commande chmod, en restreignant l'accès à un fichier sensible de manière à ce que seul le propriétaire autorisé puisse en consulter le contenu. De plus, vous avez exploré l'Intégrité en définissant d'abord les permissions de fichiers pour empêcher les modifications non autorisées, puis en utilisant des algorithmes de hachage comme MD5 et SHA256 pour générer une somme de contrôle unique, vous permettant de vérifier qu'un fichier n'a pas été falsifié.

Le concept de Disponibilité a été démontré en simulant l'état opérationnel d'un service et en effectuant une surveillance de base pour confirmer son accessibilité. Grâce à ces étapes pratiques, vous avez appliqué des commandes Linux fondamentales pour mettre en œuvre et comprendre concrètement les principes fondamentaux de la sécurité de l'information.