[ << ]
[ < ]
[ 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 |
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward
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 ]
[ > ]
[ >> ]
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|