User Tools

Site Tools


informatique:linux:selinux

This is an old revision of the document!


sécurité

SELinux

SELinux (Security-Enhanced Linux) est un module de sécurité pour les système Linux. Il a été développé par la NSA afin de limiter les accès des programmes et processus aux seuls fichiers dont ils ont besoin, ce qui évite les risques lorsqu'une faille de sécurité dans ceux-ci est exploité par un individu malveillant.

Il existes 3 modes/états de fonctionnement :

  • Enforcing = actif
  • Permissive = mêmes traitements que Enforcing, mais se contente de logger les blocages
  • Disable = module désactivé (nécessite de rebooter la machine)

On obtient le mode avec la commande getenforce ; on le modifie avec setenforce [0 | 1] (Permissive | Enforcing).

getenforce
 Enforcing
setenforce 0

Il existe 2 politiques :

  • targeted (seuls les démons réseaux sont surveillés)
  • strict (full protection)

SELinux implique un système de contexte = sorte de tag par fichier, qui est ensuite associé ou non à un processus. Pour obtenir les contextes des fichiers et processus on utilise les commandes classique ps et ls avec l'argument -Z ; sous Redhat le contexte retourné est de la forme : user:object (rôle):type.

ps -ZC sendmail
 LABEL                             PID TTY          TIME CMD
 system_u:system_r:sendmail_t     2710 ?        00:00:00 sendmail
 system_u:system_r:sendmail_t     2719 ?        00:00:00 sendmail

→ liste le contexte actuel du processus sendmail

ls -Z /usr/sbin/sendmail*
 lrwxrwxrwx  root root  system_u:object_r:sbin_t         /usr/sbin/sendmail -> /etc/alternatives/mta
 -rwxr-sr-x  root smmsp system_u:object_r:sendmail_exec_t /usr/sbin/sendmail.sendmail

→ liste le contexte réel de l'exécutable sendmail

Pour lister les mappages (= contextes souhaités, c'est à dire liste d'associations entre un chemin d'accès d'un fichier et un contexte) de la politique par défaut :

semanage fcontext -l

Liste des contextes souhaités de “/etc/mail” :

semanage fcontext -l | grep /etc/mail
 /etc/mail(/.*)?                           all files          system_u:object_r:etc_mail_t:s0
 /etc/mailman(/.*)?                        all files          system_u:object_r:mailman_data_t:s0
 /etc/mail/aliases                         regular file       system_u:object_r:etc_aliases_t:s0
 /etc/mail/aliases\.db                     regular file       system_u:object_r:etc_aliases_t:s0  

Pour modifier la base de contextes par défaut de SELinux :

semanage fcontext -a -t public_content_rw_t '/var/ftp/incoming(/.*)?'

On ajoute (-a) (ou on delete (-d)) le contexte (-t) public_content_rw_t au répertoire exact /var/ftp/incoming (qui va nous servir à déposer des fichiers en FTP pour les anonymes.

Pour changer le contexte de sécurité d'un fichier mais pas la base (conseillé) :

chcon -t <contexte> <fichier>

Pour restaurer le contexte de sécurité par défaut du fichier (listé dans la BD interne). C'est les recommandations donc utile uniquement pour les fichier système classiques (pas pour un programme home-made par exemple) :

restorecon -v <fichier>

Les booléens déterminent si certaines règles s'appliquent lors de l'exécution ; liste des booléens pré-créés pour httpd :

getsebool -a | grep http

Désactivation des CGI pour le démon httpd

setsebool -P httpd_enable_cgi 0
 
man httpd_selinux
man -k selinux

En installant le paquet setroubleshoot (sous Redhat) on peut utiliser des commande de troubleshooting :

yum intall setroubleshoot
service setroubleshoot start
sealert [<paquet>]
sealert -b
sealert -l <id_de_l'erreur>

system-config-selinux est l'outil graphique pour gérer SELinux.

Les logs de SELinux sont déposés dans /var/log/audit/audit.log.

informatique/linux/selinux.1287047676.txt.gz · Last modified: 2013/10/14 20:54 (external edit)