Sysctl
Molte volte si pensa che per poter difendere il nostro amato PC da occhi indiscreti ci voglia chissa’ quale software sofisticato , oppure una decennale esperienza nella scrittura di regole con iptables ; certo tutto questo aiuta comunque, ma e’ anche vero che nella maggior parte dei casi il nostro PC non e’ poi cosi’ invitante e non contiene nessun vero segreto che valga la pena, per un hacker ( o x meglio dire chracker ) di perderci del tempo. Quindi molte volte alziamo fortificazioni esagerate, oltre il nostro vero sapere e controllo, senza avere un buon motivo. Si potrebbe invece iniziare a prendere dimestichezza con tutta quella serie di tools che Linux fornisce di base per cominciare a restringere le possibilita’ di accesso agli estranei ed ai curiosi.
Oggi inizieremo da sysctl ossia ” la gestione dei parametri del kernel ”
Il comando sysctl viene usato per la personalizzazione dei parametri in run-time del kernel che si trovano in /proc/sys.
Per avere uno sguardo dell’output del comando basterà digitare da root:
sysctl -a
Le categorie
debug dev fs kernel net vm Significato parametri per il debug. parametri dei dispositivi. parametri dei filesystem. parametri generici del kernel. parametri della rete. parametri della memoria virtuale. Praticamente possiamo modificare molti valori riguardanti il sistema,la rete,ecc.
Possiamo cambiare valore ai vari parametri in base alle nostre esigenze, facciamo un esempio.
Vogliamo cambiare valore all’ip forward:
sysctl -a | grep ip_forward
@lorenzo:/etc# sysctl -a | grep ip_forward net.ipv4.ip_forward = 0
Come vediamo il valore è a 0 e noi lo vogliamo mettere a 1:
sysctl -w net.ipv4.ip_forward=”1″
Come possiamo vedere ha preso il valore 1:
@lorenzo:/etc# sysctl -a | grep ip_forward net.ipv4.ip_forward = 0
Ovviamente questa modifica è temporanea infatti dopo un riavvio il valore torna a 0, ma possiamo renderla definitiva andato a editare il file /etc/sysctl.conf (facendo sempre prima un bel backup) mettendo 1 alla voce net.ipv4.ip_forward.
Una volta scritta la regola nel file ed usciti dalla modalita’ scrittura dovremo far rileggere la configurazione dei parametri di questo file tramite il seguente comando:
sysctl -p
Vediamo ora alcuni parametri e scopriamo a cosa servono :
net.ipv4.tcp_syncookies: Quando abilitato, protegge dagli attacchi SYN FLOOD
net.ipv4.icmp_echo_ignore_broadcasts: Quando abilitato, ignora tutte le richieste ICMP ECHO e TIMESTAMP dirette ad indirizzi broadcast e multi cast proteggendo il server da attacchi SMURF.
net.ipv4.icmp_ignore_bogus_error_responses: Quando abilitato, protegge da errori ICMP maligni
net.ipv4.tcp_keepalive_time: Definisce ogni quanti secondi inviare al client con una connessione keepalive aperta un pacchetto in modo tale da mantenerla aperta.
L’abilitazione dei seguenti paramentri permette di inoltrare il traffico di rete da un’interfaccia ad un’altra agendo come un router:
net.ipv4.ip_forward
net.ipv4.conf.all.send_redirects
net.ipv4.conf.default.send_redirects
net.ipv4.tcp_max_syn_backlog=512 Quando la coda dei segmenti SYN provenienti da un certo host supera il numero stabilito in questo parametro il kernel invece di tenere i dati in arrivo nella coda dei pacchetti SYN in attesa di risposta, invierà un SYN+ACK di risposta.
Si svuota cosi la coda SYN, evitando che diventi troppo grande,
net.ipv4.icmp_echo_ignore_broadcasts = 1 Il kernel ignorerà i ping destinati all’indirizzo di broadcast della rete. Questo può evitare diversi tipi di attacchi DOS.
net.ipv4.ip_conntrack_max=15000 Viene impostato il numero massimo di connessioni che il sistema può gestire. E’ bene dimensionare tale numero in base alle risorse del sistema, per evitare in ogni momento il rischio che la RAM si esaurisca. *** ***Prevenzione attacchi DOS.
net.ipv4.ipfrag_high_tresh=131072
net.ipv4.ipfrag_low_tresh=102400
Queste due opzioni indicano la quantità di RAM massima e minima che deve essere usata nel momento in cui i segmenti TCP vengono riassemblati, per non esaurire la RAM. ***Prevenzione attacchi DOS.
net.ipv4.ipfrag_time=20 Quest’opzione indica in secondi il tempo che i segmenti TCP devono essere tenuti in memoria
net.ipv4.conf.all.rp_filter=1 Quest’opzione è utile quando un pacchetto arriva in ingresso su un’interfaccia di rete diversa da quella che ci si aspetterebbe secondo le tabelle di routing. ***Protezione contro attacchi di Spoofing
net.ipv4.tcp_mem = 12288, 16384, 24576
Queste impostazioni istruiscono lo stack TCP su come compostarsi nei riguardi dell’uso della memoria. Indicano al kernel qual’e’ la soglia al di sopra della quale debba iniziare un uso più attento della memoria. Il primo attributo indica il valore per il quale il kernel non si deve preoccupare dell’utilizzo della memoria. Il secondo attributo invece indica la valore per il quale il kernel deve iniziare a forzare la diminuzione dell’uso della memoria. Questo stato si chiama memory pressure mode.
L’ultimo valore indica il valore per il quale il kernel non può piu assegnare pagine di memoria finchè non torna sotto la soglia.
Per l’architettura x86 ad esempio le pagine di memoria sono grandi 4096 byte.
E’ bene dimensionare la configurazione di questa variabile in base alla RAM disponibile sulla propria macchina, per evitare l’esaurimento delle risorse.
Nel prossimo articolo vedremo altri tool ed altri sistemi di protezione integrati , bye !!
Pingback: Piu’ veloci tramite la gestione della RAM | Tutti per Linux