AppArmor vs SELinux – dwa mechanizmy bezpieczeństwa Linux, które warto znać
Linux

AppArmor vs SELinux – dwa mechanizmy bezpieczeństwa Linux, które warto znać

AppArmor vs SELinux – dwa mechanizmy bezpieczeństwa Linux, które warto znać

Linux od lat kojarzony jest z bezpieczeństwem, ale samo używanie systemu Linux nie oznacza automatycznie bezpiecznej infrastruktury.

Administrator może mieć:

  • aktualny system,
  • mocne hasła,
  • firewall,
  • szyfrowanie,

a mimo tego pojedyncza podatna aplikacja może stać się punktem wejścia dla atakującego.

Dlatego w środowiskach profesjonalnych stosuje się dodatkowe warstwy ochrony. Jedną z najważniejszych jest Mandatory Access Control (MAC), czyli obowiązkowa kontrola dostępu.

Najpopularniejszymi rozwiązaniami MAC w Linux są:

  • SELinux (Security-Enhanced Linux)
  • AppArmor

Oba mechanizmy mają podobny cel:

ograniczyć możliwości procesu nawet wtedy, gdy zostanie on przejęty.

Różnią się jednak filozofią działania, konfiguracją i sposobem zarządzania politykami.


Czym jest Mandatory Access Control?

Tradycyjne uprawnienia Linux działają według modelu:

DAC – Discretionary Access Control

Czyli:

właściciel pliku decyduje, kto ma dostęp.

Przykład:

ls -l /etc/passwd

wynik:

-rw-r--r-- root root

Administrator może zmienić prawa.

Problem:

Jeżeli aplikacja działa z wysokimi uprawnieniami i zostanie przejęta, atakujący może wykorzystać jej dostęp.


MAC dodaje dodatkową warstwę.

Schemat:

Proces

↓

Uprawnienia Linux

↓

SELinux/AppArmor

↓

Kernel

↓

Dostęp przyznany lub zablokowany

Nawet root może zostać ograniczony przez politykę bezpieczeństwa.


SELinux – Security-Enhanced Linux

SELinux został pierwotnie opracowany przez:

National Security Agency

Obecnie jest częścią jądra Linux i jest szeroko stosowany między innymi w:

  • Red Hat Enterprise Linux,
  • Fedora,
  • Rocky Linux,
  • AlmaLinux,
  • systemach rządowych i korporacyjnych.

Jak działa SELinux?

SELinux wykorzystuje model:

label-based access control

Każdy obiekt posiada specjalną etykietę bezpieczeństwa.

Dotyczy to:

  • plików,
  • procesów,
  • portów,
  • użytkowników.

Przykład:

Plik:

/var/www/html/index.html

może mieć etykietę:

httpd_sys_content_t

Proces Apache:

httpd_t

SELinux sprawdza:

Czy proces httpd_t może czytać pliki httpd_sys_content_t?

Jeżeli polityka pozwala:

ALLOW

Jeżeli nie:

DENY

Model SELinux

SELinux działa według zasady:

domyślnie zabraniaj, zezwalaj tylko jawnie.

Przykład:

Apache może:

✅ czytać strony WWW

ale nie może:

❌ czytać prywatnych katalogów użytkowników
❌ pisać w dowolnych miejscach systemu
❌ uruchamiać przypadkowych programów

 

AppArmor vs SELinux – dwa mechanizmy bezpieczeństwa Linux, które warto znać
AppArmor vs SELinux – dwa mechanizmy bezpieczeństwa Linux, które warto znać

Tryby działania SELinux

SELinux posiada trzy tryby:

Enforcing

Aktywna ochrona.

Reguły są egzekwowane.

getenforce

wynik:

Enforcing

Permissive

SELinux tylko loguje naruszenia.

Nie blokuje.

Przydatne podczas tworzenia polityk.


Disabled

SELinux wyłączony.

W środowiskach produkcyjnych zazwyczaj niewskazane.


Zalety SELinux

Bardzo szczegółowa kontrola

Można kontrolować:

  • konkretne procesy,
  • konkretne pliki,
  • konkretne porty.

Świetna ochrona serwerów

Przykład:

Podatność w Apache.

Bez SELinux:

Apache

↓

system

↓

dostęp do danych

Z SELinux:

Apache

↓

SELinux policy

↓

tylko dozwolone zasoby

Standard korporacyjny

SELinux jest często wymagany w:

  • bankowości,
  • administracji,
  • dużych środowiskach enterprise.

Wady SELinux

Największym problemem SELinux jest złożoność.

Administrator musi rozumieć:

  • contexty,
  • typy,
  • role,
  • polityki,
  • moduły.

Przykład problemu:

Administrator zmienia katalog:

/var/www/html

na:

/data/web

Apache nie działa.

Dlaczego?

Nie przez Linux permissions.

Przez brak odpowiedniego contextu SELinux.

Naprawa:

restorecon -Rv /data/web

AppArmor – prostsze podejście

AppArmor działa inaczej.

Zamiast etykiet wykorzystuje:

profile aplikacji

Czyli definiuje:

