« LINUX:SELinux-Méthode de première mise en route » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 65 : Ligne 65 :
  semanage fcontext -a -t mail_home_rw_t '/application/vmail(/.*)?'
  semanage fcontext -a -t mail_home_rw_t '/application/vmail(/.*)?'
  restorecon -RFv /application/vmail/
  restorecon -RFv /application/vmail/
* Nous avons développé plusieurs scripts qui sont exploités par le service "crontd.service" au travers du fichier "/etc/crontab". Ils utilisent des fichiers de données locaux. Nous les avons regroupés sous le répertoire "/application/cron", un répertoire par application. Je n'avais de piste précise; j'ai donc exploré la liste des Type SELinux et j'ai opté pour le Type "system_cron_spool_t"; un autre est peut-être plus adapté.
* Nous avons développé plusieurs scripts qui sont exploités par le service "crond.service" au travers du fichier "/etc/crontab". Ils utilisent des fichiers de données locaux. Nous les avons regroupés sous le répertoire "/application/cron", un répertoire par application. Je n'avais de piste précise; j'ai donc exploré la liste des Type SELinux et j'ai opté pour le Type "system_cron_spool_t"; un autre est peut-être plus adapté.
  semanage fcontext -a -t system_cron_spool_t '/application/cron(/.*)?'
  semanage fcontext -a -t system_cron_spool_t '/application/cron(/.*)?'
  restorecon -RFv /application/cron/
  restorecon -RFv /application/cron/
Ligne 73 : Ligne 73 :




Maintenant que le gros des problèmes sont résolus, on nettoie toutes les alertes reprises dans l'interface de SELINUX sous Cockpit.
Maintenant que le gros des problèmes sont résolus, on nettoie toutes les alertes reprises dans l'interface de SELINUX sous Cockpit avant de passer à la suite.




=Boolean=
=Boolean=
 





Version du 13 janvier 2024 à 19:58


retour à SELinux


But

Je ne conseille pas de suivre aveuglément les conseils données par Cockpit ou les messages du service "setroubleshootd.service". Je présente ici l'approche que j'ai utilisée. Au premier démarrage de SELinux, on est submergé d'alertes. On va procéder par débroussaillage successif.


Préliminaire

Il faut procéder à une configuration préliminaire:

  • Désactiver l'envoi de messages électroniques du service "setroubleshootd.service" en mettant en commentaire (ligne préfixée par le caractère "#") les adresses email de sa configuration
  • Placer SELinux en mode permissif
  • Redémarrer de système avec l'option de relabélisation du "Context" de tous les fichiers du système (voir le paragraphe sur la Première activation)
  • Lors de la découverte de SELinux, travailler sur un système si possible non en production afin de gêner un minimum de personnes.


Fcontext

J'ai l'habitude de placer les données d'applications dans un répertoire personnalisé. Cette configuration me permet de faciliter les sauvegardes, de ne pas être limité par l'espace disque et de pouvoir les déplacer comme on veut. Le fait de ne pas les laisser à l'emplacement défini par défaut, habituellement sous l'arborescence "/var", engendre une foule d'alertes dès que les applications concernées veulent accéder aux données. Il faut bien sûr connaitre son système et les changements auxquels on a procédé.


Voici un premier exemple:

Normalement, les sites Web utilisés par le service Httpd, se trouvent sous l'arborescence "/var/www" qui a le Context de Type "httpd_sys_content_t".

On peut le vérifier par la commande:

matchpathcon /var/www

qui donne:


/var/www        system_u:object_r:httpd_sys_content_t:s0

ou par

ls -Z1 /var | grep www

qui donne:


system_u:object_r:httpd_sys_content_t:s0 www


Pour ma part, je les place sous le répertoire "/application/web". Il faut donc que je procède à une relabélisation de cet espace.

On exécute les deux commandes suivantes:

semanage fcontext -a -t httpd_sys_content_t '/application/web(/.*)?'
restorecon -RFv /application/web/

De même, les images et autres documents par exemple PDF, prennent beaucoup de place. Nous les avons placés dans un espace à part "/disk1/documents" qu'il faut aussi adapter:

semanage fcontext -a -t httpd_sys_content_t '/disk1/documents(/.*)?'
restorecon -RFv /disk1/documents/


Autres exemples:

  • L'application GeneWeb comporte deux exécutables lancés sous le contexte de Httpd. On a procédé à la relabélisation suivante:
semanage fcontext -a -t httpd_exec_t '/application/web/geneweb/gw/gwd'
semanage fcontext -a -t httpd_exec_t '/application/web/geneweb/gw/gwsetup'
restorecon -RFv /application/web/geneweb/gw/
  • On utilise BackupPC pour nos sauvegardes. L'espace de sauvegarde se trouve par défaut sous l'arborescence "/var/lib/BackupPC" avec un Context de Type "httpd_var_lib_t". Or on le place dans le répertoire "/disk2/backuppc". On adapte:
semanage fcontext -a -t httpd_var_lib_t '/disk2/backuppc(/.*)?'
restorecon -RFv /disk2/backuppc/
  • On utilise le gestionnaire de base de données MariaDB (équivalent à MySQL). La base de données est placée par défaut dans le répertoire "/var/lib/mysql" avec un Context de Type "mysqld_db_t". Or on la place dans le répertoire "/application/mysql" et le dump dans le répertoire "/application/mysql.dump". On adapte:
semanage fcontext -a -t mysqld_db_t '/application/mysql(/.*)?'
restorecon -RFv /application/mysql/
semanage fcontext -a -t mysqld_db_t '/application/mysql.dump(/.*)?'
restorecon -RFv /application/mysql.dump/
  • Pour le PostOffice au format "maildir" géré par Dovecot, les boîtes de messages électroniques des utilisateurs sur le serveur sont placées sous le répertoire "/application/vmail". En analysant les Fcontext repris dans les fichiers du répertoire "/etc/selinux//targeted/contexts/files", spécialement le fichier "file_contexts.homedirs", on recherche les répertoires contenant "maildir" ou "Maildir", on y trouve systématiquement le Context de Type "mail_home_rw_t". On l'adapte en conséquence:
semanage fcontext -a -t mail_home_rw_t '/application/vmail(/.*)?'
restorecon -RFv /application/vmail/
  • Nous avons développé plusieurs scripts qui sont exploités par le service "crond.service" au travers du fichier "/etc/crontab". Ils utilisent des fichiers de données locaux. Nous les avons regroupés sous le répertoire "/application/cron", un répertoire par application. Je n'avais de piste précise; j'ai donc exploré la liste des Type SELinux et j'ai opté pour le Type "system_cron_spool_t"; un autre est peut-être plus adapté.
semanage fcontext -a -t system_cron_spool_t '/application/cron(/.*)?'
restorecon -RFv /application/cron/
  • Pour l'utilisation de Nagios, nous avons développé quelques scripts qui sont utilisés par le service "nrpe.service". Nous les avons placés sous le répertoire "/application/nrpe". Or les "plugins" de Nagios se situent dans le répertoire "/usr/lib64/nagios/plugins" qui ont le Context de Type "nagios_unconfined_plugin_exec_t". On s'adapte:
semanage fcontext -a -t nagios_unconfined_plugin_exec_t '/application/nrpe(/.*)?'
restorecon -Rv /application/nrpe/


Maintenant que le gros des problèmes sont résolus, on nettoie toutes les alertes reprises dans l'interface de SELINUX sous Cockpit avant de passer à la suite.


Boolean


retour à SELinux