Jak zabezpieczyć serwery Linux za pomocą SELinux

Se Linux Hero

SELinux może pomóc w zabezpieczeniu serwera przed nieprawidłowym działaniem procesów lub aplikacji. Opracowana przez NSA (National Security Agency) w celu zabezpieczenia urządzeń rządowych przed atakującymi, architektura systemu Linux o podwyższonym standardzie bezpieczeństwa (SE) wykorzystuje protokoły bezpieczeństwa w celu ograniczenia dostępu do zasobów systemowych. Dowiedz się, jak możesz go wykorzystać na własnym serwerze.

Architektura SELinux

SELinux to moduł jądra, który może być włączany lub wyłączany przez administratora systemu. Ponieważ dostęp do plików i portów sieciowych jest ograniczony zgodnie z polityką bezpieczeństwa, wadliwy program lub źle skonfigurowany demon nie mogą mieć dużego wpływu na bezpieczeństwo systemu.

Gdy aplikacja lub proces żąda dostępu do pliku w systemie SELinux, najpierw sprawdza pamięć podręczną wektora dostępu (AVC). Jeśli uprawnienie zostało wcześniej zapisane w pamięci podręcznej, zwracane jest ono z plikiem, o który prosi aplikacja. Jeśli uprawnienie nie jest buforowane, wysyła żądanie do serwera bezpieczeństwa. Serwer bezpieczeństwa sprawdza wszystkie polityki bezpieczeństwa w swojej bazie danych. W zależności od polityki bezpieczeństwa zezwolenie jest następnie udzielane lub odrzucane.

W SELinux nie ma pojęcia root ani superuser. Bezpieczeństwo niezmodyfikowanej dystrybucji Linuksa bez SE Linux zależy od poprawności jądra, wszystkich uprzywilejowanych aplikacji i ich konfiguracji. Usterka lub błąd w którymkolwiek z tych elementów może stworzyć powierzchnię ataku i zagrozić systemowi.

Z drugiej strony, zmodyfikowany system Linux z SELinux zależy przede wszystkim od poprawności jądra i polityk bezpieczeństwa.

Jak zainstalować lub włączyć SELinux

SELinux to skrót od Security Enhanced Linux. SELinux jest częścią jądra Linuksa od 2003 roku. Dlatego nie musisz instalować go osobno. Jednak w większości dystrybucji Linuksa na komputery stacjonarne jest on domyślnie wyłączony.

Od Linuksa 2

SELinux ma głównie 3 tryby: Enforced, Permissive i Disabled. Omówmy je krótko:

  1. Wymuszone: To aktywuje i chroni system Linux za pomocą polityk bezpieczeństwa.
  2. Dozwalający: Nie wymusza polityki bezpieczeństwa, ale wszystko rejestruje. Ten tryb jest przydatny do rozwiązywania problemów.
  3. Wyłączone: Wyłącza SELinux. Ta opcja nie jest zalecana i jeśli ponownie włączysz SELinux w swoim systemie, prowadzi to do błędów z powodu zmian w etykietowaniu.

Notatka: Ubuntu jest dostarczane z AppArmor, który jest alternatywą dla SELinux. Chociaż SELinux jest dostępny na Ubuntu, nie jest kompatybilny z AppArmor i może zepsuć twój system, jeśli jest włączony. Jeśli naprawdę potrzebujesz używać SELinux w Ubuntu, upewnij się, że wyłączyłeś AppArmor i przeprowadź intensywne testy (zacznij najpierw od trybu permisywnego), zanim użyjesz go do użytku produkcyjnego.

  1. Aby aktywować SELinux w swoim systemie, musisz edytować plik „/etc/selinux/config”. Otwórz ten plik w swoim edytorze tekstu.
sudo nano /etc/selinux/config
  1. W pliku konfiguracyjnym ustaw SELINUX=permissive . Naciskać klawisz kontrolny + O i uderzył Wchodzić aby zapisać plik i naciśnij klawisz kontrolny + X aby wyjść z edytora. SELinux jest teraz aktywowany w Twoim systemie.

