Hartowanie i RBAC, czyli Hardened Gentoo, SELinux i Grsecurity - część 2.

16 lipiec 2007, autorstwa: kozik

Po niedawnym krótkim wstępie chciałbym przejść do meritum sprawy, czyli konkretnych rozwiązań RBAC na Gentoo.

Pierwszym moim podejściem był SELinux - bardzo intensywnie rozwijany, zaimplementowany m.in. przez RedHata w RHEL i Fedorze. Jego wdrożenie wymaga, poza oczywiście rekompilacją kernela, modyfikacji systemu plików (dodanie security labels, oznaczenie /labeling/ plików) oraz rekompilacji narzędzi systemowych (po wyborze odpowiedniego profilu automatycznie zostanie uaktywniona flaga USE selinux).

Użytkownik dostaje przygotowane reguły (policy) SELinuksa - zmodularyzowane, aby można było dopasować je do obecnych w systemie elementów. Co z tego kiedy całkiem pokaźna część tych modułów (przeznaczonych dla konkretnych demonów) nie pokrywa wszystkich aspektów działania danej aplikacji. W efekcie część (duża część) normalnej aktywności programów jest traktowana jako aktywność nieznana - po przejściu z permissive na enforcing system leży…

Oczywiście należy zatem ręcznie modyfikować i uzupełniać policy… ale z tego co się przekonałem byłby to ogrom zmian. Nakład pracy na dopasowanie reguł do działającego systemu wydaje się zbyt duży tym bardziej, że samo pisanie reguł nie jest najprostsze. Zrezygnowałem - nie odważyłem się na przejście w tryb enforcing - nie mógłbym się nawet później zalogować.

Była to wprawdzie porażka… ale tylko w bitwie - wojna o RBAC się nie skończyła. W drugim podejściu poszedł na ruszt Grsecurity.

W przeciwieństwie do SELinux nie wymaga żadnych zmian w systemie plików czy w oprogramowaniu systemowym. Jedynie odpowiednia konfiguracja kernela i przygotowanie reguł RBAC.

I tu pojawia się bardzo interesująca funkcjonalność - tryb uczenia się. Po uruchomieniu RBAC w full learning mode wszystkie akcje są logowane (po kilku dniach log na maszynie produkcyjnej urósł do 2 GB…) - chodzi o zebranie jak największej liczby danych odnośnie normalnego, prawidłowego funkcjonowania maszyny. Po skończonym procesie uczenia się możemy wygenerować gotową policy.

Oczywiście tak stworzone reguły wymagają dopasowania i poprawienia (same reguły są bardzo czytelne i nie ma problemu z ich modyfikacją - zupełnie inaczej niż przy SELinux). Mnie, jako osobie dopiero zaczynającej konfigurację RBAC Grsecurity, dojście do restrykcyjnej, dopasowanej i mało psującej policy zajęło ponad dwa tygodnie, ale to rzecz jasna wynika z nauki. Bardzo przydaje się dalsze uczenie zastosowane do wybranych programów. Tym samym system funkcjonuje z włączonym RBAC i zapisuje aktywność procesów, których reguł jeszcze nie dostroiliśmy.

Jedyny tak naprawdę problem pojawia się w sytuacjach nietypowych, jak np. restart lub podnoszenie się maszyny. Trzeba pamiętać, żeby wszystkie takie przypadki uwzględnić w czasie trwania pełnego uczenia (full learning mode).

Jeszcze tylko odblokuję sobie możliwość loginu lokalnego i będzie można mówić o pełnym sukcesie :) .

Wysłano w Blog - Linux i Unix | Tags: , |

Adres dla trackback. RSS dla komentarzy w tym wpisie.
Dodaj komentarz




Uwaga: Włączona jest moderacja komentarzy, więc nowy komentarz nie ukaże się bezpośrednio po jego wysłaniu.

Uwaga: Działa filtr antyspamowy. Jeśli umieścisz w komentarzu odnośniki, to może on zostać błędnie zakwalifikowany jako spam.