GNU/Linux >> Tutoriels Linux >  >> Linux

Quatre commandes semanage pour maintenir SELinux en mode d'application

Pendant des années, SELinux a contribué à prévenir les dommages causés aux systèmes par les exploits zero-day. Cet outil est également utile pour l'isolation des machines virtuelles et est requis pour l'isolation des conteneurs. Pourtant, SELinux est encore couramment désactivé ou placé en mode permissif.

targeted de SELinux La stratégie est conçue pour isoler divers domaines de processus tout en permettant l'interaction entre les services selon les besoins. Quelques commandes suffisent à un administrateur pour configurer un système afin d'utiliser cette politique avec ses applications personnalisées, en gardant SELinux en mode d'application.

[En savoir plus sur l'utilisation de la documentation sur la politique SELinux ici.]

Le semanage La commande est utilisée pour ajuster les contextes de fichier, les contextes de port et les booléens. S'il existe toujours un conflit avec un processus particulier, ce domaine peut être placé en mode permissif jusqu'à ce qu'une enquête plus approfondie puisse être effectuée. Cela laisse le reste du système protégé en mode application.

Avec seulement les quatre semanage commandes ci-dessous, la plupart des systèmes peuvent être configurés pour que vos applications personnalisées s'exécutent avec SELinux en mode d'application.

Le semanage boolean commande

Le targeted la politique inclut de nombreux booléens pour activer et désactiver les ensembles de allow règles, en partant du principe que les services ont plusieurs cas d'utilisation et sont exécutés différemment dans chaque environnement. L'utilisation de booléens permet différents ensembles de règles pour différents cas d'utilisation :un serveur Web dans un environnement universitaire peut avoir besoin d'autoriser les étudiants à publier du contenu à partir de leurs répertoires d'accueil, tandis qu'un site d'entreprise destiné au public peut avoir besoin de refuser l'accès à tout utilisateur répertoires, limiter les exécutables SSI et afficher les données stockées sur un partage NFS.

Le httpd_selinux La page de manuel décrit l'utilisation de tous les booléens fournis pour le httpd domaine ainsi qu'un exemple de setsebool commandes pour activer de manière persistante chaque booléen. Une autre façon (et plus récente) de voir et de modifier ces booléens consiste à utiliser le semanage boolean commande.

Le -l L'option répertorie tous les booléens de la stratégie chargée. Vous pouvez ensuite filtrer par mot-clé :

$ sudo semanage boolean -l | grep httpd
httpd_anon_write               (off  ,  off)  Allow httpd to anon write
httpd_builtin_scripting        (on   ,   on)  Allow httpd to builtin scripting
httpd_can_check_spam           (off  ,  off)  Allow httpd to can check spam
httpd_can_connect_ftp          (off  ,  off)  Allow httpd to can connect ftp
httpd_can_connect_ldap         (off  ,  off)  Allow httpd to can connect ldap

Cette sortie inclut le nom du booléen, l'état actuel et persistant du booléen et une brève description de la façon dont le booléen est utilisé.

Changer le booléen avec semanage utiliser :

$ sudo semanage boolean -m --off httpd_ssi_exec 

Vous pouvez également lister les booléens personnalisés localement en ajoutant le -C choix :

$ sudo semanage boolean -l -C
SELinux boolean                State  Default Description

httpd_ssi_exec                 (off  ,  off)  Allow httpd to ssi exec
virt_sandbox_use_all_caps      (on   ,   on)  Allow virt to sandbox use all caps
virt_use_nfs                   (on   ,   on)  Allow virt to use nfs

Les pages de manuel de chaque domaine SELinux contiennent des descriptions de tous les booléens fournis pour ces domaines. Pour plus d'options lors de la modification des booléens SELinux avec semanage , voir le semanage-boolean page de manuel.

Vous pouvez automatiser ces semanage commandes avec leurs modules et rôles Ansible associés. Le module Ansible pour semanage boolean est seboolean . Ceci, ainsi que les modules associés décrits ci-dessous, sont utilisés par les rôles fournis par linux-system-roles package dans Fedora ou rhel-system-roles package dans Red Hat Enterprise Linux. Le package Red Hat est disponible à partir de Red Hat Enterprise Linux 7.4 et se trouve dans le référentiel "Extras".

Le semanage fcontext commande

Le targeted La stratégie fournit des informations de contexte de fichier pour le fichier d'application, y compris les fichiers de données, de journal et d'exécution, les emplacements alternatifs par défaut et communs. Ces définitions de contexte sont les mappings que le restorecon commande utilise pour vérifier ou modifier le contexte du fichier.

Le semanage fcontext La commande peut être utilisée pour répertorier les définitions de contexte de fichier et en ajouter d'autres. Le -l L'option affiche tous les contextes de la stratégie chargée. Vous pouvez ensuite filtrer par mot-clé :

$ sudo semanage fcontext -l | grep sshd
/etc/rc\.d/init\.d/sshd                            regular file       system_u:object_r:sshd_initrc_exec_t:s0 
/etc/ssh/primes                                    regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key                            regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key\.pub                       regular file       system_u:object_r:sshd_key_t:s0 
/usr/lib/systemd/system/sshd-keygen.*              regular file       system_u:object_r:sshd_keygen_unit_file_t:s0 

Cette sortie inclut le modèle d'expression régulière pour les noms de fichiers cibles, le type de fichier et le contexte de fichier à attribuer au nom de fichier correspondant.

La page de manuel associée, dans ce cas man sshd_selinux , inclut une liste des fichiers gérés et une description de chaque contexte de fichier disponible pour le domaine. Il existe également des exemples de commandes pour spécifier et appliquer un autre étiquetage.

Par exemple, si vous vouliez stocker le sshd host keys dans un sous-répertoire séparé, vous pouvez exécuter les deux commandes suivantes :

$ sudo semanage fcontext -a -t sshd_key_t '/etc/ssh/keys(/.*)?'
$ sudo restorecon -r /etc/ssh/keys

Dans cet exemple, l'expression régulière correspondra au répertoire /etc/ssh/keys ainsi que tous les sous-répertoires et fichiers trouvés dans le /etc/ssh/keys répertoire.

Tout comme les booléens, vous pouvez afficher tous les contextes de fichiers personnalisés localement en ajoutant le -C choix :

$ sudo semanage fcontext -l -C
SELinux fcontext                                   type               Context

/usr/share/dnfdaemon/dnfdaemon-system              all files          system_u:object_r:rpm_exec_t:s0 

Pour plus d'options lors de la modification des contextes de fichiers SELinux, consultez le semanage-fcontext page de manuel.

Vous pouvez automatiser le semanage fcontext commande avec Ansible sefcontext module. Le restorecon La commande devra toujours être exécutée avec un module de commande séparé. Voir ansible-doc sefcontext pour des exemples. Le selinux  le rôle système inclut les deux tâches.

Le semanage port commande

En plus des contextes de fichiers, le targeted La stratégie définit également les contextes de port. Tout comme pour les booléens et les contextes de fichiers, les pages de manuel spécifiques au domaine répertorient les types définis et peuvent également afficher les exemples de commandes nécessaires pour exécuter un service sur un port différent.

Visualisez les contextes de ports avec :

$ sudo semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

Lors de l'exécution d'un service sur un port personnalisé, vous devez modifier le fichier de configuration du service et également ajouter une définition de port SELinux. Sans la définition du port, le service ne parviendra pas à démarrer et consignera une erreur semblable à "Impossible de se lier au port".

Ajoutez une définition de port avec :

$ sudo semanage port -a -t http_cache_port_t -p tcp 8010

Lorsque vous spécifiez le port, vous devez inclure à la fois le protocole et le numéro de port. De plus, un seul type peut être défini pour chaque protocole et numéro de port. Pour plus d'options lors de la modification des contextes de port SELinux, consultez le semanage-port page de manuel.

Vous pouvez automatiser le semanage-port commande avec le seport Module ansible.

Le semanage permissive commande

Au lieu de déplacer l'ensemble du système en mode permissif, ou pire, de désactiver complètement SELinux, vous pouvez placer un seul domaine en mode permissif. Un domaine en mode permissif autorise toutes les actions tout en enregistrant tout refus éventuel. Les autres domaines du système restent en mode d'application, qui enregistre et refuse les actions qui ne sont pas spécifiquement autorisées.

Les pages de manuel pour les domaines communs répertorient les types SELinux qui peuvent être placés en mode permissif.

Pour répertorier tous les domaines actuellement en mode permissif, utilisez :

$ sudo semanage permissive -l 

Lors de l'installation initiale, il est peu probable qu'il y ait des domaines en mode permissif.

Pour placer un domaine en mode permissif, utilisez :

$ sudo semanage permissive -a squid_t

Le -d supprime un domaine permissif, réactivant ainsi le mode d'application pour ce domaine.

Pour plus d'options lors du placement de domaines en mode permissif, consultez le semanage-permissive page de manuel.

Ansible selinux_permissive module peut être utilisé pour placer un domaine en mode permissif. Voir ansible-doc selinux_permissive pour des exemples.

Les fichiers

L'ensemble du semanage les commandes qui ajoutent ou modifient les informations de stockage de la configuration de la stratégie ciblée dans *local fichiers sous /etc/selinux/targeted arborescence de répertoires. Ces fichiers comportent tous des avertissements indiquant qu'ils ne doivent pas être modifiés directement, mais sont utilisés pour préserver la personnalisation. Lorsque les packages SELinux et de stratégie sont mis à jour, ces fichiers de personnalisation locaux sont laissés en place et appliqués à la stratégie mise à jour.


Linux
  1. 10+ commandes Linux VI avec des exemples

  2. Définir le mode d'application de SELinux avec Ansible

  3. 25 commandes Vim essentielles pour la navigation et l'édition

  4. Comment désactiver ou définir SELinux en mode permissif

  5. Commandes de l'éditeur vi[m] du terminal Mac

Comment désactiver ou désactiver SELinux sur Rocky Linux 8

Commandes Vim de base que chaque utilisateur Linux doit connaître [Aide-mémoire gratuit inclus]

Toutes les commandes SELINUX de base que vous devez connaître

Mode de sauvetage

Quatre commandes Linux complètement inutiles

Commandes vim de base (aide-mémoire)