Maison  >  Article  >  Opération et maintenance  >  Quels sont les trois modes de fonctionnement de SELinux ?

Quels sont les trois modes de fonctionnement de SELinux ?

青灯夜游
青灯夜游original
2023-02-13 10:04:136196parcourir

SELinux dispose de trois modes de fonctionnement : Désactivé, Permissif et Enforcing. En mode Désactiver, SELinux est désactivé et la méthode de contrôle d'accès DAC par défaut est utilisée. En mode permissif, SELinux est activé, mais les règles de politique de sécurité ne sont pas appliquées ; l'accès est toujours autorisé lorsque les règles de politique de sécurité devraient refuser l'accès. En mode Enforcing, SELinux est démarré et toutes les règles de politique de sécurité sont appliquées.

Quels sont les trois modes de fonctionnement de SELinux ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Qu'est-ce que SELinux

SELinux, l'abréviation de Security Enhanced Linux, qui signifie Linux à sécurité améliorée, a été développée conjointement par la National Security Agency (NSA) des États-Unis et d'autres agences de sécurité (telles que SCC Corporation ). Il est conçu pour améliorer la sécurité du système d'exploitation Linux traditionnel et résoudre divers problèmes d'autorisation dans le système de contrôle d'accès discrétionnaire (DAC) dans les systèmes Linux traditionnels (tels que des autorisations root excessives, etc.).

Le projet SELinux était open source sous licence GPL en 2000. SELinux est progressivement devenu populaire lorsque Red Hat a inclus SELinux dans sa distribution Linux. Aujourd'hui, SELinux est largement utilisé par de nombreuses organisations, et presque toutes les versions 2.6 et supérieures du noyau Linux ont intégré les fonctions SELinux.

Les débutants peuvent comprendre SELinux de cette manière. Il s'agit d'un module fonctionnel déployé sur Linux pour améliorer la sécurité du système.
Nous savons que dans les systèmes Linux traditionnels, les autorisations par défaut servent à contrôler les autorisations de lecture, d'écriture et d'exécution du propriétaire, du groupe et des autres personnes d'un fichier ou d'un répertoire. Cette méthode de contrôle est appelée Méthode de contrôle d'accès discrétionnaire (DAC) . Dans SELinux, le système de contrôle d'accès obligatoire (MAC) est utilisé, qui consiste à contrôler si un processus a des droits d'accès aux fichiers ou aux répertoires sur un système de fichiers spécifique, et la base pour déterminer si un processus peut accéder aux fichiers ou aux répertoires. , en fonction de nombreuses règles de politique définies dans SELinux.

En parlant de cela, il est nécessaire que les lecteurs comprennent en détail les caractéristiques de ces deux systèmes de contrôle d'accès :

  • Le contrôle d'accès discrétionnaire (DAC) est la méthode de contrôle d'accès par défaut de Linux, qui est basée sur l'utilisateur. L'identité et les autorisations rwx de l'identité sur les fichiers et les répertoires sont utilisées pour déterminer s'ils sont accessibles. Cependant, nous avons également trouvé quelques problèmes dans l'utilisation réelle du contrôle d'accès DAC :
    Les autorisations root sont trop élevées et les autorisations rwx ne sont pas efficaces pour l'utilisateur root. Une fois l'utilisateur root volé ou l'utilisateur root lui-même fonctionne mal. endommagera le système Linux.
    Les autorisations par défaut de Linux sont trop simples. Elles n'ont que l'identité du propriétaire, du groupe auquel ils appartiennent et des autres personnes. Les autorisations n'ont que des autorisations de lecture, d'écriture et d'exécution, ce qui n'est pas propice à la subdivision et à la subdivision des autorisations. paramètre.
    Une attribution déraisonnable d'autorisations entraînera de graves conséquences, telles que la définition d'autorisations 777 pour les fichiers ou répertoires sensibles du système, ou la définition d'autorisations spéciales - autorisations SetUID pour les fichiers sensibles, etc.
  • Contrôle d'accès obligatoire (MAC) contrôle l'accès de processus spécifiques aux ressources de fichiers système via les règles de politique par défaut de SELinux. En d’autres termes, même si vous êtes un utilisateur root, si vous utilisez un processus incorrect lors de l’accès à une ressource fichier, vous ne pourrez pas accéder à la ressource fichier.

De cette manière, SELinux contrôle non seulement les utilisateurs et les autorisations, mais également les processus. Les ressources de fichiers auxquelles chaque processus peut accéder et les processus auxquels chaque ressource de fichier peut accéder sont déterminés par la politique de règles SELinux.

