Wat is SELinux? Het staat voor: Security Enhanced Linux
Historie Het is een door de NSA en de Universiteit van Utah ontwikkelde beveiligings uitbreiding voor operating systemen. Het is door NSA opensource gemaakt. DAC = Descretionary Access Control (=rwx) RBAC = Role Based Access Control MAC = Mandatory Access Control (= SELinux) Redhat werkt hard aan SELinux sinds RHEL4 (2004), maar bij RHEL6 is het echt (goed) implementeerbaar.
Mandatory Access Control Wat is het? Een gedwongen/geforceerde toegangs controle op basis van policies/regels. Wikipedia: With mandatory access control, this security policy is centrally controlled by a security policy administrator; users do not have the ability to override the policy and, for example, grant access to files that would otherwise be restricted. http://en.wikipedia.org/wiki/mandatory_access_control
Maar wacht eens even, SELinux 'sucks' Als je 10 Linux beheerder iets vraagt over SELinux, krijg je het volgende antwoord: Dat is het eerste dat ik uitzet op een RHEL/CENTOS machine. Reden hiervoor is dat het nog erg 'jong' is en er bij trainingen te weinig aandacht aan wordt/is besteed.
Wat is SELinux NIET? Antivirus Vervanging voor firewalls etc... Heilig-makende-beveiligings oplossing
SELinux heeft 3 werkstanden: Erforcing Permissive disabled Daarnaast zijn er nog 2 policies meegeleverd: Targeted (default) Multi Level Security (extra te installeren) Voorbeeld: /etc/sysconfig/selinux of sestatus
Maar hoe werkt SELinux dan? Er is in de linux kernel een mechanisme gedefinieerd om de beveiliging beter te kunnen regelen. Denk aan: File access Memory access Process access
SE Linux implementatie -Z is je vriend Ls -Z, id -Z, ps -Z, lsof -Z etc... DEMO
Type enforcement Elke file heeft een extra SELinux type aanduiding: user:role:type:level User = confined/unconfined Role = role based security Type = type enforcement Level = gebruikt bij MLS DEMO
Labelen van files en type enforcement Met chcon een file koppelen aan type. Mogelijke types gedefinieerd in: /etc/selinux/targeted/contexts/files/file_contexts chcon system_u:object_r:httpd_sys_content_t:s0 /srv/www Enforcement met 'restorecon'.
Demo: SELinux (project 073) Apache installatie met index.html
Audit.log SELinux (project 073) Alle selinux meldingen komen in de /var/log/messages & /var/log Tip: Audit2allow & audit2why commando's
RBAC en MLS Role Based Access en Multilevel security, de laatste is een te installeren policy ivp de default 'targeted'. RBAC wordt gebruikt voor processen en niet voor gebruikers. Unconfined_r object_r system_r user_r
Domains SELinux (project 073) In de 'targeted' policy zijn 2 domeinen gedefinierd: Unconfined & confined Een domain wordt voor processen gebruikt en zo kan een unconfined process geen beschrijfbaar/shared geheugen aanspreken. Dit om in geval van 'buffer-overflow attack' geen schade aan andere processen te kunnen aanrichten.
Booleans Booleans zijn extra instellingen om zaken aan/uit te zetten. DEMO getsebool/setsebool (-P). Zie ook semanage boolean -l
SELinux users In SELinux kunnen gebruikers (linux) gekoppeld worden aan selinux-gebruikers. semanage login -l Zo zijn er 'booleans' om tervoor te zorgen dan gebruikers geen apps kunnen starten uit hun homedirectory.
Conclusie: SELinux (project 073) SELinux is toch nog erg complex, maar met een beetje verdieping kom je een heel eind.