Rule Set Based Access Control (RSBAC) per Linux - Guida rapida
all'uso
1.
Introduzione
Questa guida vi aiuterà a installare RSBAC su Gentoo Linux. Si assume che
l'utente abbia già letto l'Introduzione (in Inglese, ndt) e
la Panoramica, così che egli sappia cos'è RSBAC
e quali sono i suoi concetti base.
2.
Installazione di un kernel che supporti RSBAC
Installare il kernel RSBAC
Questo passo è abbastanza semplice e diretto, grazie al modo in cui Gentoo
tratta le installazioni del kernel. Iniziare con l'emerge del kernel
rsbac-sources da portage.
Nota:
Ci sono due kernel rsbac-sources utilizzabili: uno è per il kernel 2.4, l'altro
è per il più recente kernel 2.6.
|
Codice 2.1: Installazione del kernel RSBAC (usando il profilo predefinito e il kernel 2.6) |
# emerge rsbac-sources
|
Codice 2.2: Installazione del kernel RSBAC (usando il kernel 2.4, dal profilo 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
|
Importante:
Si raccomanda di abilitare il softmode per la prima compilazione di un kernel
RSBAC. Questo permette di disabilitare l'enforcement RSBAC al reboot, per
testare l'installazione o nel caso qualcosa vada male. Lo si disabiliti
solamente non appena si sia sicuri di quello che si sta facendo, o naturalmente,
per un kernel di produzione.
|
Configurare il kernel RSBAC
Ora si configurerà il kernel. Si raccomanda di abilitare le seguenti opzioni,
nel menù "Rule Set Based Access Control (RSBAC)":
Codice 2.3: Configurare e compilare il kernel RSBAC |
[*] RSBAC proc support
[*] Check on init
[*] Support transactions
[*] Randomize transaction numbers
[*] RSBAC debugging support
(400) RSBAC default security officer user ID
[*] User management
[*] 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
|
Nota:
Se si pensa di lanciare un server X Windows (come X.org o XFree86), si abiliti
anche "[*] X support (normal user MODIFY_PERM access to ST_ioports)".
Vedere anche Usare Xorg su Gentoo
Hardened
|
Ora si configurerà PaX che è un complemento del kernel RSBAC hardened. Si
raccomanda inoltre di abilitare le seguenti opzioni, nella sezione "Security
options ---> PaX".
Codice 2.4: Configurazione delle ozioni PaX di kernel |
[*] 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
|
Nota:
Il riferimento per ulteriori informazioni è il link PaX.
|
Nota:
E' obbligario usare le utilità admin di RSBAC per gestire PaX con un kernel
dedicato RSBAC, in luogo di chpax o paxctl. Operando così si può facilmente
individuare l'oggetto PaX e di impostarne i flag.
|
Codice 2.5: Gestire i flag PaX |
# rsbac_fd_menu /path/to/the/target/item
o
# attr_set_file_dir FILE /path/to/the/target/item pax_flags [pmerxs]
|
Giunti a questo punto si compila e installa il kernel scegliendo tutte le
rimanenti opzioni come si fa nel caso normale.
Importante:
Si raccomanda vivamente di compilare un secondo kernel senza le opzioni
softmode, e senza l'opzione AUTH, in maniera da poterlo usare in un ambiente da
produzione. Usarlo solo quando si è terminato il test e la configurazione delle
politiche, siccome rende impossibile disabilitare il sistema di controllo delle
politiche.
|
3.
Installazione delle utilità admin di RSBAC
Per amministrare un sistema Gentoo con RSBAC abilitato, sono necessarie alcune
utilità userspace. Tali utilità sono presenti nel pacchetto rsbac-admin che
ovviamente deve essere installato.
Codice 3.1: Installazione delle utilità amministrative di RSBAC |
# emerge rsbac-admin
|
Una volta installato, il pacchetto crea un nuovo utente del sistema (secoff, con
uid 400). Tale utente diventerà l'amministratore della sicurezza durante il
primo boot. E' l'unico utente in grado di cambiare la configurazione RSBAC, ed è
comunemente chiamato Security Officer.
Importante:
Naturalmente si deve scegliere una password sicura per l'utente secoff.
|
Codice 3.2: Creazione della password per il Security Officer |
# passwd secoff
|
4.
Il primo boot
Durante il primo boot, il login nel sistema non è possible, a causa
dell'impostazione del modulo AUTH che restringe i privilegi dei
programmi. Per aggirare questo problema eseguire il boot in softmode usando il
seguente parametro del kernel (nella configurazione di lilo o grub):
Codice 4.1: Parametro del kernel per l'esecuzione in softmode |
rsbac_softmode
|
L'applicazione di login gestisce tutti i login di utente del sistema. Essa ha
bisogno dei diritti necessari per eseguire il setuid, ed occorre procedere come
segue per fare sì che ciò avvenga:
Eseguire il login come Security Officer (secoff) e permettere i login mediante
il seguente comando:
Codice 4.2: Come permettere il login agli utenti |
# rsbac_fd_menu /bin/login
o
# attr_set_fd AUTH FILE auth_may_setuid 1 /bin/login
|
Alternativamente, se il softmode non è abilitato, si può usare il seguente
parametro di kernel, per permettere il login al boot:
Codice 4.3: Come permettere il login utente con un parametro di kernel |
rsbac_auth_enable_login
|
5.
Il modo Learning e il modulo AUTH
Creare un politica per OpenSSH
Siccome non esiste una politica di gestione degli accessi (tranne quella
generata al primo boot), il modulo AUTH non permette di cambiare l'uid.
Grazie al modo learning intelligente è facile aggirare questo problema: il
modulo AUTH può generare "magicamente" in automatico la politica necessaria
osservando i vari servizi all'avvio, e annotando quali uid cercano di impostare.
Ad esempio per insegnare al modulo AUTH quali uid necessita l'sshd (il demone
di OpenSSH), procedere come segue:
Importante:
Assicurarsi che sshd o il demone su cui si vuole usare il modo learning non sia
già in esecuzione prima di abilitare il modo stesso.
|
Codice 5.1: Creazione di una politica per sshd, usando il modo learning |
# 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
|
Nota:
Si deve effettuare il login al sistema prima di disabilitare il modo learning,
perchè l'sshd tenterà di cambiare i suoi uid quando un qualsiasi utente effettua
il login.
|
Ora sshd dovrebbe lavorare così come richiesto, congratulazioni, si è
realizzata la prima politica :) La stessa procedura si può usare per definire la
politica di ogni altro demone.
Nota:
Alternativamente all'abilitazione del modo learning per ogni demone che serve,
potrebbe essere necessario abilitare un modo learning globale (che apprenderà su
tutte le applicazioni in esecuzione globalmente, così come dice il nome).
|
Si può abilitare il modo learning globale passando il seguente parametro al
kernel durante il boot:
Codice 5.2: Abilitazione del modo learning globale |
rsbac_auth_learn
|
6.
Ulteriori informationi
Si raccomanda l'iscrizione alla mailing-list
gentoo-hardened. È una mailing list a basso traffico, e gli annunci
relativi a RSBAC per Gentoo saranno comunicati lì. Si raccomanda anche
l'iscrizione alla mailing-list RSBAC. Si può
anche dare un'occhiata alle Domande frequenti su
Gentoo Hardened anche se quesiti importanti potrebbero già trovare
risposta in questo documento.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|