Notez que dans SELinux, les autorisations par défaut de Linux sont toujours efficaces. En d'autres termes, pour qu'un utilisateur puisse accéder à un fichier, les autorisations de l'utilisateur doivent se conformer aux autorisations rwx, et le processus de l'utilisateur est requis. pour se conformer aux réglementations de SELinux.

Cependant, il y a tellement de processus et tellement de fichiers dans le système que si l'allocation et la spécification sont effectuées manuellement, la charge de travail sera trop importante. Par conséquent, SELinux fournit de nombreuses règles de politique par défaut, qui sont relativement complètes. Nous apprendrons plus tard comment afficher et gérer ces règles de politique.

Afin de donner aux lecteurs une compréhension claire du rôle joué par SELinux, voici un exemple Supposons qu'une vulnérabilité soit découverte dans Apache, qui permet à un utilisateur distant d'accéder à des fichiers sensibles du système (tels que /etc/shadow). . Si SELinux est activé dans notre Linux, alors, comme le processus du service Apache n'a pas l'autorisation d'accéder à /etc/shadow, l'accès de l'utilisateur distant au fichier /etc/shadow via Apache sera bloqué par SELinux, qui protège Linux. Le rôle du système.

Modes de fonctionnement SELinux (Désactivé, Permissif et Enforçant)

Basé sur la méthode de contrôle d'accès utilisée par les systèmes Linux traditionnels, l'utilisation supplémentaire de SELinux peut améliorer la sécurité du système. Alors, comment fonctionne SELinux ?

Avant d'expliquer le mode de fonctionnement de SELinux, expliquons d'abord quelques concepts.

1.Sujet : C'est le processus qui souhaite accéder aux ressources d'un fichier ou d'un répertoire. Pour obtenir des ressources, le processus de base est le suivant : l'utilisateur appelle une commande, la commande génère un processus et le processus accède à la ressource du fichier ou du répertoire. Dans un système de contrôle d'accès discrétionnaire (autorisations par défaut Linux), le sujet contrôlé par les autorisations est l'utilisateur ; dans un système de contrôle d'accès obligatoire (SELinux), le sujet contrôlé par les règles de politique est le processus.
2. Object (Object) : Ce concept est relativement clair, c'est la ressource fichier ou répertoire à laquelle il faut accéder.
3. Politique : Il existe un grand nombre de processus et de fichiers dans le système Linux, donc le nombre de règles SELinux qui limitent l'accès des processus aux fichiers est encore plus fastidieux si chaque règle doit être définie manuellement par l'administrateur. , alors la disponibilité de SELinux sera extrêmement faible. Heureusement, nous n'avons pas besoin de définir manuellement les règles. SELinux définit deux politiques par défaut. Les règles ont été écrites dans ces deux politiques. Par défaut, appelez simplement la politique et elle peut être utilisée normalement. Les deux politiques par défaut sont les suivantes :

  • -targeted : Il s'agit de la politique par défaut de SELinux. Cette politique limite principalement les services réseau et a très peu de restrictions sur le système local. Cette stratégie nous suffit.
  • -mls : Stratégie de protection de sécurité à plusieurs niveaux, cette stratégie est plus restrictive.

4. Contexte de sécurité : Chaque processus, fichier et répertoire a son propre contexte de sécurité. Le fait que le processus puisse accéder au fichier ou au répertoire dépend de la correspondance du contexte de sécurité. Si le contexte de sécurité du processus correspond au contexte de sécurité du fichier ou du répertoire, le processus peut accéder au fichier ou au répertoire. Bien entendu, pour déterminer si le contexte de sécurité d'un processus correspond au contexte de sécurité d'un fichier ou d'un répertoire, vous devez vous fier aux règles de la stratégie.

Par exemple, nous devons trouver un partenaire, les hommes peuvent être considérés comme le sujet et les femmes comme les cibles. Le fait qu'un homme puisse poursuivre une femme (si le sujet peut accéder à la cible) dépend principalement de l'adéquation des personnalités des deux personnes (si les contextes de sécurité du sujet et de la cible correspondent). Cependant, la compatibilité des personnalités de deux personnes doit être jugée en fonction de conditions spécifiques telles que les habitudes de vie, le comportement, l'environnement familial, etc. (la concordance du contexte de sécurité doit être déterminée par les règles de la politique).