co konkretna aplikacja może robić.


Popularne systemy:

  • Ubuntu,
  • Debian,
  • SUSE Linux Enterprise.

Jak działa AppArmor?

Przykład:

Profil dla programu:

/usr/sbin/nginx

może mówić:

nginx może:

✔ czytać /var/www

✔ pisać logi

✖ czytać /home

✖ wykonywać /bin/bash

Profil wygląda przykładowo:

/usr/sbin/nginx {

 /var/www/** r,

 /var/log/nginx/** rw,

 /bin/bash ix,

}

Tryby AppArmor

Enforce

Aktywna ochrona.

Reguły blokują działania.


Complain

Podobnie jak SELinux permissive.

Loguje, ale nie blokuje.


Sprawdzenie:

aa-status

Zalety AppArmor

Prostota

Łatwiejszy start dla administratorów.

Profil jest czytelny:

program

↓

dostęp do plików

↓

reguły

Szybkie wdrożenie

Dobry wybór dla:

  • serwerów WWW,
  • kontenerów,
  • małych i średnich firm.

Popularność w Ubuntu

Ubuntu domyślnie wykorzystuje AppArmor.

Przykłady:

  • Docker,
  • Snap,
  • systemowe usługi.

Wady AppArmor

Mniejsza szczegółowość niż SELinux.

AppArmor skupia się głównie na:

  • ścieżkach plików,
  • aplikacjach.

SELinux kontroluje:

  • typy obiektów,
  • role,
  • domeny bezpieczeństwa.

AppArmor vs SELinux – porównanie

Cecha SELinux AppArmor
Model Label-based Profile-based
Złożoność Wysoka Niższa
Nauka Trudniejsza Łatwiejsza
Kontrola Bardzo szczegółowa Bardzo dobra
Popularność Enterprise ⭐⭐⭐⭐⭐ ⭐⭐⭐
Ubuntu Opcjonalnie Domyślnie
RHEL Domyślnie Nie
Debugowanie Trudniejsze Łatwiejsze

Co wybrać?

Serwery Red Hat / Rocky / AlmaLinux

Najczęściej:

SELinux

Powód:

  • integracja z systemem,
  • wsparcie producenta,
  • standard enterprise.

Ubuntu Server

Najczęściej:

AppArmor

Powód:

  • prostota,
  • gotowe profile,
  • dobra integracja.

Kontenery

Najlepsze efekty daje połączenie:

Namespaces

+

cgroups v2

+

Seccomp

+

AppArmor/SELinux

Przykład praktyczny – przejęty serwer WWW

Załóżmy:

Podatność w aplikacji PHP.

Atakujący uzyskuje możliwość wykonania kodu.

Bez dodatkowej ochrony:

PHP

↓

Shell

↓

system

Z AppArmor:

PHP

↓

AppArmor

↓

ograniczony dostęp

Z SELinux:

PHP domain

↓

SELinux policy

↓

blokada nieautoryzowanych działań

Wskazówki administratora

Nie wyłączaj MAC, gdy pojawi się problem

Częsty błąd:

„SELinux blokuje aplikację, wyłączmy go.”

Lepsze podejście:

sprawdź logi.

SELinux:

ausearch -m AVC

AppArmor:

journalctl | grep DENIED

Najpierw tryb testowy

Przy wdrażaniu nowych profili:

SELinux:

Permissive

AppArmor:

Complain

Najpierw obserwujemy, potem blokujemy.


Podsumowanie

AppArmor i SELinux rozwiązują ten sam problem:

jak ograniczyć aplikację nawet wtedy, gdy zostanie zaatakowana.

SELinux oferuje większą kontrolę i jest standardem w środowiskach enterprise, ale wymaga większej wiedzy.

AppArmor jest prostszy, szybszy we wdrożeniu i bardzo dobrze sprawdza się na desktopach oraz serwerach Ubuntu.

Nie ma jednego uniwersalnego zwycięzcy.

Dobry administrator wybiera narzędzie zgodnie z wymaganiami środowiska.

W praktyce najważniejsze jest nie to, czy używasz SELinux czy AppArmor, ale czy w ogóle stosujesz mechanizm Mandatory Access Control jako kolejną warstwę ochrony.

Polecane wpisy
Kryptografia w Świecie Linuxa: Szyfrowanie Plików i Komunikacji
Kryptografia w Świecie Linuxa: Szyfrowanie Plików i Komunikacji

Kryptografia to dziedzina informatyki zajmująca się szyfrowaniem i deszyfrowaniem danych w celu ochrony ich przed nieautoryzowanym dostępem. W świecie Linuxa Czytaj dalej

Konfiguracja tuneli VPN z wykorzystaniem VTI (Virtual Tunnel Interface)
Konfiguracja tuneli VPN z wykorzystaniem VTI (Virtual Tunnel Interface)

Konfiguracja tuneli VPN z wykorzystaniem VTI (Virtual Tunnel Interface) Virtual Tunnel Interface (VTI) to zaawansowane rozwiązanie umożliwiające uproszczenie konfiguracji tuneli Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.