Rule Set Based Access Control (RSBAC) w Linuksie - przegląd
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).
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|