Gentoo Hardened

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Hardened Gentoo and the translation is 90% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎русский • ‎中文(中国大陆)‎
Resources

Gentoo Hardened è un progetto di Gentoo che offre molteplici servizi di sicurezza aggiuntivi applicati ad una installazione di Gentoo Linux. Anche se ognuno di questi può essere selezionato separatamente, Gentoo Hardened abilita diverse opzioni per la mitigazione del rischio nella toolchain, supporta PaX, grSecurity, SELinux, TPE ed altro ancora.

Che si tratti di un server esposto su Internet o di una workstation flessibile, quando si ha a che fare con minacce molteplici si potrebbe desiderare di rinforzare il proprio sistema oltre alla normale applicazione delle ultime patch di sicurezza. "Hardenizzare" un sistema significa applicare contromisure aggiuntive contro attacchi ed altri rischi ed è solitamente una combinazione di attività fatte sul sistema stesso

All'interno di Gentoo Hardened, abbiamo diversi progetti attivi, che contribuiscono a rinforzare ulteriormente i sistemi Gentoo attraverso:

  • l'abilitazione di specifiche opzioni nella "toolchain" (compilatore, linker ...) come forzare la creazione di eseguibili indipendenti dalla posizione ("position-independent executables", o PIE), protezione dallo stack overflow (SSP - "stack smashing protection") o dal buffer overflow (compile-time buffer checks).
  • l'abilitazione delle estensioni PaX nel kernel Linux, che offrono delle misure di protezione aggiuntiva come l'ALSR (address space layout randomization) e rendere non eseguibili gli spazi di memoria
  • l'abilitazione delle estensioni grSecurity nel kernel Linux, incluse restrizioni addizionali per il chroot, auditing aggiuntivo, restrizione dei processi, ecc...
  • l'abilitazione di SELinux nel kernel Linux, che offre un controllo accessi esteso (MAC, Mandatory Access Control) oltre i normali permessi Linux.
  • l'abilitazione di una serie di tecnologie relative all' Integrità dei dati, come l'Integrity Measurement Architecture, per rendere i sistemi più resistenti al "tampering" (corruzione/manomissione dei dati)

Di conseguenza, vengono incluse le utilità di sistema necessarie all'amministrazione di queste estensioni.

Passare ad un profilo Hardened

Scegliere il profilo hardened, in modo che l' amministrazione dei pacchetti sia fatta in modo hardenizzato.

root #eselect profile list
root #eselect profile set [numero del profilo hardened]
root #source /etc/profile

Scegliendo il profilo hardened, certe impostazioni del gestore dei pacchetti (masks, flags USE, eccetera...) diventano di default sul sistema. Questo si applica a molti pacchetti, inclusa la toolchain. La toolchain è la serie di software utilizzata per compilare i programmi, ed include: la GNU Compiler Compilation (GCC), le binutils (linker, ecc.) e la libreria C di GNU (glibc). Reinstallando la toolchain, queste impostazioni di default verranno applicate, consentendo che tutta la compilazione di pacchetti futura venga fatta in modo hardened.

root #emerge --oneshot gcc
root #emerge --oneshot binutils virtual/libc

I comandi sopra ricompilano GCC, che può essere utilizzato ora per compilare software hardenizzato. Assicurarsi che l'opzione hardened sia selezionata per GCC.

root #gcc-config -l
[1] i686-pc-linux-gnu-4.5.3 *
[2] i686-pc-linux-gnu-4.5.3-hardenednopie
[3] i686-pc-linux-gnu-4.5.3-hardenednopiessp
[4] i686-pc-linux-gnu-4.5.3-hardenednossp
[5] i686-pc-linux-gnu-4.5.3-vanilla

Nell'esempoi sopra, il profilo hardened è quello senza suffissi. Se si vuole disabilitare PIE o SSP selezionare il relativo hardenedno(pie|ssp) o entrambi, hardenednopiessp. Il profilo vanilla è ovviamente quello con l'hardening disabilitato. Caricate poi le nuove impostazioni:

root #source /etc/profile

Se utilizzate il pacchetto "prelink", rimuovetelo, dato che non è compatibile con il profilo hardened:

root #emerge --depclean prelink

Potete ora reinstallare tutti i pacchetti con la nuova toolchain hardenizzata:

root #emerge --emptytree --verbose @world

Installate i sorgenti del kernel hardened, in modo che il kernel vi permetta di *amministrare il sistema* in modalità sicura (specialmente utilizzando PaX):

root #emerge --ask hardened-sources

Ora configurate/compilate i sorgenti ed aggiungete il nuovo kernel al vostro boot manager (es. GRUB).

Suggerimenti pratici

Chroot con Gentoo Hardened/Grsecurity

Se si vuole effettuare il chroot in un ambiente copiato, dove la variabile CONFIG_GRKERNSEC_CHROOT sia abilitata, è necessario utilizzare il cd grub e modificare i parametri root(cd) kernel(cd) initrd(cd) da (cd) a (hdx,y).

Ora è possibile installare l'ambiente GRUB

Hardenizzare singoli pacchetti

Attenzione
Questo metodo non è supportato da Gentoo.

Modificare il profilo GCC sulla base di singoli pacchetti può essere difficoltoso. Un modo per evitare questo è configurare delle C(XX)FLAGS ad-hoc per ogni pacchetto utilizzando package.env. Create il file /etc/portage/env/nossp ed aggiungetelo a:

FILE /etc/portage/env/nosspDisable SSP
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"

Per permettere la disabilitazione di PIE, creare ed aggiungere a /etc/portage/env/nopie:

FILE /etc/portage/env/nopieDisable PIE
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
Note
GCC version 4.x uses -nopie instead of -no-pie.

Infine aggiungete il pacchetto per cui volete disabilitare PIE o SSP a /etc/portage/package.env ed il relativo /etc/portage/env/<filename>, per l'esempio seguente utilizziamo sys-libs/zlib:

FILE /etc/portage/package.envDisable PIE for sys-libs/zlib
sys-libs/zlib nopie

Vedere anche

Per ulteriori informazioni, potete consultare:

Risorse esterne