Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


01.06.2021

Monitory interaktywne Newline...

Na rynek trafiły nowe monitory interaktywne Newline MIRA stanowiące kompletne narzędzia...
27.05.2021

Anywhere Workspace

VMware wprowadza rozwiązanie Anywhere Workspace
27.05.2021

Narzędzie SaaS

Lenovo Device Intelligence Plus
27.05.2021

Nowa fala przetwarzania edge

Red Hat Edge
27.05.2021

Wirtualny router od QNAP-a

QuWAN vRouter
27.05.2021

Ochrona endpointów

Cisco SASE
27.05.2021

Monitor graficzny

Monitor graficzny PD2725U od BenQ zaprojektowany jest z myślą o wygodnej pracy...
27.05.2021

Monitoring wizyjny

D-Link Vigilance
27.05.2021

Moc i elastyczność

Liebert EXM2

SELinux – kontrola sieci

Data publikacji: 25-05-2017 Autor: Grzegorz Kuczyński

Poziom ochrony systemów Linux oferowany przez mechanizm bezpieczeństwa SELinux jest bardzo wysoki. Celem, jaki założyli sobie twórcy tego modułu, było spełnienie kryteriów często określanych jako Trusted System. Dodatkowo SELinux pozwala na kontrolę procesów komunikujących się również przez sieci.

Głównym zadaniem, nad którym skupia się polityka SELinux, jest separacja procesów. Mechanizm ten posiada bardzo rozbudowane możliwości wymuszonej kontroli (Mandatory Access Controls) w systemie operacyjnym. W jego architekturze podmiotem wykonującym działania zazwyczaj jest proces lub jądro systemu. Nawet jeżeli systemowe operacje będą wykonywane przez użytkownika, to i tak w systemie będzie reprezentował go proces (np. bash). SELinux przed każdym zadaniem będzie sprawdzał, czy dany proces ma prawo wykonywać określone operacje na docelowym obiekcie. Obiektem tym może być nie tylko zasób systemu, taki jak plik, kontrola może dotyczyć również interakcji z innymi procesami. Z uwagi na budowę systemu operacyjnego często zdarza się, że proces inicjujący daną akcję musi zmienić domenę TE (Type Enforcement), aby móc wykonać określone zadanie. Taki mechanizm nazywa się przejściem pomiędzy domenami (Domain Transition). W ten sposób SELinux ogranicza proces do przestrzeni systemowej opisanej w polityce danej domeny i izoluje go od innych domen TE. W zależności od polityki każda interakcja procesu z innymi elementami systemu może być kontrolowana, w wyniku czego można uzyskać niemal nieograniczoną kontrolę nad procesem w systemie.

> KOMUNIKACJA Z INNYMI HOSTAMI

Problem zaczyna się pojawiać, gdy interakcja procesu wykracza poza system operacyjny. Wbrew pozorom wcale nie jest to rzadki przypadek. System Linux jest zazwyczaj wykorzystywany w celu świadczenia usług sieciowych, a komunikacja z innymi hostami jest jednym z głównych powodów, dla których wykorzystuje się SELinux. W początkowej fazie wdrażania SELinux do Red Hat Enterprise Linux postawiono na politykę typu Targeted. W odróżnieniu od polityki Strict minimalizowała ona liczbę domen w systemie tylko do tych najbardziej niebezpiecznych. Zdecydowana większość tych procesów to demony sieciowe. W artykule rozważymy konfigurację, która wykorzystuje komunikację dwóch procesów znajdujących się na innych hostach połączonych przez sieć IP.

Coraz częściej oferowane usługi budowane są na bazie kilku systemów operacyjnych. Doskonałym przykładem jest tu witryna sieciowa i jej baza danych znajdująca się na zdalnym hoście. Dla przykładu PostgreSQL oferuje pełne wsparcie dla SELinux (zwane SE-PostgreSQL), dzięki któremu, za pomocą biblioteki libselinux, proces bazy danych może kontrolować interakcje innych procesów z poszczególnymi tabelami w bazie. Aby taka kontrola miała sens, komunikacja pomiędzy serwerem bazy danych a klientem musi zapewniać przekazywanie kontekstów w bezpieczny sposób. Mechanizmy realizujące takie zadania określa się jako Labeled Networks. Przenoszenie etykiet procesów w pakietach sieciowych jest częścią koncepcji Trusted Network, która z natury systemu operacyjnego jest częścią koncepcji Trusted System.

SELinux oferuje kilka sposobów na zapewnienie ochrony dla komunikacji sieciowej. W artykule przedstawimy zarówno podstawowe uprawnienia sieciowe oferowane przez SELinux, jak i zaawansowane mechanizmy pozwalające wiązać kontekst procesu z pakietami IP.

> KONTROLA SOCKETÓW

Wsparcie dla komunikacji sieciowej w SELinux zaczyna się od wewnętrznych struktur jądra, które je reprezentują, czyli tzw. socketów. Socket to deskryptor plikowy wskazujący na jeden z końcowych punktów połączenia. System Linux posiada wiele typów so­cketów, jednak najpopularniejsze w komunikacji sieciowej są protokoły TCP i UDP. W SELinux sockety są reprezentowane przez klasy tcp_socket i udp_so­cket. Serwer protokołu TCP do działania w systemie z SELinux potrzebuje minimum następujących uprawnień klasy
tcp_socket w przestrzeni własnej domeny: create, bind, listen, accept, write, read. Z kolei klient protokołu TCP musi mieć uprawnienia create, connect, write, read klasy tcp_socket dla własnej domeny.

> OBIEKTY SIECIOWE

Jak wiemy, w polityce SELinux poszczególne części systemu reprezentowane są przez obiekty podzielone na różne klasy. Wspomniane uprawnienia klasy tcp_socket mają znaczący wpływ na kontrolę przepływu danych w sieci, ale sockety nie są obiektami stricte sieciowymi. Socket należy rozumieć jako docelowe lub źródłowe miejsce dla danych przesyłanych przez sieć.

Pierwotnie w architekturze SELinux kontrola sieciowa miała obejmować następujące elementy systemu: interface, node i port. Pierwsza implementacja wykonana była w kodzie modułu SELinux, lecz z powodu małej elastyczności i wydajność kontrola tych elementów została przeniesiona do kodu frameworku Netfilter jako SECMARK (zadaniem mechanizmu SECMARK, który zostanie opisany w drugiej części artykułu, jest wykorzystanie możliwości frameworku netfilter do łączenia kontekstu SELinux z ruchem sieciowym).

[...]

Specjalista we Wrocławskim Centrum Sieciowo-Superkomputerowym zajmujący się administracją systemami IT oraz bezpieczeństwem usług sieciowych. Miłośnik defensywnego podejścia do cyberbezpieczeństwa. Niezależny konsultant i analityk cyberbezpieczeństwa.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"