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
Sekcja
Bezpieczeństwo Linux

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 bezpieczeństwa 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ę. Jednym z najpotężniejszych i najczęściej niedostatecznie wykorzystywanych mechanizmów bezpieczeństwa dostępnych w systemie Linux jest SELinux (Security-Enhanced Linux), framework obowiązkowej kontroli dostępu na poziomie jądra, zaprojektowany do powstrzymywania zagrożeń, zanim przerodzimy się w pełne kompromisy systemu.

Niezależnie od tego, czy uruchamiasz środowisko VPS Hosting, aplikację o wysokim ruchu na Dedicated Servers, czy wielodostępną platformę Shared Web Hosting, SELinux może być decydującą warstwą, która zmienia poważne 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 systemowe zasady bezpieczeństwa, 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 komponentem dystrybucji Linux klasy enterprise, w tym RHEL, CentOS, Fedora, AlmaLinux i Rocky Linux.

Gdzie tradycyjne bezpieczeństwo Linux zawodzi

Klasyczny model uprawnień UNIX służył Linux dobrze przez dziesięciolecia, ale nosi 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 — pliki, bazy danych, gniazda sieciowe i wszystko inne.
  • Kompromitacja usługi równa się kompromitacji systemu. Podatny moduł Apache, źle napisany skrypt PHP lub błędnie skonfigurowana aplikacja mogą być wykorzystane do poruszania się po całym serwerze.
  • Nowoczesne wektory ataku całkowicie omijają DAC. Web shell, exploity eskalacji uprawnień, ucieczki z kontenerów i ataki łańcucha dostaw są zaprojektowane do działania w granicach tradycyjnych uprawnień, jednocześnie powodując katastrofalne szkody.

Scenariusz ataku z rzeczywistego świata

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

Bez SELinux: Atakujący czyta config.php, wyodrębnia poświadczenia bazy danych, zrzuca bazę danych, porusza się lateralnie do innych hostowanych witryn i potencjalnie osiąga pełny dostęp root. Cały stos jest skompromitowany 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. Web shell 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 warstwie aplikacji.

To jest główna propozycja wartości SELinux: ograniczenie szkód poprzez izolację 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 definiują następnie, 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 haseł shadowshadow_t

Polityka SELinux pozwala httpd_t na odczyt plików oznaczonych httpd_sys_content_t. Nie pozwala httpd_t na odczyt shadow_t.

Jeśli Apache — czy to w sposób uzasadniony, czy w wyniku exploitacji — spróbuje odczytać /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
EnforcingZasady są aktywnie egzekwowane. Naruszenia są blokowane i rejestrowane.
PermissiveNaruszenia są rejestrowane, ale nie blokowane. Przydatne do audytu i opracowywania zasad.
DisabledSELinux jest całkowicie wyłączony. Nie zalecane w środowiskach 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. Przejrzyj dzienniki audytu, zidentyfikuj wszelkie legalne procesy, które są flagowane, dostosuj swoje zasady, a następnie przełącz na Enforcing do produkcji. Takie podejście zapobiega zakłóceniom operacyjnym, zapewniając jednocześnie dokładność zasad.

Typy polityk SELinux

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

Targeted Policy (domyślna i rekomendowana)

Stosuje ograniczenia MAC tylko do usług skierowanych do sieci, takich jak Apache, Nginx, Postfix, Dovecot i DNS. Wszystkie pozostałe procesy działają w niezagraniczonej domenie. Jest to najlepszy balans bezpieczeństwa i użyteczności dla zdecydowanej większości obciążeń VPS i serwerów dedykowanych.

Strict Policy

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, sklasyfikowanych lub wysoce regulowanych, gdzie dane muszą być izolowane jednocześnie na wielu poziomach wrażliwości.

W przypadku większości wdrożeń serwerów produkcyjnych Targeted Policy 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 ramach własnej domeny bezpieczeństwa. Kompromitacja jednej usługi — na przykład aplikacji internetowej — nie daje dostępu do innych usług uruchomionych 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ą uzyskać dostęp tylko do zasobów, które wyraźnie potrzebują. Nawet jeśli atakujący uzyska uprawnienia root w ramach ograniczonego procesu, nie może przekroczyć uprawnień zdefiniowanych przez politykę.

Dzienniki audytu i kryminalistyka

Każda próba odmowy 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 oraz znacznik czasu. To sprawia, że kryminalistyka po incydencie jest znacznie bardziej efektywna.

Bezpieczeństwo kontenerów

SELinux uniemożliwia kontenerom Docker i Podman ucieczkę z ich granic i dostęp do zasobów hosta. Jest to krytyczna warstwa obrony dla obciążeń konteneryzowanych, gdzie luki w ucieczce z kontenera są znaną klasą ataków.

Zgodność regulacyjna

SELinux jest wymaganą kontrolą w kilku ramach zgodności, w tym PCI DSS, HIPAA i standardach bezpieczeństwa wojskowych/rządowych. Uruchamianie 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 sieciowych

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 na połączenia wychodzące usługi sieciowej (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 akcji w dzienniku audytu

ausearch -m avc -ts recent

Generowanie niestandardowego modułu zasad z odrzuceń audytu

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

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

Typowe błędy SELinux i jak ich unikać

Wyłączanie SELinux zamiast go naprawiać. Najczęstszym błędem administratorów jest trwałe wyłączenie SELinux po napotkaniu odmowy. 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ą one dziedziczyć nieprawidłowe etykiety. Zawsze uruchamiaj restorecon po ręcznych operacjach na plikach w katalogach głównych witryn i katalogach aplikacji.

Nieweryfikowanie 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 zasady względem rzeczywistego ruchu przed ich wymuszeniem.

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

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

Jeśli zarządzasz serwerem za pośrednictwem panelu kontroli, środowiska VPS z cPanel są w pełni kompatybilne z SELinux w trybie Targeted, a sam cPanel jest dostarczany z konfiguracjami świadomymi SELinux dla swoich zarządzanych usług.

Dla zespołów, które potrzebują pełnej kontroli nad swoją postawą bezpieczeństwa — w tym niestandardowych modułów polityki SELinux, konfiguracji MLS lub hartowania napędzanego zgodnością — Serwery dedykowane zapewniają izolację i dostęp na poziomie root wymagany do wdrożenia i utrzymania polityk MAC klasy enterprise bez ograniczeń infrastruktury współdzielonej.

Podsumowanie

SELinux to nie tylko opcjonalny dodatek bezpieczeństwa — to fundamentalny komponent architektoniczny, który redefiniuje sposób, w jaki Linux egzekwuje kontrolę dostępu na poziomie jądra. Poprzez ograniczenie procesów do dobrze zdefiniowanych domen bezpieczeństwa, egzekwowanie polityk najmniejszych uprawnień, których nawet root nie może ominąć, i generowanie szczegółowych dzienników audytu każdej odrzuconej próby dostępu, SELinux przekształca standardowy serwer Linux w znacznie bardziej odporny i obronny system.

Tak, SELinux wymaga inwestycji: zrozumienia kontekstów bezpieczeństwa, pisania lub dostrajania polityk i zaangażowania się w przepływ pracy, który traktuje odmowy jako informacje, a nie przeszkody. Ale dla każdego serwera obsługującego wrażliwe dane, uruchamiającego usługi dostępne publicznie lub działającego w ramach regulowanego środowiska zgodności, ta inwestycja nie jest opcjonalna — to jest punkt wyjścia.

Skonfiguruj go prawidłowo, utrzymuj go w trybie Enforcing, a SELinux będzie cicho zawierać zagrożenia, które w innym przypadku mogłyby zagrozić całej twojej infrastrukturze.