15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
25.08.2025

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

Gdy większość administratorów systemów myśli o wzmacnianiu serwera Linux, skupiają się na podstawach: utrzymywaniu pakietów na bieżąco, konfigurowaniu reguł zapory i ograniczaniu dostępu SSH. To wszystko są ważne i konieczne kroki — ale pozostawiają znaczną lukę. Jeden z najpotężniejszych i najczęściej niedoocenianych mechanizmów bezpieczeństwa dostępnych w systemie Linux to SELinux (Security-Enhanced Linux), framework kontroli dostępu obowiązkowej na poziomie jądra, zaprojektowany do zawierania zagrożeń zanim przerodzimy się w pełne kompromisy systemu.

Niezależnie od tego, czy uruchamiasz środowisko VPS Hosting, aplikację o dużym ruchu na Dedicated Servers, czy wielodostępową platformę Shared Web Hosting, SELinux może być decydującą warstwą, która zmienia poważną naruszenie w zawarty, możliwy do odzyskania incydent.

Czym jest SELinux?

SELinux to moduł bezpieczeństwa jądra Linux, który implementuje Mandatory Access Control (MAC). Aby zrozumieć, dlaczego to ma znaczenie, musisz najpierw zrozumieć, co zastępuje — a raczej, co uzupełnia.

Tradycyjny model bezpieczeństwa Linux opiera się na Discretionary Access Control (DAC). W ramach DAC uprawnienia dostępu są określane przez własność pliku i członkostwo w grupie. Użytkownik root ma nieograniczoną moc nad całym systemem. Jeśli atakujący uzyska dostęp root, uzyska wszystko.

W modelu MAC SELinux dostęp jest regulowany przez zasady bezpieczeństwa obowiązujące w całym systemie, które są egzekwowane na poziomie jądra. Co ważne, nawet użytkownik root podlega tym ograniczeniom. Proces uruchomiony jako root nie może wykonywać działań, które jego polityka SELinux nie zezwala wyraźnie.

SELinux został pierwotnie opracowany przez National Security Agency (NSA) we współpracy z Red Hat i został zintegrowany z głównym jądrem Linux na początku lat 2000. Dziś jest standardowym składnikiem dystrybucji Linux klasy enterprise, w tym RHEL, CentOS, Fedora, AlmaLinux i Rocky Linux.

Gdzie tradycyjne bezpieczeństwo Linux zawodzi

Klasyczny model uprawnień UNIX dobrze służył Linuksowi przez dziesięciolecia, ale nosi ze sobą strukturalne słabości, które współcześni atakujący rutynowo wykorzystują:

  • Root jest wszechmocny. Każdy exploit, który pomyślnie eskaluje do root, daje atakującemu nieograniczony dostęp do całego systemu — plików, baz danych, gniazd sieciowych i wszystkiego.
  • Kompromis usługi równa się kompromisowi systemu. Podatny moduł Apache, źle napisany skrypt PHP lub błędnie skonfigurowana aplikacja mogą być wykorzystane do przejścia na cały serwer.
  • Nowoczesne wektory ataku całkowicie omijają DAC. Powłoki internetowe, exploity eskalacji uprawnień, ucieczki z kontenerów i ataki na łańcuch dostaw są zaprojektowane do działania w granicach tradycyjnych uprawnień, a jednocześnie powodują katastrofalne szkody.

Scenariusz ataku w świecie rzeczywistym

Rozważ powszechną lukę w CMS, która pozwala atakującemu na przesłanie i wykonanie powłoki internetowej.

Bez SELinux: Atakujący czyta config.php, wyodrębnia poświadczenia bazy danych, zrzuca bazę danych, przechodzi lateralnie do innych hostowanych witryn i potencjalnie uzyskuje pełny dostęp root. Cały stos jest narażony z jednego punktu wejścia.

Z SELinux: Proces serwera Apache działa w domenie httpd_t. Polityka ściśle ogranicza, do czego httpd_t może uzyskać dostęp. Powłoka internetowa nie może czytać plików poza wyznaczoną domeną zawartości, nie może otwierać nieautoryzowanych połączeń sieciowych i nie może dotykać plików konfiguracji systemu. Naruszenie jest zawarte na poziomie aplikacji.

To jest główna propozycja wartości SELinux: ograniczenie szkód poprzez ograniczenie procesów.

