1.0 2005-05-31
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à.

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

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 è di default in un kernel 2.4 standard.

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

Assicuratevi che l'IP forwarding sia disattivato. Questa funzione serve solo per un host multi-homed. Si raccomanda di attivare o disattivare questa flag prima di tutte le altre, in quanto essa attiva/disattiva altre flag.

# /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 vi aspettereste. Gli amministratori usano ping come tool diagnostico e spesso si lamentano se esso è disattivato, ma non c'è ragione per mettere un estraneo nella possibilità di pingare. Tuttavia, poiché a volte può essere comodo per gli addetti avere la possibilità di pingare, potete disattivare i messaggi ICMP di tipo 0 nel firewall (permettendo agli amministratori locali di continuare a usare questo strumento).

# /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.

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

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

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

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

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

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

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

Attivate 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. Dobbiamo attivarlo per ogni net/ipv4/conf/*, altrimenti l'autenticazione delle fonti non sarà pienamente funzionante.

Tuttavia attivare il reverse filtering del percorso può essere un problema se utilizzate un instradamento asimmetrico (i pacchetti che vanno da voi all'host fanno un percorso diverso dai pacchetti che vanno da quell'host a voi) oppure se operate su un host senza instradamento, che ha diversi indirizzi IP su diverse interfacce.
# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

Fa il log dei pacchetti spoofati, dei pacchett da fonte instradata e dei pacchetti rediretti.

Tutte queste impostazioni saranno resettate al riavvio della macchina. Suggerisco di aggiungerle a /etc/sysctl.conf, che viene sorgentizzato automaticamente dall'init script /etc/init.d/bootmisc.

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

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

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

La patch di Grsecurity è presente nei sorgenti del kernel Gentoo, ma è disattivata di default. Configurate il kernel normalmente, e poi configurate le opzioni Grsecurity. Una spiegazione nei dettagli delle opzioni Grsecurity disponibili (versione 1.9) è disponibile nella pagina del progetto Gentoo Hardened.

Le versioni recenti di grsec-sources forniscono la versione 2.* di Grsecurity. Per maggiori informazioni su questo set di patch Grsecurity migliorate, consultate da documentazione disponibile sulla home page Grsecurity.

Kerneli

Kerneli è una patch che aggiunge la criptazione al vostro attuale kernel. Patchando il vostro kernel avrete nuove opzioni, come "cryptographic ciphers", "digest algorithms" e "cryptographic loop filters".

La patch kerneli attualmente non è ancora ad una versione stabile per l'ultimo kernel, quindi fate attenzione quando la utilizzate.
Altre patch per il kernel

E probabilmente ce ne sono molte altre.