it-swarm-eu.dev

Il modo più sicuro per partizionare Linux?

Di recente ho acquistato un netbook con cui giocare e voglio installare Kali Linux in modo da poter iniziare a conoscere la sicurezza della rete e sfruttare lo sviluppo. Voglio usarlo per apprendere il più possibile sulla sicurezza.

Qual è il modo migliore per partizionare un box Linux in modo che sia più resistente a un rischio per la sicurezza? Una singola partizione contenente tutte le cartelle di Linux è davvero così male?

Punti extra se puoi entrare nei dettagli sulle minacce possibili. Voglio imparare il più possibile.

33
DCIndieDev

Si prega di tenere presente la Santissima Trinità della sicurezza delle informazioni: C (riservatezza), I (integrità) e A (disponibilità). Pertanto, quando parliamo 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 quelle risposte, e possibilmente di altre, puoi iniziare a determinare quale degli inquilini è più importante e su cosa concentrarsi.

A livello di filesystem sei generalmente più interessato a Integrità e Disponibilità. La riservatezza delle informazioni dovrebbe probabilmente essere gestita a un livello diverso, ma il modo in cui disponi i nostri filesystem e il modo in cui li usi dovrebbe assicurarti che le informazioni siano entrambe affidabili e sempre disponibili quando sono necessarie.

Una cosa da tenere a mente quando si delineano le partizioni sono le modalità di fallimento. In genere questa domanda ha il seguente formato: "Cosa succede quando si riempie la partizione x?"

Cosa succede se la partizione in cui è memorizzato il sistema operativo è piena? A volte si verificano cose strane quando / Si riempie. 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é i suoi sintomi sono i più probabili che cambiano in base al sistema operativo, alla versione del kernel, alla configurazione, ecc. Alcuni filesystem, in particolare la linea ext, riservano una certa quantità di spazio quando il filesystem è creato. Questo spazio recuperato può essere utilizzato solo dall'utente root ed è destinato a consentire all'amministratore di sistema di operare e ripulire lo spazio.

Cosa succede se la partizione in cui sono archiviati i registri è piena? Perdi dati di auditing/reporting e talvolta viene utilizzata 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 installa o aggiorna i pacchetti e, a seconda della configurazione, potrebbe non riuscire in modo silenzioso.

Riempire una partizione è facile, specialmente quando un utente è in grado di scriverla. Per divertirti, esegui questo comando e vedi quanto velocemente puoi creare un file abbastanza grande: 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 è montato con noexec? Poiché /dev È in genere si presume che sia gestito dal sistema operativo e contenga solo dispositivi che è stato spesso (e talvolta è tuttora) utilizzato per nascondere programmi dannosi. Lasciando da noexec puoi avviare i binari memorizzati lì!

Per tutte queste ragioni, e molte altre, molte guide sulla tempra discuteranno del partizionamento come uno dei primi passi da compiere. In effetti, se stai costruendo un nuovo server come partizionare il disco è quasi esattamente il prima cosa tu hai su cui decidere, e spesso il più difficile 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 specifico Sistema operativo 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 ad esempio le opzioni per /tmp. Ciò che dice è che non è possibile creare nodi di dispositivo 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 cancellerà tutte le prove. Poiché la funzionalità di /tmp Non richiede nessuna di quelle funzionalità, possiamo facilmente disabilitare le funzionalità e prevenire quella situazione.

I luoghi di archiviazione del registro, /var/log E /var/log/audit Sono cancellati per contribuire a respingerli dall'esaurimento delle risorse. Inoltre, auditd può 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 citare mount(8), questo è esattamente ciò che le opzioni usate sopra sono:

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 ai bit identificatore set-utente o set-gruppo-identificatore di entrare in vigore. (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'opzione noexec a /home. Renderebbe più difficile per l'utente standard scrivere script 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. Ciò significa che sarà nel filesystem /, non in /home.

Quanto esattamente dai a ciascuna partizione può variare notevolmente a seconda del carico di lavoro del sistema. Un server tipico che ho gestito raramente richiederà l'interazione personale e come tale la partizione /home Non deve essere molto grande. Lo stesso vale per /var Poiché tende a memorizzare dati piuttosto effimeri che vengono creati ed eliminati frequentemente. Tuttavia, un server Web utilizza in genere /var/www Come suo campo di gioco, il che significa che anche quello deve essere 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.

38
Scott Pack

La divisione in una o più partizioni non è in realtà un problema di sicurezza ma di affidabilità. L'idea è che se una delle tue partizioni si arresta in modo anomalo, perdi il contenuto della partizione that, 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 (anche se la maggior parte dei filesystem sarà per lo più buona nella maggior parte dei contesti). Su alcuni PC, il processo di avvio potrebbe avere difficoltà ad accedere più lontano rispetto ai primi pochi gigabyte del disco a causa delle peculiarità storiche di questa architettura, che sono troppo orribili per essere richiamate qui; quindi, /boot è spesso impostato come una partizione separata di dimensioni limitate e posizionata per prima nel disco.

Se si desidera applicare la crittografia a livello di partizione, è possibile che si verifichino problemi se si crittografa troppo, vale a dire, il codice che esegue la decrittografia deve trovarsi esterno di detta partizione. Questo dipende molto dal prodotto di crittografia reale (alcuni possono incorporare il codice di decrittazione nel bootloader).

Nota che più dividi il tuo disco in partizioni, meno flessibile diventa tutto. Quando una partizione si riempie, è piena e rimane così, anche se altre partizioni hanno spazio libero ( LVM può aiutarti a farcela, quindi potresti voler per dire "sì" quando il programma di installazione del sistema operativo chiede se si desidera utilizzare LVM). Più partizioni crei, più probabile e difficile diventa questo problema.

Il percorso semplice e sicuro è consentire all'installatore del sistema operativo di scegliere le partizioni come meglio crede. Non continuare a modificare le dimensioni della partizione fino a quando non si ha una conoscenza ed esperienza precise di ciò che ciò comporta. Non dimenticare di fare backup regolari. Si prevede che, dopo alcuni mesi, si vorrà reinstallare il sistema operativo per "farlo bene", e non è necessariamente una cattiva idea, quindi non sudare. Questo è uno strumento di apprendimento, non un server che andrà in produzione.

12
Tom Leek

Considererei questo in un modo diverso rispetto agli altri soccorritori finora: se stai guardando un sacco di exploit, allora tutte le minacce sono possibili e sandboxing il sistema in cui lo fai il più possibile sembra una precauzione utile. Xen è un modo semplice per farlo. Può usare le immagini del disco su un altro file system, ma se sai che lo userai ti suggerirei di lasciare partizioni del disco separate (e assicurarti che non vengano montate automaticamente su Dom0).

Non so quanto bene Kali funzioni come Xen Dom0. Ubuntu almeno sembra avere problemi. Potresti considerare di lasciare spazio a XenServer o un'altra build Xen Dom0 specializzata. [Modifica: non sono sicuro di come siano i netbook in questi giorni, ma suppongo che XenServer non li stia davvero prendendo di mira ... Forse qualche altra distribuzione più semplice che funzioni bene con Xen come Dom0. Potresti essere in grado di configurare un'installazione di Kali che viene eseguita autonomamente o come DomU se la ricerca di exploit è un'attività meno comune.]

Sui sistemi BSD ho sentito parlare di metodi di indurimento che prevedono il partizionamento per montare il più possibile in sola lettura e l'utilizzo di flag immutabili. Suppongo che ci siano almeno alcuni sistemi Linux in cui è possibile una configurazione simile, tuttavia sembra che Kali sia basato su Debian e il mio senso è che non puoi davvero farlo su Debian [modifica: a meno che non monti un file scrivibile FS su di esso, che sarebbe comunque difficile mantenere nel tempo]. In ogni caso, non lo suggerirei per una macchina di uso generale e lo solleverei solo nel caso in cui tu sia più generalmente interessato a tutti i modi in cui il partizionamento potrebbe essere usato. Per il tuo scopo, metti le minacce su un sistema che puoi eliminare e ricreare facilmente.

2
joveian

Ci sono molte buone informazioni in alcune di queste risposte, ma non sono sicuro che soddisfino davvero i tuoi requisiti specifici. Dato che il tuo obiettivo dichiarato è quello di imparare e hai intenzione di utilizzare questo sistema per la sperimentazione e giocare con Kali Linux per ottenere una maggiore sottolineatura delle questioni relative alla sicurezza, vorrei mirare a un sistema che sia rapido e facile da reinstallare piuttosto che uno che è rinforzato o sicuro. Una volta acquisite conoscenze ed esperienza con il sistema, sarai in una posizione molto migliore per prendere le decisioni su quale configurazione soddisfa meglio le tue esigenze e si adatta meglio al tuo stile di lavoro, ecc.

Alcune cose di cui essere consapevoli non sono state menzionate da altri.

  • Gran parte dei consigli sul partizionamento sono parzialmente obsoleti e possono entrare in conflitto con alcune tecniche moderne utilizzate per accelerare il processo di avvio, come il prelinking, il precaricamento o la memorizzazione nella cache.

  • Fino a quando non si ha una buona idea di come si utilizzerà un sistema e di come tale sistema è configurato, è quasi impossibile ottenere le dimensioni corrette delle partizioni. Come sottolineato da un altro utente, se Kali utilizza/opt per esempio, è necessario creare una partizione opt o/opt utilizzerà lo spazio allocato a /. Se non sai se lo fa o se non sai a cosa serve, non puoi giudicare quanto sia grande la partizione.

  • I requisiti richiesti per l'apprendimento sono molto diversi da quelli richiesti per un sistema di test della penna di produzione o di controllo/indagine di sicurezza. Durante l'apprendimento, ciò che è spesso necessario fare è riportare rapidamente e facilmente il sistema in uno stato noto, buono (predefinito in fabbrica). Per questo motivo, utilizzerei spesso un'immagine virtuale, ma ciò non è realmente fattibile su un netbook. Per un sistema di produzione, test con penna, controllo della sicurezza ecc., Vorrei qualcosa di abbastanza protetto. Probabilmente installerei Kali su un supporto di sola lettura con un supporto di archiviazione dedicato (e pulibile). Ciò aumenterebbe la mia fiducia nel fatto che il mio sistema non verrà modificato o alterato quando viene utilizzato in un ambiente ostile e posso avere una maggiore fiducia che ogni volta che riavvio il sistema, tornerà a una configurazione nota ecc.

Penso che troverai Kali Linux piuttosto una sfida per cominciare. Dire che imparerai la sicurezza usando Kali è un po 'come dire che stai per volare volando su un jet da combattimento. La facilità con cui lo scoprirai dipenderà dalla tua esperienza Linux e dalla tua familiarità con i sistemi basati su Debian. Vorrei solo andare con un'installazione standard con una sola partizione che può essere facilmente cancellata e reinstallata. Successivamente, a seconda di ciò che trovi e decidi di fare, puoi prendere in considerazione configurazioni più solide e sicure. Tieni anche presente che Kali è in realtà relativamente nuovo e ha ancora i suoi problemi di dentizione. Attenersi a un'installazione predefinita contribuirà a ridurre la probabilità di innescare bug nella configurazione di Kali, che può essere davvero fonte di confusione durante l'apprendimento. In conclusione, per iniziare è semplice.

1
Tim X

Tutte le altre risposte sono buoni punti di partenza.

Ai vecchi tempi (primi anni '90) i dischi erano abbastanza piccoli da poter effettivamente installare unix e posizionare/usr sul proprio disco fisico. Dopo l'installazione abbiamo potuto impostare un jumper di sola lettura sul disco fisico. In quei giorni di testo in chiaro, tutto su Internet, era normale radicarsi. La cosa bella di questa configurazione è che anche una volta effettuato il root, si è protetti contro la modifica dei file/usr.

È possibile fare qualcosa di simile realizzando/bin,/sbin e/usr su filesystem che sono ro, exec e che hanno tutti gli altri filesystem noexec.

0
jrwren