Jak działa SELinux: konteksty bezpieczeństwa i egzekwowanie polityki

SELinux działa poprzez przypisanie kontekstu bezpieczeństwa (etykiety) do każdego procesu, pliku, portu i gniazda sieciowego w systemie. Polityki następnie definiują, które konteksty mogą ze sobą wchodzić w interakcje. Jądro egzekwuje te reguły przy każdej próbie dostępu.

Konkretny przykład

ObiektKontekst bezpieczeństwa
Proces Apachehttpd_t
Pliki witrynyhttpd_sys_content_t
Plik hasła shadowshadow_t

Polityka SELinux zezwala httpd_t na czytanie plików oznaczonych httpd_sys_content_t. Nie zezwala httpd_t na czytanie shadow_t.

Jeśli Apache — czy to legalnie, czy z powodu exploitacji — spróbuje czytać /etc/shadow, jądro odrzuci żądanie i zapisze szczegółowy wpis naruszenia do /var/log/audit/audit.log. Atak jest zablokowany i udokumentowany jednocześnie.

Tryby operacyjne SELinux

SELinux działa w trzech odrębnych trybach:

TrybZachowanie
EnforcingPolityki są aktywnie egzekwowane. Naruszenia są blokowane i rejestrowane.
PermissiveNaruszenia są rejestrowane, ale nie blokowane. Przydatne do audytu i opracowywania polityki.
DisabledSELinux jest całkowicie wyłączony. Nie jest zalecane dla środowisk produkcyjnych.

Sprawdzanie i ustawianie bieżącego trybu

# Check current SELinux status
getenforce
sestatus

# Temporarily switch to permissive mode (no reboot required)
setenforce 0

# Switch back to enforcing mode
setenforce 1

Aby trwale zmienić tryb, edytuj /etc/selinux/config i ustaw SELINUX=enforcing (lub permissive), a następnie uruchom ponownie.

> Najlepsza praktyka: Wdrażaj nowe serwery w trybie Permissive najpierw. Przejrzyj dzienniki audytu, zidentyfikuj wszelkie legalne procesy, które są flagowane, dostosuj swoje polityki i przełącz się na Enforcing dla produkcji. To podejście zapobiega przerwom operacyjnym, zapewniając jednocześnie dokładność polityk.

Typy polityk SELinux

SELinux jest dostarczany z kilkoma typami polityk dostosowanymi do różnych środowisk:

Polityka Targeted (domyślna i zalecana)

Stosuje ograniczenia MAC tylko do usług skierowanych do sieci, takich jak Apache, Nginx, Postfix, Dovecot i DNS. Wszystkie inne procesy działają w niezagranicznej domenie. To jest najlepszy balans bezpieczeństwa i użyteczności dla zdecydowanej większości obciążeń VPS i serwera dedykowanego.

Polityka Strict

Stosuje MAC do wszystkich procesów w systemie, w tym sesji użytkownika. Zapewnia maksymalne bezpieczeństwo, ale wymaga znacznie więcej zarządzania polityką i wiedzy operacyjnej.

MLS/MCS (Multi-Level Security / Multi-Category Security)

Zaawansowane typy polityk zaprojektowane dla środowisk rządowych, tajnych lub wysoce regulowanych, gdzie dane muszą być izolowane na wielu poziomach czułości jednocześnie.

Dla większości wdrożeń serwera produkcyjnego Polityka Targeted jest właściwym wyborem.

Dlaczego SELinux ma znaczenie dla hostingu, DevOps i zgodności

SELinux zapewnia wymierne korzyści bezpieczeństwa w szerokim zakresie kontekstów operacyjnych:

Izolacja procesów

Każda ograniczona usługa działa w swojej własnej domenie bezpieczeństwa. Kompromis jednej usługi — powiedzmy, aplikacji internetowej — nie daje dostępu do innych usług działających na tym samym hoście. Jest to szczególnie cenne w środowiskach serwerów wieloaplikacyjnych.

Egzekwowanie najmniejszych uprawnień

SELinux egzekwuje zasadę najmniejszych uprawnień na poziomie jądra. Procesy mogą uzyskiwać dostęp tylko do zasobów, które wyraźnie potrzebują. Nawet jeśli atakujący uzyska dostęp root w ograniczonym procesie, nie może przekroczyć uprawnień zdefiniowanych przez politykę.

