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
.