Rule Set Based Access Control (RSBAC) dla systemu Linux - Szybki start
1.
Wprowadzenie
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.
2.
Instalacja jądra RSBAC
Emergowanie jądra RSBAC
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.
|
Konfiguracja jądra RSBAC
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 |
[*] RSBAC proc support
[*] Check on init
[*] Support transactions
[*] Randomize transaction numbers
[*] RSBAC debugging support
(400) RSBAC default security officer user ID
[*] User management
[*] SHA1 digest algorithm
[*] Use Crypto API Digest SHA1 (NEW)
[*] 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
[*] Support for Registration of decision modules (REG)
[*] Build REG sample modules
----------------------------
[*] RSBAC support for DAZuko policy
DAZ Policy Options --->
(604800) Scanning result lifetime in seconds
[*] RSBAC support for FF policy
[*] RSBAC support for RC policy
[*] RSBAC support for AUTH policy
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
[ ] RSBAC policies switchable
[*] RSBAC soft mode
[*] Individual module softmode support
[*] RSBAC symlink redirection
[*] Add remote IP address
[*] Add user ID number
[*] Add RC role number
[*] 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
[ ] 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
[*] Segmentation based non-executable pages (NEW)
[*] Restrict mprotect()
[ ] Disallow ELF text relocations
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
|
4.
Pierwsze uruchomienie
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
|
5.
Tryb nauki i moduł AUTH
Tworzenie zasad dla OpenSSH
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 |
# attr_set_file_dir AUTH FILE `which sshd` auth_learn 1
# /etc/init.d/sshd start
# 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
|
6.
Dodatkowe informacje
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ń.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|