Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


9. Sicurezza per il kernel

Indice:

9.a. Rimuovere funzionalità

La regola base, quando si configura il kernel, è quella di rimuovere tutto ciò di cui non si ha bisogno. Questo non solo per rendere il kernel leggero, ma anche per rimuovere le vulnerabilità che potrebbero insinuarsi all'interno dei driver e delle altre funzionalità.

Considerare anche di disattivare il "loadable modules support". Sebbene sia possibile installare rootkit anche senza questa funzionalità, diventa sicuramente più difficile per un aggressore di capacità medie installare rootkit attraverso i moduli del kernel.

9.b. Il filesystem proc

Molti parametri del kernel possono essere alterati attraverso il filesystem /proc, oppure usando sysctl.

Per modificare al volo parametri del kernel e variabili, è necessario che CONFIG_SYSCTL sia definito nel kernel. Lo è in modo predefinito in un kernel 2.4 standard.

Codice 2.1: Disattivare l'IP forwarding

# /bin/echo "0" > /proc/sys/net/ipv4/ip_forward

Assicurarsi che l'IP forwarding sia disattivato. Questa funzione serve solo per un nodo avente più connessioni di rete. Si raccomanda di attivare o disattivare questa flag prima di tutte le altre, in quanto essa attiva/disattiva altre flag.

Codice 2.2: Ignorare i pacchetti ping

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Questo farà sì che il kernel ignori semplicemente tutti i messaggi di ping (conosciuti anche come messaggi ICMP di tipo 0). Il motivo è che un pacchetto IP che trasporta un messaggio ICMP può contenere informazioni diverse da quelle che ci si aspetta. Gli amministratori usano ping come strumento diagnostico e spesso si lamentano se esso è disattivato, ma non c'è ragione per permette ad una persona esterna di effettuare i ping sulla propria macchina. Tuttavia, poiché a volte può essere comodo per gli addetti avere la possibilità di effettuare i ping, si disattivano i messaggi ICMP di tipo 0 nel firewall (permettendo agli amministratori locali di continuare a usare questo strumento).

Codice 2.3: Ignorare i ping broadcast

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Questo disattiva la risposta ai broadcast ICMP, prevenendo gli attacchi Smurf. L'attacco Smurf consiste nell'invio di un messaggio ICMP di tipo 0 (ping) all'indirizzo broadcast di una rete. Di solito l'aggressore utilizza un indirizzo sorgente contraffatto. Tutti i computer della rete risponderanno al messaggio ping, intasando l'host all'indirizzo sorgente contraffatto.

Codice 2.4: Disattivare i pacchetti da fonte instradata

# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

Non accettare pacchetti da fonte instradata. Gli aggressori possono usare l'instradamento delle fonti per generare traffico che sembra avere origine all'interno della rete, ma che in realtà viene instradato all'indietro lungo il percorso da cui è venuto, cosicché gli aggressori possono compromettere la rete. L'instradamento delle fonti è usato raramente per scopi benevoli, quindi è meglio disattivarlo.

Codice 2.5: Disattivaree l'accettazione di pacchetti rediretti

# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

Non accettare pacchetti ICMP rediretti. Le redirezioni ICMP possono essere usate per alterare le tabelle di instradamento, con conseguenze potenzialmente negative.

Codice 2.6: Proteggersi dai falsi messaggi di errore

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

Attivare la protezione contro le risposte a falsi messaggi di errore.

Codice 2.7: Attivare il reverse filtering del percorso

# for i in /proc/sys/net/ipv4/conf/*; do
        /bin/echo "1" > $i/rp_filter
done

Attivare il reverse filtering del percorso. Questo aiuta ad essere sicuri che i pacchetti utilizzino indirizzi sorgente regolari, rifiutando automaticamente i pacchetti in arrivo se la voce nella tabella di instradamento che indica il loro indirizzo sorgente non corrisponde all'interfaccia di rete su cui stanno essi arrivando. Questo è vantaggioso per la sicurezza in quanto impedisce l'IP spoofing. Si deve attivarlo per ogni net/ipv4/conf/*, altrimenti l'autenticazione delle fonti non sarà pienamente funzionante.

Avvertenza: Tuttavia attivare il reverse filtering del percorso può essere un problema se si utilizza un instradamento asimmetrico (i pacchetti che vanno dal sistema all'host fanno un percorso diverso dai pacchetti che vanno da quell'host al sistema) oppure se si opera su un host senza instradamento, che ha diversi indirizzi IP su diverse interfacce.

Codice 2.8: Log di tutti i pacchetti contraffati, di sorgenti instradate e rediretti

# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

Fare il log dei pacchetti contraffatti, dei pacchetti da fonte instradata e dei pacchetti rediretti.

Tutte queste impostazioni saranno resettate al riavvio della macchina. Si suggerisce di aggiungerle a /etc/sysctl.conf, che viene letto automaticamente dallo script di init /etc/init.d/bootmisc.

La sintassi di /etc/sysctl.conf è abbastanza semplice. Togliere /proc/sys/ dai percorsi sopra menzionati e sostituire / con .:

Codice 2.9: Tradurre in sysctl.conf

(Manualmente usando echo):
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward

(Automaticamente in sysctl.conf:)
net.ipv4.ip_forward = 0

9.c. Grsecurity

La patch di Grsecurity è presente in modo standard nel kernel sys-kernel/hardened-sources, ma è disattivata in modo predefinito. Configurare il kernel normalmente, e poi configurare le opzioni Grsecurity. Una spiegazione delle opzioni Grsecurity disponibili si trova nella pagina del progetto Gentoo Hardened.

Le versioni recenti di hardened-sources forniscono la versione 2.* di Grsecurity. Per maggiori informazioni su questo insieme migliorato di patch Grsecurity, consultare la documentazione disponibile sulla home page di Grsecurity.

9.d. Kerneli

Kerneli è una patch che aggiunge la criptazione al kernel. Applicando la patch al kernel si hanno nuove opzioni, come "cryptographic ciphers", "digest algorithms" e "cryptographic loop filters".

Avvertenza: La patch kerneli attualmente non è ancora ad una versione stabile per l'ultimo kernel, quindi fare attenzione quando la si utilizza.

9.e. Altre patch per il kernel

E probabilmente ce ne sono molte altre.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Stampa

Visualizza tutto

Aggiornato il 2 aprile 2010

La versione originale di questo documento è più recente ed è stata aggiornata il 17 dicembre 2013

Oggetto: Rendere sicuro il kernel.

Kim Nielsen
Autore

John P. Davis
Redazione

Eric R. Stockbridge
Redazione

Carl Anderson
Redazione

Jorge Paulo
Redazione

Sven Vermeulen
Redazione

Benny Chuang
Redazione

Sune Jeppesen
Redazione

Tiemo Kieft
Redazione

Zack Gilburd
Redazione

Dan Margolis
Redazione

Joshua Saddler
Redazione

Stefano Pacella
Traduzione

Cristiano Chiucchiolo
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.