SELinux

De wikidavenne
Aller à : navigation, rechercher


Security Enhanced Linux abrégé SELinux est un LSM (linux security module) qui permet de gérer finement la gestion de la sécurité sous linux (le projet prend sa source à la NSA qui avait besoin d'une gestion multicouches de sécurité, heureusement pour nous le développeur à choisi la solution open source).

Par défaut SELinux est activé sous CentOS, il vous faudra donc un peu le manipuler si vous désirez faire fonctionner vos machines sinon vous risquez d'avoir des comportements qui vous surprendront (je parle aux développeurs).

pour désactiver SELinux il suffit d'éditer

nano /etc/selinux/config

et de positionner SELINUX=disabled

la première commande à connaitre est :

ls -Z <fichier>

qui permet d'afficher les attributs d'un fichier (ou répertoire)

SELinux se paramêtre en positionnant des variables booleenes

getsebool -a
getsebool -a | grep httpd     pour n'afficher que les variables concernant apache

getsebool vous permettra d'afficher la liste des variables ainsi que leur status (on/off 0/1)

setsebool -P httpd_execmem 1
setsebool -P httpd_can_network_connect_db 1

setsebool permet de changer la valeur de ces variables, l'exemple ci-dessus permet à apache de faire fonctionner des pages PHP et le cas ou votre base de données n'est pas hébergé sur la même machine que votre serveur web de vous connecter à des bases de données distantes.

finalement vous pourriez avoir besoin de changer le contexte d'un fichier ou d'un répertoire, par exemple en utilisant le framework YII, celui ci à besoin d'écrire (logs, etc) dans le répertoire ou il se trouve au travers d'Apache (httpd), comportement qui par défaut est interdit, heureusement pour nous il existe la commande : chcon - change security context

chcon -R -t httpd_sys_content_rw_t /opt/<répertoire app YII>/

permet de rendre read and write par httpd le répertoire (faites un ls -Z pour voir).

pour gérer les ports il existe un utilitaire semanage

yum -y install policycoreutils-python
yum provides /usr/sbin/semanage
ou 
yum whatprovides /usr/sbin/semanage      ! pour connaitre le package à installer qui contient semanage.

pour voir ou ajouter un port dans SELinux

semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 80


Si vous désirez manipuler plus je vous laisse vous plonger dans les délices du wiki de ce projet opensource [SELinux]