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
.
kozik
