La stabilità e la sicurezza offerte da GNU/Linux sono leggendarie, ma non dobbiamo mai abbassare la guardia, soprattutto se stiamo parlando di macchine server che ospiteranno dati sensibili. Per quanto riguarda l’uso desktop non abbiamo bisogno probabilmente degli accorgimenti che andrò ad esporvi, ma potranno sempre servire come lettura per apprendere nuove informazioni su questo bellissimo sistema operativo. Come primo elemento andiamo a definire le partizioni. Propongo un partizionamento piuttosto complesso, ma questo dovrebbe servire per poter bloccare tentativi di attacco. Definiamo un’area di swap che deve essere il doppio della memoria RAM, ma con i nuovi sistemi per il paging della memoria bastano 512 MB o al più 1 GB. Ricordatevi che il sistema operativo ha bisogno di una locazione fisica non formattata, ossia raw device, per poter salvare i dati e le informazioni che vengono via via caricate in memoria. Dobbiamo poi dedicare 100 MB di spazio per la partizione di /boot, necessaria ad ospitare il kernel ed i file che consentono di caricare il sistema Linux. Un’altra partizione è quella della root ( / ) dove vengono installate le librerie e gli eseguibili del sistema operativo. Poi tocca a /usr dove vengono copiate le librerie e gli eseguibili necessari all’utente e /usr/local per ospitare applicazioni di terze parti. La partizione /var non deve essere mai esclusa, perché ospita file di log ed aree di spool. E’ necessario dedicare parecchio spazio a quest’ultima partizione, perché deve ospitare i vari file di log che lieviteranno in dimensioni nel tempo. E’ anche necessario definire la partizione /home per i dati degli utenti e /tmp che ospita file temporanei. Inoltre dobbiamo ricordare che ogni applicazione server ( http, ftp, database, ecc. ) dovrebbe essere creata in una directory separata del disco.
La fase della creazione del file system o formattazione è quella che ci consente di creare fisicamente le varie partizioni con il file system che decideremo di utilizzare per le varie partizioni che abbiamo creato. In generale un ottimo file system è ext4 o ext3 che sono ottimi per partizioni con file piccoli o anche grandi come /home o /usr o /var, mentre per partizioni che dovranno avere tantissimi file e di piccole dimensioni, come root ( / ), consiglio reiserfs.
Un accorgimento importante riguarda le impostazioni di mount, cioé la modalità con cui le partizioni vengono rese accessibili agli utenti. Al fine di evitare che un aggressore possa caricare qualche rootkit e sostituire eseguibili del sistema con alcuni creati ad-hoc, è indispensabile montare alcuni file system in sola lettura ( read only ). In particolare la partizione /usr, /bin e /sbin, devono essere protette più delle altre, perché hanno al loro interno tutti gli eseguibili di sistema e che non devono essere assolutamente mai modificati, tranne che nell’aggiornamento del sistema operativo. Occorre quindi modificare il file /etc/fstab ( dopo averne fatto il backup di sicurezza con il comando cp /etc/fstab /etc/fstab.bak ) ed in particolare inserire ro nella riga di /usr e root ( / ). Quando l’amministratore ( root ) dovrà eseguire l’aggiornamento, dovrà rimontare la partizione in scrittura con il comando mount -o remount, rw /usr e mount -o remount, rw / ; alla stessa maniera, quando avrà finito, potrà rimontarli in sola lettura mount -o remount, ro /usr e mount -o remount, ro / .
Un problema che spesso viene ignorato è quello dei file con attributi SUID ( Set User Identification ) e SGID ( Set Group Identification ). Il primo consente di eseguire il programma con i privilegi del proprietario anziché dell’utente attivo ed il secondo con il gruppo proprietario. I file eseguibili che sono normalmente con queste impostazioni sono ping, ping6, traceroute, traceroute6, mount, umount, chage, gpasswd, passwd ed altri. Per vedere l’elenco completo di questi file nel proprio sistema si deve dare il comando find /bin /usr/bin -type f \( -perm -04000 -o -perm -02000 \) -ls , difatti il permesso 04000 è per SGID e 02000 per SUID. Per avere sempre la situazione dei file con permessi speciali sott’occhio vi consiglio di mandare l’output del comando precedente su di un file e farlo ogni settimana o due, per vedere se la lista si è allungata ed in questo caso vedrete subito i nuovi file che potrebbero essere nocivi.
Alcuni di voi a questo punto potrebbero chiedersi, perché non togliamo gli attributi speciali a questi file eseguibili? La risposta è negativa, perché questo tipo di programmi servono per far eseguire un comando ad un utente senza che questi diventi root, possiamo però assegnare ai file il minimo dei permessi, quindi se avete un comando che apre una shell e questo appartiene a root e gli date il SUID, ovviamente permetterete ad un qualsiasi utente di creare una sua shell con diritti amministrativi. Quindi… Attenzione! Ricordo che per togliere i permessi speciali basta utilizzare questo comando chmod 755 nome_file, mentre per dare il SUID ( 2 ) occorre dare chmod 2777 nome_file, per dare il SGID ( 4 ) chmod 4777 nome_file, per darne entrambe ( 4 + 2 = 6 ) chmod 6777 nome_file.
Esiste un altro permesso speciale che possiamo attribuire alle directory, lo sticky bit. Inizialmente indicava di tenere il file sul device di swap ( appiccicoso ), mentre oggi indica che un file o directory può essere cancellato solo dal proprietario del file o della directory che lo contiene, si applica infatti alle cartelle; questa regola vale anche se il file ha permessi 777. Per impostare lo sticky ( 1 ) occorre dare il comando chmod 1777 nome_directory, mentre se dobbiamo dare anche il SUID ( 1 + 2 ) chmod 3777 nome_directory, se dobbiamo dare sticky + SGID ( 1 + 4 ) chmod 5777 nome_directory, se poi diamo tutto (1 + 2 + 4 ) chmod 7777 nome_directory. Una buona regola è impostare lo sticky per tutte quelle directory che devono contenere file condivisi ed appartenenti a diversi utenti, come /tmp o /var/tmp. Per ricercare le directory con lo sticky attivato dare il comando find / -type d \( -perm -1000 \) -ls.
Infine i lettori Floppy, CD-Rom e DVD possono essere utilizzati per caricare file SUID nel sistema, quindi è bene inserire nel file /etc/fstab l’opzione NOSUID ed anche NODEV, altrimenti si consentirebbe il mount di un file system ext2 presente in un floppy sul quale è stato in precedenza memorizzato un file scrivibile /dev/kmem, che permetterebbe di accedere anche in scrittura alla memoria del kernel.
-
Archivi
- Giugno 2023
- Settembre 2021
- Luglio 2021
- Gennaio 2021
- Giugno 2020
- Aprile 2020
- Gennaio 2019
- Aprile 2017
- Marzo 2017
- Novembre 2016
- Ottobre 2016
- Giugno 2016
- Maggio 2016
- Ottobre 2015
- Maggio 2015
- Febbraio 2015
- Gennaio 2015
- Novembre 2014
- Ottobre 2014
- Settembre 2014
- Agosto 2014
- Luglio 2014
- Giugno 2014
- Maggio 2014
- Aprile 2014
- Gennaio 2014
- Dicembre 2013
- Settembre 2013
- Agosto 2013
- Luglio 2013
- Giugno 2013
- Maggio 2013
- Aprile 2013
- Marzo 2013
- Febbraio 2013
- Gennaio 2013
- Dicembre 2012
- Novembre 2012
- Ottobre 2012
- Settembre 2012
- Agosto 2012
- Luglio 2012
- Giugno 2012
- Maggio 2012
- Aprile 2012
- Marzo 2012
- Gennaio 2012
- Dicembre 2011
- Novembre 2011
- Ottobre 2011
- Settembre 2011
- Agosto 2011
- Luglio 2011
- Giugno 2011
- Maggio 2011
- Aprile 2011
- Marzo 2011
- Febbraio 2011
- Gennaio 2011
- Dicembre 2010
- Novembre 2010
- Ottobre 2010
- Settembre 2010
- Agosto 2010
- Luglio 2010
- Giugno 2010
- Maggio 2010
- Aprile 2010
- Marzo 2010
- Febbraio 2010
- Gennaio 2010
- Dicembre 2009
- Novembre 2009
- Ottobre 2009
- Settembre 2009
- Agosto 2009
-
Meta