Kontrola dostępu (DAC, MAC) w Linuxie: Kiedy uprawnienia zawodzą. Analiza słabości w zarządzaniu uprawnieniami
🔐 Kontrola dostępu (DAC, MAC) w Linuxie: Kiedy uprawnienia zawodzą. Analiza słabości w zarządzaniu uprawnieniami
📘 Wprowadzenie
Systemy Linux są znane z elastyczności i wysokiego poziomu bezpieczeństwa. Jednak nawet najlepsze zabezpieczenia mogą zawieść, jeśli mechanizmy kontroli dostępu (DAC – Discretionary Access Control, MAC – Mandatory Access Control) są źle skonfigurowane lub zaimplementowane. W tym artykule przeprowadzimy ekspercką analizę potencjalnych słabości w zarządzaniu uprawnieniami w Linuksie – zarówno z punktu widzenia architektury systemowej, jak i realnych scenariuszy ataku.
W dobie rosnących zagrożeń w internecie, poprawne zarządzanie uprawnieniami to kluczowy filar bezpieczeństwa systemu operacyjnego.
🧩 Czym jest kontrola dostępu w Linuxie?
Kontrola dostępu to zbiór mechanizmów i polityk regulujących, kto i w jaki sposób może korzystać z zasobów systemu: plików, procesów, urządzeń, czy usług sieciowych.
W Linuxie wyróżniamy dwa główne modele:
- DAC (Discretionary Access Control) – model domyślny, oparty na właścicielstwie i uprawnieniach plików.
- MAC (Mandatory Access Control) – model narzucający centralne polityki bezpieczeństwa niezależnie od decyzji użytkownika.
🏗️ DAC – elastyczność, która może być zgubna
📂 Jak działa DAC?
W systemach Linux DAC opiera się na trzech głównych typach użytkowników:
- Właściciel (user)
- Grupa (group)
- Inni (others)
Każdy plik i folder mają przypisane uprawnienia w zakresie:
- r – odczyt
- w – zapis
- x – wykonanie
Przykład: -rwxr-xr--
❌ Główne słabości DAC
🎭 1. Zaufanie do użytkownika
DAC zakłada, że właściciel pliku wie, co robi. Niestety, to często błędne założenie. Nieprawidłowe uprawnienia mogą doprowadzić do:
- udostępnienia danych publicznie (
chmod 777
), - nadania uprawnień wykonania skryptom zawierającym błędy bezpieczeństwa,
- przypadkowego ujawnienia kluczy SSH, tokenów API, plików konfiguracyjnych.
💥 2. Brak kontroli nad dziedziczeniem
W DAC nie istnieje koncepcja obowiązkowego etykietowania informacji – oznacza to, że użytkownik może kopiować dane do plików z różnymi uprawnieniami, naruszając politykę bezpieczeństwa.
🔄 3. Brak centralnego nadzoru
Każdy użytkownik kontroluje swoje zasoby. Brakuje mechanizmu wymuszającego jednolite zasady w całym systemie.