Notatka: Jeśli spróbujesz wymusić SELinux bezpośrednio przed uczynieniem go permisywnym, może to błędnie oznaczyć pliki i procesy i uniemożliwić uruchomienie.

  1. Teraz, aby automatycznie zmienić etykietę systemu plików, utwórz plik o nazwie „.autorelabel” w głównym systemie plików. Teraz po uruchomieniu systemu SELinux automatycznie zmieni nazwę systemu plików. Aby zmniejszyć błąd, zachowaj SELINUX=permissive opcja, jak to jest w folderze config. Po zmianie etykiety ustaw SELinux na SELINUX=enforcing w „/etc/selinux/config” i uruchom ponownie.
Czytać  Subwoofer nie działa w systemie Linux? Wypróbuj te sztuczki!

Teraz SE Linux jest pomyślnie wdrożony w twoim systemie.

Jak skonfigurować SELinux

SELinux to architektura, która pozwala administratorom systemu kontrolować, co może uzyskać dostęp do zasobów systemowych. SELinux ogranicza dostęp do systemu za pomocą polityk bezpieczeństwa. Istnieje wiele sposobów na skonfigurowanie SELinux do ochrony systemu. Najpopularniejsze z nich to „polityka ukierunkowana” i „bezpieczeństwo wielopoziomowe” (MLS).

Polityka ukierunkowana to domyślna polityka bezpieczeństwa, która wychodzi po wyjęciu z pudełka. Obejmuje szereg zasad bezpieczeństwa, takich jak dostęp do plików, zadania, usługi itp. Zabezpieczenia wielopoziomowe (MLS) są zwykle używane przez instytucje rządowe i duże organizacje. Konfiguracja jest bardzo skomplikowana i wymaga dedykowanego zespołu do zarządzania nią.

Możesz sprawdzić swój aktualny tryb SELinux za pomocą polecenia getenforce oraz sestatus.

Jeśli potrzebujesz tylko zmienić tryb SELinux w bieżącej sesji, możesz uruchomić następujące 2 polecenia.

  • sudo setenforce 0: Ustawienie SELinux w trybie zezwalającym dla bieżącej sesji.
  • sudo setenforce 1: Ustawienie SELinux na tryb wymuszający dla bieżącej sesji.

Zasady SELinux

SELinux działa jako system etykietowania. Wiąże każdy plik, port i proces z etykietą. Etykiety to logiczny sposób grupowania rzeczy. Jądro jest odpowiedzialne za zarządzanie etykietą podczas uruchamiania.

Od Linuksa 1
Źródło obrazu: MIT

Polityki SELinux mogą być zarządzane za pomocą wartości logicznych. Weźmy przykład widoku i ustawmy wartość logiczną na demona o nazwie httpd. httpd to demon serwera Apache HTTP, którego używamy do uruchamiania serwerów WWW w systemie Linux.

Teraz, aby wymienić wszystkie moduły specyficzne dla httpduruchom następujące polecenie w swoim terminalu.

getsebool -a | grep httpd

Tutaj -a lista opcji wszystkich wartości logicznych, których używamy grep odfiltrować wartości logiczne związane tylko z httpd. Przeczytaj ten artykuł, aby dowiedzieć się więcej o grep w systemie Linux.

Wynik powyższego polecenia wygląda tak.

httpd_builtin scripting --> on 
httpd_can_check_spam --> off 
httpd can connect ftp --> off 
httpd_can_connect_ldap --> off 
httpd_can_connect_mythty --> off 
httpd_can_connect_zabbix --> off 
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off 
httpd_can_network_memcache --> off 
httpd_can_network_relay --> off 
httpd_can_sendmail --> off 
httpd_dbus_avahi --> off 
httpd dbus sssd--> off

Teraz z powyższej listy bierzemy httpd_can_connect_ftp Boolean i zmień jego wartość. Najpierw odczytaj wartość httpd_can_connect_ftp czy jest włączony czy wyłączony:

getsebool httpd_can_connect_ftp

Teraz ustawmy wartość httpd_can_connect_ftp zezwolić.

setsebool -P httpd_can_connect_ftp 1

Tutaj 1 reprezentuje allow lub on. -P tag jest używany, aby zmiana była trwała. Teraz, jeśli ponownie wymienisz wartości logiczne związane z httpd, możemy zobaczyć zmianę w httpd_can_connect_ftp wartość do on.

