SELinux (Security-Enhanced Linux) to zaawansowany system kontroli dostępu stosowany w systemach Linux, zaprojektowany w celu zwiększenia bezpieczeństwa poprzez ograniczanie uprawnień procesów i użytkowników. W przeciwieństwie do tradycyjnego modelu uprawnień POSIX, który określa tylko podstawowe zasady dostępu, SELinux wprowadza dodatkową, znacznie bardziej szczegółową warstwę zabezpieczeń, opartą na politykach bezpieczeństwa i kontroli przepływu informacji.

Technologia została opracowana przez NSA (National Security Agency) i udostępniona jako oprogramowanie open source. Dziś SELinux jest stosowany w wielu profesjonalnych dystrybucjach Linuxa, m.in. w Red Hat Enterprise Linux, CentOS, Fedora oraz w systemie Android.

Po co powstał SELinux

Tradycyjny model bezpieczeństwa Linuxa zakłada, że procesy mają takie uprawnienia, jakie posiada użytkownik, który je uruchomił. Jeśli atakujący przejmie kontrolę nad procesem z szerokimi uprawnieniami, może zrobić praktycznie wszystko, co właściciel tego procesu.

SELinux rozwiązuje ten problem poprzez zasadę najmniejszego uprzywilejowania i wprowadza kontrolę dostępu na poziomie systemowym, niezależną od konta użytkownika.

Oznacza to, że nawet proces działający jako root może być restrykcyjnie ograniczony zgodnie z polityką SELinux.

Jak działa SELinux

SELinux funkcjonuje w oparciu o polityki bezpieczeństwa, które definiują, co dany proces może i czego nie może zrobić. Każdy proces i każdy obiekt systemowy (plik, katalog, port, urządzenie, interfejs sieciowy) ma przypisany kontekst bezpieczeństwa, który składa się z kilku elementów, m.in.:

  • typ,
  • użytkownik,
  • rola,
  • domena.

Decyzje o dostępie podejmowane są na podstawie relacji między tymi kontekstami.

SELinux kontroluje takie operacje jak:

  • odczyt i zapis plików,
  • dostęp do portów i gniazd sieciowych,
  • uruchamianie programów,
  • komunikację międzyprocesową (IPC),
  • działania usług systemowych.

Jeżeli polityka nie przewiduje danego działania, proces otrzymuje odmowę dostępu nawet wtedy, gdy posiada uprawnienia root.

Tryby działania SELinux

SELinux może działać w trzech trybach:

  • Enforcing – polityki bezpieczeństwa są aktywnie egzekwowane; nieautoryzowane działania są blokowane.
  • Permissive – działania nie są blokowane, ale SELinux rejestruje, które z nich byłyby zablokowane. Przydatne podczas konfiguracji i debugowania.
  • Disabled – SELinux jest wyłączony i nie kontroluje dostępu.

Tryby Enforcing i Permissive różnią się zachowaniem, ale nie konfiguracją polityk.

SELinux w praktyce

SELinux jest trudniejszy w konfiguracji niż zwykłe mechanizmy uprawnień, ale pozwala na ochronę systemu przed całymi klasami ataków, takimi jak:

  • eskalacja uprawnień,
  • przejęcie usług sieciowych,
  • dostęp procesów do nieprzeznaczonych dla nich zasobów,
  • szkody wyrządzone przez złośliwe oprogramowanie działające z uprawnieniami root.

Z tego powodu jest chętnie stosowany w środowiskach serwerowych, systemach korporacyjnych i rozwiązaniach wysokiego bezpieczeństwa.

Android również korzysta z SELinux, ponieważ silnie izoluje aplikacje od siebie oraz od systemu.

Wady i ograniczenia SELinux

SELinux jest potężny, ale ma też swoje trudności:

  • wymaga dużej wiedzy i zrozumienia polityk bezpieczeństwa,
  • może powodować problemy w niepoprawnie skonfigurowanych systemach,
  • logi SELinux bywają trudne w interpretacji,
  • w środowiskach desktopowych bywa uznawany za zbyt restrykcyjny.

Z powodu złożoności część dystrybucji Linuxa oferuje alternatywy, np. AppArmor, który jest prostszy w konfiguracji.

SELinux to zaawansowany system bezpieczeństwa, który zapewnia granularną kontrolę dostępu w systemach Linux. Realizuje zasadę najmniejszego uprzywilejowania, ograniczając nawet procesy działające z uprawnieniami root. Dzięki temu zwiększa odporność systemu na ataki, izoluje aplikacje i minimalizuje skutki potencjalnych naruszeń bezpieczeństwa. Choć jest wymagający w konfiguracji, pozostaje jednym z najpotężniejszych narzędzi zabezpieczających w świecie open source.

Kategorie:

mgr Bartłomiej_Speth

Absolwent wydziału Fizyki Uniwersytetu im. Adama Mickiewicza w Poznaniu na kierunku Fizyka z informatyką. Miłośnik komputerów, sprzętu komputerowego oraz otwartego oprogramowania. Specjalizuje się w budowie, naprawach, modyfikacjach laptopów jak i jednostek stacjonarnych. Zapalony PC'towiec od momentu, w którym otrzymał swój pierwszy komputer z procesorem 80286.