🛡️ MAC – bezkompromisowe bezpieczeństwo
🧠 Czym jest MAC?
W przeciwieństwie do DAC, MAC (Mandatory Access Control) nie pozwala użytkownikowi na samodzielne zarządzanie uprawnieniami. Wszystkie dostępy są kontrolowane przez zdefiniowane z góry polityki bezpieczeństwa, niezależnie od intencji użytkownika.
Najczęściej używane implementacje MAC w Linuksie to:
- SELinux (Security-Enhanced Linux)
- AppArmor
- Smack (Simplified Mandatory Access Control Kernel)
📌 Zalety MAC
- Wymuszanie polityk bezpieczeństwa niezależnie od użytkownika.
- Etykietowanie zasobów i procesów – każda operacja musi być zgodna z polityką.
- Granularność kontroli – możliwa jest kontrola nie tylko plików, ale i sieci, systemu IPC, interfejsów urządzeń.
⚠️ Kiedy uprawnienia zawodzą?
🕳️ 1. Niepoprawna konfiguracja SELinux lub AppArmor
System może mieć aktywowany MAC, ale niewłaściwie skonfigurowany. Przykłady błędów:
- tryb permissive zamiast enforcing,
- brak reguł dla niestandardowych usług,
- nieaktualne profile bezpieczeństwa.
🧱 2. Bypass MAC przez kernel exploits
Jeśli atakujący znajdzie lukę w jądrze (np. typu ROP lub privilege escalation), może ominąć MAC, przejmując kontrolę nad systemem zanim polityka zadziała.
🧑💼 3. Nadużycia uprawnień administratora
Superużytkownik (root) ma pełną kontrolę – jeśli zostanie skompromitowany, zarówno DAC, jak i MAC stają się bezużyteczne. Dlatego zasady „least privilege” i ograniczanie uprawnień root (np. sudoers, RBAC) są tak ważne.
💡 Realne scenariusze ataku
🎯 Przykład 1: Skrypt z chmod 777
Niedbały administrator udostępnia katalog ze skryptami z pełnymi uprawnieniami. Złośliwy użytkownik nadpisuje skrypt malwarem – system zostaje zainfekowany.
🧬 Przykład 2: Omijanie AppArmor przez niezabezpieczone binarki
Proces python3
może mieć szeroki dostęp, nawet jeśli główny serwer WWW jest ograniczony przez AppArmor. Użycie podatnego os.system()
w skrypcie umożliwia atak boczny.
🌍 Przykład 3: Dostęp do danych przez mounty bind
Przy użyciu DAC, atakujący może użyć mount --bind
do obejścia ograniczeń katalogów i uzyskać dostęp do krytycznych danych.
🧰 Dobre praktyki – jak minimalizować ryzyko?
🔍 1. Audyty uprawnień
Używaj narzędzi takich jak:
ls -l
,getfacl
,auditctl
– do inspekcji uprawnień i kontroli dostępu,semanage
,aa-status
– do zarządzania MAC.
🔐 2. Wymuś MAC i trzymaj go w trybie enforcing
Nie polegaj tylko na DAC. Skonfiguruj i przetestuj polityki SELinux/AppArmor w trybie enforcing.
🧱 3. Ograniczaj uprawnienia root
Zastosuj RBAC, sudo
z ograniczeniami (NOPASSWD
tylko dla wybranych), i zasady minimalnych uprawnień.
🪪 4. Twórz niestandardowe profile MAC
Dostosuj reguły MAC do konkretnego środowiska. Gotowe profile mogą nie obejmować wszystkich zagrożeń.
📈 5. Monitoruj system
Implementuj systemy monitoringu, np. Auditd
, Syslog
, Wazuh
, Falco
– monitorują anomalie i nieautoryzowane zmiany.
🌐 Uprawnienia a zagrożenia w internecie
Nieodpowiednio skonfigurowane uprawnienia to jeden z najczęstszych wektorów ataku wykorzystywany przez cyberprzestępców. Gdy dochodzi do zagrożeń w internecie, to właśnie błędy DAC/MAC stają się furtką do:
- wycieku danych,
- przejęcia systemu,
- instalacji backdoorów,
- rozprzestrzeniania złośliwego oprogramowania w sieci lokalnej.
🧾 Podsumowanie
Choć kontrola dostępu w Linuksie oparta na DAC i MAC oferuje potężne narzędzia, ich efektywność zależy od właściwego użycia. Model DAC jest elastyczny, ale łatwy do obejścia; MAC to potężna broń, ale wymaga wiedzy, uwagi i systematyczności. W erze zaawansowanych ataków i rosnących zagrożeń w internecie, kluczem do bezpieczeństwa jest świadoma konfiguracja i ciągłe monitorowanie systemu.
Niech zarządzanie uprawnieniami nie będzie ostatnią linią obrony – niech stanie się pierwszą i najsilniejszą.