PDA

View Full Version : [sicurezza] Raccolta di consigli pratici


Gimli[2BV!2B]
24-01-2010, 17:01
Un sistema GNU/Linux con impostazioni standard risulta abbastanza sicuro se utilizzato in un ambiente non ostile, come una rete privata con utenti fidati da cui ci si connette ad internet mediante un modem ethernet, che di solito è dotato di un firewall interno.
La sicurezza resta abbastanza buona anche se si evita di installare programmi binari non provenienti da repository oppure da repository completamente sconosciuti.

Nel caso in cui ci si connetta direttamente ad una rete vasta e non completamente fidata si va in contro a vari rischi, naturalmente direttamente proporzionali alla quantità di utilizzatori di sistemi GNU/Linux connessi e potenzialmente desiderosi di fare danni. L'esempio classico direi che è la rete di una scuola superiore/facoltà universitaria scientifica...
Nel caso in cui si installino software binari, anche da utente semplice, senza tirare in ballo root, è possibile che accadano cose fastidiose o dannose.

Per evitare che l'accesso al pc o la modifica del suo funzionamento sia talmente semplice da essere allettante per il primo utente annoiato che se accorge o per il primo binario che passa, bastano alcuni accorgimenti:

impostare password minimamente complesse
mettere in sicurezza le home
ridurre al minimo la quantità di demoni avviati, soprattutto quelli che hanno porte aperte in attesa di connessioni
controllare le impostazioni di tutti i demoni rimanenti
proteggere l'accesso fisico al pc se c'è la benché minima probabilità di abbandonarlo in qualche luogo, anche se si tratta di luoghi fidati (non sottovalutare gli scherzi delgi amici)
impostare un firewall per regolare l'accesso ai demoni indispensabili che restano in ascolto sulla rete


Password minimamente complesse
Accorgimento più semplice e spesso trascurato: senza scivolare nella paranoia (minimo 16 caratteri alfanumerosimbolici) mettere almeno un numero ed un simbolo e non stare sotto gli otto caratteri.

Mettere in sicurezza le home
Anche questo punto credo che sia abbastanza trascurato.
Le home degli utenti contengono file che permettono di fare cose molto brutte, sto parlando di:

~/bin
~/.bash_logout
~/.bash_profile
~/.bashrc
a volte al loro interno invocano l'inclusione di altri file, come ~/.bash_aliases

Questi file e cartelle sono accessibili e modificabili da qualsiasi programma eseguito come utente normale, quindi risulta veramente semplice inserire qualsiasi cosa.

bin Questa cartella permette di invocare comodamente i programmi binari installati al di fuori dei gestori di software della nostra distribuzione ed installati da utente normale.
Nulla vieta che ci finisca dentro un programma od un link simbolico dal nome, per esempio, ls che verrà invocato al posto del programma vero e potrà fare quel che vorrà... insomma, permette di fare qualsiasi cosa.
.bash_logout Questo file viene eseguito automaticamente quando si chiude una terminale utente. Di default dovrebbe solo pulire la console, ma bastano pochi istanti od una installazione di un programma ostile per aggiungere l'esecuzione di un qualsiasi comando.
Comando che potrebbe cancellare qualcosa, oppure eseguire qualcosa, oppure inviare dati all'esterno o altro...
.bash_profile Questo file viene eseguito in automatico al login testuale, valgono le stesse considerazioni di .bash_logout, oltre ad altre simpatiche possibilità, come la definizione di alias arbitrari o l'aggiunta di cartelle qualsiasi alla variabile PATH.
Esempio di alias bastardissimo:
alias ls='rm -R'
Esempio di PATH parassita:
PATH=~/cartella/di/programma/:"${PATH}"
.bashrc Quest'ultimo file viene eseguito quando si avvia un terminale non di login, come le finestre terminali in ambiente grafico; di solito viene invocato in automatico da .bash_profile, quindi viene valutato anche all'avvio delle shell di login.
Valgono le stesse considerazioni di .bash_profile.

Personalmente, per proteggere questi file, prima li analizzo con cura, quindi ne cambio proprietà e gruppo dandola a root, dopodiché li rendo modificabili dal solo proprietario (esempio .bashrc):
chown root\: .bashrc
chgrp root .bashrc
#lasciare la possibilità di leggerlo a chiunque
chmod 644 .bashrc
#oppure accesso solo a root
chmod 600 .bashrc
Per quanto riguarda la cartella ~/bin mi sono assicurato che fosse esclusa da PATH commentando il codice che la riguarda, che dovreste trovare all'interno di uno dei file:# set PATH so it includes user's private bin if it exists
#if [ -d ~/bin ] ; then
# PATH=~/bin:"${PATH}"
#fi

