Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 119907 Details for
Bug 179340
[it] [it]updated grsecurity.xml
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
updated grsecurity.xml
grsecurity.xml (text/plain), 25.53 KB, created by
Paolo Palana
on 2007-05-21 18:02:37 UTC
(
hide
)
Description:
updated grsecurity.xml
Filename:
MIME Type:
Creator:
Paolo Palana
Created:
2007-05-21 18:02:37 UTC
Size:
25.53 KB
patch
obsolete
><?xml version='1.0' encoding="utf-8"?> ><!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> ><guide link="/proj/it/hardened/grsecurity.xml" lang="it"> > ><title>Guida Gentoo a Grsecurity v2 </title> > ><author title="Autore"> > <mail link="solar@gentoo.org">solar</mail> ></author> ><author title="Autore"> > <mail link="swift@gentoo.org">Sven Vermeulen</mail> ></author> ><author title="Traduttore"> > <mail link="nsr2@tiscali.it">Paolo Palana</mail> ></author> > ><abstract> >Questo documento illustra le caratteristiche delle patches di sicurezza >gresecurity 2.x, supportate dalle opzioni di configurazione del kernel e >dai tool forniti dal progetto grsecurity per innalzare la sicurezza del >proprio sistema ad elevati standard. ></abstract> > ><version>0.4</version> ><date>2004-10-06</date> > ><chapter> ><title>A proposito di Grsecurity</title> ><section> ><title>Il progetto Grsecurity</title> ><body> > ><p> >Il progetto grsecurity, ospitato su <uri>http://www.grsecurity.org</uri>, >fornisce diverse patches al kernel di Linux che consentono di aumentare la >sicurezza generale del proprio sistema. Le varie caratteristiche offerte da >grsecurity sono discusse nel prossimo capitolo. Una lista esauriente è >mantenuta sulla <uri link="http://www.grsecurity.org/features.php">grsecurity >features page</uri> stessa. ></p> > ><p> >Visto che le caratteristiche di grsecurity sono essenzialmente basate sul >kernel, la maggior parte di questo documento spiega le varie caratteristiche >del kernel e le relative chiamate di sistema (se ciò è possibile). ></p> > ></body> ></section> ><section> ><title>Integrazione Gentoo Hardened</title> ><body> > ><p> >Il <uri link="http://hardened.gentoo.org">Progetto Gentoo Hardened</uri> >sostiene le caratteristiche di aumento della sicurezza per Gentoo, >includendo, ma non limitandosi a, grsecurity. ></p> > ></body> ></section> ><section> ><title>Configurazione del Kernel</title> ><body> > ><p> >In questo documento vogliamo parlare della configurazione del kernel parlando >in termini di variabili del kernel quali ><c>CONFIG_GRKERNSEC_PAX_NO_ACL_FLAGS</c>. Queste sono le variabili che il >processo di compilazione del kernel usa per determinare se certe >carateristiche devono o meno essere compilate. ></p> > ><p> >Quando si procede alla configuazione del kernel attraverso <c>make >menuconfig</c> o simili si riceve una interfaccia utente attraverso la quale >è possibile selezionare le varie opzioni del kernel. Se si selezione il >bottone di <e>Help</e> su qualsiasi caratteristica del kernel è possibile >vedere nella parte superiore della schermata la corrispettiva variabile. ></p> > ><p> >E' possibile configurare il kernel in qualsiasi maniera si volgia, con un >minimo di raziocinio, e se risulta difficile trovare alcune opzioni si può >sempre editare <path>/usr/src/linux/.config</path> a mano :) ></p> > ><p> >Ovviamente per essere in grado di selezionare le varie opzioni grsecurity del >kernel è necessario abilitare grsecurity nel proprio kernel: ></p> > ><pre caption="Attivare grsecurity"> >CONFIG_GRKERNSEC=y >CONFIG_GRKERNSEC_CUSTOM=y ></pre> > ></body> ></section> ></chapter> > ><chapter> ><title>PaX</title> ><section> ><title>Combattere lo sfruttamento dei bug del software</title> ><body> > ><p> >PaX introduce una coppia di meccanismi di sicurezza che rende difficile per >degli attaccanti sfruttare bugs che coinvolgano la corruzione della memoria >(quindi non trattare PaX come se proteggesse da tutti i bug). Il <uri >link="http://pax.grsecurity.net/docs/pax.txt">documento di introduzione a >PaX</uri> parla di tre possibili tecniche di exploit: ></p> > ><ol> > <li>introdurre/eseguire codice arbitrario</li> > <li>eseguire codice esistente al di fuori del normale flusso di esecuzione > del programma originale</li> > <li>eseguire codice esistente nel normale flusso di esecuzione del programma > originale con dati arbitrari</li> ></ol> > ><p> >Un metodo di prevenzione impedisce che il codice eseguibile possa essere >memorizzato in aree di memoria scrivibile. Un processo richiede cinque >differenti regioni di memoria ></p> > ><ol> > <li> > Una <e>sezione dati</e> che contiene dati globali e allocati staticamente > </li> > <li> > Una <e>regione BSS</e> (Block Started by Symbol) che contiene informazioni > i dati zero-initialized del processo. > </li> > <li> > Una <e>regione codice,</e> chiamata anche <e>segmento testo</e>, che > contiene le istruzioni eseguibili. > </li> > <li> > Un <e>heap</e> che contiene la memoria allocata dinamicamente. > </li> > <li> > Uno <e>stack</e> che contiene le variabili locali. > </li> ></ol> > ><p> >Il primo metodo di prevenzione di Pax, chiamato <b>NOEXEC</b>, ha come >scopo quello di fornire del controllo sulla generazione a runtime di codice >eseguibile. Le pagine di memoria che non contengono codice eseguibile vengono >marcate come non-eseguibili. Questo significa che heap e stack, che contengono >solo dati e non dovrebbero contenere codice eseguibile, sono marcati come >non-eseguibili. Gli exploits che inseriscono del codice in questa area con >l'intento di mandarlo in esecuzione falliranno. ></p> > ><p> >In realtà NOEXEC fa più di questo, i lettori interessati possono soddisfare >la loro curiosità leggendo la <uri >link="http://pax.grsecurity.net/docs/noexec.txt">Documentazione PaX >NOEXEC</uri>. ></p> > ><p> >Il secondo metodo di prevenzione di Pax, chiamato <b>ASLR</b> (Address Space >Layout Randomization), randomizza gli indirizzi dati alle richieste di >memoria. Mentre precedentemente la memoria veniva assegnata sequenzialmente >(il che significa che gli exploits sanno dove le regioni di memoria di un >processo sono situate) ASLR randomizza questa allocazione, rendendo vane le >tecniche che contano su queste informazione. ></p> > ><p> >Sono disponibili altre informazioni <uri >link="http://pax.grsecurity.net/docs/aslr.txt">online</uri> su ASLR. ></p> > ></body> ></section> ><section> ><title>Abilitare PaX</title> ><body> > ><p> >Il settaggio del kernel raccomandato per PaX è: ></p> > ><pre caption="Configurazione del kernel raccomandata per PaX"> ><comment># ># Controllo PaX ># ># CONFIG_GRKERNSEC_PAX_SOFTMODE is not set</comment> >CONFIG_GRKERNSEC_PAX_EI_PAX=y >CONFIG_GRKERNSEC_PAX_PT_PAX_FLAGS=y >CONFIG_GRKERNSEC_PAX_NO_ACL_FLAGS=y ><comment># CONFIG_GRKERNSEC_PAX_HAVE_ACL_FLAGS is not set ># CONFIG_GRKERNSEC_PAX_HOOK_ACL_FLAGS is not set > ># ># Protezione dello spazio degli indirizzi >#</comment> >CONFIG_GRKERNSEC_PAX_NOEXEC=y ><comment># CONFIG_GRKERNSEC_PAX_PAGEEXEC is not set</comment> >CONFIG_GRKERNSEC_PAX_SEGMEXEC=y >CONFIG_GRKERNSEC_PAX_EMUTRAMP=y >CONFIG_GRKERNSEC_PAX_MPROTECT=y ><comment># CONFIG_GRKERNSEC_PAX_NOELFRELOCS is not set</comment> >CONFIG_GRKERNSEC_PAX_ASLR=y >CONFIG_GRKERNSEC_PAX_RANDKSTACK=y >CONFIG_GRKERNSEC_PAX_RANDUSTACK=y >CONFIG_GRKERNSEC_PAX_RANDMMAP=y >CONFIG_GRKERNSEC_PAX_RANDEXEC=y ><comment># CONFIG_GRKERNSEC_KMEM is not set ># CONFIG_GRKERNSEC_IO is not set</comment> >CONFIG_GRKERNSEC_PROC_MEMMAP=y >CONFIG_GRKERNSEC_HIDESYM=y ></pre> > ><p> >Se si sta utilizzando un sistema non-x86 si osserva che >CONFIG_GRKERNSEC_PAX_NOEXEC è assente. Si dovrebbe, quindi, selezionare >CONFIG_GRKERNSEC_PAX_PAGEEXEC poichè è l'unica implementazione non-exec >disponibile. ></p> > ></body> ></section> ><section> ><title>Controllare PaX</title> ><body> > ><p> >Non tutte le applicazioni Linux sono felici delle restrizioni imposte da PaX. >Questi tool includono xorg-x11, java, mplayer, xmms e altri. Se si sta >pensando di usarli si può elevare la protezione per queste applicazioni >usando <c>chpax</c> e <c>paxctl</c>. ></p> > ><pre caption="Installiare le utilità chpax e paxctl"> ># <i>emerge sys-apps/chpax</i> ># <i>emerge sys-apps/paxctl</i> ></pre> > ><p> >chpax fornisce uno script di inizializzazione che gestisce per noi i settaggi >delle applicazioni maggiormente conosciute: ></p> > ><pre caption="Aggiungere lo script di inizializzazione chpax al runlevel di default"> ># <i>rc-update add chpax default</i> ></pre> > ><p> ><c>pax-utils</c> è una piccola toolbox che contiene applicazioni utili per >amministrare un server PaX. ></p> > ><pre caption="Installare pax-utils"> ># <i>emerge pax-utils</i> ></pre> > ><p> >I tool interessanti includono <c>scanelf</c> e <c>pspax</c>: ></p> > ><ul> > <li> > Con <c>scanelf</c> è possibile scandire attraverso directory di librerie > e file binari ed elencare i vari permessi e tipi ELF che riguardano > l'esecuzione di un setup ideale pax/grsec. > </li> > <li> > > Con <c>pspax</c> si puossono visualizzare i flags/capabilities/xattr dal > punto di vista del kernel. > </li> ></ul> > ></body> ></section> ><section> ><title>Verificare i settaggi di PaX</title> ><body> > ><p> >Peter Busser ha scritto una suite di test di regressione chiamata ><c>paxtest</c>. Questo tool ha lo scopo di testare vari casi di possibili >vettori di attacco e comunicarci i risultati. Quando lo si esegue questo crea >un file di log chiamato <path>paxtest.log</path> nella current working >directory. ></p> > ><pre caption="Installare ed seguire paxtest"> ># <i>emerge paxtest</i> > ># <i>paxtest</i> >Executable anonymous mapping : Killed >Executable bss : Killed >Executable data : Killed >Executable heap : Killed >Executable stack : Killed >Executable anonymous mapping (mprotect) : Killed >Executable bss (mprotect) : Killed >Executable data (mprotect) : Killed >Executable heap (mprotect) : Killed >Executable stack (mprotect) : Killed >Executable shared library bss (mprotect) : Killed >Executable shared library data (mprotect): Killed >Writable text segments : Killed >Anonymous mapping randomisation test : 16 bits (guessed) >Heap randomisation test (ET_EXEC) : 13 bits (guessed) >Heap randomisation test (ET_DYN) : 25 bits (guessed) >Main executable randomisation (ET_EXEC) : 16 bits (guessed) >Main executable randomisation (ET_DYN) : 17 bits (guessed) >Shared library randomisation test : 16 bits (guessed) >Stack randomisation test (SEGMEXEC) : 23 bits (guessed) >Stack randomisation test (PAGEEXEC) : No randomisation >Return to function (strcpy) : Vulnerable >Return to function (memcpy) : Vulnerable >Return to function (strcpy, RANDEXEC) : Killed >Return to function (memcpy, RANDEXEC) : Killed >Executable shared library bss : Killed >Executable shared library data : Killed ></pre> > ><p> >Nel Precedente esempio si vede che: ></p> > ><ul> > <li> > strcpy e memcpy sono elencate come <e>Vulnerabili</e>. Questo è un > risultato atteso e normale - sta semplicemente mostrando le necessità per > una tecnologia come ProPolice/SSP > </li> > <li> > Non c'è randomizzazione per PAGEEXEC. Questo è normale poichè, come > suggerito, la configurazione del kernel per x86 non ha attivo il > settaggio PAGEEXEC. Tuttavia su architetture che supportano un reale NX > (non-executable) bit (la maggior parte, incluso x86_64), PAGEEXEC è il > solo metodo disponibile per NOEXEC e non ha obiettivi di performance. > </li> ></ul> > ></body> ></section> ></chapter> > ><chapter> ><title>RBAC</title> ><section> ><title>Role Based Access Control</title> ><body> > ><p> >Ci sono due meccanismi di base per il controllo degli accessi usati per >prevenire accessi non autorizzati ai file (o informazioni in generale): >DAC (Discretionary Access Control) e MAC (Mandatory Access Control). >Di default Linux usa il meccanismo DAC: il creatore di un file può decidere >chi ha accesso al file stesso. Un sistema MAC forza chiunque a seguire delle >regole impostate dall'amministratore. ></p> > ><p> >L'implementazione di MAC che grsecurity supporta si chiama Role Based Access >Control. RBAC associa dei <e>ruoli</e> con ogni utente. Ogni ruolo definisce >quali operazioni possono essere fatte su determinati oggetti. Dato un insieme >ben formato di ruoli ed operazioni i propri utenti saranno costretti ad >effettuare solo quelle attività che gli sono state permesse. La regola di >default "deny-all" assicura che un utente non possa eseguire azioni alle quali >non avevamo pensato. ></p> > ></body> ></section> ><section> ><title>Configurare il Kernel</title> ><body> > ><p> >La configurazione del Kernel raccomandata per RBAC è: ></p> > ><pre caption="Configurazione raccomandata del Kernel per RBAC"> ><comment># ># Role Based Access Control Options >#</comment> >CONFIG_GRKERNSEC_ACL_HIDEKERN=y >CONFIG_GRKERNSEC_ACL_MAXTRIES=3 >CONFIG_GRKERNSEC_ACL_TIMEOUT=30 ></pre> > ></body> ></section> ><section> ><title>Lavorare con gradm</title> ><body> > ><p> ><c>gradm</c> è un tool che consente di amministrare e mantenere una policy per >il proprio sitema. Con esso è possibile abilitare o disabilitare il sistema >RBAC, rileggere i ruoli RBAC, cambiare il vostro ruolo, impostare una >password per la modalità admin, etc. ></p> > ><p> >Quando si installa <c>gradm</c> una policy di default viene installata in ><path>/etc/grsec/policy</path>: ></p> > ><pre caption="Installare gradm"> ># <i>emerge gradm</i> ></pre> > ><p> >Di default le policy RBAC non sono attivate. E' compito dell'amministratore di >sistema decidere quando il sistema stesso debba avere RBAC abilitato, non di >Gentoo. Prima di attivare il sistema RBAC bisogna impostare una password per >l'amministratore. ></p> > ><pre caption="Attivare il sistema RBAC"> ># <i>gradm -P admin</i> >Setting up grsecurity RBAC password >Password: <comment>(Inserire una password ben scelta)</comment> >Re-enter Password: <comment>(Reinserire la stessa password per conferma)</comment> >Password written in /etc/grsec/pw ># <i>gradm -E</i> ></pre> > ><p> >Per disabilitare il sistema RBAC bisogna eseguire <c>gradm -D</c>. Se non si è >autorizzati è necessario prima passare al ruolo di amministratore: ></p> > ><pre caption="Disabilitare il sistema RBAC"> ># <i>gradm -a admin</i> >Password: <comment>(Inserire la propria password da amministratore)</comment> ># <i>gradm -D</i> ></pre> > ><p> >Per lasciare il ruolo di amministratore eseguire <c>gradm -u admin</c>: ></p> > ><pre caption="Uscire dal ruolo di amministratore"> ># <i>gradm -u admin</i> ></pre> > ></body> ></section> ><section> ><title>Creare una Policy</title> ><body> > ><p> >Il sistema RBAC inizia con una caratteristica simpatica chiamata "learning >mode". Il learning mode può generare una policy iniziale con i minimi >privilegi per il proprio sistema. Questo è stato pensato per risparmiare >tempo e soldi rendendo possibile il rapido dispiegamento di molteplici >server sicuri. ></p> > ><p> >Per utilizzare il learning mode è necessario attivarlo usando <c>gradm</c>: ></p> > ><pre caption="Attivare il learning mode di RBAC"> ># <i>gradm -F -L /etc/grsec/learning.log</i> ></pre> > ><p> >Adesso usiamo il nostro sistena facendo le cose che faremmo normalmente. >Cerchiamo di evitare operazioni di rsync, eseguire il locate e ogni >altra operazione che faccio uso pesante dell'I/O e che possa rallentare >il tempo si processamento. ></p> > ><p> >Quando si ritiene di aver usato sufficientemente il proprio sistema per >ottenere una buona policy autorizziamo il processo <c>gradm</c> stesso e >suggeriamo ruoli in <path>/etc/grsec/learning.roles</path>: ></p> > ><pre caption="Processamento dei log del learning mode"> ># <i>gradm -F -L /etc/grsec/learning.log -O /etc/grsec/learning.roles</i> ></pre> > ><p> >Verifica <path>/etc/grsec/learning.roles</path> e lo salva in ><path>/etc/grsec/policy</path> (permessi 0600) una volta finito. ></p> > ><pre caption="Salvare le policies"> ># <i>mv /etc/grsec/learning.roles /etc/grsec/policy</i> ># <i>chmod 0600 /etc/grsec/policy</i> ></pre> > ><p> >Adesso si dovrebbe essere in grado di abilitare il prorpio sistema RBAC con le >policy apprese. ></p> > ></body> ></section> ><section> ><title>Perfezionare la propria policy</title> ><body> > ><p> >Una interessante caratteristica di grsecurity2.x è <e>Set Operation Support</e> >per il file di configurazione. Attualmente sono supportate unioni, intersezioni >e differenza tra insiemi (di oggetti in questo caso). ></p> > ><pre caption="Insiemi di esempio"> >define objset1 { >/root/blah rw >/root/blah2 r >/root/blah3 x >} > >define somename2 { >/root/test1 rw >/root/blah2 rw >/root/test3 h >} ></pre> > ><p> >Questo è un esempio del suo uso e gli oggetti risultanti che saranno aggiunti >al vostro soggetto: ></p> > ><pre caption="Esempio dell'operatore &"> >subject /somebinary o >$objset1 & $somename2 ></pre> > ><p> >Quanto sopra si espanderebbe in: ></p> > ><pre caption="Setting dei soggetti risultanti"> >subject /somebinary o >/root/blah2 r ></pre> > ><p> >Questo è il risultato dell'operatore & che prende entrambi gli insiemi e >ritorna i file che esistono contemporaneamente in entrambi gli insiemi e i >relativi permessi. ></p> > ><pre caption="Esempio dell'operatore |"> >subject /somebinary o >$objset1 | $somename2 ></pre> > ><p> >Questo esempio sarebbe equivalente a: ></p> > ><pre caption="Setting dei soggetti risultanti"> >subject /somebinary o >/root/blah rw >/root/blah2 rw >/root/blah3 x >/root/test1 rw >/root/test3 h ></pre> > ><p> >Questo è il risultato dell'operatore | che prende entrambi gli insiemi e >ritorna i file che esistono in un solo insieme. Se il file dovesse esistere in >entrambi gli insiemi questo viene ugualmente restituito e il mode contiene i >flags che esistono in un solo insieme. ></p> > ><pre caption="Esempio dell'operatore - "> >subject /somebinary o >$objset1 - $somename2 ></pre> > ><p> >Questo esempio sarebbe equivalente a: ></p> > ><pre caption="Setting dei soggetti risultanti"> >subject /somebinary o >/root/blah rw >/root/blah2 h >/root/blah3 x ></pre> > ><p> >Questo è il risultato dell'operatore - che prende i due insiemi e ritorna >il file che esiste nell'insieme di sinistra ma non nel match con il file >nell'insieme di destra. Se il file esiste nell'insieme di sinistra e viene >trovato un match a destra (il nome del file è lo stesso o una directory padre >esiste nell'insieme di destra), il file è ritornato e il mode del secondo >insieme è rimosso dal primo insieme, e quel file viene restituito. ></p> > ><p> >In un qualche oscuro pseudo-linguaggio questo potrebbe essere visto come: ></p> > ><pre caption="Spiegazione con pseudo-linguaggio"> >if ( (<i>$objset1</i> contiene <i>/tmp/blah rw</i>) e > (<i>$objset2</i> contiene <i>/tmp/blah r</i>) ) >then > <i>$objset1 - $objset2</i> dovrebbe contenere <i>/tmp/blah w</i> > >if ( (<i>$objset1</i> contiene <i>/tmp/blah rw</i>) and > (<i>$objset2</i> contiene <i>/ rwx</i>) ) >then > <i>$objset1 - $objset2</i> dovrebbe contenere <i>/tmp/blah h</i> ></pre> > ><p> >Per quanto riguarda l'ordine di precedenza (dalla più alta alla più >bassa): "-, & |". > ></p> > ><p> >Se non si vuole avere la seccatura di ricordare le precedenze è stato incluso >il supporto per le parentesi, cosi si possono scrivere espressioni come: ></p> > ><pre caption="Esempio parentetico"> >(($set1 - $set2) | $set3) & $set4 ></pre> > ></body> ></section> ></chapter> > ><chapter> ><title>Protezione del FileSystem</title> ><section> ><title>Combattere Chroot e abusi del filesystem</title> ><body> > ><p> >Grsecurity2 include diverse patch che impediscono agli utenti di guadagnare >conoscenze non necessarie riguardo al sistema. Questo include restrizione >sull'uso di <path>/proc</path>, sul chrooting, sul linking etc. ></p> > ></body> ></section> ><section> ><title>Configurazione del kernel</title> ><body> > ><p> >Per la protezione del filesystem si raccomanda la seguente configurazione del >grsecurity kernel ></p> > ><pre caption="Attivare la Filesystem Protection"> ><comment># ># Filesystem Protections >#</comment> >CONFIG_GRKERNSEC_PROC=y ><comment># CONFIG_GRKERNSEC_PROC_USER is not set</comment> >CONFIG_GRKERNSEC_PROC_USERGROUP=y >CONFIG_GRKERNSEC_PROC_GID=10 >CONFIG_GRKERNSEC_PROC_ADD=y >CONFIG_GRKERNSEC_LINK=y >CONFIG_GRKERNSEC_FIFO=y >CONFIG_GRKERNSEC_CHROOT=y >CONFIG_GRKERNSEC_CHROOT_MOUNT=y >CONFIG_GRKERNSEC_CHROOT_DOUBLE=y >CONFIG_GRKERNSEC_CHROOT_PIVOT=y >CONFIG_GRKERNSEC_CHROOT_CHDIR=y >CONFIG_GRKERNSEC_CHROOT_CHMOD=y >CONFIG_GRKERNSEC_CHROOT_FCHDIR=y >CONFIG_GRKERNSEC_CHROOT_MKNOD=y >CONFIG_GRKERNSEC_CHROOT_SHMAT=y >CONFIG_GRKERNSEC_CHROOT_UNIX=y >CONFIG_GRKERNSEC_CHROOT_FINDTASK=y >CONFIG_GRKERNSEC_CHROOT_NICE=y >CONFIG_GRKERNSEC_CHROOT_SYSCTL=y >CONFIG_GRKERNSEC_CHROOT_CAPS=y ></pre> > ></body> ></section> ><section> ><title>Attivare il meccanismo di sicurezza</title> ><body> > ><p> >Quando si usa un kernel compilato con i precedenti settaggi (o comunque con >settaggi simili)è possibile abilitare/disabilitare molte delle opzioni >attraverso <path>/proc</path> filesystem o via <c>sysctl</c>. ></p> > ><p> >L'esempio seguente mostra un frammento di un tipico ><path>/etc/sysctl.conf</path>: ></p> > ><pre caption="Esempio di settaggi all'interno di /etc/sysctl.conf"> >kernel.grsecurity.chroot_deny_sysctl = 1 >kernel.grsecurity.chroot_caps = 1 >kernel.grsecurity.chroot_execlog = 0 >kernel.grsecurity.chroot_restrict_nice = 1 >kernel.grsecurity.chroot_deny_mknod = 1 >kernel.grsecurity.chroot_deny_chmod = 1 >kernel.grsecurity.chroot_enforce_chdir = 1 >kernel.grsecurity.chroot_deny_pivot = 1 >kernel.grsecurity.chroot_deny_chroot = 1 >kernel.grsecurity.chroot_deny_fchdir = 1 >kernel.grsecurity.chroot_deny_mount = 1 >kernel.grsecurity.chroot_deny_unix = 1 >kernel.grsecurity.chroot_deny_shmat = 1 ></pre> > ><p> >E' possibile abilitare o disabilitare le impostazioni anche usando il comando ><c>sysctl</c>: ></p> > ><pre caption="Abilitare i settaggi sysctl"> ><comment>(Attivare la caratteristca exec_logging)</comment> ># <i>sysctl -w kernel.grsecurity.exec_logging = 1</i> ><comment>(Disattivare la caratteristica exec_logging</comment> ># <i>sysctl -w kernel.grsecurity.exec_logging = 0</i> ></pre> > ><p> >Vi è un settaggio sysctl veramente importante appartenente a grsecurity, >denominato <c>kernel.grsecurity.grsec_lock</c>. Se abilitato non si ha la >possibilità di modificare nessun'altro settaggio. ></p> > ><pre caption="Interfaccia per il locking di sysctl"> ># <i>sysctl -w kernel.grsecurity.grsec_lock = 1</i> ></pre> > ></body> ></section> ></chapter> > ><chapter> ><title>Verifica del Kernel</title> ><section> ><title>Estendere la facilità di logging del proprio sistema</title> ><body> > ><p> >grsecurity fornisce funzionalità aggiuntive al kernel inerenti al logging. >Con il <e>Kernel Auditing</e> di grsecurity il kernel ci informa quando una >applicazione è stata avviata, quando un device viene montato, etc. ></p> > ></body> ></section> ><section> ><title>I vari settaggi per il Kernel Audit</title> ><body> > ><p> >La seguente configurazione del kernel può essere usata per abilitare >il Kernel Audit di grsecurity: ></p> > ><pre caption="Attivare il Kernel Auditing"> ><comment># ># Kernel Auditing ># ># CONFIG_GRKERNSEC_AUDIT_GROUP is not set</comment> >CONFIG_GRKERNSEC_EXECLOG=y >CONFIG_GRKERNSEC_RESLOG=y >CONFIG_GRKERNSEC_CHROOT_EXECLOG=y >CONFIG_GRKERNSEC_AUDIT_CHDIR=y >CONFIG_GRKERNSEC_AUDIT_MOUNT=y >CONFIG_GRKERNSEC_AUDIT_IPC=y >CONFIG_GRKERNSEC_SIGNAL=y >CONFIG_GRKERNSEC_FORKFAIL=y >CONFIG_GRKERNSEC_TIME=y >CONFIG_GRKERNSEC_PROC_IPADDR=y >CONFIG_GRKERNSEC_AUDIT_TEXTREL=y ></pre> > ></body> ></section> ></chapter> > ><chapter> ><title>Restrizioni per i processi</title> ><section> ><title>Protezione degli eseguibili</title> ><body> > ><p> >Con grsecurity è possibile imporre restrizioni agli eseguibili. Poichè la >maggior parte degli exploits lavorano attraverso uno o più processi attivi >questa protezione può preservare la salute del proprio sistema. ></p> > ></body> ></section> ><section> ><title>Protezione di rete</title> ><body> > ><p> >Lo stack TCP/IP di Linux è vulnerabile ad attacchi di tipo prediction-based. >grsecurity include una patch randomizzatrice per evitare questo tipo di >attacchi. Oltre a questo si possono comunque abilitare delle restrizioni sui >socket, respingendo l'accesso da parte di un gruppo di reti tutte insieme. ></p> > ></body> ></section> ><section> ><title>Settaggi del kernel</title> ><body> > ><p> >I seguenti settaggi abilitano diverse protezioni sia per gli eseguibili che >di rete: ></p> > ><pre caption="Settiaggi del kernel"> ><comment># ># Protezione per gli eseguibili >#</comment> >CONFIG_GRKERNSEC_EXECVE=y >CONFIG_GRKERNSEC_DMESG=y >CONFIG_GRKERNSEC_RANDPID=y >CONFIG_GRKERNSEC_TPE=y >CONFIG_GRKERNSEC_TPE_ALL=y >CONFIG_GRKERNSEC_TPE_GID=100 > ><comment># ># Protezione di rete >#</comment> >CONFIG_GRKERNSEC_RANDNET=y >CONFIG_GRKERNSEC_RANDISN=y >CONFIG_GRKERNSEC_RANDID=y >CONFIG_GRKERNSEC_RANDSRC=y >CONFIG_GRKERNSEC_RANDRPC=y ><comment># CONFIG_GRKERNSEC_SOCKET is not set</comment> ></pre> > ></body> ></section> ></chapter> > ><chapter> ><title>La Toolchain Hardened</title> ><section> ><body> > ><p> >Sebbene questo esuli dallo scopo di questo articolo, si vuole menzionare l'uso >dell'hardened toolchain che completa l'uso del modello grsec/PaX da userspace. >Come primo assaggio si può usare ></p> > ><pre caption="Usare hardened toolchain"> ># <i>cd /etc</i> ># <i>rm make.profile</i> ># <i>ln -s ../usr/portage/profiles/hardened/x86 make.profile</i> ># <i>emerge -e world</i> ></pre> > ><p> >Se non si vuole usare questo profilo è possibile aggiungere questi USE flags ><c>hardened pic</c> nella variabile USE del proprio ><path>/etc/make.conf</path>. ></p> > ></body> ></section> ></chapter> > ><chapter> ><title>Resources</title> ><section> ><body> > ><ul> > <li><uri link="http://grsecurity.net/">Grsecurity Homepage</uri></li> > <li><uri link="http://forums.grsecurity.net/">Grsecurity Forum</uri></li> > <li> > <uri link="http://grsecurity.net/researchpaper.pdf">Incrementare le > performance e la granularità nei Role-Based Access Control Systems</uri> > > </li> > <li> > <uri link="http://www.gentoo.org/proj/en/hardened/capabilities.xml"> > Nomi e descrizioni delle Capability</uri> > </li> > <li> > <uri link="http://grsecurity.net/quickstart.pdf">Grsecurity Quick-Start > Guide</uri> (Nuovo .pdf) > </li> > > <li> > <uri > link="http://www.gentoo.org/proj/en/hardened/pax-quickstart.xml">Usare > PAX con Gentoo QuickStart</uri> (NEW) > </li> > <li> > <uri link="http://hardened.gentoo.org/grsecurity.xml">Grsecurity con > Gentoo 1.9.x MAC system</uri> (OLD) > </li> > <li> > <uri link="http://grsecurity.net/PaX-presentation_files/frame.htm">PaX: La > fine garantita dell'esecuzione di codice arbitrario</uri> > > </li> > <li> > <uri link="http://pax.grsecurity.net">PaX HomePage e documentazione</uri> > </li> > <li> > <uri link="http://www.gentoo.org/proj/en/infrastructure/tenshi">Tenshi</uri> > </li> ></ul> > > ></body> ></section> ></chapter> > ></guide>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 179340
: 119907