CodeGym /Kursy /Docker SELF /Wprowadzenie do SELinux: sprawdzanie statusu, włączanie, ...

Wprowadzenie do SELinux: sprawdzanie statusu, włączanie, podstawowe komendy

Docker SELF
Poziom 5 , Lekcja 2
Dostępny

1. Co to jest SELinux i po co jest potrzebny?

SELinux (Security-Enhanced Linux) — to moduł bezpieczeństwa, który wzmacnia tradycyjny model zarządzania prawami dostępu, dodając koncepcję kontroli mandatowej. Pozwala administratorowi skonfigurować bardziej restrykcyjne ograniczenia dla użytkowników, a nawet procesów, aby zminimalizować potencjalne szkody wynikające z możliwych ataków.

Co czyni go wyjątkowym?

Wyobraź sobie, że twój system to dom. Tradycyjne prawa dostępu (rwx dla użytkownika, grupy i pozostałych) to jak klucze do zamków w drzwiach. Ale co, jeśli ktoś wyłamie drzwi? SELinux staje się drugą linią obrony, wzmacniając ochronę za pomocą zasad zachowania: "Hej, nawet jeśli jesteś w środku, nie możesz wchodzić do łazienki!"

Główne zadania SELinux:

  1. Ochrona przed nieautoryzowanym dostępem dla procesów i plików.
  2. Zmniejszenie szkód wynikających z ataków, nawet jeśli proces został przejęty.
  3. Zasady "domyślnej ochrony" (wszystko jest zabronione, z wyjątkiem tego, co jest dozwolone).

Tryby pracy SELinux

SELinux może działać w trzech trybach:

  1. Enforcing — aktywny, stosuje politykę bezpieczeństwa i blokuje naruszające procesy.
  2. Permissive — jedynie zapisuje naruszenia w dziennikach, ale nie blokuje działań.
  3. Disabled — całkowicie wyłączony
Ciekawostka:

SELinux w trybie enforcing przypomina surowego starszego brata dla twojego systemu. Permissive — to młodszy brat, który tylko narzeka, ale nic nie robi.


2. Sprawdzanie statusu SELinux

Na początek zobaczmy, czy SELinux jest aktywny i w jakim trybie działa. Do tego mamy kilka wygodnych komend.

Komenda getenforce

Ta komenda po prostu powie Ci, jaki tryb jest używany: Enforcing, Permissive, lub Disabled.

$ getenforce
Enforcing

Jeśli w wyniku pojawi się Disabled, to znaczy, że SELinux jest wyłączony — i to oznacza, że aby go włączyć, będziesz musiał trochę popracować, ale o tym później.

Komenda sestatus

Bardziej szczegółowy raport o statusie SELinux można uzyskać za pomocą tej komendy. Pokaże ona aktualny stan, aktywny tryb i używaną politykę.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Tu możesz zobaczyć:

  • enabled/disabled — czy SELinux jest włączony.
  • current mode — aktywny tryb (enforcing, permissive).
  • loaded policy name — jaka polityka jest załadowana. Na przykład, "targeted" oznacza, że SELinux kontroluje tylko kluczowe procesy.

3. Przełączanie trybów SELinux

Aby zmienić aktualny tryb pracy SELinux, używa się polecenia setenforce.

Przełączenie w tryb permissive

Jeśli chcesz tymczasowo "poluzować smycz" SELinux, możesz włączyć tryb permissive.

$ sudo setenforce 0

Teraz SELinux będzie tylko rejestrować naruszenia, ale ich nie blokować. Możesz sprawdzić nowe ustawienie za pomocą polecenia getenforce:

$ getenforce
Permissive

Przełączenie z powrotem w tryb enforcing

Gdy zdecydujesz się ponownie włączyć ścisłą kontrolę, wykonaj:

$ sudo setenforce 1

I oczywiście sprawdź rezultat:

$ getenforce
Enforcing

Ta zmiana jest stosowana na bieżąco, ale tylko do następnego restartu systemu.


4. Włączanie SELinux

Jeśli SELinux był wyłączony, musisz wprowadzić zmiany w pliku konfiguracyjnym. SELinux jest zarządzany przez plik /etc/selinux/config.

Sprawdzanie bieżącego pliku konfiguracyjnego

Zobaczmy, co jest tam ustawione. Użyj dowolnego edytora tekstu, na przykład nano:

$ sudo nano /etc/selinux/config

Zobaczysz coś w tym stylu:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

Przełączanie SELinux do aktywnego stanu

Aby włączyć SELinux, zmień linię SELINUX=disabled na SELINUX=enforcing lub SELINUX=permissive.

Oto przykład pliku po zmianach:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

Po edycji zapisz plik i zrestartuj system:

$ sudo reboot

Po ponownym uruchomieniu możesz sprawdzić status za pomocą sestatus, aby upewnić się, że SELinux jest aktywny.


5. Analiza kontekstów SELinux

Czym są konteksty?

Konteksty to etykiety, które SELinux używa do zarządzania dostępem. Każdy plik, proces i użytkownik ma swój własny kontekst.

Możesz zobaczyć konteksty plików za pomocą polecenia ls -Z. Oto przykład:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Co to oznacza?

  1. unconfinedu — użytkownik SELinux.
  2. objectr — typ obiektu.
  3. httpdsyscontent_t — typ dostępu (w tym przypadku związany z serwerem WWW).
  4. s0 — poziom bezpieczeństwa.

Zmiana kontekstu

Jeśli SELinux blokuje działanie twojej aplikacji, być może trzeba zmienić kontekst pliku. Użyj polecenia chcon:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

To polecenie tymczasowo zmienia typ kontekstu pliku. Jednak po ponownym uruchomieniu zmiany mogą zniknąć, dlatego dla ustawień stałych lepiej zmodyfikować politykę SELinux (o tym później).


6. Przykład pracy z SELinux

Zobaczmy przykład. Jesteś administratorem serwera, który chce uruchomić serwer www, ale SELinux blokuje dostęp do plików w katalogu /var/www/html.

Kroki:

  1. Sprawdź status SELinux:

    $ sestatus
    

    Upewnij się, że SELinux jest włączony i działa w trybie enforcing.

  2. Sprawdź konteksty plików:

    $ ls -Z /var/www/html
    
  3. Jeśli kontekst jest nieprawidłowy, zmień go:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Sprawdź działanie serwera www.


7. Typowe błędy i problemy

  1. SELinux jest wyłączony, a Ty tego nie zauważasz. Zawsze sprawdzaj status przy użyciu sestatus. Wielu administratorów zapomina włączyć SELinux po instalacji systemu.

  2. "Dlaczego moja usługa nie działa?" SELinux blokuje dostęp. Użyj audit.log do analizy:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Nie zapisują się zmiany kontekstu. Używaj nie chcon, ale poleceń do trwałych zmian, takich jak semanage.

Nauka SELinux jest jak przygotowanie do maratonu: na początku może być trudno, ale z czasem zrozumiesz, jak to narzędzie może znacznie poprawić bezpieczeństwo systemu. Wykorzystaj tę wiedzę, aby być tym adminem, którego nie złamie nawet najbardziej zaawansowany haker.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION