7. Sicurezza del kernel

Questa è una descrizione delle opzioni del kernel che riguardano la sicurezza, e una spiegazione di ciò che fanno e di come si usano.

Visto che il kernel controlla il networking del computer, è importante che sia molto sicuro e non venga compromesso. Per evitare alcuni dei recenti attacchi via rete si dovrebbe tentare di mantenere aggiornato il kernel. Si possono trovare nuovi kernel presso o presso il distributore del proprio sistema.

Esiste anche un gruppo internazionale che fornisce una singola patch crittografica per il kernel principale di Linux. Questa patch fornisce il supporto per una serie di sottosistemi crittografici e caratteristiche che non possono essere incluse nel kernel principale per limiti di esportazione. Per ulteriori informazioni si visiti la loro pagina web presso: http://www.kerneli.org

7.1. Opzioni di compilazione del kernel 2.0

Per i kernel 2.0.x si applicano le seguenti opzioni. Si dovrebbero vedere durante il processo di configurazione del kernel. Molti dei commenti qui vengono da ./linux/Documentation/Configure.help, che è lo stesso documento che si può leggere usando l'Help durante la fase make config della compilazione del kernel.

7.2. Opzioni di compilazione del kernel 2.2

Per i kernel 2.2.x molte opzioni sono rimaste uguali, ma ne sono state aggiunte di nuove. Molti dei commenti vengono da ./linux/Documentation/Configure.help, che è lo stesso documento che si legge quando viene usato l'Help nella fase make config della compilazione del kernel. Qui sono riportate solo le opzioni nuove. Si consulti la descrizione del 2.0 per avere una lista di altre opzioni necessarie. Il cambiamento più significativo nei kernel 2.2.x è il codice del firewall IP. Ora viene usato il programma ipchains per installare il firewall, invece del ipfwadm usato nei kernel 2.0.

7.3. Device del kernel

Nel kernel ci sono alcuni device a blocchi e a caratteri che aiuteranno con la sicurezza.

I due device /dev/random e /dev/urandom sono forniti dal kernel per avere sempre a disposizione dati casuali.

Sia /dev/random che /dev/urandom dovrebbero essere abbastanza sicuri da essere usati per generare chiavi PGP, autenticazioni ssh, ed altre applicazioni in cui servono numeri casuali sicuri. Un attaccante non dovrebbe essere capace di predire il numero seguente, data una qualsiasi sequenza di numeri da queste sorgenti. È stato fatto un grande sforzo perché i numeri ottenuti da questi device siano casuali in ogni senso della parola.

L'unica differenza fra i due device è che /dev/random finisce i byte casuali e vi fa aspettare finché non ce ne sono di nuovi. Si noti che su alcuni sistemi potrebbe bloccarsi per molto tempo in attesa che nuova entropia sia generata dagli utenti. Quindi riflettere prima di usare /dev/random. (Forse la miglior cosa da fare è usarlo quando si deve generare codice importante: si dica agli utenti di scrivere molto sulle tastiere fino a quando dite "Ok, basta".)

/dev/random è entropia di qualità, generata dalla misura dei tempi fra gli interrupt ecc. Si blocca finché non ha abbastanza bit casuali di dati.

/dev/urandom è simile, ma quando la riserva di entropia sta finendo fornisce una replica crittograficamente forte di ciò che rimane. Non è altrettanto sicuro, ma basta per la maggior parte delle applicazioni.

Potete leggere da questi device con qualcosa del genere:


	root#  head -c 6 /dev/urandom | mimencode
Questo comando visualizza sei caratteri casuali sulla console, adatti per la generazione di password. Si può trovare mimencode nel pacchetto metamail.

Si legga /usr/src/linux/drivers/char/random.c per la descrizione dell'algoritmo.

Grazie a Theodore Y. Ts'o, Jon Lewis, e altri sviluppatori del kernel per avere aiutato me (Dave) in questo.