Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
25.08.2025

Co to jest SELinux i jak może zwiększyć bezpieczeństwo systemu Linux?

Jeśli chodzi o zabezpieczanie serwerów Linux, większość administratorów myśli o podstawach: aktualizowaniu pakietów, konfigurowaniu zapór sieciowych, ograniczaniu dostępu SSH. Jednak jeden z najpotężniejszych mechanizmów bezpieczeństwa jest często pomijany – SELinux (Security-Enhanced Linux). To nie tylko dodatek; to struktura bezpieczeństwa na poziomie jądra zaprojektowana w celu powstrzymania włamań przed ich eskalacją. Zarówno w przypadku serwerów VPS, jak i serwerów dedykowanych, SELinux może oznaczać różnicę między drobnym incydentem a pełnym naruszeniem systemu.

Czym jest SELinux?

SELinux to moduł bezpieczeństwa jądra Linux, który wymusza obowiązkową kontrolę dostępu (MAC).

  • W tradycyjnym modelu DAC (Discretionary Access Control) dostęp jest określany przez właścicieli plików, a root ma nieograniczoną władzę.
  • W ramach MAC (SELinux) dostęp jest regulowany przez ogólnosystemowe zasady bezpieczeństwa. Nawet root podlega ograniczeniom.

Początkowo opracowany przez NSA we współpracy z Red Hat, SELinux został zintegrowany z jądrem Linux na początku 2000 roku i jest obecnie standardem w dystrybucjach korporacyjnych, takich jak RHEL, CentOS, Fedora, AlmaLinux i Rocky Linux.

Problem: gdzie tradycyjne zabezpieczenia Linuksa zawodzą

Klasyczny model uprawnień UNIX (DAC) ma krytyczne słabości:

  • Root jest wszechmocny. Każdy exploit, który eskaluje do roota, naraża na szwank cały system.
  • Naruszenie usługi = naruszenie systemu. Zhakowany moduł Apache lub skrypt PHP może uzyskać dostęp do poufnych danych.
  • Nowoczesne wektory ataku omijają DAC. Powszechne są powłoki internetowe, exploity eskalacji uprawnień i ucieczki z kontenerów.

Rzeczywisty scenariusz:
Luka w systemie CMS umożliwia atakującemu uruchomienie powłoki sieciowej. Bez SELinux atakujący może odczytać config.php, wyodrębnić dane uwierzytelniające bazy danych i naruszyć cały stos. Dzięki SELinux proces serwera WWW (httpd_t) jest ograniczony i nie może uzyskać dostępu do plików poza wyznaczoną domeną.

Jak działa SELinux

Każdy proces, plik, port i gniazdo ma kontekst bezpieczeństwa (etykietę).
Zasady definiują, które konteksty mogą wchodzić w interakcje.

Przykład:

  • Apache działa w domenie httpd_t.
  • Pliki strony internetowej są oznaczone jako httpd_sys_content_t.
  • Zasady zezwalają httpd_t na odczyt tylko plików httpd_sys_content_t.

Jeśli Apache próbuje odczytać /etc/shadow (shadow_t), jądro odrzuca żądanie i rejestruje naruszenie.

Tryby działania

  • Egzekwowanie: zasady są egzekwowane, naruszenia są blokowane.
  • Permissive: naruszenia są rejestrowane, ale nie blokowane (przydatne do testowania).
  • Wyłączony: SELinux jest wyłączony (niezalecane).

Najlepsza praktyka: zacznij od Permissive, przejrzyj logi, dostosuj zasady, a następnie przejdź do Enforcing dla produkcji.

Dlaczego SELinux ma znaczenie dla hostingu i DevOps

  • Izolacja procesów: ogranicza szkody w przypadku naruszenia pojedynczej usługi.
  • Egzekwowanie najniższych uprawnień: nawet root nie może ominąć ograniczeń polityki.
  • Kryminalistyka i widoczność: wszystkie odrzucone działania są rejestrowane (/var/log/audit/audit.log).
  • Bezpieczeństwo kontenerów: zapobiega wydostawaniu się kontenerów Docker/Podman poza ich granice.
  • Zgodność: wymagana w środowiskach regulowanych (PCI DSS, HIPAA, wdrożenia wojskowe).

Typy zasad

  • Targeted (domyślnie): ogranicza tylko usługi sieciowe (Apache, Nginx, Postfix, Dovecot).
  • Ścisłe: stosuje MAC do wszystkich procesów.
  • MLS/MCS: zaawansowane zasady dla wielopoziomowych lub rządowych zabezpieczeń.

Dla większości obciążeń VPS i serwerów dedykowanych, Targeted Policy stanowi najlepszą równowagę między użytecznością i ochroną.

Praktyczne przykłady

Sprawdzanie statusu SELinux

getenforce sestatus

Przywracanie kontekstów plików po przeniesieniu plików internetowych

restorecon -Rv /var/www/html

Lista etykiet zabezpieczeń plików

ls -Z /var/www/html

Zezwalanie na połączenia wychodzące usług internetowych (np. wywołania API)

setsebool -P httpd_can_network_connect 1

Przeglądanie odrzuconych działań w dziennikach

ausearch -m avc -ts recent

Wnioski

SELinux to coś więcej niż dodatkowa funkcja bezpieczeństwa; to fundamentalna struktura, która na nowo definiuje sposób, w jaki Linux wymusza kontrolę dostępu. Ograniczając procesy, zmniejszając wpływ luk w zabezpieczeniach i zapewniając szczegółowe ścieżki audytu, SELinux przekształca system Linux w znacznie bardziej odporne środowisko. Chociaż wymaga starannej konfiguracji i zrozumienia, korzyści w zakresie bezpieczeństwa, jakie wnosi do nowoczesnych infrastruktur serwerowych, sprawiają, że jest to niezbędny element każdego wdrożenia produkcyjnego.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills