Gentoo Logo

Rule Set Based Access Control (RSBAC) w Linuksie - przegląd

Spis treści:

1.  Kluczowe cechy

  • Rozszerzenie mechanizmu bezpieczeństwa jądra na zasadach Free Open Source (GPL)
  • Niezależność od rządów i wielkich firm
  • Kilka dobrze znanych modeli bezpieczeństwa, włączając w to MAC, ACL i RC
  • Kontrola dostępu sieciowego na poziomie poszczególnych programów i użytkowników
  • możliwość zastosowania dowolnej kombinacji modeli
  • Łatwa rozszerzalność: piszemy własny model do wykorzystania w trakcie działania
  • Wsparcie dla wszystkich bieżących jąder
  • Stabilność dla produkcyjnego użycia

2.  Czym jest RSBAC?

RSBAC jest elastycznym, potężnym i szybkim systemem kontroli dostępu z otwartym kodem źródłowym dla obecnych jąder Linuksa. Wersja stabilna wykorzystywana jest w warunkach produkcyjnych od stycznia 2000 (ver. 1.0.9a). Cały proces rozwijania został przeprowadzony niezależnie i nie wykorzystany przy tym dostępnych implementacji systemów kontroli dostępu.

Standardowy pakiet zawiera zbiór modeli kontroli dostępu takich jak MAC, RC, ACL (opis poniżej). Co więcej, udogodnienie w postaci możliwości rejestracji modułu w trakcie działania systemu (REG) ułatwia zaimplementowanie własnego modelu kontroli dostępu jako modułu jądra i załadowanie go w trakcie działania systemu.

RSBAC oparte jest na pomyśle Generalized Framework for Access Control (GFAC) autorstwa Abramsa i LaPaduli. Wszystkie wywołania systemowe związane z bezpieczeństwem są rozszerzone przez kod egzekwujący bezpieczeństwo. Ten kod wywołuje centralny komponent decyzyjny, który z kolei wywołuje wszystkie aktywne moduły decyzyjne i na podstawie poszczególnych wyników generuje łączną decyzję. Następnie ta decyzja jest wykorzystywana przez mechanizm rozszerzający wywołania systemowe.

Decyzje podejmowane są na podstawie rodzaju dostępu (typu żądania), obiektu docelowego i wartości atrybutów związanych z podmiotem wywołującym oraz obiektem docelowym. Dodatkowe niezależne atrybuty mogą być wykorzystane przez własne moduły, np. moduł poufności (PM). Wszystkie atrybuty przechowywane są w pełni zabezpieczonym katalogu, jednym dla każdego zamontowanego urządzenia. Dlatego zmiany atrybutów wymagają specjalnych wywołań systemowych.

Wszystkie rodzaje dostępu sieciowego mogą być kontrolowane osobno dla wszystkich użytkowników i programów. Daje to pełną kontrolę nad ich sieciowym zachowaniem i sprawia, że łatwiej jest wykryć i zapobiec niechciane próby dostępu sieciowego.

Jako że wszystkie rodzaje decyzji o przyznaniu dostępu bazowane są na ogólnych regułach decyzyjnych dla żądań, to wiele różnych polityk bezpieczeństwa może zostać zaimplementowanych jako moduły decyzyjne. Pomijając wbudowane modele pokazane poniżej, rejestracja modułów (REG) pozwala na na dodanie w trakcie działania systemu nowych, własnych modułów decyzyjnych.

3.  Zaimplementowane modele

W wersji 1.2.5 RSBAC dostępne są poniższe moduły. Należy zauważyć, że wszystkie są opcjonalne.

MAC

Bell-LaPadula's Mandatory Access Control - obowiązkowa kontrola dostępu

UM

Zarządzanie użytkownikami (User Managerment) w RSBAC jest oparte o jądro i uzupełnia lub zupełnie zastępuje podsystem linuksowy. Administracja użytkownikami jest wymuszona przez szczegółowość i elastyczność.

PM

Model poufności (Privacy Model). Model poufności autorstwa Simone Fischer-Huebner w pierwszej implementacji. Publikacja z konferencji National Infomramtion Systems Security (NISSC 98) dotycząca implementacji PM dostępna jest online.

Dazuko

Tak naprawdę nie jest to model kontroli dostępu, ale raczej mechanizm ochrony systemu przed złośliwym oprogramowaniem. Może zapobiec uruchomieniu i wczytaniu zainfekowanych plików.

FF

Flagi plikowe (File Flag). Dostarcza i wykorzystuje flagi dla katalogów i plików. Obecnie execute_only (pliki), read_only (pliki i katalogi), search_only (katalogi), secure_delete (pliki), no_execute (pliki), add_inherited (pliki i katalogi), no_rename_or_delete (pliki i katalogi, bez dziedziczenia) oraz append_only (pliki i katalogi). Flagi plikowe mogą być modyfikowane tylko przez inspektorów bezpieczeństwa.

RC

Role Compatibility (zgodność ról). Definiuje role i typy dla każdego rodzaju obiektu (pliku, katalogu, urządzenia, ipc, scd, procesu). Zgodność ze wszystkimi typami i innymi rolami może być ustawiona osobno dla każdej roli z żądanym poziomem szczegółowości. Dla celów administracyjnych istnieje precyzyjne rozdzielenie obowiązków. Przypisywane uprawnienia mogą posiadać limit czasowy. Szczegółowa specyfikacja i projekt modelu są opisane w publikacji Nordsec 2002 RC Paper.

AUTH

Wymuszenie autoryzacji (Authorization enforcement). Kontroluje wszystkie żądania zmiany właściciela dla procesów docelowych. Tylko programy/procesy z ogólnym pozwoleniem na setuid i te posiadające capability dla zmiany ID użytkownika docelowego procesu, mogą to robić. Capabilities mogą być kontrolowane przez inne procesy/programy, np. demony uwierzytelniające.

ACL

Listy kontroli dostępu (Access Control Lists). Dla każdego obiektu istnieje lista kontroli dostępu, definiująca które podmioty i z jakimi prawami mogą odwoływać się do obiektu. Podmiotami mogą być użytkownicy, role RC oraz grupy ACL. Obiekty grupowane są na podstawie typu, lecz mają osobne ACLe. Jeśli dla podmiotu odwołującego się do obiektu nie istnieje wpis ACL, to prawa dziedziczone są z obiektów nadrzędnych przy uwzględnieniu maski dziedziczenia (inheritance mask). Prawa bezpośrednie (użytkownika) i pośrednie (role, grupy) są łączone. Dla każdego typu obiektu istnieje domyślny ACL na szczycie normalnej hierarchii. Zarządzani grupami zostało dodane w wersji 1.0.9a. Nadane uprawnienia i przynależność do grup mogą posiadać ograniczenia czasowe.

CAP

Linux Capabilities. Dla wszystkich użytkowników i programów można zdefiniować minimalny i maksymalny zbiór możliwości ("zbiór specjalnych uprawnień użytkownika root"). Pozwala to na np. uruchamianie serwerów z poziomu zwykłego użytkownika lub ograniczenia, w standardowy dla Linuksa sposób, uprawnień programów działających z użytkownika root.

JAIL

Więzienie dla procesów (process jails). Moduł dostarcza nowego wywołania systemowego rsbac_jail, które jest po prostu nadzbiorem znanego z FreeBSD wywołania systemowego jail. Opakowuje wywołujący proces i wszystkie podprocesy w środowisku chroot z ustalonym adresem IP i wieloma innymi ograniczeniami.

RES

Linux Resources. Dla wszystkich użytkowników i programów można zdefiniować minimalny i maksymalny zbiór zasobów procesów (np. rozmiar pamięci, liczba otwartych plików, liczba procesów dla użytkownika). Wewnętrznie te ustawienia stosowane są do standardowych linuksowych flag dotyczących zasobów.

Wszystkie moduły decyzyjne są szczegółowo opisane na stronie z dokumentacją dla modułów.

Głównym celem projektu RSBAC było osiągnięcie (przestarzałego) poziomu B1 z Orange Book (TCSEC).



Drukuj

Zaktualizowano 11 października 2005

Podsumowanie: Krótkie omówienie RSBAC, czyli mechanizmu kontroli dostępu.

Amon Ott
Autor

Michał Purzyński
Redaktor

Guillaume Destuynder
Redaktor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.