Wstęp do SELinux

Rozbudowane narzędzie Linuxowe do zabezpieczenia serwera. System etykietowania, oznacza i etykietuje wszystko w systemie (pliki, katalogi, userów, procesy, itp). Przedstawia systemowi politykę na podstawie etykiet. Na podstawie polityk zostaje podjęta decyzja odnośnie kontroli dostępu.

Domyślne zachowanie SELinuxa do zabranie dostępu. Aby udzielić zgodę należy utworzyć politykę, która udzieli uprawnień do uruchomienia zadania.

AVC – access vector cache

etykiety -> polityki

# Sprawdzenie co SELinux zablokował
grep „AVC” /var/log/audit/audit.log
journalctl -xe

audit2allow -aw (to narzędzie wyświetla logi i podaje instrukcje co należy zrobić, bazuje na pliku audit.log)

# Tryby pracy
– Sprawdzenie trybu pracy
getenforce
/etc/sysconfig/selinux

enforcing – blokuje wszystko
permissive – informuje o zagrożeniach, ale zezwala na wszystkie działania (tylko taki monitoring, do troubleshootingu)
disabled – SELinux wyłączony

– Przełączanie trybu
setenforce nazwa_trybu

# Rodzaje polityk
Definiujemy je jak w powyższym przypadku w pliku /etc/sysconfig/selinux

targeted – system chroni wskazane elementy systemu
minimum – system chroni wybrane elementy tylko
mls – wielopoziomowe systemy ochrony danych [zaawansowane]

# Etykieta=kontekst
Na podstawie typu (trzecia wartość kontekstu) tworzone są domeny i polityki. Pliki i procesy w danej domenie mogą wchodzić w interakcje tylko z innymi członkami domeny.

Procesy, które nie zostały przypisane do domeny znajdują się w unconfined_t.

– Wyświetlenie etykiety dla pliku
ls -lZ (Z – kontekst dla pliku)

system_u:object_r:mnt_t:s0
system_u – użytkownik Linuxa (_u)
object_r – rola (_r)
mnt_t – typ (_t)
s0 – poziom/level

– Wyświetlenie kontekstu dla procesu
ps -Z
ps -auxZ | grep sshd

– Wyświetlenie typów etykiet wewnątrz działającej polityki
seinfo -t

– Wyświetlenie użytkowników SELinux
seinfo -u

– Wyświetlenie rol
seinfo -r

– Sprawdzenie mapowania użytkowników SELinuxowych w stosunku do zwykłych userów
semanage login -l

# Zmiana kontekstu – chcon
chcon -t nazwa_kontekstu_ktory_istnieje nazwa_pliku

# Boolean
Boolean to prosta zmienna, która włącza lub wyłącza możliwość wykonania prostych czynności.

– Wyświetlenie wszystkich zmiennych wraz ze statusem
getsebool -a
getsebool -a | grep nazwa_zmiennej

– Zmiana wartości zmiennej
setsebool -P nazwa_zmiennej 0/1

# Dodanie nowej polityki (niebezpieczne)
audit2allow -aM nazwa_polityki
a – czytanie zawartości z pliku z logami
M – wygeneruj nowy moduł / zmienną

– Aktywowanie polityki
semodule -i nazwa_polityki.pp

# Reguły
– Wyświetlenie reguł
sesearch –allow | grep nazwa_reguły

Budowa:
allow – reguła pozwala na ruch
typ1 typ2:rodzaj_dostępu – typ 1 ma możliwość dostępu do obiektów z typu 2
{typ_uprawnien}

– Wyświetlenie włączonych modułów
semodule -l
semodule -l | grep nazwa

– Zarządzanie modułu
semodule -d nazwa_modułu
-d disable
-e enable
czyli np możemy wyłączyć wszystkie reguły dla modułu httpd

# Porty sieciowe
– Wyświetlenie portów akceptowanych przez SELinux
semanage port -l

– Dodanie portu do SELinuxa
Jeżeli w journalu dostajemy błąd, że nie można zbindować portu do adresu należy dodać go do SELinuxa:

semanage port –add –type http_port_t –proto tcp numer_portu

Kolorowanka: https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf?fbclid=IwAR1xdPWqnC0QJX8pYOW_6LOMAtzfnhP4KGswV6ryWrcTAO6qhXpyTLVVOoE

 

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj