Vous êtes sur la page 1sur 11

SERVICES RESEAUX ET SECURITE

SOUS LINUX

Introduction SELinux
SELinux, c'est quoi ?
SElinux - pour « Security-Enhanced Linux » - permet de définir des politiques d'accès à différents
éléments du système d'exploitation. Ces éléments peuvent être des processus (démons), ou encore
des fichiers.
Chaque processus est confiné à un (voire plusieurs) domaine, et les fichiers sont étiquetés
en conséquence. Pour simplifier, un processus ne peut accéder qu'aux fichiers étiquetés
pour le domaine auquel il est confiné. L'on peut considérer que SELinux apporte une couche
supplémentaire aux traditionnels droits d'accès aux fichiers Unix.

SELINUX est développé par la NSA


SELinux vient améliorer la sécurité des serveurs sur lesquels il est déployé. Si un processus
est corrompu sur un serveur, il n'aura tout de même accès qu'aux fichiers étiquetés pour lui ;
et ne pourra rien faire d'autre que ce pour quoi il a été défini au départ.

On a un programme (logiciel) P contenant une faille (ex. stack overflow).


Un attaquant est capable d’interagir avec P (web, cgi scripts, etc.).
 L’attaquant peu attaquer le programme P, en contournant toute protection contre les stack
overflows.
 L’attaque permet de lancer un shell.

SELinux peut prévenir cela !


 On définit un domaine DP pour P, et un autre (distinct/disjoint!) DS pour le shell.
 On décrit des règles SELinux qui interdisent à tout DP de forker ou executer!) des DS.
 Tout essai de lancer un shell à partir du domaine P sera interdit, et audité !
SELinux n'a pas vocation à remplacer quelque système de sécurité existant, mais plutôt de
les compléter. Aussi, la mise en place de politiques de sécurité (programmes à jour, firewalls,
mots de passe complexes et modifiées régulièrement, ...) reste bien évidement de mise.
SELinux propose trois modes différents :

« Appliqué » (Enforcing) : il s'agit du mode proposé par défaut à l'installation. Dans ce mode, les
accès sont restreints en fonction des règles SELinux en vigueur sur la machine.

« Permissif » (Permissive) : ce mode est généralement à considérer comme un mode de


débogage. En mode permissif, les règles SELinux seront interrogées, les erreurs d'accès logguées,
mais l'accès ne sera pas bloqué. Ce mode peut être utile pour constater l'ensemble des erreurs
SELinux posées par un processus particulier, par exemple.

« Désactivé » (Disabled) : SELinux est désactivé. Rien ne sera restreint, rien ne sera loggué
La commande getenforce vous informera sur le mode actuellement actif sur votre machine.
La commande setenforce permet de basculer de façon temporaire (la modification ne sera pas
prise ne compte au prochain redémarrage de votre machine)

L'état actuel
Pour connaître l'état général (activé ou désactivé, mode courant, politique chargée, etc...),
utilisez la commande sestatus :
Les étiquettes: chaque processus a une étiquette, chaque objet a aussi une étiquette

Les étiquettes sur fichier


# ls –Z Ports
Les etiquette des utilisateurs – netstat -Z, semanage ports -l
#id –Z
Les etiquettes sur processus
#ps –aux -Z
Mécanisme:
Le but de SELinux est contrôler l’interaction entre les étiquettes des processus interagisse avec les
étiquettes des autres objets.
Les booléens

Les booléens permettent de modifier une politique SELinux. L'activation ou la désactivation


d'un booléen ne requiert pas la compilation ou le rechargement d'un module.

Pour les lister, et obtenir quelques informations sur l'utilité de chacun, utilisez :
# semanage boolean -l

Pour simplement lister les booléens, sans aucune information complémentaire :


$ getsebool -a
En cas de problème vous pouvez consulter

– grep avc /var/log/messages


– /sbin/ausearch -mAVC,SELINUX_ERR -i

Exemple

type=AVC msg=audit(09/07/2010 14:06:38.240:54981) :


avc: denied { read } for pid=4866 comm=bash
name=.bash_history dev=dm-0 ino=138
scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

Vous aimerez peut-être aussi