SELinux steht für Security-Enhanced – also „si­cher­heits­ver­bes­ser­tes“ – Linux. Linux ist im Grunde ein Be­triebs­sys­tem wie Windows, Android oder iOS – mit dem Un­ter­schied, dass hinter der Ent­wick­lung von Linux kein einzelnes Un­ter­neh­men steht, sondern dass Linux von vorn­her­ein als Open-Source-Projekt geplant war. Der „Kern“ von Linux ist der so­ge­nann­te Linux-Kernel, dessen Source­code allen Ent­wick­lern of­fen­steht – sowohl für Non-Profit- als auch für kom­mer­zi­el­le Projekte. Aufbauend auf dem Linux-Kernel gibt es dann ver­schie­de­ne auf Linux ba­sie­ren­de Be­triebs­sys­te­me, allgemein als Dis­tri­bu­tio­nen be­zeich­net. Einige der be­kann­tes­ten Linux-Dis­tri­bu­tio­nen sind Ubuntu, Debian oder Fedora.

Was bedeutet „Security-Enhanced“ konkret?

Der Code des Linux-Kernels wird von Un­ter­neh­men, Frei­wil­li­gen und Non-Profit-Or­ga­ni­sa­tio­nen ständig wei­ter­ent­wi­ckelt. Security-Enhanced Linux ist eine solche Er­wei­te­rung des Linux-Kernels, die in Form eines eigenen Si­cher­heits­mo­duls verfügbar ist. Bereits seit 2003 ist SELinux of­fi­zi­el­ler Be­stand­teil des Linux-Kernels. Einige Linux-Dis­tri­bu­tio­nen bieten SELinux stan­dard­mä­ßig an, das Modul lässt sich aber auch einfach ab­schal­ten. SELinux un­ter­stützt Ad­mi­nis­tra­to­ren dabei, eine strikte Kontrolle über alle Prozesse auf ihrem System zu erlangen. Nicht als notwendig erachtete Prozesse werden blockiert. Die Gefahr, die von Si­cher­heits­lü­cken in An­wen­der­pro­gram­men ausgeht, wird mit SELinux stark reduziert.

Es ist selbst dann sinnvoll, Zu­griffs­rech­te zu be­schrän­ken, wenn man den Pro­gram­men ei­gent­lich vertraut. Sollte die Anwendung mal durch Dritte gekapert werden, kann sehr viel weniger Schaden entstehen. Können durch Malware in­fi­zier­te Programme auf alle Prozesse und Dateien eines Systems zugreifen, werden sie das auch ausnutzen. SELinux be­schränkt den Zugriff und damit auch den Scha­dens­ra­di­us.

Strikte Zu­gangs­kon­trol­len zum Be­triebs­sys­tem

SELinux bietet eine spezielle Si­cher­heits­ar­chi­tek­tur auf Grundlage der Prin­zi­pi­en der Mandatory Access Control (MAC). Im Gegensatz zum her­kömm­li­chen Linux-Kernel werden bei SELinux die Zugriffe auf Prozesse und Dateien des Be­triebs­sys­tems prin­zi­pi­ell auf das Nötigste be­schränkt. Durch eine strikte Zu­griffs­kon­troll­stra­te­gie und ent­spre­chen­de Si­cher­heits­richt­li­ni­en soll ge­währ­leis­tet werden, dass Ver­trau­lich­keit und In­te­gri­tät der In­for­ma­tio­nen gewahrt bleiben. An­wen­der­pro­gram­me und das Be­triebs­sys­tem werden bei SELinux klar von­ein­an­der ab­ge­grenzt.

Wie werden bei SELinux Zu­griffs­rech­te be­schränkt?

Her­kömm­li­ches Linux verwendet als Zu­gangs­kon­trol­le die Dis­cre­tio­na­ry Access Control (DAC). Nutzer bzw. An­wen­dun­gen, die mit ent­spre­chen­den Rechten aus­ge­stat­tet sind, haben dann in der Regel un­ein­ge­schränk­ten Zugriff auf die je­wei­li­gen Dateien und Prozesse des Be­triebs­sys­tems. Bei der von SELinux ver­wen­de­ten Mandatory Access Control legt ein Ad­mi­nis­tra­tor über genau de­fi­nier­te Si­cher­heits­richt­li­ni­en zu­sätz­lich Attribute fest, unter welchen Be­din­gun­gen und in welchen Zu­sam­men­hän­gen ein Rech­te­inha­ber auf bestimmte Prozesse oder Dateien des Be­triebs­sys­tems zugreifen kann. Sind diese Be­din­gun­gen oder Zu­sam­men­hän­ge (sprich: Attribute) nicht gegeben, wird der Zugriff ver­wei­gert.

