Poradnik pomaga zainstalować RSBAC w Gentoo Linux. Przed instalacją należy również zapoznać się z Wprowadzeniem oraz Przeglądem tego tematu, by wiedzieć czym jest RSBAC i na jakich zasadach funkcjonuje.
Ten krok jest banalnie prosty, dzięki łatwości z jaką Gentoo radzi sobie przy instalacji ze źródeł. Zacznijmy od zemergowania źródeł rsbac-sources z Portage.
Uwaga: Istnieją dwa rodzaje źródeł rsbac-sources: jedno jest dla jądra 2.4, drugie dla 2.6. |
Listing 2.1: Instalacja źródeł RSBAC (używając domyślnego profilu oraz jądra 2.6) |
# emerge rsbac-sources
|
Listing 2.2: Instalacja źródeł RSBAC (używając jądra 2.4, profil Gentoo 2005.0) |
# rm /etc/make.profile # ln -s /usr/portage/profiles/default-linux/x86/2005.0/2.4/ /etc/make.profile # echo "sys-kernel/hardened-sources rsbac" >> /etc/portage/package.use # emerge hardened-sources |
Ważne: Zalecana jest aktywacja Softmode (tryb "miękki") używając jądra RSBAC po raz pierwszy. Pozwala to na wyłączenie wykonania RSBAC przy ponownym uruchomieniu systemu, by móc go przetestować i zapobiec ewentualnym problemom. Wyłączamy opcję tylko wtedy, gdy wiemy co dokładnie robimy, bądź w przypadku, gdy używamy produkcyjnej wersji jądra. |
Na tym etapie zajmiemy się konfiguracją jądra. Zalecane jest włączenie następujących opcji w kategorii "Rule Set Based Access Control (RSBAC)":
Listing 2.3: Konfiguracja i kompilacja jądra RSBAC |
Sekcja "General RSBAC options" [*] RSBAC proc support [*] Check on init [*] Support transactions [*] Randomize transaction numbers [*] RSBAC debugging support (400) RSBAC default security officer user ID Sekcja "User management" [*] User management Upewniamy się czy SHA1 w Crypto API jest aktywowane W sekcji "Cryptographic options" ogólnej konfiguracji jądra, zaznaczamy: [*] SHA1 digest algorithm [*] Use Crypto API Digest SHA1 (NEW) Sekcja "RSBAC networking options" [*] RSBAC network support [*] Net device control [ ] Treat virtual devices as individuals [*] Individual network device logging [*] Net object control (sockets) [*] Control UNIX address family [*] Also intercept network object read and write [*] Individual network object logging (Nie włączamy "RSBAC Maintenance Kernel", używamy softmode w zamian) Sekcja "Decision module (policy) options" [*] Support for Registration of decision modules (REG) [*] Build REG sample modules ---------------------------- [*] RSBAC support for DAZuko policy (Dla skanowania antywirusowego) DAZ Policy Options ---> (604800) Scanning result lifetime in seconds Dla każdej używanej zasady/modułu należy wybrać ochronę modułu AUTH (AUTH module) oraz modułu Zarządzania Użytkownikami (User Managment module) [*] RSBAC support for FF policy [*] RSBAC support for RC policy [*] RSBAC support for AUTH policy Zaleca się również wyłączyć opcję nauki (learning option) w jądrach produkcyjnych. Jest ona używana tylko podczas instalacji systemu RSBAC AUTH Policy Options ---> [*] AUTH learning mode support [*] RSBAC support for ACL policy [*] RSBAC support for Linux Caps (CAP) policy [*] RSBAC support for JAIL policy [*] RSBAC support for PAX policy [*] RSBAC support for System Resources (RES) policy Sekcja "Softmode and switching" [ ] RSBAC policies switchable [*] RSBAC soft mode (Należy wyłączyć w jądrach produkcyjnych) [*] Individual module softmode support Sekcja "Logging": wszystko oprócz "Log to remote UDP network socket", chyba, że zamierzamy logować na zdalny komputer Sekcja "RSBAC symlink redirection" [*] RSBAC symlink redirection [*] Add remote IP address [*] Add user ID number [*] Add RC role number Sekcja "Other RSBAC options" [*] Intercept sys_read and sys_write [*] Intercept Semaphore IPC operations [*] Control DAC process owner (seteuid, setfsuid) [*] Hide processes in /proc [*] Support freezing of RSBAC configuration [*] RSBAC check sys_syslog |
Uwaga: Jeżeli planujemy uruchomić serwer X Window (taki jak X.org lub XFree86), musimy zaznaczyć "[*] X support (normal user MODIFY_PERM access to ST_ioports)". Polecam odwiedzenie Używanie Xorg na Hardened Gentoo |
Przejdziemy teraz do konfiguracji PaX, które jest dopełnieniem jądra RSBAC. Należy również ustawić następujące opcje w sekcji "Security options ---> PaX".
Listing 2.4: Konfiguracja opcji jądra dla PaX |
[*] Enable various PaX features
PaX Control --->
[*] Support soft mode (Wyłączamy w jądrze produkcyjnym)
[ ] Use legacy ELF header marking
[ ] Use ELF program header marking
Use ELF program header marking MAC system integration (direct) --->
(X) hook
Non-executable pages --->
[*] Enforce non-executable pages (NEW)
[*] Paging based non-executable pages
(W nowszych wersjach PaX, zazwyczaj najlepszym wyborem jest PAGEEXEC
dla x86, w razie problemów zamieniamy na SEGMEXEC)
[*] Segmentation based non-executable pages (NEW)
[*] Restrict mprotect()
[ ] Disallow ELF text relocations (Opcja ta jak na razie jest niestabilna i niezalecana)
Address Space Layout Randomization --->
[*] Address Space Layout Randomization
[*] Randomize user stack base
[*] Randomize mmap() base
|
Uwaga: PaX strona z informacjami na temat PaX. |
Uwaga: By administrować PaX, należy zaopatrzyć się w RSBAC admin utilities (narzędzia administracyjne), zamiast chpax lub paxctl dołączonych do jądra RSBAC. Umożliwi to administrację PaX-em i ustawienie zazwyczaj używanych flag. |
Listing 2.5: Zarządzanie flagami PaX |
# rsbac_fd_menu /path/to/the/target/item lub # attr_set_file_dir FILE /path/to/the/target/item pax_flags [pmerxs] |
Teraz można przystąpić do kompilacji i instalacji, tak jak to ma miejsce przy zwykłym jądrze, odnośnie do innych opcji.
Ważne: Sugeruje się utworzenie drugiego jądra bez opcji softmode oraz AUTH, by móc korzystać ze środowiska produkcyjnego. Należy to zrobić natychmiast po przetestowaniu i skonfigurowaniu, jako że opcja wyłączenia systemu kontroli dostępu zostanie usunięta. |
3. Instalacja RSBAC admin utilities
By zarządzać Gentoo z RSBAC, będziemy potrzebować konkretnych programów użytkowych. Są one zawarte w pakiecie rsbac-admin, który należy zainstalować.
Listing 3.1: Instalowanie narzędzi administracyjnych RSBAC |
# emerge rsbac-admin
|
Po zemergowaniu, pakiet utworzy nowe konto użytkownika w systemie (secoff, uid 400). Stanie się on administratorem zabezpieczeń podczas pierwszego uruchomienia systemu. Jest to jedyny użytkownik, który może modyfikować konfigurację RSBAC. Będzie on powszechnie znany jako Security Officer.
Ważne: Pamiętamy by ustawić bezpieczne hasło dla użytkownika secoff. |
Listing 3.2: Ustawianie hasła dla uzytkownika Security Officer |
# passwd secoff
|
Przy pierwszym uruchomieniu logowanie do systemu nie będzie możliwe, ponieważ moduł AUTH ograniczy przywileje programów. By rozwiązać ten problem należy uruchomić system w softmode używając następujących parametrów jądra (w konfiguracji lilo lub grub-a):
Listing 4.1: Parametry jądra w Softmode |
rsbac_softmode
|
Aplikacja logowania zarządza loginami użytkowników w systemie. Wymaga to praw do setuid, które teraz nadamy:
Logujemy się jako Security Officer (secoff) i umożliwiamy utworzenie loginów za pomocą komendy:
Listing 4.2: Umożliwianie logowania użytkowników |
# rsbac_fd_menu /bin/login lub # attr_set_fd AUTH FILE auth_may_setuid 1 /bin/login |
Alternatywnie, jeżeli softmode nie jest aktywne, można użyć następujących parametrów jądra:
Listing 4.3: Umożliwianie logowania użytkowników za pomocą parametrów jądra |
rsbac_auth_enable_login
|
Ponieważ żadna zasada nie została jeszcze określona (oprócz tej wygenerowanej podczas pierwszego uruchomienia), moduł AUTH nie zezwala na zmiany UID-ów.
Dzięki trybowi inteligentnej nauki, można w prosty sposób rozwiązać ten problem: Moduł AUTH może automagicznie wygenerować niezbędne zasady obserwując usługi podczas ich startu, i notując uid-y, na które usługi próbują się przełączyć. Na przykład, by nauczyć moduł AUTH o uid-ach potrzebnych dla sshd (demon OpenSSH), należy:
Ważne: Upewniamy się, że sshd lub demon, którego użyjemy do trybu nauki nie jest już uruchomiony. |
Listing 5.1: Tworzenie zasad dla sshd za pomocą trybu nauki |
Uaktywniamy tryb nauki dla sshd # attr_set_file_dir AUTH FILE `which sshd` auth_learn 1 Uruchamiamy usługę # /etc/init.d/sshd start Zatrzymujemy tryb nauki # attr_set_file_dir AUTH FILE `which sshd` auth_learn 0 |
Uwaga: Należy także zalogować się do systemu przed wyłączeniem trybu nauki, gdyż sshd będzie usiłowało zmienić swe uid-y gdy użytkownik się zaloguje. |
Teraz sshd powinno działać jak należy, gratulacje, właśnie powstała pierwsza zasada utworzona przez użytkownika. :) Ta sama procedura może zostać użyta dla każdego innego demona.
Uwaga: Jako alternatywne rozwiązanie dla uruchomienia trybu nauki dla każdego potrzebnego demona aplikacji, można uaktywnić globalny tryb nauki (który będzie uczył o wszystkich uruchomionych usługach, globalnie, jak wskazuje nazwa). |
Globalny tryb nauczania może zostać uruchomiony za pomocą parametru jądra, aplikowanym podczas startu systemu:
Listing 5.2: Aktywowanie globalnego trybu nauki |
rsbac_auth_learn
|
Sugerowane jest zapisanie się do listy mail-owej gentoo-hardened . Generalnie jest to lista o małym ruchu, ogłoszenia RSBAC dla Gentoo będą tam dostępne. Zalecane jest również zapisanie się do listy mail-owej RSBAC. Warto także zapoznać się z hardened FAQ jako że znajduje się tam większość pytań.
| Linki: | Oficjalna strona RSBAC | |
| kanały IRC: | #gentoo-hardened | #rsbac |
Materiał udostępniany na podstawie licencji Creative Commons - Attribution / Share Alike.