Mechanizmy kontroli dostępu (MAC) w systemie Linux
Bezpieczeństwo w systemach operacyjnych Linux opiera się na wielopoziomowej architekturze ochrony. Jednym z kluczowych jej elementów jest kontrola dostępu — mechanizm definiujący, kto i w jakich okolicznościach może wykonywać operacje na zasobach systemowych.
Podstawowym modelem stosowanym w Linuksie jest DAC (Discretionary Access Control), który pozwala właścicielowi pliku decydować o jego dostępności. Jednak w środowiskach o wysokim poziomie bezpieczeństwa, gdzie wymagana jest ścisła kontrola i izolacja procesów, konieczne jest zastosowanie bardziej restrykcyjnego podejścia — MAC (Mandatory Access Control).
MAC (Mandatory Access Control), czyli obowiązkowa kontrola dostępu, to model, w którym dostęp do zasobów jest kontrolowany przez centralnie zdefiniowaną politykę bezpieczeństwa, a nie przez właściciela pliku.
W przeciwieństwie do modelu DAC, użytkownicy (w tym administratorzy) nie mogą samodzielnie zmieniać reguł dostępu — są one określane przez politykę bezpieczeństwa systemu i egzekwowane przez jądro Linuxa.
Mechanizmy MAC mają na celu:
- ochronę systemu przed błędami użytkowników i procesów,
- zapobieganie eskalacji uprawnień,
- izolację procesów i danych między użytkownikami oraz aplikacjami,
- zapewnienie zgodności z normami bezpieczeństwa (np. ISO/IEC 27001, Common Criteria).
W modelu MAC każdy proces i plik w systemie otrzymuje etykietę bezpieczeństwa (security label).
Kiedy proces próbuje uzyskać dostęp do zasobu (np. pliku, gniazda sieciowego, urządzenia), jądro sprawdza — zgodnie z polityką bezpieczeństwa — czy taka operacja jest dozwolona.
Polityka ta określa:
- kto (etykieta procesu),
- do czego (etykieta obiektu),
- w jaki sposób (typ dostępu: odczyt, zapis, wykonanie).
Jeśli reguły bezpieczeństwa nie pozwalają na wykonanie danej operacji, jądro Linuxa ją blokuje, niezależnie od uprawnień DAC.
System Linux oferuje kilka różnych mechanizmów MAC, które można wdrożyć w zależności od potrzeb bezpieczeństwa. Najważniejsze z nich to:
a) SELinux (Security-Enhanced Linux)
SELinux został opracowany przez NSA (National Security Agency) i społeczność open source. To najbardziej rozbudowany i elastyczny mechanizm MAC dostępny dla Linuksa.
Główne cechy:
- oparcie na etykietach bezpieczeństwa (labels) przypisanych do plików, procesów i portów,
- możliwość definiowania szczegółowych polityk bezpieczeństwa,
- trzy tryby pracy: enforcing (aktywny), permissive (logowanie), disabled (wyłączony).
Przykładowe polecenia SELinux:
sestatus # sprawdzenie statusu SELinux
getenforce # wyświetlenie trybu pracy
setenforce 1 # włączenie egzekwowania polityki
ls -Z # pokazanie etykiet bezpieczeństwa
b) AppArmor (Application Armor)
AppArmor to prostsza alternatywa dla SELinux, opracowana przez firmę SUSE i stosowana m.in. w Ubuntu i openSUSE.
Zamiast etykiet bezpieczeństwa AppArmor wykorzystuje profile oparte na ścieżkach plików.
Główne cechy:
- łatwiejsza konfiguracja niż SELinux,
- każdy proces może mieć przypisany profil ograniczający dostęp do plików, sieci i zasobów,
- wspiera tryby complain (rejestracja naruszeń) i enforce (blokowanie nieautoryzowanych działań).
Przykładowe polecenia AppArmor:
aa-status
aa-enforce /etc/apparmor.d/usr.bin.firefox
aa-disable /etc/apparmor.d/usr.sbin.nginx
c) Smack (Simplified Mandatory Access Control Kernel)
Smack to lżejszy, prostszy mechanizm MAC zintegrowany bezpośrednio z jądrem Linuksa. Stosowany głównie w systemach embedded (np. urządzenia IoT, systemy automotive).
Charakterystyka:
- wykorzystuje etykiety bezpieczeństwa przypisane do plików i procesów,
- prostszy niż SELinux – mniej reguł, łatwiejsze wdrożenie,
- dobry balans między bezpieczeństwem a wydajnością.
Różnice między DAC a MAC
| Cecha | DAC (Discretionary Access Control) | MAC (Mandatory Access Control) |
|---|---|---|
| Kto definiuje dostęp | Właściciel zasobu | Polityka systemowa |
| Zakres kontroli | Lokalny (per użytkownik) | Centralny (dla całego systemu) |
| Zmiana reguł | Możliwa przez właściciela | Tylko przez administratora bezpieczeństwa |
| Poziom bezpieczeństwa | Średni | Wysoki |
| Przykłady implementacji | chmod, chown | SELinux, AppArmor, Smack |
Zalety i wady MAC
Zalety:
- bardzo wysoki poziom bezpieczeństwa,
- minimalizuje skutki błędów użytkowników i aplikacji,
- chroni system przed eskalacją uprawnień,
- umożliwia audyt i logowanie naruszeń.
Wady:
- złożoność konfiguracji (zwłaszcza w SELinux),
- ryzyko blokady działania aplikacji przy błędnej polityce,
- konieczność utrzymania i testowania reguł bezpieczeństwa.
Praktyczne zastosowania MAC
- Serwery produkcyjne – ochrona przed exploitami i rootkitami,
- Infrastruktury krytyczne – energetyka, przemysł, obrona,
- Systemy chmurowe – izolacja kontenerów i procesów,
- Urządzenia IoT – ograniczanie dostępu do zasobów systemowych.
Podsumowanie
Mechanizmy MAC (Mandatory Access Control) stanowią zaawansowaną warstwę ochrony systemu Linux, która uzupełnia tradycyjny model DAC.
Dzięki centralnie zarządzanym politykom bezpieczeństwa MAC zapewnia ścisłą kontrolę nad tym, które procesy i użytkownicy mogą korzystać z określonych zasobów systemowych.
Wdrożenie MAC — zwłaszcza w postaci SELinux lub AppArmor — znacząco zwiększa odporność systemu na ataki, błędy ludzkie i nieautoryzowany dostęp.
Choć konfiguracja bywa złożona, korzyści w postaci bezpieczeństwa i stabilności środowiska sprawiają, że mechanizmy MAC są dziś standardem w większości dystrybucji Linuksa stosowanych w środowiskach produkcyjnych.