Gentoo Logo

Rule Set Based Access Control (RSBAC) dla systemu Linux - Szybki start

Spis treści:

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

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

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

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

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

Linki: Oficjalna strona RSBAC
kanały IRC: #gentoo-hardened #rsbac


Drukuj

Zaktualizowano 15 lutego 2006

Podsumowanie: Opis instalacji RSBAC w Gentoo Linux

Michał Purzyński
Autor

Guillaume Destuynder
Redaktor

Rafał Stolarski
Tłumaczenie

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.