10.12. Obowiązkowa Kontrola Dostępu (ang. ``Mandatory Access Control'', MAC)

Praca sponsorowana przez DARPA i Network Associates Laboratories. Podarowane przez Robert Watson.

FreeBSD od wersji 5.0 zawiera nowy szkielet bezpieczeństwa w jądrze - TrustedBSD MAC. Rozszerzenie to umożliwia rozszerzenie zasad kontroli dostępu na etapie kompilacji, uruchamiania i pracy. Dzięki niemu można załadować różnego rodzaju moduły wzmacniające bezpieczenśtwo, takie jak właśnie Mandatory Access Control (MAC). Szkielet MAC jest obecnie uważany za eksperymentalną funkcjonalność i nie powinien być używany w środowiskach produkcyjnych bez poważnego przemyślenia tego kroku. Uważamy że będzie gotów wejść do powszechnego użytku w momencie pojawienia się FreeBSD 5.2.

Po skonfigurowaniu z jądrem, szkielet MAC umożliwia modułom bezpieczeństwa zmianę aktualnych zasad bezpieczeństwa i dzięki temu ograniczanie dostępu do usług i obiektów systemowych. Na przykład, moduł mac_bsdextended(4) obsługuje kontrolę dostępu do systemu plików, umożliwiając administratorom budowę zestawu reguł podobnych do tej znanej ze ściany ogniowej. Niektóre moduły nie wymagają konfiguracji w ogóle, niektóre tylko minimalnej - jak na przykład mac_seeotheruids(4), ale są również takie wykonujące rozmaite operacje etykietowania obiektów - na przykład mac_biba(4) i mac_mls(4), a w związku z tym wymagające drobiazgowej konfiguracji.

Aby uaktywnić szkielet MAC w jądrze systemu, musisz dodać do jego konfiguracji następującą linijkę:

    options MAC

Moduły bezpieczeństwa zawarte w podstawowym systemie możesz załadować poleceniem kldload(8) w czasie pracy systemu, lub przez loader(8) w czasie jego startu. Można je również wkompilować bezpośrednio w jądro za pomocą odpowiednich opcji.

Różne zasady MAC konfiguruje się w różny sposób; bardzo często poszczególne moduły eksportują za pomocą MIBa sysctl(8) swoje parametry konfiguracyjne do przestrzeni nazw security.mac. Zasady opierające swoje działanie o system plików lub inne etykiety, mogą wymagać pewnych kroków wstępnych, takich jak przydzielenie etykiet obiektom systemowym, lub stworzenie pliku konfigurującego je. Informacje o tym jak skonfigurować i użytkować moduł można znaleźć na jego stronie podręcznika.

Dostępny jest cały zbiór narzędzi do konfiguracji szkieletu MAC oraz etykiet używanych przez różne moduły. Wykonano rozszerzenia do mechanizmów zarządzania informacjami identyfikacyjnymi ( setusercontext(3)) aby obsługiwały pierwotne etykietowanie za pomocą login.conf(5). Dodatkowo, wykonano pewne modyfikacje w aplikacjach su(1), ps(1), ls(1), i ifconfig(8) w zakresie ustawiania etykiet na procesach, plikach i interfejsach. Stworzono również narzędzia do zarządzania etykietami przydzielonymi obiektom. Są to między innymi getfmac(8), setfmac(8) i setfsmac(8) służące do zarządzania etykietami na plikach, oraz getpmac(8) i setpmac(8).

Poniżej lista modułów, które znaleźć można w systemie bazowym FreeBSD 5.0.

10.12.1. Biba Integrity Policy (mac_biba)

Producent: TrustedBSD Project

Nazwa modułu: mac_biba.ko

Opcja w kernelu: MAC_BIBA

Biba Integrity Policy ( mac_biba(4)) zapewnia hierarchiczne i niehierarchiczne etykietowanie wszystkich obiektów systemowych danymi o integralności, oraz wymuszanie zasad obiegu informacji tak, by zapobiec zniekształcaniu ich przez podmioty o wyższych poziomach integralności. Integralność wymuszana jest poprzez zapobieganie czytaniu przez podmioty o wyższym poziomie integralności (zwykle procesy) podmiotów o mniejszym poziomie integralności (zwykle pliki) i zapisywaniu odwrotnie. Taka filozofia pracy używana jest w komercyjnych systemach bezpieczeństwa pod nazwą Trusted Code Base (TCB). Ponieważ moduł używa etykietowania, należy go skompilować z jądrem lub ładować już na etapie startu systemu.

10.12.2. File System Firewall Policy (mac_bsdextended)

Producent: TrustedBSD Project

Nazwa modułu: mac_bsdextended.ko

Opcja w kernelu: MAC_BSDEXTENDED

File System Firewall Policy ( mac_bsdextended(4)) udostępnia rozszerzenie do modelu uprawnień w systemie plików BSD, umożliwiając administratorowi budowę reguł podobnych do tych znanych ze ściany ogniowej a odnoszących się do obiektów znajdujących się w systemie plików oraz użytkowników i grup. Modułem zarządza się za pomocą narzędzia ugidfw(8), przy czym reguły mogą ograniczać dostęp zarówno na podstawie uid i gid procesu starającego się o dostęp, jak i właściciela i grupy obiektu do którego dostęp ma się odbyć. Wszystkie reguły dotyczą ograniczeń, w związku z tym mogą znaleźć się w dowolnym porządku. Moduł nie wymaga prekonfiguracji lub etykietowania, można go zastosować w środowisku wieloużytkownikowym, w którym wymagane jest wymuszenie zasad wymiany danych pomiędzy użytkownikami. Podczas ograniczania dostępu do plików, których właścicielem jest super-użytkownik lub inni użytkownicy systemowi należy wziąć pod uwagę, że posiadają oni wiele użytecznych programów i katalogów. Podobnie jak w przypadku sieciowej ściany ogniowej, nieprawidłowe jej użycie może spowodować niemożność dalszego używania systemu. Za pomocą biblioteki libugidfw(3) w prosty sposób można tworzyć nowe narzędzia do zarządzania regułami.

