Si prega di tenere presente la Santissima Trinità della sicurezza delle informazioni:C (riservatezza), I (integrità) e A (disponibilità). Pertanto, quando si parla di rafforzamento della configurazione, è necessario considerare la tecnologia con cui si lavora, le informazioni protette, il modo in cui le informazioni vengono utilizzate all'interno dell'organizzazione e le minacce. Sulla base di queste risposte, e possibilmente di altre, puoi iniziare a determinare quali degli inquilini sono più importanti e su cosa concentrarti.
A livello di file system, in genere sei più interessato all'integrità e alla disponibilità. La riservatezza delle informazioni dovrebbe probabilmente essere gestita a un livello diverso, ma il modo in cui imposti i tuoi filesystem e il modo in cui li usi dovrebbe garantire che le informazioni siano affidabili e sempre disponibili quando è necessario.
Una cosa da tenere a mente quando disponi le tue partizioni sono le modalità di errore. Tipicamente la domanda è nella forma:"Cosa succede quando partizione x si riempie?"
Cosa succede se la partizione in cui è memorizzato il sistema operativo è piena? A volte accadono cose strane quando /
riempire. A volte il sistema si blocca. A volte non possono verificarsi nuove sessioni di accesso. A volte il sistema si rifiuta di avviarsi.
Di tutte le modalità di errore, questa è la più difficile da caratterizzare rigorosamente poiché è più probabile che i suoi sintomi cambino in base al sistema operativo, alla versione del kernel, alla configurazione, ecc. Alcuni filesystem, in particolare la riga ext, riservano una certa quantità di spazio quando il filesystem è creato. Questo spazio riservato può essere utilizzato solo dall'utente root e ha lo scopo di consentire all'amministratore di sistema di continuare a operare e ripulire lo spazio.
Cosa succede se la partizione in cui sono archiviati i log è piena? Perdi i dati di controllo/reporting e talvolta viene utilizzato dagli aggressori per nascondere la loro attività. In alcuni casi il tuo sistema non autenticherà i nuovi utenti se non è in grado di registrare il loro evento di accesso.
Cosa succede su un sistema basato su RPM quando /var
è pieno? Il gestore pacchetti non installerà o aggiornerà i pacchetti e, a seconda della configurazione, potrebbe non riuscire in modo silenzioso.
Riempire una partizione è facile, soprattutto quando un utente è in grado di scriverci sopra. Per divertimento, esegui questo comando e guarda quanto velocemente puoi creare un file abbastanza grande:cat /dev/zero > zerofile
.
Va anche oltre il riempimento delle partizioni, quando posizioni le posizioni su diversi punti di montaggio puoi anche personalizzare le loro opzioni di montaggio.
Cosa succede quando /dev/
non è montato con noexec
? Dal /dev
in genere si presume che sia gestito dal sistema operativo e contenga solo dispositivi che è stato frequentemente (e talvolta lo è ancora) utilizzato per nascondere programmi dannosi. Tralasciando noexec
ti consente di avviare i file binari archiviati lì.
Per tutti questi motivi, e molti altri, molte guide all'hardening parleranno del partizionamento come uno dei primi passaggi da eseguire. Infatti, se stai costruendo un nuovo server, come partizionare il disco è quasi esattamente il primo cosa che hai su cui decidere, e spesso il più difficile da modificare in seguito. Esiste un gruppo chiamato Center for Internet Security che produce gobbe di guide di configurazione di facile lettura. Probabilmente puoi trovare una guida per il tuo sistema operativo specifico e vedere eventuali dettagli che potrebbero dire.
Se guardiamo a RedHat Enterprise Linux 6, lo schema di partizionamento consigliato è questo:
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
Il principio alla base di tutti questi cambiamenti è evitare che si influenzino a vicenda e/o limitare ciò che può essere fatto su una partizione specifica. Scegli le opzioni per /tmp
Per esempio. Ciò che dice è che nessun nodo di dispositivo può essere creato lì, nessun programma può essere eseguito da lì e il bit set-uid non può essere impostato su nulla. Per sua stessa natura, /tmp
è quasi sempre scrivibile in tutto il mondo ed è spesso un tipo speciale di filesystem che esiste solo in memoria. Ciò significa che un utente malintenzionato potrebbe utilizzarlo come punto di staging facile per eliminare ed eseguire codice dannoso, quindi arrestare in modo anomalo (o semplicemente riavviare) il sistema cancellerà tutte le prove. Poiché la funzionalità di /tmp
non richiede nessuna di queste funzionalità, possiamo facilmente disabilitare le funzionalità e prevenire tale situazione.
I luoghi di archiviazione dei log, /var/log
e /var/log/audit
sono tagliati fuori per aiutare a proteggerli dall'esaurimento delle risorse. Inoltre, auditd può eseguire alcune operazioni speciali (in genere in ambienti con maggiore sicurezza) quando la sua memoria di registro inizia a riempirsi. Posizionandolo sulla sua partizione, questo rilevamento delle risorse funziona meglio.
Per essere più prolisso, cita mount(8)
, questo è esattamente ciò che sono le opzioni utilizzate sopra:
noexec Non consentire l'esecuzione diretta di alcun binario sul file system montato. (Fino a poco tempo fa era comunque possibile eseguire i binari usando un comando come /lib/ld*.so/mnt/binary. Questo trucco fallisce a partire da Linux 2.4.25 / 2.6.0.)
nodev Non interpretare caratteri o bloccare dispositivi speciali sul file system.
nosuid Non consentire l'attivazione dei bit set-user-identifier o set-group-identifier. (Questo sembra sicuro, ma in realtà è piuttosto pericoloso se hai installato suidperl(1).)
Dal punto di vista della sicurezza queste sono ottime opzioni da sapere poiché ti permetteranno di mettere protezioni sul filesystem stesso. In un ambiente altamente sicuro puoi persino aggiungere il noexec
opzione a /home
. Renderà più difficile per il tuo utente standard scrivere script di shell per l'elaborazione dei dati, ad esempio l'analisi dei file di registro, ma impedirà loro anche di eseguire un file binario che aumenterà i privilegi.
Inoltre, tieni presente che la home directory predefinita dell'utente root è /root
. Questo significa che sarà nel /
filesystem, non in /home
.
L'importo esatto assegnato a ciascuna partizione può variare notevolmente a seconda del carico di lavoro del sistema. Un tipico server che ho gestito raramente richiederà l'interazione di una persona e come tale il /home
la partizione non deve essere affatto molto grande. Lo stesso vale per /var
poiché tende a memorizzare dati piuttosto effimeri che vengono creati ed eliminati frequentemente. Tuttavia, un server Web in genere utilizza /var/www
come parco giochi, il che significa che deve essere anche su una partizione separata o /var/
deve essere reso grande.
In passato ho consigliato quanto segue come riferimento.
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
Questi devono essere rivisti e adattati in base allo scopo del sistema e al modo in cui opera l'ambiente. Consiglierei anche di utilizzare LVM e di non allocare l'intero disco. Ciò ti consentirà di aumentare o aggiungere facilmente partizioni se tali cose sono necessarie.
La suddivisione in una o più partizioni non è realmente un problema di sicurezza ma di affidabilità . L'idea è che se una delle tue partizioni va in crash, perdi il contenuto di quella partizione, ma le altre partizioni vanno bene. Inoltre, se si riempie quella partizione, le altre partizioni non saranno interessate. Ogni partizione può avere il proprio filesystem e non tutti i tipi di filesystem sono equivalenti per quanto riguarda le prestazioni in vari contesti (sebbene la maggior parte dei filesystem sarà per lo più buona l'una con l'altra nella maggior parte dei contesti). Su alcuni PC, il processo di avvio potrebbe avere difficoltà ad accedere oltre i primi gigabyte del disco a causa delle peculiarità storiche di questa architettura, che sono troppo terrificanti per essere ricordate qui; quindi, /boot
è spesso meglio impostare come partizione separata di dimensioni limitate e posizionata per prima nel disco.
Se desideri applicare la crittografia a livello di partizione, potresti incorrere in problemi se crittografi troppo, vale a dire che il codice che esegue la decrittazione deve trovarsi all'esterno della suddetta partizione. Questo dipende molto dal prodotto di crittografia effettivo (alcuni possono incorporare il codice di decrittazione nel bootloader).
Nota che più dividi il tuo disco in partizioni, meno flessibile diventa l'intera cosa. Quando una partizione si riempie, è piena e rimane così, anche se altre partizioni hanno spazio libero (LVM può aiutarti a far fronte a questo, quindi potresti voler dire "sì" quando il programma di installazione del sistema operativo chiede se vuoi usare LVM) . Più partizioni crei, più probabile e difficile diventa questo problema.
Il percorso facile e sicuro è lasciare che il programma di installazione del sistema operativo scelga le partizioni come meglio crede. Non continuare a modificare le dimensioni delle partizioni fino a quando non avrai una conoscenza ed esperienza precisa di ciò che ciò comporta. Non dimenticare di eseguire backup regolari. Si prevede che, dopo alcuni mesi, vorrai reinstallare il tuo sistema operativo per "farlo bene", e non è necessariamente una cattiva idea, quindi non preoccuparti. Questo è uno strumento di apprendimento, non un server che andrà in produzione.
Lo guarderei in un modo diverso rispetto agli altri risponditori finora:se stai osservando un mucchio di exploit, allora tutte le minacce sono possibili e il sandboxing del sistema in cui lo fai il più possibile sembra un'utile precauzione. Xen è un modo semplice per farlo. Può utilizzare le immagini del disco su un altro file system, ma se sai che lo utilizzerai ti suggerisco di lasciare partizioni del disco separate (e assicurati che non vengano montate automaticamente sul tuo Dom0).
Non so quanto funzioni bene Kali come Xen Dom0. Almeno Ubuntu sembra avere problemi. Potresti considerare di lasciare spazio a XenServer o a un'altra build Xen Dom0 specializzata. [Modifica:non sono sicuro di come siano i netbook in questi giorni, ma immagino che XenServer non li stia davvero prendendo di mira ... Forse qualche altra distribuzione più semplice che funziona bene con Xen come Dom0. Potresti essere in grado di configurare un'installazione di Kali che venga eseguita in modo autonomo o come DomU se esaminare gli exploit è un'attività meno comune.]
Sui sistemi BSD ho sentito parlare di metodi di rafforzamento che implicano il partizionamento per montare il più possibile in sola lettura e utilizzare flag immutabili. Presumo che ci siano almeno alcuni sistemi Linux in cui è possibile una configurazione simile, tuttavia sembra che Kali sia basato su Debian e la mia sensazione è che non puoi davvero farlo su Debian [modifica:a meno che non monti un FS scrivibile su it, che sarebbe comunque scomodo da mantenere nel tempo]. In ogni caso, non lo suggerirei per una macchina generica e ne parlerei solo nel caso in cui tu sia più generalmente interessato a tutti i modi in cui potrebbe essere utilizzato il partizionamento. Per il tuo scopo, metti le minacce su un sistema che puoi eliminare e ricreare facilmente.