Gentoo Logo

Rule Set Based Access Control (RSBAC) per Linux - Guida rapida all'uso

Indice:

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

Sezione "General RSBAC options"
[*] RSBAC proc support
[*] Check on init
[*] Support transactions
[*]   Randomize transaction numbers
[*] RSBAC debugging support
(400) RSBAC default security officer user ID

Sezione "User management"
[*] User management
Assicurarsi di abilitare l'opzione SHA1 nelle Crypto API
Nella categoria "Cryptographic options" della configurazione generale del kernel,
si selezioni
[*]   SHA1 digest algorithm

[*]     Use Crypto API Digest SHA1 (NEW)

Sezione "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

(Non si abiliti l'opzione "RSBAC Maintenance Kernel", ma si usi il
softmode)

Sezione "Decision module (policy) options"
[*] Support for Registration of decision modules (REG)
[*]     Build REG sample modules
----------------------------
[*] RSBAC support for DAZuko policy (For malware/antivirus scanning)
DAZ Policy Options  --->
     (604800)     Scanning result lifetime in seconds

Per ogni differente politica/modulo che si decide di supportare si deve
controllare la relativa protezione nel'AUTH module e nello User Management module
[*] RSBAC support for FF policy
[*] RSBAC support for RC policy
[*] RSBAC support for AUTH policy
Si disabiliti l'opzione learning per il kernel di produzione.
E' solamente usata durante il set-up di un sistema RSBAC dedicato.
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

Sezione "Softmode and switching"
[ ] RSBAC policies switchable
[*] RSBAC soft mode (Turn that off on production kernels)
[*]     Individual module softmode support

Sezione "Logging": tutto tranne l'opzione "Log to remote UDP network
socket" a meno che non si voglia loggare la macchina in remoto

Sezione "RSBAC symlink redirection"
[*]   RSBAC symlink redirection
[*]     Add remote IP address
[*]       Add user ID number
[*]       Add RC role number

Sezione "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

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
     (Disabilitare questa opzione in un kernel di produzione)
    [ ] 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
    (Di solito si seleziona il metodo PAGEEXEC su x86 siccome supporta
    i più recenti PaXs, o si seleziona SEGMEXEC nel caso si abbiano problemi)
    [*]   Segmentation based non-executable pages (NEW)
    [*] Restrict mprotect()
    [ ]   Disallow ELF text relocations
    (Questa opzione non è ancora sufficientemente stabile)

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

Abilitare il modo learning per sshd
# attr_set_file_dir AUTH FILE `which sshd` auth_learn 1

Lanciare il servizio
# /etc/init.d/sshd start

Disabilitare il modo learning
# 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.

Links: Sito ufficiale di RSBAC
Canali IRC: #gentoo-hardened #rsbac


Stampa

Aggiornato il 27 novembre 2010

Oggetto: Questo documento vi guiderà attraverso l'installazione di RSBAC sulla distribuzione Gentoo Linux

Michal Purzynski
Autore

Guillaume Destuynder
Redazione

Franco Tampieri
Traduzione

Donate to support our development efforts.

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