ottobre 10, 2008

PC Sicuro? Molto dipende da File System e Permessi

| No comment


Le regole di base da applicare subito prima e dopo l'installazione per rendere la propria distribuzione più resistente agli attacchi

LA FASE DI PARTIZIONAMENTO
La prima regola prevede una particolare configurazione dell'hard disk. In questo caso specifico, proponiamo un sistema di partizionamento piuttosto complesso dedicando un file System (partizione) specifico ad ogni funzio­nalità del sistema o applicazione.

Questo dovrebbe rendere più difficile ad un aggressore compromettere l'intera macchina o perlomeno dare all'am­ministratore di sistema il tempo necessario per intervenire e bloccare ten­tativi di attacco in altri punti.
In genere, la maggior parte delle distribuzioni dispone di un tool di partizionameuto grafico utilizzabile già durante la fase di installazione, quindi basta seguire le indicazioni fornite senza servirsi necessariamente dei programmi a risa di comando.

La prima regola da se­guire è quella di definire un'area di swap per ospitare le operazioni di pa-ging della memoria, pari al doppio della memoria RAM del computer. Se, dunque, abbiamo a disposizione 512MB di RAM bisogna creare una swap di 1GB. A questo proposito ricordate che il sistema operativo ha bisogno di una locazione fisica non formattata, ossia raw device, proprio per poter salvare dati e informazioni che vengono via via caricati in memoria.

Dobbiamo, poi, creare una parti­zione chiamata /boot pari a circa 100MB necessaria per ospitare il kernel e i file che consentono l'avvio di GNU/Linux. Un'altra partizione indispensabile è la cosiddetta root (/) dove vengono installati i file del sistema operativo. Poi tocca a /usr, la partizione dove vengono copiati i file eseguibili che consentono di avviare comandi e programmi, mentre / usr/local è utile per ospitare le applicazioni di terze parti. La partizione /var non può essere esclusa da questa configurazione, perché è qui che vengono creati i log di sistema e le aree di spool.

È consigliabile allocare molto spazio per consentire la creazione e la crescita dei file di log che sono fondamentali per le attività di gestione e monitoraggio della sicurezza. È anche necessario definire la partizione /home, che contiene gli account utente, e /tmp, che ospita i file temporanei. Non bisogna dimenticare, inoltre, che anche ogni applicazione server (FTP, database server, web, ecc.) dovrebbe essere creata in una directory separata del disco.

CREAZIONE DEL FILE SYSTEM
Questa fase, detta formattazione, è quella che ci consente di creare fisica-mente le varie partizioni con il file System che decideremo di utilizzare. In generale si consiglia di utilizzare Ext3 in quanto consente veloci operazioni sui file e garantisce un buon livello di sicurezza. Il comando che bisogna eseguire per creare un file System è mkfs (quello che in Unix System V è newfs). Le opzioni principali sono le seguenti: -t seguito dall'identificativo del file system serve per definire quale file System creare.

Ad esempio, mkfs -t ext3 /dev/hddl crea il file System Ext3 sulla partizione /dev/hddl (magari appartenente ad un nuovo disco aggiunto nel sistema); -e serve per forzare mkfs a controllare i blocchi difettosi eventualmente presenti sulla partizione. Ad esempio, mkfs -e -t ext2 /dev/hdd3 -V serve per fare in modo che mkfs visualizzi i comandi che in quel momento sta eseguendo. Ad esempio, mkfs -V -e -m 1 -t ext2 /dev/hdd3.

