SELinux może wydawać się zniechęcający i bardzo trudny do wdrożenia w większości nowoczesnych systemów. Jednak konfiguracja SELinux ma ogromne korzyści zarówno w egzekwowaniu bezpieczeństwa, jak i rozwiązywaniu problemów.
Ten samouczek omówi różne koncepcje implementowane przez SELinux i pozna różne praktyczne metody implementacji SELinux.
UWAGA: Zanim zaczniemy, dobrze jest użyć poleceń z tego samouczka jako użytkownik root lub użytkownik w grupie sudoers.
Zainstaluj pakiety SELinux
Zainstalujmy różne pakiety SELinux, które z kolei pomogą w pracy z politykami SELinux.
Zanim przystąpimy do instalacji pakietów SELinux, dobrze jest sprawdzić, które są zainstalowane w obecnym systemie.
W większości instalacji dystrybucji REHL niektóre pakiety są instalowane domyślnie. Pakiety te obejmują:
- setools - ten pakiet służy do monitorowania logów, polityki zapytań i zarządzania plikami kontekstowymi.
- policycoreutils-python - dostarcza podstawowe narzędzia Pythona do zarządzania SELinux
- policycoreutils - ten pakiet zawiera również narzędzia do zarządzania SELinux.
- mcstrans - mcstrans dostarcza demona tłumaczenia SELinux, który tłumaczy różne poziomy na łatwe i zrozumiałe formaty.
- setools-console - podobne do setools.
- Selinux-policy - zapewnia odniesienie do konfiguracji polityki SELinux
- Selinux-policy-targeted - podobny do SELinux-policy
- Libselinux-utils - narzędzia libselinux SELinux, które pomagają zarządzać SELinux
- Setroubleshoot-server - narzędzia do rozwiązywania problemów z SELinux
Aby sprawdzić, które pakiety są już zainstalowane w twoim systemie, możesz użyć polecenia rpm -qa i przesłać wynik do grep dla SELinux jako:
rpm -qa | grep selinuxlibselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-targeted-3.14.3-54.el8_3.2.noarcha
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.noarcha
libselinux-2.9-4.el8_3.x86_64
Powinno to dać wynik wszystkich pakietów zainstalowanych do obsługi SELinux
Jeśli nie wszystkie pakiety SELinux są zainstalowane w twoim systemie, użyj yum, aby je zainstalować, jak pokazano w poleceniu poniżej:
mniam zainstaluj policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstransTryby i stany SELinux
Zacznijmy teraz bawić się SELinux, a konkretnie trybami SELinux.
Tryby SELinux
Po włączeniu SELinux może działać w trzech możliwych trybach:
- Wymuszanie
- Dozwalający
- Niepełnosprawny
Tryb wymuszania
Jeśli tryb SELinux ma wymusić, zapewni to, że żaden nieautoryzowany dostęp do systemu przez żadnego użytkownika lub procesy nie zostanie odmówiony. Tryb wymuszania przechowuje również dzienniki wszelkich prób nieautoryzowanego dostępu.
Tryb zezwalający
Tryb zezwalający działa jak częściowo włączony stan SELinux. W tym trybie nie ma odmowy dostępu, ponieważ SELinux nie wymusza w tym trybie swoich polityk. Jednak tryb zezwalający prowadzi rejestr wszelkich prób naruszenia zasad. Ten tryb jest bardzo wydajny podczas testowania przed jego pełnym włączeniem, ponieważ użytkownicy i komponenty mogą nadal wchodzić w interakcje z systemem, ale nadal zbierać logi. Pozwala to na dostrojenie systemu w sposób, który uważasz za odpowiedni.
Tryb wyłączony
Tryb wyłączenia może być również postrzegany jako stan wyłączenia, w którym SELinux jest wyłączony i nie oferuje żadnych zabezpieczeń.
Stany SELinux
Po zainstalowaniu SELinux w systemie. Może mieć stany binarne: włączony i wyłączony. Aby wyświetlić stan SELinux, użyj polecenia:
getenforceNiepełnosprawny
Powyższe dane wyjściowe wskazują, że SELinux jest obecnie wyłączony.
Możesz także użyć polecenia sestatus, jak pokazano poniżej:
statusStatus SELinux: wyłączony
Włącz i wyłącz SELinux
Stany i konfiguracja SELinux są obsługiwane przez plik konfiguracyjny znajdujący się w /etc/selinux/config. Możesz użyć polecenia cat, aby wyświetlić jego zawartość.
cat /etc/selinux/config#Ten plik kontroluje stan SELinux w systemie.
#SELINUX= może przyjąć jedną z tych trzech wartości:
#enforcing - polityka bezpieczeństwa SELinux jest egzekwowana.
#permissive - SELinux wyświetla ostrzeżenia zamiast wymuszać.
#disabled - Żadna polityka SELinux nie jest załadowana.
SELINUX=wymuszanie
#SELINUXTYPE= może przyjąć jedną z tych trzech wartości:
# ukierunkowany - Ukierunkowane procesy są chronione,
# minimum - Modyfikacja docelowej polityki. Tylko wybrane procesy są chronione.
# mls - wielopoziomowa ochrona bezpieczeństwa.
SELINUXTYPE=docelowa
Z powyższego wyniku mamy włączone dwie główne dyrektywy. Dyrektywa SELINUX określiła tryb, w którym skonfigurowany jest SELinux. Dyrektywa SELINUXTYPE określa zestaw polityk SELinux. Domyślnie SELinux używa ukierunkowanej polityki, która pozwala dostosować uprawnienia kontroli dostępu. Druga polityka to Bezpieczeństwo wielopoziomowe lub MLS.
W niektórych wersjach może znaleźć się minimalna polityka.
cd /etc/selinux/[ls -l
łącznie 4
-rw-r--r-- 1 root root 548 16 lutego 22:40 config
drwxr-xr-x 1 korzeń korzeń 4096 lut 16 22:43 mls
-rw-r--r-- 1 root root 2425 Lip 21 2020 semanage.konf
drwxr-xr-x 1 root root 4096 16 lutego 22:40 celowany
Zobaczmy teraz, jak włączyć SELinux w systemie. Zalecamy najpierw ustawić tryb SELINUX na zezwalający i nie wymuszony.
nano /etc/selinux/configTeraz edytuj dyrektywę SELINUX jako:
SELINUX=pozwalającyPo zapisaniu pliku uruchom ponownie system.
restartUWAGA: Zdecydowanie zalecamy ustawienie dyrektywy SELINUX na permisywną przed wymuszeniem SELinux.
Po ponownym uruchomieniu systemu sprawdź, czy w /var/log/messages nie ma żadnych dzienników zgłaszanych przez SELinux.
Następnie upewnij się, że nie masz błędów i wymuś SELinux, ustawiając dyrektywę tak, aby wymusić w /etc/selinux/config
Na koniec możesz wyświetlić status SELinux za pomocą polecenia sestatus:
Status SELinux: włączonyMontaż SELinuxfs: /sys/fs/selinux
Katalog główny SELinux: /etc/selinux
Wczytana nazwa zasady: ukierunkowana
Aktualny tryb: egzekwowanie
Tryb z pliku konfiguracyjnego: błąd (Sukces)
Status zasad MLS: włączony
Polityka deny_unknown status: dozwolone
Sprawdzanie ochrony pamięci: rzeczywiste (bezpieczne)
Maksymalna wersja polityki jądra: 31
Możesz także użyć polecenia setenforce, aby przełączać się między różnymi trybami SELinux. Na przykład, aby ustawić tryb na permissive, użyj polecenia:
setenforce zezwalającyTen tryb jest tymczasowy i zostanie przywrócony do jednego w pliku konfiguracyjnym po ponownym uruchomieniu.
status SELinux status: włączonyMontaż SELinuxfs: /sys/fs/selinux
Katalog główny SELinux: /etc/selinux
Wczytana nazwa zasady: ukierunkowana
Aktualny tryb: permisywny
Tryb z pliku konfiguracyjnego: wymuszanie
Status zasad MLS: włączony
Polityka deny_unknown status: dozwolone
Sprawdzanie ochrony pamięci: rzeczywiste (bezpieczne)
Maksymalna wersja polityki jądra: 31
Polityka i kontekst SELinux
Aby uniknąć nieporozumień dla początkujących w SELinuksie, nie będziemy zagłębiać się w implementację polityk SELinuksa, ale po prostu dotkniemy tego, aby dać ci pomysł.
SELinux działa poprzez wdrażanie polityk bezpieczeństwa. Polityka SELinux odnosi się do reguły używanej do definiowania praw dostępu dla każdego obiektu w systemie. Obiekty odnoszą się do użytkowników, procesów, plików i ról.
Każdy kontekst jest zdefiniowany w postaci user:role:type:level.
Na przykład utwórz katalog w swoim katalogu domowym i wyświetl jego kontekst bezpieczeństwa SELinux, jak pokazano w poniższych poleceniach:
mkdir ~/linuxhint_dirls -Z ~/ | grep linuxhint
Spowoduje to wyświetlenie danych wyjściowych, jak pokazano poniżej:
unconfined_u:object_r:user_home_t:s0 linuxhint_dirMożesz również znaleźć inne katalogi z kontekstami bezpieczeństwa, takie jak:
system:_u:obiekt_r:user_home_t:s0Możesz zdać sobie sprawę, że powyższe dane wyjściowe są zgodne ze składnią użytkownika:rola:typ:poziom.
Wniosek
To był samouczek dla początkujących do SELinux przy użyciu CentOS 8. Chociaż samouczek jest przeznaczony dla początkujących, to w zupełności wystarczy, aby uruchomić SELinux i usunąć zastraszający charakter SELinux.
Dziękuję za przeczytanie.