httpd_builtin_scripting --> on 
httpd_can_check_spam --> off 
httpd can connect ftp --> on 
httpd_can_connect_ldap --> off 
httpd_can_connect_mythty --> off 
httpd_can_connect_zabbix --> off 
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off 
httpd_can_network_memcache --> off 
httpd_can_network_relay --> off 
httpd_can_sendmail --> off 
httpd_dbus_avahi --> off 
httpd dbus sssd--> off

Jak radzić sobie z błędami SELinux

SELinux ma ogólnie 4 rodzaje błędów:

  1. System został zepsuty: SELinux chroni Twój system, ograniczając dostęp. Ale czasami to nie wystarczy. Jeśli otrzymasz te błędy, Twój system może zostać naruszony. Podejmij niezbędne działania tak szybko, jak to możliwe.
  2. Błąd w polityce: Jeśli w polityce jest błąd, który należy naprawić, pojawia się ten błąd.
  3. Etykiety są błędne: Ten komunikat o błędzie pojawia się podczas dostosowywania etykietowania przez użytkownika lub gdy automatyczne etykietowanie przez SELinux idzie na południe. Na rynku istnieje wiele narzędzi do naprawienia tych błędnych etykiet.
  4. Polityka musi zostać ustalona: Błędy te powstają, gdy dokonujesz jakichś zmian w systemie i nie informujesz o tym SELinuksa. Możesz naprawić ten błąd za pomocą modułów logicznych lub zasad.
Czytać  Jak używać polecenia lp w systemie Linux do drukowania plików z terminala?

Jak wyłączyć SELinux

Wyłączenie SELinux nigdy nie jest dobrą opcją dla serwerów korporacyjnych i rządowych oraz urządzeń publicznych, które są bardzo podatne na ataki. Ale jeśli chcesz wyłączyć SELinux w swoim systemie, postępuj zgodnie z tymi instrukcjami.

  1. Przejdź do pliku konfiguracyjnego SE Linux w „/etc/selinux” i zmień tryb konfiguracji SE Linux z enforcing do permissive. Następnie uruchom ponownie system.
  2. Następnie zmień tryb SELinux z permissive do disabled.

Po kolejnym uruchomieniu SELinux w twoim systemie jest wyłączony i staje się normalną maszyną z systemem Linux.

Często Zadawane Pytania

Czy SELinux jest obecny w Androidzie?

Tak, SELinux jest zaimplementowany w systemie Android od wersji 4.3. Zwiększyło bezpieczeństwo Androida i chroniło użytkowników Androida przed cyberatakami.

Czy SELinux jest firewallem?

SELinux nie jest zaporą sieciową. Zapora kontroluje ruch między komputerem a siecią. Podczas gdy SELinux kontroluje i zarządza systemem plików i dostępem do sieci różnych programów w systemie. Możemy myśleć o SELinux jako o wewnętrznej zaporze chroniącej system przed jego programami.

Czy SELinux to system operacyjny?

SELinux nie jest systemem operacyjnym. Jest to moduł bezpieczeństwa jądra, który istnieje w jądrze Linux. Zapewnia obsługę polityk bezpieczeństwa kontroli dostępu i obowiązkowych kontroli dostępu (MAC). Aby nazwać go systemem operacyjnym, potrzebuje czegoś więcej niż samego jądra. W większości systemów operacyjnych opartych na Linuksie możesz używać SELinux.

Czy powinieneś używać SELinux?

Jeśli jesteś administratorem systemu i dobrze znasz system Unix, powinieneś używać SELinux. Zwiększa bezpieczeństwo serwera i minimalizuje powierzchnię ataku. Jeśli nie znasz się zbyt dobrze na systemach Unix, możesz również użyć Apparmour. Jest to stosunkowo łatwiejsze niż SELinux. Jeśli jesteś użytkownikiem domowym i używasz Linuksa tylko na swoim komputerze stacjonarnym, nie ma potrzeby używania SELinux. Konfiguracja i zmniejszenie produktywności sprawi tylko ból głowy.

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej