Una cosa da tenere a mente quando si delineano le partizioni sono le modalità di fallimento. In genere quella domanda ha il seguente formato: "Cosa succede quando la partizione x si riempie?" Caro voretaq7 ha sollevato la situazione con un pieno /
causa di un numero qualsiasi di problemi difficili da diagnosticare. Diamo un'occhiata ad alcune situazioni più specifiche.
Cosa succede se la partizione in cui sono archiviati i registri è piena? Si perdono dati di auditing / reporting e talvolta vengono utilizzati dagli aggressori per nascondere la propria attività. In alcuni casi, il sistema non autentica 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 installa o aggiorna i pacchetti e, a seconda della configurazione, potrebbe non riuscire in modo invisibile all'utente.
Riempire una partizione è facile, specialmente quando un utente è in grado di scriverla. Per divertimento, eseguire questo comando e vedere quanto velocemente si può fare una grande lima abbastanza: cat /dev/zero > zerofile
.
Oltre a riempire anche le partizioni, quando posizioni posizioni su punti di montaggio diversi puoi anche personalizzare le loro opzioni di montaggio.
Cosa succede quando /dev/
non viene montato noexec
? Poiché in /dev
genere si presume che sia gestito dal sistema operativo e contenga solo dispositivi, è stato spesso (e talvolta è ancora) utilizzato per nascondere programmi dannosi. Uscire noexec
consente di avviare i binari memorizzati lì.
Per tutti questi motivi e molti altri, molte guide di indurimento discuteranno del partizionamento come uno dei primi passi da eseguire. In realtà, se si sta costruendo un nuovo server come partizionare il disco è quasi esattamente la prima cosa che si deve decidere su, e spesso il più difficile da cambiare in seguito. Esiste un gruppo chiamato Center for Internet Security che produce guide di configurazione facili da leggere. Probabilmente puoi trovare una guida per il tuo sistema operativo specifico e vedere eventuali dettagli che potrebbero dire.
Se osserviamo 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 è quello di impedire che si influenzino a vicenda e / o limitare ciò che può essere fatto su una partizione specifica. Prendi le opzioni /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 dal mondo ed è spesso un tipo speciale di filesystem che esiste solo in memoria. Ciò significa che un utente malintenzionato potrebbe utilizzarlo come un semplice punto di staging per eliminare ed eseguire codice dannoso, quindi il crash (o semplicemente il riavvio) del sistema eliminerà tutte le prove. Poiché la funzionalità di /tmp
non richiede nessuna di quelle funzionalità, possiamo facilmente disabilitare le funzionalità e prevenire quella situazione.
Le posizioni di archiviazione dei registri vengono /var/log
e /var/log/audit
vengono eliminate per contribuire a respingerle dall'esaurimento delle risorse. Inoltre, auditd è in grado di eseguire alcune operazioni speciali (in genere in ambienti con sicurezza più elevata) quando l'archiviazione del registro inizia a riempirsi. Posizionandolo sulla sua partizione questo rilevamento delle risorse funziona meglio.
Per essere più prolisso e per citare mount(8)
, questo è esattamente ciò che sono le opzioni usate sopra:
noexec Non consentire l'esecuzione diretta di alcun file binario sul file system montato. (Fino a poco tempo fa era possibile eseguire comunque i binari usando un comando come /lib/ld*.so / mnt / binary. Questo trucco fallisce da Linux 2.4.25 / 2.6.0.)
nodev Non interpretare i caratteri o bloccare dispositivi speciali sul file system.
nosuid Non consentire che i bit set-user-identifier o set-group-identifier abbiano effetto. (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 è anche possibile aggiungere l' noexec
opzione a /home
. Renderà più difficile per l'utente standard la scrittura di script di shell per l'elaborazione dei dati, ad esempio l'analisi dei file di registro, ma impedirà loro 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
.
La quantità esatta assegnata a ciascuna partizione può variare notevolmente a seconda del carico di lavoro del sistema. Un server tipico che ho gestito richiede raramente l'interazione personale e come tale la /home
partizione non deve essere molto grande. Lo stesso vale per il /var
fatto che tende a memorizzare dati piuttosto effimeri che vengono creati ed eliminati frequentemente. Tuttavia, un server Web utilizza in genere /var/www
come campo giochi, il che significa che deve essere anche su una partizione separata o /var/
deve essere ingrandito.
In passato ho raccomandato quanto segue come baseline.
# 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 usare LVM e di non allocare l'intero disco. Ciò ti consentirà di ampliare o aggiungere facilmente partizioni se tali cose sono necessarie.