OPZIONI DI MOUNT
Un accorgimento importante riguarda le impostazioni di mount, cioè la mo­dalità con cui le partizioni vengono rese accessibili agli utenti. Al fine di evi­tare che un aggressore possa caricare qualche rootkit e sostituire eseguibili presentì nel sistema operativo con altri modificati ad-hoc è indispensabile montare alcuni file System con i permessi in sola lettura (read only). In particolare, è la partizione /usr a dover essere protetta più delle altre, per via del fatto che contiene soprattutto comandi eseguibili che non devono essere mai modificati a meno di aggiornamenti del sistema operativo.
Come al solito, dunque, procediamo prima al backup del file /etc/fstab nel modo seguente: cp /etc/fstab /etc/fstab.bak. A questo punto, cambiarne la riga che riguarda la partizione /usr per attivarla in sola lettura come indicato di seguito: LABEL=/usr /usr ext3 ro 12. Ovviamente, ogni volta che bisogna installare nuovi programmi o, comunque, aggiornamenti, è necessario ri­montare temporaneamente la partizione /usr in modalità read/write (lettura e scrittura): mount -o remount, rw /usr. Terminate le operazioni di scrit­tura, possiamo ritornare alla situazione precedente (solo lettura) con mount -o remount, ro /usr.
PROBLEMI CONNESSI A SUID E SGID
Uno degli errori commessi più di frequente è quello di pensare che il sistema di gestione delle password di GNU/Linux sia sufficientemente robusto per rendere inattaccabile il sistema. Ma non è così! Purtroppo, i file binati (gli eseguibili) con autorizzazioni (attributi) SUID e SGID (o GUTD) costitui­scono un pericolo e per questo motivo il loro numero deve essere limitato e tenuto sempre sotto controllo.

La domanda a questo punto è : ma cosa comporta l'uso di un file SUID (Set User IDentifkation). In pratica, tutte le volte che un programma ha l'attributo SUID attivo, quando gli utenti lo ese­guono, lo fanno con le autorizzazioni del proprietario anziché con le proprie.

È chiaro, quindi, che un eseguibile di proprietà di root con SUID attivo, può essere eseguito da un utente comune con gli stessi privilegi del proprietario, quindi come amministratore. Un esempio tipico è quello del file /etc/pas-swd, al quale è possibile accedere direttamente solo da root e in sola lettura da qualsiasi utente abilitato e appartenente agli utenti del sistema.

In teoria, quindi, solo l'amministratore di sistema (con diritti di root) può aggiornare le password, tuttavia, esiste un comando che si chiama proprio passwd che, avendo il SUID impostato, consente a qualsiasi utente di eseguirlo e di mo­dificare la propria password. Di conseguenza, quello che accade, è che il file /etc/passwd (e anche /etc/shadow se il sistema utilizza le shadow password) viene modificato da un utente non amministratore, proprio perché passwd viene eseguito con diritti di root grazie a SUTO.

Il caso di SGID, Set Group Identification, è molto simile a quello precedente, l'unica differenza è che in questo caso vengono attribuiti i diritti di un particolare gruppo, anziché quelli di un solo utente. In altre parole, il programma con l'attributo SGID attivo, invece che con le autorizzazioni del gruppo relativo all'utente che lo richiama, viene eseguito con i permessi del gruppo associato al programma se>^ Per individuare tutti i file e i programmi con SUID e/o SGID attivo bisc-ir-i utilizzare il comando seguente:
find /air.
usr/bin -type f \( -perm -04000 -o 1
-perm -02000 \) -Is

I file SlUD o SGID più comuni sono ping, pingó, traceroute, tracerouteó, mount, umount, chage, gpasswd, wall, chfh, chsh, newgrp, write, passwd, lockfile, rcp, rlogin, rsh, at, sudo e crontab. Probabilmente, la cosa migliore da fare in questi casi è quella di eseguire il comando find non appena la distribuzione è stata installata e salvare l'output su un file (in questo caso check.txt) che può essere letto solo da root:
find /bin /usr/bin -type f \( -perni -04000 -o 1
-perni -02000 \) -Is > check.txt

Periodicamente (magari settimanalmente) è opportuno eseguire di nuovo il primo comando e confrontate l'output ottenuto con quello contenuto nel file salvato in precedenza. Se dovessero essere presenti delle variazioni e cioè se sono aumentati i file con SHED e/o SGID attivi, allora è ragionevole pensare che qualcuno abbia manomesso il sistema, introducendo dei programmi che consentono di operare con i privilegi di root.

Se lo ritenete opportuno, co­munque, è sempre possibile ridurre il numero di file binari che hanno SUID e/o SGID impostato in maniera predefinita (subito dopo l'installazione del sistema operativo). Buoni candidati per essere privati delle autorizzazioni SUro e SGID sono: ping, pingó, traceroute, tracerouteó, mount, umount, chage, chfh, chsh. Il comando che bisogna eseguire per ottenere questo ri­sultato è il seguente: chmod 755 nome_del_file_binario.

MONITORARE L'INTEGRITÀ DEI FILE
Controlli e messaggi di avviso automatici
Al fine di monitorare l'integrità del file system è utile installare e utilizzare appositi tool in grado di effettuare il controllo e inviare messaggi di avviso a determinati utenti tutte le volte che i file fondamentali di sistema vengono modificati. Infatti, quando un aggressore prende il controllo del computer cercherà subito dopo di modificare alcuni file binari e di log, al fine di mascherare le sue attività illecite e di perpetuarle nel tempo in tutta tranquillità. I tool più po­tenti e utilizzati sono Tripwire (www.tripwire.com) e AIDE ( Advanced Intrusion Detection Environment - http://source-forge.net/projects/aide).

CREARE FILE SUID E SGID
Nonostante il pericolo insito in questo tipo di configurazione, a volte è ne­cessario attivare gli attributi SUID o SGED ad alcuni programmi, proprio per dare agli altri utenti la possibilità di eseguire determinati compiti senza che abbiano diritti dell'utente o del gruppo proprietario de file.

Tuttavia, anche se è consentito farlo, bisogna sempre prendere le dovute precauzioni: bisogna, innanzitutto, utilizzare le autorizzazioni minime occorrenti per svolgere quel determinato compito, ed è necessario fare attenzione alle cosiddette back-door (letteralmente "porte sul retro"); una sorta di programma/virus utiliz­zato per aprire vie di ascesso "preferenziali" non autorizzate all'interno del sistema. Utilizzare le autorizzazioni più basse consentite, significa evitare, quando possibile, di dare a un file un SUID di root ed inoltre non attribuir­gli uno SGID del gruppo sys.

Il concetto, invece, di back-door riguarda la possibilità (non voluta) di consentire l'utilizzo di strumenti addizionali che possano permettere, nei casi peggiori, di prendere il controllo del sistema operativo. Se, ad esempio, date l'autorizzazione SUID di root ad un cer­to programma che permette di aprire una shell, è ovvio che avete messo a disposizione di utenti non amministratori un accesso di tipo root.

Prima di procedere con la messa in sicurezza del sistema è importante ricordare che con il comando chmod ciascun utente può modificare solo i propri diritti, mentre root può modificarli tutti. Così, ad esempio, per dare ad un file tutti i permessi bisogna eseguire chmod 777 nome_del_file, mentre il caso op­posto, cioè l'eliminazione di tutti i permessi, si ottiene con il comando ch­mod 000 nome_del_flle.

Infine, se vogliamo modificare i diritti di accesso di tutti i file che si trovano in un certo percorso (modalità ricorsiva) bisogna utilizzare il parametro -R. Ad esempio, per assegnare i diritti 755 a tutti i file che si trovano nella directory /work bisogna eseguire chmod -R 755 /work. Detto questo, vediamo subito come attribuire gli attributi SUTO e SGro ad un file. In questo caso, è necessario aggiungere una cifra numerica alla serie di tre appena considerata (777), tenendo presente che il numero 2 attribuisce il SUTO, il 4 il SGID e il 6 entrambi. Quindi per attribuire SUTO e tutti i permessi ad un file, bisogna procedere come segue: chmod 2777 nome_del_file. Per assegnare SGro e tutti i permessi, invece, il comando è chmod 4777 nome_del_flle. Infine, per attribuire sia SUTO che SGID bisogna eseguire chmod 6777 nome_del_file. Ricordiamo, infine, che gli attributi SUID e SGro sono utiUzzabili solo con i file eseguibili.

GESTIONE DELLO STICKY BIT
Abbiamo considerato tutti i diritti che si possono attribuire ai file salvo l'ul­timo, lo sticky bit. Inizialmente, questa impostazione indicava la volontà di mantenere il testo del programma sul device di swap (sticky significa, infatti, appiccicoso). Adesso, invece, indica semplicemente che tutti i file che si tro­vano all'interno di directory con lo sticky bit attivo non possono essere can­cellati se non dal proprietario della directory o del file stesso.

Questa regola vale anche se il file è di tipo 777 e, quindi, con i permessi in lettura, scrittura ed esecuzione da parte di qualsiasi utente e gruppo. Per impostare lo sticky bit si deve indicare un 1 prima delle normali cifre numeriche che indicano i permessi standard: chmod 1777 nome_della_directory. Per impostare an­che il SUID, allora, questo valore deve essere sommato a 2: chmod 3777 nome_della_directory. Lo stesso accade nel caso di SGID (ma in questo caso il valore è 4 + 1) e per impostare tutti e tre gli attributi (SUTO, SGro e sticky bit), rispettivamente i comandi sono: chmod 5777 nome_della_di-rectory, chmod 7777 nome_della_directory. Una buona regola consiste nell'impostare lo sticky bit per tutte quelle directory che devono contenere file condivisi e appartenenti a diversi utenti (ad esempio quella Desktop, /tmp o /var/tmp). Per ricercare le directory che hanno diritti di tipo 777 basta utilizzare il comando flnd / -type d \ -perni -0002 -a ! -perni -1000 \) -Is.

SETUP DEI DRIVE RIMOVIBILI
Poiché floppy, Cd-Rom e DVD possono essere utilizzati per caricare file SUID nel sistema, è bene limitare questa possibilità utilizzando l'opzione di mount NOSUID. Di conseguenza, il file /etc/fstab deve essere modificato facendo riferimento alla configurazione relativa a questo tipo di periferiche:
/dev/cdrom /mnt/cdrom udf,iso9660 nosuid,nodev, I
noauto,owner,kudzu,ro O O /dev/fdO /mnt/floppy auto 1
nosuid,nodev,noauto,owner,kudzu O O

Ovviamente, le opzioni di mount possono variare a seconda del sistema, ma è importante che siano presenti NOSUID e anche NODEV. Quest'ultima regola evita che vengano utilizzati i file di dispositivo presentì nel sistema. L'opzione DEV, infatti, consentirebbe, ad esempio, il mount di un file sy-stem Ext2 presente su un floppy sul quale è stato in precedenza memorizzato un file scrivibile, /dev/kmem, che permetterebbe di accedere anche in scrit­tura alla memoria del kernel.
INSTALLAZIONE DEL SOFTWARE
Meglio limitarsi a quelli realmente necessari
Noi utenti GNU/Linux, in genere, dopo aver installato la distribuzione abbiamo una "insensata" tendenza ad instal­lare la maggior parte del software presente sul CD/DVD di setup. Questo non dovrebbe assolutamente accadere.

Per motivi di sicurezza, infatti, dobbiamo caricare sul computer solo quei pacchetti che ci servono realmente, evitando tutti gli altri che possono aprire potenziali brecce nel sistema: più programmi sono presenti nel sistema e più alta è la probabilità che un aggressore trovi un bug per violare le nostre difese.


Ricerca personalizzata








Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google, Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie! CONDIVIDI SU!

stampa la pagina
, , ,

Nessun commento:

Posta un commento

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.

Ultimi post pubblicati

Archivio

Etichette

Ubuntulandia in Pinterest

Post Più Popolari