SELinux – podstawa bezpiecznej infrastruktury IT

Transkrypt

SELinux – podstawa bezpiecznej infrastruktury IT
SELinux – podstawa
bezpiecznej infrastruktury IT
30 październik 2008r.
Grupa Emerge
[email protected]
Wprowadzenie:
Security-Enhanced Linux (w skrócie SELinux) to rozwiązanie autorstwa
Amerykańskiej Agencji Bezpieczeństwa Narodowego - NSA (National Security Agency)
znacząco podnoszące poziom bezpieczeństwa systemu Linux. Implementacja
rozwiązania bazuje na modelu bezpieczeństwa FLASK będącym połączeniem modeli
RBAC,TE i MLS. Projekt przeznaczony jest przede wszystkim dla systemów
korporacyjnych o podwyższonym stopniu ryzyka, jak np. banki i instytucje finansowe,
agencje rządowe i wojskowe, ale także dla małych i średnich firm, które chcą zapewnić
infrastrukturze IT wysoki poziom bezpieczeństwa.
Większość administratorów systemu Linux na pytanie: "Czy używa Pani/Pan
mechanizmu zabezpieczeń SELinux?" odpowiada: "Nie, ponieważ bardzo ciężko jest
wdrożyć ten mechanizm do poprawnego działania produkcyjnego, czyli mowiąc
wprost: wyłączamy go".
Zastanawiające więc, dlaczego o SELinuxie słyszymy coraz więcej i coraz częściej jest
on brany pod uwagę przy planowaniu polityki bezpieczeństwa systemów...
W dokumencie tym chcielibyśmy przedstawić przede wszystkim zasadę działania,
wykorzystywane technologie oraz możliwości rozwiązania jakie otrzymujemy od
autorów mechanizmu SELinux. Jednocześnie pragniemy zwrócić uwagę na pozytywne
aspekty korzystania z tego rozwiązania, a co za tym idzie w sposób odmienny chcemy
zaoferować wdrożenia naszej głównej technologii, w której się specjalizujemy jaką jest
SELinux.
Jako jedyni w Polsce - firma Emerge - profesjonalnie zajmujemy się wdrażaniem
mechanizmu SELinux dla produktów oraz systemów teleinformatycznych naszych
Klientów opartych na systemie Linux. Ten dokument ma być pierwszym z serii
"SELinux - podstawa bezpiecznej infrastruktury", który zachęcać powinien do
skorzystania z naszych usług.
Model DAC:
Zamiast podstawowej polityki DAC (Discretionary Access Control), która znana
jest każdemu administratorowi i użytkownikowi Linuxa, SELinux wprowadza pojęcie
tzw. mechanizmu obowiązkowej kontroli dostępu MAC (Mandatory Access
Control). Aktualnie jednak skupmy się na charakterystyce polityki DAC :
- właściciel obiektu (np. pliku) decyduje o uprawnieniach dotyczących danego obiektu
(model UGO: user-group-other oraz odpowiednie uprawnienia rwxrwxrwx nadane
na pliki i katalogi).
- brak możliwości wprowadzenia jakiejkolwiek kontroli przepływu informacji w systemie
oraz nadawanych uprawnień.
Powyższe cechy, zazwyczaj w większości przypadków są powodem codziennych
problemów związanych z nadużyciami dotyczącymi bezpieczeństwa danych i systemów
informatycznych).
www.emerge.pl
Strona 2
Przyklad1:
Źle nadane uprawnienia na krytyczny plik /etc/shadow dające możliwość odczytania
go lub modyfikacji przez każdego użytkownika w systemie:
# ls -al /etc/shadow
rwxrwxrwx root:root
(plik ten zawiera hasła wszystkich użytkowników
systemowych)
Jest to typowy przypadek potwornego błędu administratora korzystającego z polityki
DAC, który nie zadbał o nadanie poprawnych uprawnień do plików krytycznych
(bądź nie zdążył po zmianie atakującego). Tego rodzaju problem może dotykać
dowolne pliki w systemie.
Mechanizm DAC nie pozwala również na jakże ważną w dzisiejszych czasach ochronę
przed atakami tzw. dnia zerowego (0-day exploits).
Przy założeniu, ze usługa pracująca w systemie uruchomiona jest z konta
nieuprzywilejowanego użytkownika, istnieje możliwość otrzymania przez atakującego
nieautoryzowanego dostępu do systemu.
Typowe ataki związane z przepełnieniami (buffer overflow, stack overflow, itp.)
pozwalają napastnikowi otrzymać dostęp do powłoki systemowej poprzez odpowiednie
wymuszenie uruchomienia kodu w pamięci procesu.
Tym kodem wykonywalnym jest zazwyczaj tzw. shellcode, który daje możliwość
przejęcia uprawnień użytkownika, z którego usługa została uruchomiona.
Umiejętnie skonfigurowany SELinux zapewnia bardzo efektywną ochronę
przeciwko atakom dnia zerowego.
Model DAC jest przestarzały i niewystarczający, dlategoteż należałoby się zastanowić
w którą stronę pójść? Być może w kierunku rozwiązań zwiększających możliwości
polityki DAC czyli ACL (Access Control List), które prędzej czy później przysporzą
ogromnych problemów ze względu na ciągłe rozrastanie się nadawanych uprawnień.
Po drugiej stronie medalu znajduje się innowacyjne rozwiązanie jakim jest polityka
Mandatory Access Control (MAC) w ujęciu o mechanizm SELinux.
www.emerge.pl
Strona 3
Zasada działania mechanizmu Selinux:
Koncepcją polityki bezpieczeństwa SELinuxa jest określenie jak najmniejszej ilości
uprawnień dla danego obiektu (demona, programu, pliku) potrzebnych do jego
prawidlowego funkcjonowania.
Pozwoli to na ograniczenie do minimum możliwości wykorzystania uprawnień po
przejęciu kontroli nad obiektem przez potencjalnych atakujących (np. uprawnienia
użytkownika 'www-data' uzyskane poprzez kompromitację serwera Apache).
Jest to typowy model obowiązkowej kontroli dostępu MAC.
SELinux to mechanizm pracujący na poziomie jądra systemu pozwalający określić w
bardzo szczegółowy sposób przydzielania dostępu do zasobów dla aplikacji pracujących
w systemie.
Wszelkie elementy związane z działaniem systemu, które nie zostały objęte polityką,
bądź są z nią niezgodne są domyślnie zabronione. To podstawowa zaleta polityki MAC,
która jednoznacznie wytyka blędy modelowi DAC.
Globalnie przyjęta zasada głosi, że administrator powinien posiadać informacje
dotyczące zainstalowanych i uruchomionych usług oraz oprogramowania, które
wykorzystywane jest do codziennej pracy.
Administrator zazwyczaj identyfikuje uruchomione usługi poprzez wylistowanie
poszczególnych procesów, np. 'apache2' bądź 'httpd', lub poprzez określenie nazwy
usługi, której dostarczają, np serwer HTTP.
W jednym i drugim przypadku SELinux identyfikuje procesy w postaci domeny, z którą
zostały uruchamione (httpd_t) jak również w postaci punktu wejściowego, który
przyznał te cechy procesom podczas uruchamiania(httpd_exec_t).
Każda domena odpowiada ściśle za uslugę, którą ogranicza, np. MySQL, Bind.
Każda domena posiadać musi unikatową nazwę i unikatowe nazwy elementów
składowych wejściowych (entrypoints) oraz uprawnienia.
Przykład poniżej ilustruje w bardzo uproszczony sposób działanie mechanizmu.
vf
www.emerge.pl
Strona 4
Rysunek 1: Zasada działania mechanizmu SeLinux:
Rule Based Access Control:
Kontrola dostępu na podstawie przyznanej roli to kolejna mocna strona SELinuxa.
Ograniczenie użytkownika systemowego nie sprowadza się już tylko i wyłączenie do
nadanych mu uprawnień w modelu DAC (np. możliwość zapisywania w katalogu /tmp,
ponieważ katalog ten ma uprawnienia 777 czyli do zapisu/odczytu dla wszystkich lub
brak uprawnień odczytywania/zapisu pliku /etc/shadow ponieważ jest on
dostępny do odczytu tylko i wyłącznie dla użytkownika root).
W ujęciu RBAC, podczas logowania, użytkownikowi przydzielana jest specjalna rola,
która ogranicza jego uprawnienia w sposób bardzo restrykcyjny i przede wszystkim
kontrolowany. Nie ma tu miejsca na tzw. wolną amerykankę. Możliwości
wprowadzanych restrykcji jakie daje nam to rozwiązanie są praktycznie nieskończone.
W rzeczywistym przypadku mechanizm RBAC można zastosować, aby przykładowy
użytkownik www-admin (uid=0,gid=0 czyli de facto root - administrator systemu)
posiadał możliwość:
-
restartowania usługi httpd.
edycji plików konfiguracyjnych usługi httpd.
odczytywania logów systemowych dotyczących pracy usługi httpd.
odczytywania/edytowania zawartości stron WWW serwowanych poprzez usługe httpd.
www.emerge.pl
Strona 5
Jakakolwiek inna wykonana akcja spotyka się z odmową dostępu oraz odpowiednim
poinformowaniem administratora systemu dzięki mechanizmowu auditd.
Mimo. iż użytkownik www-data posiada uid=0 to nie jest w stanie na przykład:
- odczytywać/edytować plików systemowych np. /etc/shadow.
- zatrzymać pracy innych usług w systemie np. serwera FTP.
- nasłuchiwać na portach innych niż 80/tcp(HTTP) oraz 443/tcp(HTTPS).
- odczytywać/zapisywać do katalogu domowego użytkownika root /root.
- zrestartować maszyny.
- itd. itp.
Dzięki RBAC-owi nareszcie istnieje możliwość przypisania konkretnych ról dla
konkretnych użytkowników.
Rozwiązanie RBAC bardzo dobrze nadaje się do wdrożenia do produktów opartych o
system Linux - wszelkiego rodzaju routery, firewalle, systemy NAS/iSCSI.
Upraszczając, przy wykorzystaniu mechanizmu SELinux, administrator bezpieczeństwa
w sposób szczegółowy i restrykcyjny zarządza nie tylko uprawnieniami użytkownika
(właściciela procesu), ale przede wszystkim prawami jakie posiada sam proces, czyli co
może, a czego nie może wykonać.
Przykład 2:
allow httpd_t httpd_sys_content_t { read getattr lock ioctl };
daje domenie skojarzonej (httpd_t) z demonem httpd uprawnienia do czytania
kontentu WWW z katalogu np. /var/www (httpd_sys_content_t).
Istnieje ścisłe określenie reguł odczytu plików poprzez poszczególne domeny (httpd_t).
Powyższy przykład ukazuje, że mechanizm SELinuxa narzuca restrykcje w bardzo szczegółowy
sposób już na poziomie wywołań systemowych. Stąd też zdefiniowane zostały wywołania zarówno
dotyczące odczytu atrybutów danego pliku (getattr) jaki i faktycznego odczytu zawartości danego
pliku (read).
www.emerge.pl
Strona 6
Podsumowanie
Wdrożenie SELinuxa jest bardzo trudną operacją związaną przede wszystkim ze znajomością
działania systemu i usług pracujących pod jego kontrolą na naprawdę wysokim poziomie.
W istocie otrzymujemy pewnego rodzaju „firewalla aplikacyjnego”, który podobnie jak filtr
pakietów sieciowych pozwala na dostęp, bądź po prostu go odrzuca i informuje o tym
administratorów. Jesteśmy przekonani, że SELinux to przyszłość bezpiecznej infrastruktury IT.
Misją firmy Emerge jest propagowanie bezpiecznych systemów informatyczanych opartych w
szczególności o darmowe oprogramowanie Opensource.
Uważamy, że bezpieczeństwo danych i informacji to jeden z kluczowych aspektów
biznesu XXI wieku.
Innowacyjne rozwiązania, które oferujemy są również na miarę XXI wieku...
4