Minimizzare i demoni avviati

Controllare tutto ciò che si avvia in automatico durante il boot.
Informarsi sulla funzione di ogni singolo componente.
Disabilitare/disinstallare tutto ciò che non si userà mai, appuntandosi da qualche parte le modifiche.
Utilizzare il pc per qualche tempo, riabilitare qualcosa se ci si accorge che serve.
Disabilitare tutto ciò che si utilizza raramente, ci si ricorderà di avviarlo quando serve (mio esempio: Cups e Samba).


Controllare le impostazioni dei demoni
Questo punto è molto eterogeneo: una volta ridotti i demoni in avvio occorrerebbe avere la pazienza di documentarsi sulle impostazioni di tutti quelli rimanenti.
Esempio classico è il demone ssh: bisogna assicurarsi di non permettere il login con utente root o senza password; altro accorgimento molto utile è lo spostamento della sua porta dalla classica 22 ad una qualsiasi porta maggiore di 1024.

Proteggere l'accesso fisico
Questo naturalmente vale per pc che posso essere toccati da persone potenzialmente burlone o ostili.
Il primo accorgimento è il classico screensaver o blocco schermo con password quando il pc è acceso, ma spesso si trascura tutto ciò che c'è prima.
All'avvio del sistema è davvero semplicissimo modificare una voce di Grub ed accedere con massimi diritti.
Altrettanto semplicemente si può inserire un disco live ed acquisire completo accesso in lettura, scrittura e chroot.
Per evitare questa evenienza basta

proteggere il BIOS con password
impedire il boot da CD
impostare la password in Grub (http://ubuntuforums.org/showthread.php?t=7353)

Da dicembre 2009 dovrebbe essere possibile impostare la password anche in Grub2 (http://ubuntuforums.org/showthread.php?t=1369019), però al momento si imposta in chiaro, quindi da non utilizzatore Grub2 non sono certo che serva a qualcosa... attendo precisazioni a riguardo.

Impostare un firewall
Come ultimo punto, visti i problemi che potrebbe creare e la potenziale complessità, cito l'impostazione di un firewall.
Una volta ridotti con cura i programmi con porte aperte in attesa di connessioni, si può pensare di mascherare tutto con un firewall per avere la certezza che il sistema non sembri nemmeno attivo se non si sa quali porte cercare. Alcuni demoni potrebbe rispondere qualcosa se interrogati da qualcuno non autorizzato, fornendo informazioni utili ad un potenziale attaccante.
Personalmente, in pc destinati ad utilizzi normali, considero più che sufficiente un firewall DROP in ingresso, lasciando libere le connessioni in uscita.
Questo di solito si fa impostando di default il DROP dei pacchetti se non soddisfano le regole impostate, permettendo alle sole connessioni attivate dal nostro pc di circolare.
Una volta aperte le porte che ci servono si potrà anche pensare di limitarne l'accesso alle sole reti/ip che potranno utilizzare questo servizio, naturalmente solo se questo insieme è limitato e semplice da determinare.

Non dimentichiamoci di IPV6: di solito è attivo, quasi sempre è inutilizzato e quasi sempre si trascura nei firewall.
In caso di connessione diretta tramite switch o hub livello 2 a molti altri pc, oppure in caso di reti recenti già aggiornate a IPV6, risulterebbe probabile che qualcuno tentasse di utilizzare questo protocollo per evitare il firewall IPV4.
Primo esempio di firewall IPV6 che mi è sembrato carino (http://www.cyberciti.biz/faq/ip6tables-ipv6-firewall-for-linux/). Personalmente non ne ho mai impostati, perché rimuovo/disattivo sempre IPV6.


Questa trattazione non entra molto nel dettaglio, anche perché per entrare nel dettaglio di ogni singolo demone o nella creazione di un firewall ci vorrebbero pagine e pagine; si accettano di buon grado correzioni, precisazioni, espansioni o link aggiuntivi.

ArtX
24-01-2010, 19:21
complimenti, ottimo post da mettere in evidenza :)