Dessinons un diagramme schématique pour montrer la relation entre ces concepts, comme le montre la figure 1.

Quels sont les trois modes de fonctionnement de SELinux ?
Figure 1 Concepts pertinents du mode de fonctionnement SELinux

Expliquez ce diagramme schématique : Lorsque le sujet souhaite accéder à la cible, si SELinux est démarré dans le système, la demande d'accès du sujet doit d'abord être mise en correspondance avec la politique définie dans Correspondance SELinux. Si le processus est conforme aux règles définies dans la politique, l'accès est autorisé. À ce stade, le contexte de sécurité du processus peut être mis en correspondance avec le contexte de sécurité de la cible ; si la comparaison échoue, l'accès est refusé et le vecteur d'accès est mis en cache ; est transmis via AVC (Access Vector Cache). Principalement utilisé pour enregistrer toutes les statistiques d'accès liées à SELinux) et générer des informations de refus d'accès. Si le contexte de sécurité correspond, le fichier cible est accessible normalement. Bien entendu, la question de savoir si le fichier cible est réellement accessible dépend du fait que l'utilisateur qui a créé le processus (sujet) dispose d'autorisations raisonnables de lecture, d'écriture et d'exécution sur le fichier cible.

Lorsque nous gérons SELinux, nous modifions généralement uniquement > le contexte de sécurité d'un fichier ou d'un répertoire afin qu'il corresponde ou non au contexte de sécurité du processus d'accès pour contrôler si le processus peut accéder aux ressources du fichier ou du répertoire ; Il est rare de modifier les règles spécifiques de la politique car il y a trop de règles et c'est trop compliqué à modifier. Cependant, nous pouvons définir manuellement si les règles prennent effet pour contrôler l'activation et la désactivation des règles.

Modes de travail de SELinux

SELinux propose 3 modes de fonctionnement : Désactivé, Permissif et Enforçant, et chaque mode offre des avantages différents pour la sécurité du système Linux.

  • Désactiver le mode de travail (mode arrêt)

En mode Désactiver, SELinux est désactivé et la méthode de contrôle d'accès DAC par défaut est utilisée. Ce mode est utile pour les environnements qui ne nécessitent pas de sécurité renforcée.

Par exemple, si une application en cours d'exécution fonctionne correctement de votre point de vue, mais génère un grand nombre de messages de rejet SELinux AVC, elle peut éventuellement remplir le fichier journal et rendre le système inutilisable. Dans ce cas, la solution la plus simple consiste à désactiver SELinux, mais vous pouvez également définir le contexte de sécurité correct sur les fichiers auxquels votre application accède.

Il convient de noter qu'avant de désactiver SELinux, vous devez déterminer si SELinux peut être à nouveau utilisé sur le système. Si vous décidez de le définir sur Enforcing ou Permissive à l'avenir, le système transmettra un fichier SELinux automatique lorsque le système sera activé. redémarré la prochaine fois.

La façon de désactiver SELinux est également très simple. Modifiez simplement le fichier de configuration /etc/selinux/config et remplacez SELINUX= dans le texte par SELINUX=disabled. Après avoir redémarré le système, SELinux sera désactivé.

  • Mode de travail permissif (mode permissif)

En mode permissif, SELinux est activé, mais les règles de politique de sécurité ne sont pas appliquées. Lorsque les règles de politique de sécurité doivent refuser l’accès, l’accès est toujours autorisé. Cependant, un message est envoyé au fichier journal indiquant que l'accès doit être refusé.

Le mode permissif SELinux est principalement utilisé dans les situations suivantes :
Consultez les règles de politique SELinux actuelles ;
Testez de nouvelles applications pour voir quel effet les règles de politique SELinux auront lorsqu'elles seront appliquées à ces programmes ;
Résolvez un service ou un problème spécifique. Un échec ; où l'application ne fonctionne plus correctement sous SELinux.

Dans certains cas, la commande audit2allow peut être utilisée pour lire le journal d'audit SELinux et générer de nouvelles règles SELinux pour autoriser sélectivement les comportements refusés. C'est également un moyen d'autoriser les applications sans désactiver SELinux. Un moyen rapide de faire fonctionner les programmes sous Linux. systèmes.

  • Enforcing working mode (enforcement mode)

Comme le montre le nom de ce mode, en mode Enforcing, SELinux est démarré et toutes les règles de politique de sécurité sont appliquées.

Recommandations associées : "Tutoriel vidéo Linux"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn