Le point de vue de valhalla est fondé mais semble un peu restrictif ... SELinux est une évolution importante en matière de sécurité, y compris pour des machines "mono utilisateur"... Je m'explique.
Les éléments de base sont à l'adresse:
http://fedora.redhat.com/docs/selinux-faq-fc3/
SELinux (Security-Enhanced Linux) repose sur les principes suivants:
* mise en oeuvre du contrôle d'accès obligatoire (Mandatory Access Control (MAC)) au sein du noyau en respectant le schéma Linux Security Modules (LSM) framework [c'est du blabla ?... cela pour dire que l'approche est normalisée, documentée et auditable; il ne s'agit pas d'une pure initiative Red Hat mais de normes et outils qui émergent et vont se propager sans doute dans le monde Linux]
* dans le système Linux, à la base, la sécurité repose sur un schéma simple (dit Discretionary Access Control (DAC)): les fichiers (dont les périphériques) portent des attributs (rwx), les processus sont lancés par des propriétaires et le contrôle d'utilisation d'une ressource consiste à établir les droits du propriétaire du processus sur les fichiers/ressources que ce processus sollicite. Le processus considéré, s'il y est autorisé, a dès lors tout "pouvoir" sur les objets qu'il utilise, dès lors que les droits qui lui sont conférés sur cet objet (rwx) sont conformes. On sait qu'en certaines circonstances, un uilisateur peut bénéficier de certains droits complémentaires, en héritage, par le mécanisme des setuid et setgid. Par exemple, en schématisant, pour imprimer, un utilisateur hérite de certains droits root qui lui permettent d'écrire dans un répertoire et de lancer des actions, pour lesquelles il n'a pas les droits au départ. Il hérite normalement de ces droits uniquement pour l'action considérée ...
Ce mécanisme ouvre une brèche importante: en certains cas, un utilisateur peut ainsi se voir conférer des droits supplémentaires qui normalement ne devraient pas lui être reconnus (c'est en particulier par ce moyen que des programmes "corrompus" peuvent accéder à des ressources qui normalement ne leur étaient pas accessibles).
* SELinux fournit des moyens complémentaires pour renforcer la politique de sécurité sur un système: les décisions concernant l'utilisation des ressources peuvent être très fines et ne plus seulement reposer sur l'identité de l'utilisateur mais sur des règles précises (contrôle des process et des fichiers/ressources, ce que la littérature nomme rapidement les objets ...).
Les permissions peuvent ainsi gérées sous une maille très fine pour les utilisateur, les programmes, les process, les fichiers et les ressources. Comme le dit la FAQ: "You can safely grant an application just the permissions it needs to do its function, and no more". Vous pouvvez en toute sécurité conférer à une application les strictes permissions dont elle a besoin pour réaliser sa fonction, et pas plus" ... ouah la traduction! p-))
* SELinux utilise un schéma dit role-based access control (RBAC):
- rôle pour un utilisateur
- type de contraintes (Type Enforcement (TE)).
TE utilise une table qui croise les actions
et les types d'objets (fichiers, ressources)
Un utilisateur se voit donc contrôler pour une action spécifique sur un objet donné; la maille peut ainsi être très très fine! et beaucoup plus fine que le simple contrôle opéré sur l'identité de l'utilisateur. Un exemple schématique:
alpha est propriétaire du fichier A
alpha a donné sur A les droits X pour son groupe
beta appartient au groupe d'alpha
beta peut donc normalement exécuter le fichier A
Avec SELInux, on peut fermer ce droit à beta, pour le fichier A mais pas pour un autre fichier B ...
La mise en oeuvre d'un tel dispositif peut s'avérer complexe et risque, si elle n'est pas pleinement maîtrisée, d'occasionner quelques déboires sérieux. Comme le précise la FAQ, "it became obvious that applying a single strict policy to the many environments of Fedora users was not feasible. Managing a single strict policy for anything other than default installation was going to require local expertise". Il est devenu clair [au départ, dans Fedora, SELinux était mis en oeuvre de façon stricte] qu'appliquer une stricte et unique politique à une grande variété d'environnements d'utilisateurs de Fedora n'était pas possible. Gérer une stricte et unique politique pour tout en dehors d'un schéma par défaut allait requérir une expertise (la traduction n'est pas littérale ...)
Les développeurs de SELinux ont alors révisé leurs choix et décidé de concentrer leur attentionsur certains daemons, vulnérables à des attaques qui peuvent compromettre ou détruire un système. Le reste du système tournerait alors sous le dispositif Linux standard, que SELinux soit ou non activé.
Les daemons qui sont gérés au travers de SELInux sont: dhcpd, httpd, named, nscd, ntpd, portmap, snmpd, squid, and syslogd (voir /etc/selinux/targeted/src/policy/domains/program).
Nota: mysql et postgres ont notamment été rajoutés dans la version policy. Pour lister les daemons qui entrent dans le champ, passer, sous root, dans une console, la commande: /usr/sbin/sestatus -v
Quel utilisateur ne fait pas tourner syslogd? Quel utilisateur ne va pas synchroniser son horloge locale sur un serveur temps? qui n'a pas laissé tourner portmap (et nfs?).
La conclusion, maintenant.
Un système Linux peut n'accueillir qu'un seul utilisateur en chair et en os (sans compter root, bien sûr) mais pour autant, il fait tourner de nombreux process qui réalisent des actions dont l'utilisateur n'a pas nécessairement conscience. SELinux renforce la sécurité de l'utilisateur, seul et solitaire sur sa machine, et le prémunit contre un ensemble d'actions préjudiciables, qui pourraient intervenir "à l'insu de son plein gré"... Sous sa mise en oeuvre immédiate, SELinux n'est pas contraignant même si certains rpm de certaines sources peuvent éprouver quelques difficultés à supporter les librairies SELinux (voir d'autres posts ... notamment mentionnant les symptômes douloureux: ldconfig ne fonctionne plus!). En perspective, c'est une plate forme extraordinaire pour renforcer la sécurité, pour le plus grand bénéfice des utilisateurs, même seuls face à leur machine.
Bonne année et bonne chance à SELinux!