[Sicurezza Server] Moduli del Kernel

5 risposte [Ultimo contenuto]
Ritratto di Anonimo
Anonimo
()

Ciao a tutti
partiamo dal presupposto che per iniziare un hardening del nostro sitema dovremmo avere gia adottato alcune contromisure tra le quali:

1-misure contro l'accesso fisico al nostro server, parole riservate per entrare nel BIOS uso delle direttive RESTRICTED in lilo.

2-utilizzare un partizionamento multiplo , con un filesystem journaled per evitare dos locali e dos da remoto

3-uso delle shadow password

4-nessun softare aggiuntivo se non quelli strettamente necessari al funzionamento del nodo (se si usa un server)

5-nelle partizioni dove possono scrivere altri utenti oltre root devono essere attivate le disk quota
-------------------------------------------------------------------------------
Come sappiamo il kernel esporta in USER SPACE tutte le funzionalita' di cui necessitiamo sul nostro nodo , la domanda fondamentale da porsi e' : di quali funzioni abbiamo veramente bisogno?
dunque ecco l'idea dei moduli , ovvero porzioni di codice da caricare al momento del bisogno , molto comodo lo ammetto ,in questo 3d cerchero' di convincervi del contrario ,
il problema nasce in caso di penetrazione nel sistema di un hacker , possiamo immaginare che se guadagnasse uid=0 potrebbe caricare a nostra insaputa qualche modulo per fare le cose piu' disparate , e quello che accade quando vengo usati i cosidetti "rootkit" (quello che e accaduto nel attacco ai server debian)
brevemente un rootkit una volta caricato sulla macchina agisce in questo modo , sostituisce i binari di sistema ps ,w,netstat,grep,ls ecc ecc,
installa dei tools per rimuover i log di sistema /var/log/syslog , .bash_history e altri ancora,
e si installa un trojan per garantirsi l'accesso (anche ssh) in futuro.
Questi rootkit vengono chiamati LKM ( Loadable Kernel Modules)
---------------------------------------------------------------------------
Come difendersi a livello kernel

Per avere una protezione contro i LKM bisogna prepararsi un kernel che non permetta il caricamento di moduli
inoltre sarebbe opportuno disattivare "prompt for development and/or incomplete code/driver"
-----------------------------------------------------------------------------
Esaminiamo ora /dev/kmem /dev/mem

sappiamo che questi 2 device speciali , sono come porte tra lo User Space e la parte piu' profonda del kernel , direttamente dalla man page scopriamo quante possibilita "cattive" possano offrire questi 2 device
------------------------------------------------------------------------------
Disabilitiamo le capability del kernel contro /mem e /kmem

prima di tutto alcune prefazioni ,
Alcune capability tra le quali CAP_KILL , CAP_SYS_BOOT possono permettere l'uso della chiamata di sistema () reboot , con le eventuali conseguenze che questo puo' portare,
preciso pero' che disattivando alcune capability molti software non funzioneranno piu' tra cui x , quindi la unica soluzione e crearci uno scriptino che permetta la disabilitazione di tali capability dopo l'avvio dei servizi , vediamo come fare:

prima di tutto ci occorre lcap che possiamo scaricare con apt-get

apt-get install lcap

ora da console diamo

lcap

il risultato sara' una lista di tutte le capabiltu attive sul nostro sistema in quel momento ,vediamo come disattivarle:

sempre da console digitiamo :
lcap -v CAP_NET_ADMIN
lcap -v CAP_SYS_RAWIO

verifichiamo che siano davvero state eliminate con lcap
per testare questo proviamo a mettere in modo promiscuo la nostra scheda di rete
ifconfig eth0 promisc
come risultato dovremmo ottenere:
SIOCSIFFLAGS: Permission Denied

molto bene se ottenete questo risultato funziona , quindi non rimane che crearci il nostro script in questo modo:
#!/bin/sh<br />lcap -v CAP_NET_ADMIN<br />lcap -v CAP_SYS_RAWIO<br />echo Capabilityes del Kernel Disattivate Kmem in sola lettura

ora salviamo questo script che possiamo chiamare /etc/init.d/zzz
e linkarlo al nostro runlevel per esempio

ln -s /etc/init.d/zzz /etc/rc3.d/S99zzz

vi ricordo che per riabilitare le capability si e' obbligati a ricaricare in quanto lcap non permette il caricamento di una regola appena disattivata ( e ci mancherebbe altro se no' a che servirebbe Tongue )

vi consiglio la lettura di
ma non pensate che questo basti a rendere sicuro al 100% il nostro sistema , mancano ancora molte cose che vi spieghero' in altri 3d .
Questo Articolo