Zur Re­gu­lie­rung vergibt man bei SELinux ver­schie­de­ne Label:

  • User
  • Role
  • Type
  • Level

Diese Label können für jeden Prozess und jede Datei gesetzt und dann in die de­fi­nier­ten Richt­li­ni­en auf­ge­nom­men werden. So darf eine Anwendung bei­spiels­wei­se nur auf Ordner zugreifen, die ein be­stimm­tes Label haben. Die Über­prü­fung der Richt­li­ni­en nennt man SELinux En­force­ment.

Vor- und Nachteile von SELinux

Der Miss­brauch von Nut­zer­rech­ten, wie er bei An­wen­der­pro­gram­men mit Si­cher­heits­lü­cken vorkommen kann, wird mit SELinux erschwert bzw. ver­hin­dert – das Be­triebs­sys­tem ist ent­spre­chend gut geschützt. Linux-Dis­tri­bu­to­ren bieten das Modul SELinux mit un­ter­schied­li­chen Policy-Paketen und ent­spre­chen­den Si­cher­heits­richt­li­ni­en an. Das ver­ein­facht die Kon­fi­gu­ra­ti­on der Si­cher­heits­schicht. Be­rech­tig­te Ad­mi­nis­tra­to­ren können die Si­cher­heits­richt­li­ni­en auch ei­gen­stän­dig de­fi­nie­ren.

SELinux verhilft Ad­mi­nis­tra­to­ren zwar zu we­sent­lich mehr Kontrolle über Prozesse auf ihren Systemen, die Lösung von Problemen er­leich­tert das Programm aber nur bedingt. Wird ein Zugriff blockiert, wirft SELinux eine Feh­ler­mel­dung aus, die sehr vage sein kann – was die direkte Feh­ler­su­che erschwert. SELinux ist zudem ein relativ komplexes Modul. Vielen Ad­mi­nis­tra­to­ren ist die Aus­ein­an­der­set­zung mit Si­cher­heits­richt­li­ni­en und die Fest­le­gung von At­tri­bu­ten zu kom­pli­ziert oder zu viel Aufwand. Dazu kommt, dass SELinux die Leis­tungs­fä­hig­keit des Be­triebs­sys­tems ge­ring­fü­gig senkt.

Fazit

SELinux ist ein sehr wir­kungs­vol­les Si­cher­heits­werk­zeug. Es erfordert aber auch einiges an zu­sätz­li­cher Arbeit. Nur wenn man den Aufwand der Kon­fi­gu­ra­ti­on nicht scheut, kann die Software wirken. Ist das System nur halb ein­ge­stellt, geht der Nutzen gen Null. Für pro­fes­sio­nel­le Um­ge­bun­gen mit sensiblen Daten empfiehlt sich der Einsatz aber sehr.

Wie ist SELinux ent­stan­den?

SELinux wurde maß­geb­lich vom US-ame­ri­ka­ni­schen Ge­heim­dienst NSA und dem Linux Dis­tri­bu­tor Red Hat ent­wi­ckelt. Red Hat En­ter­pri­se Linux 4 und die von Red Hat un­ter­stütz­te Linux-Dis­tri­bu­ti­on Fedora waren die ersten Be­triebs­sys­te­me, die mit voller SELinux-Un­ter­stüt­zung angeboten wurden. Neben Red Hat und Fedora bietet auch Gentoo Hardened Linux relativ um­fas­sen­den SELinux-Support. Eine Al­ter­na­ti­ve zu SELinux ist das Si­cher­heits­mo­dul AppArmor, das vor allem von Dis­tri­bu­tio­nen wie openSUSE oder Debian-basierten Platt­for­men un­ter­stützt wird.

Zum Hauptmenü