10.12.3. Interface Silencing Policy (mac_ifoff)

Producent: TrustedBSD Project

Nazwa modułu: mac_ifoff.ko

Opcja w kernelu: MAC_IFOFF

Moduł wyciszania interfejsów ( mac_ifoff(4)) zapobiega używaniu ich podczas procesu startu systemu, do momentu w którym zostają wprost włączone. Zapobiega tym samym przypadkowym reakcjom stosu sieciowego na przychodzące pakiety. Przydatny w środowisku, w którym chcemy monitorować pakiety ale ich nie generować.

10.12.4. Low-Watermark Mandatory Access Control (LOMAC) (mac_lomac)

Producent: Network Associates Laboratories

Nazwa modułu: mac_lomac.ko

Opcja w kernelu: MAC_LOMAC

Moduł ( mac_lomac(4)) podobny do Biba Integrity Policy opiera swoje działanie o etykietowanie wszystkich obiektów systemowych etykietami integralności. W przeciwieństwie do modułu Biba, LOMAC umożliwia czytanie obiektów o niższej integralności obiektom o wyższej integralności, ale obniża następnie etykietę danemu podmiotowi by uniemożliwić pisanie do podmiotów o wyższym poziomie. Moduł wymaga mniejszej ilości konfiguracji niż Biba, jest również kompatybilny w większym stopniu z normalnym środowiskiem. Ponieważ jednak opiera się o etykietowanie obiektów, musi być skompilowany z jądrem lub załadowany podczas startu.

10.12.5. Multi-Level Security Policy (MLS) (mac_mls)

Producent: TrustedBSD Project

Nazwa modułu: mac_mls.ko

Opcja w kernelu: MAC_MLS

Multi-Level Security (MLS) ( mac_mls(4)) umożliwia etykietowanie hierarchiczne i niehierarchiczne wszystkich obiektów systemowych danymi o ich wrażliwości, a następnie wymuszenie określonego obiegu informacji by zapobiec ich wyciekaniu do stron niezaufanych. MLS jest bardzo często sprzedawany w systemach komercyjnych, w których chroni się dane przed niepowołanym ujawnieniem. Etykietowanie hierarchiczne umożliwa klarowną klasyfikację w tradycyjny sposób; nie-hierarchiczne etykietowanie wspiera sytuacje w których dany podmiot po prostu ``musi-wiedzieć''. Ponieważ moduł opiera się o etykietowanie obiektów, musi być skompilowany z jądrem lub załadowany podczas startu. Prawdopodobnie wymagane będzie również jego drobiazgowe skonfigurowanie.

10.12.6. MAC Stub Policy (mac_none)

Producent: TrustedBSD Project

Nazwa modułu: mac_none.ko

Opcja w kernelu: MAC_NONE

Moduł ( mac_none(4)) udostępnia podstawową przykładową konstrukcję dla twórców oprogramowania. Implementuje całe API modułów MAC ale nie zmienia zasad kontroli dostępu w systemie. Uruchomienie tego modułu na systemie produkcyjnym raczej nie przyniesie żadnej korzyści.

10.12.7. Process Partition Policy (mac_partition)

Producent: TrustedBSD Project

Nazwa modułu: mac_partition.ko

Opcja w kernelu: MAC_PARTITION

Moduł ( mac_partition(4)) zapewnia proste limitowanie widoczności procesów, przydzielając etykiety procesom i identyfikując w ten sposób numerycznie na której partycji systemowej są one obecne. Jeśli nie przydzieli się im partycji, proces widoczny jest przez wszystkie narzędzia monitorujące. Jeśli jednak przydzieli się identyfikator partycji, widoczność ograniczana jest do procesów pracujących tylko na tej samej partycji. Moduł można skompilować z jądrem, załadować podczas startu lub uruchomić w trakcie pracy systemu.

10.12.8. See Other Uids Policy (mac_seeotheruids)

Producent: TrustedBSD Project

Nazwa modułu: mac_seeotheruids.ko

Opcja w kernelu: MAC_SEEOTHERUIDS

Moduł ( mac_seeotheruids(4)) implementuje prosty model widoczności podobny do mac_partition, ale opiera swoje działanie o uid i gid procesu a nie etykietę partycji. Umożliwia to kontrolowanie którzy użytkownicy i grupy mogą przeglądać listę procesów. Moduł można skompilować z jądrem, załadować podczas startu lub uruchomić w trakcie pracy systemu.

10.12.9. MAC Framework Test Policy (mac_test)

Producent: TrustedBSD Project

Nazwa modułu: mac_test.ko

Opcja w kernelu: MAC_TEST

Moduł ( mac_test(4)) zapewnia testy otoczenia dla szkieletu MAC i spowoduje błąd w przypadku gdyby pewne założenia konstrukcyjne szkieletu o prawidłowym etykietowaniu nie sprawdziły się podczas wykonywania testu. Modułu można użyć do testowania prawidłowego etykietowania obiektów systemowych. Moduł można skompilować z jądrem, załadować podczas startu lub uruchomić w trakcie pracy systemu.

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.