Ścieżki audytu i kryminalistyka

Każda odrzucona próba dostępu jest rejestrowana w /var/log/audit/audit.log z pełnym kontekstem: zaangażowany proces, zasób, do którego próbował uzyskać dostęp, konteksty bezpieczeństwa obu i znacznik czasu. To sprawia, że kryminalistyka po incydencie jest dramatycznie bardziej efektywna.

Bezpieczeństwo kontenerów

SELinux zapobiega ucieczce kontenerów Docker i Podman z ich granic i dostępowi do zasobów hosta. To jest krytyczna warstwa obrony dla obciążeń konteneryzowanych, gdzie luki w ucieczce z kontenerów są znaną klasą ataku.

Zgodność regulacyjna

SELinux jest wymaganą kontrolą w kilku frameworkach zgodności, w tym PCI DSS, HIPAA i standardach bezpieczeństwa wojskowego/rządowego. Uruchomienie SELinux w trybie Enforcing z udokumentowaną polityką jest często warunkiem wstępnym do przejścia audytów bezpieczeństwa w branżach regulowanych.

Podstawowe polecenia SELinux dla administratorów systemów

Oto najczęściej używane polecenia do zarządzania SELinux w codziennych operacjach:

Sprawdzenie statusu SELinux

getenforce
sestatus

Przywrócenie kontekstów plików po przeniesieniu plików internetowych

Gdy pliki są przenoszone zamiast kopiowane, mogą zachować nieprawidłowe etykiety bezpieczeństwa. Użyj restorecon aby to naprawić:

restorecon -Rv /var/www/html

Wyświetlanie etykiet bezpieczeństwa plików

ls -Z /var/www/html

Zezwolenie usłudze internetowej na połączenia wychodzące (np. dla wywołań API lub proxy)

setsebool -P httpd_can_network_connect 1

Zezwolenie Apache na połączenie z bazą danych

setsebool -P httpd_can_network_connect_db 1

Przegląd ostatnich odrzuconych działań w dzienniku audytu

ausearch -m avc -ts recent

Generowanie niestandardowego modułu polityki z odrzuceń audytu

audit2allow -a -M my_custom_policy
semodule -i my_custom_policy.pp

> Ważne: Zawsze badaj odrzucenia audytu przed utworzeniem reguł zezwolenia. audit2allow to potężne narzędzie, ale ślepe zezwolenie na wszystkie odrzucenia pokonuje cel SELinux. Zrozum, co każda reguła zezwala, zanim ją zastosujesz.

Powszechne pułapki SELinux i jak ich uniknąć

Wyłączanie SELinux zamiast go naprawiać. Najczęstszym błędem administratorów jest trwałe wyłączenie SELinux, gdy napotykają odrzucenie. To usuwa całą warstwę ochrony. Zamiast tego użyj audit2allow i setsebool aby rozwiązać konkretne problemy, utrzymując SELinux aktywny.

Nieprawidłowe etykiety plików po ręcznych wdrożeniach. Jeśli wdrażasz pliki aplikacji, kopiując je z niestandardowej lokalizacji, mogą dziedziczyć nieprawidłowe etykiety. Zawsze uruchom restorecon po ręcznych operacjach na plikach w katalogach głównych sieci i katalogach aplikacji.

Nierzetelny przegląd dzienników w trybie Permissive. Pominięcie fazy Permissive i przejście bezpośrednio do Enforcing na serwerze produkcyjnym to przepis na nieoczekiwane awarie. Zawsze sprawdzaj polityki względem rzeczywistego ruchu przed ich egzekwowaniem.

SELinux i AlexHost: bezpieczeństwo gotowe do produkcji od podstaw

Serwery AlexHost z dystrybucjami Linux klasy enterprise (AlmaLinux, Rocky Linux, CentOS) mają SELinux dostępny od razu. Niezależnie od tego, czy wdrażasz stos aplikacji internetowej, serwer bazy danych czy środowisko mikrousług konteneryzowanych, SELinux zapewnia fundamentalną warstwę kontroli dostępu, która utrzymuje Twoje obciążenia odporne na exploitację.

Jeśli zarządzasz serwerem za pośrednictwem panelu sterowania, środowiska

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij