À l’ère d’Internet d’aujourd’hui, les problèmes de sécurité des réseaux sont devenus de plus en plus importants. Afin de protéger le système contre les attaques malveillantes et les accès non autorisés, le système d'exploitation a des exigences plus élevées en matière de mécanismes de sécurité. SELinux (Security-Enhanced Linux), en tant que module de sécurité du noyau Linux, fournit de puissantes politiques de sécurité et des mécanismes de contrôle d'accès, offrant une sécurité supplémentaire au système.
1. Le mode de fonctionnement de SELinux
SELinux adopte un mécanisme de contrôle d'accès obligatoire (MAC), différent du contrôle d'accès discrétionnaire (DAC) traditionnel. En mode DAC, le contrôle d'accès dépend du propriétaire de la ressource, c'est-à-dire que l'autorisation d'accès à la ressource est déterminée par le propriétaire de la ressource. Dans le mode MAC de SELinux, tous les accès aux ressources sont soumis à un contrôle de politique obligatoire strict, y compris les processus, fichiers, sockets, etc. Cela signifie que même si un utilisateur obtient les privilèges root, il ne peut pas contourner le mécanisme de protection SELinux.
Dans SELinux, chaque processus et objet a un contexte de sécurité correspondant. Le contexte de sécurité se compose d'une étiquette de sujet et d'une étiquette d'objet. L'étiquette de sujet représente les autorisations du processus et l'étiquette d'objet représente les autorisations de l'objet. Lorsqu'une requête est lancée, SELinux déterminera s'il convient d'autoriser la requête en fonction de la matrice de contrôle d'accès de l'étiquette de sujet et de l'étiquette d'objet.
2. Exemple de code spécifique
Ensuite, nous démontrerons le mode de fonctionnement de SELinux à travers un exemple de code simple. Dans cet exemple, nous allons créer un simple programme C qui tente d'ouvrir un fichier et d'écrire son contenu. Nous utiliserons les règles de sécurité de SELinux pour limiter les autorisations de ce programme.
Tout d'abord, nous devons nous assurer que SELinux est installé sur le système et que SELinux est activé. Ensuite, nous créons un fichier nommé "selinux_example.c" et écrivons le code suivant :
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> int main() { char *file_path = "/tmp/example.txt"; char *content = "Hello, SELinux!"; int fd = open(file_path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); if (fd < 0) { perror("open"); return 1; } if (write(fd, content, sizeof(content)) < 0) { perror("write"); close(fd); return 1; } close(fd); return 0; }
Dans ce programme, nous essayons d'ouvrir un fichier nommé "example.txt" et d'écrire le contenu "Bonjour, SELinux !" Ensuite, nous devons créer une politique de sécurité SELinux pour ce programme. Nous pouvons utiliser l'outil "audit2allow" pour générer une politique SELinux temporaire puis charger cette politique. Exécutez la commande suivante :
audit2allow -a -M my_selinux_example semodule -i my_selinux_example.pp
Après avoir généré la politique, nous pouvons exécuter le programme compilé et il devrait pouvoir écrire avec succès dans le fichier. Ensuite, nous pouvons visualiser le suivi et l'enregistrement des autorisations d'accès via le journal d'audit SELinux. Exécutez la commande suivante :
grep 'avc: ' /var/log/audit/audit.log | audit2why
Grâce à l'exemple de code et aux étapes ci-dessus, nous pouvons mieux comprendre le mode de fonctionnement de SELinux et comment protéger le système via des politiques de sécurité. SELinux fournit un mécanisme de sécurité puissant pour garantir que le système est protégé contre les attaques malveillantes et les abus. Si vous souhaitez en savoir plus sur SELinux, il est recommandé de consulter des informations et des documents plus pertinents pour en savoir plus sur la façon de rédiger et de gérer des politiques de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!