Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Rendiamo sicuro il nostro Desktop Linux

Link copiato negli appunti

Come abbiamo già detto più volte l'uso più naturale di Linux È sui server. Nonostante questo può essere una buona alternativa a Windows come desktop, mantenendo una grande flessibilità e tutta una serie di caratteristiche che non sono proprie di un sistema operativo per un'utenza domestica, come ad esempio una grande versatilità verso le reti, in particolare verso Internet. Questi strumenti seppur molto potenti, possono rivelarsi però pericolosi se mal gestiti. In più, spesso le varie distribuzioni installano di default alcuni server come sshd, httpd, pop3 che non solo sono spesso inutili a chi usa il proprio PC solo per navigare, ma aumentano anche la vulnerabilità del nostro sistema.

Un server mal configurato o un errore di programmazione possono rendere il nostro PC facilmente attaccabile. È importante capire dunque le esigenze che abbiamo e ciò di cui abbiamo bisogno. È necessario infatti trovare il giusto compromesso tra usabilità e sicurezza. Nessun computer può essere ritenuto al sicuro al 100% da malintenzionati. L'unico modo per avere un computer sicuro potrebbe essere a prima vista quello di togliere tutti i servizi attivi, ma neanche questo potrebbe bastare, perchÈ potrebbe esserci sempre eseguito qualche programma vulnerabile e poco sicuro (sono un esempio degli ultimi anni le vulnerabilità scoperte in Internet Explorer e Netscape, che di certo non sono dei server).

A questo punto allora non ci rimane altro che isolare il computer e scollegarlo da ogni rete, in particolar modo da Internet. Ma qualcuno potrebbe sempre accedervi in locale, da casa nostra. Non ci rimane altra scelta che lasciarlo spento. Questo paradosso vuole farvi capire che non esiste un sistema totalmente sicuro e che quello che viene considerato "ragionevolmente sicuro" oggi potrebbe (e probabilmente non lo sarà) essere sicuro domani. Primo passo risulta quindi scegliere ciò di cui abbiamo realmente bisogno.

Dei server disponibili con Linux, ben pochi possono essere utili a un normale utente che usa il proprio PC per lavorare, scaricare la posta e guardare delle pagine web. Vediamo quindi come fare per disabilitare ciò di cui non abbiamo bisogno.

Prima di tutto dobbiamo conoscere quello che È stato caricato all'avvio e quali sono i server che sono in ascolto. Uno dei modi per sapere quali sono le "porte in ascolto" È usare il comando:

lnxbox1:~# netstat -a

Che ci mostrerà tutti i socket aperti. In particolare a noi interessano i primi della lista, quelli con state "LISTEN". Un altro modo È quello di usare uno scanner come nmap. Dopo averlo installato (È probabile che sia sul CD della vostra distribuzione) scrivete:

lnxbox1:~# nmap localhost

Una volta scoperto quali server sono in esecuzione sul nostro PC, scegliamo quelli che a noi interessano, in modo da togliere quelli inutili. Inizialmente se non sapete cosa facciano questi server È conveniente toglierli tutti, per poi riavviarli a mano a mano che ne sentiamo la necessità. Esistono due modi per avviare un server: tramite il superserver inetd (o il più recente xinetd) oppure da soli al boot. Vediamo come toglierli.

Editiamo il file /etc/inetd.conf (oppure /etc/xinetd.conf) e commentiamo con un # tutte le righe (per inetd.conf) o tutte le sezioni (per xinetd.conf) riguardanti i server che non vogliamo avviare. Come già detto prima È raccomandabile all'inizio commentare tutte le righe in modo da non avviare nessun server. Ora non ci rimane altro che riavviare inetd (o xinetd). Per far questo scriviamo (da root):

lnxbox1:~# /etc/init.d/inetd restart

Se abbiamo inetd.

lnxbox1:~# /etc/init.d/xinted restart

Se abbiamo xinetd.

Attualmente tutte le maggiori distribuzioni sono passate da inetd a xinetd che aggiunge delle nuove e interessanti feature.

In questo modo abbiamo tolto tutti i server che sono avviati da inetd (o xinetd), ma rimangono ancora quelli che sono avviati direttamente in fase di boot. In distribuzioni come Red Hat la scelta dei servizi È semplice grazie all'utility ntsysv per il caricamento dei demoni. Non tutti quelli presenti nella lista sono dei server, quindi limitatevi a togliere solo i demoni che ci riguardano. Anche le altre distribuzioni più user-friendly hanno dei tools analoghi, e non sono difficili da trovare. Solitamente sono gli script di avvio in /etc/rc* che si occupano dell'avvio dei demoni.

Un'ulteriore precauzione È quella di impedire l'accesso tramite il TCP wrapper a dei determinati utenti. Il TCP wrapper si occupa per esempio di avviare realmente un server quando È avvenuta una richiesta per i servizi presenti in /etc/inetd.conf, dopo aver fatto degli opportuni controlli. È possibile scegliere chi può accedere a un server già prima che il server venga caricato. Per far questo dobbiamo editare i file /etc/hosts.allow e /etc/hosts.deny. La sintassi È identica per entrambi i file, solo che nel primo andranno inseriti gli hosts ai quali È consentito connettersi, mentre nel secondo quelli non desiderati.

Se c'È una richiesta e chi la fa soddisfa le regole in /etc/hosts.allow la richiesta viene accettata, altrimenti viene processato il file /etc/hosts.deny. Se soddisfa una delle regole in questo file la richiesta viene scartata, se l'host di origine non riguarda nessuno di questi due file, la richiesta viene accettata ugualmente. Per questo È bene inserire nel file /etc/hosts.deny la riga

ALL : ALL

Che nega l'accesso a tutti (ovviamente a tutti quelli che non sono autorizzati nel file /etc/hosts.allow). La sintassi di questi file prevede 3 campi, di cui uno si può omettere (come sopra).

servizio : host o subnet : opzioni

Il terzo campo può essere omesso e per ora ci accontenteremo di usare solo i primi due.

Al posto di servizio va inserito il server a cui ci riferiamo (per esempio in.telnetd oppure in.tftpd oppure wu-ftpd, si può far riferimento al demone inserito in /etc/inetd.conf), oppure usare ALL per indicare tutti i servizi, al posto di host o subnet va inserito l'indirizzo IP, il dominio, o l'intera subnet di chi vogliamo garantire o negare l'accesso. È possibile specificare questo campo o inserendo per esempio mio.dominio o l'IP esatto (XXX.XXX.XXX.XXX) o la subnet (XXX.XXX.XXX.) o l'IP con la mask (tipo XXX.XXX.XXX.XXX/255.255.255.0 per esempio). Per questo campo È possibile usare delle wildcards. Tra le più importanti abbiamo:

  • ALL Indica tutti gli hosts (come nell'esempio di prima)
  • LOCAL Indica tutti gli host che non contengono un . nel loro nome.
  • PARANOID Indica tutti gli host il cui nome non corrisponde al loro indirizzo.

Per un uso casalingo È bene specificare nel file /etc/hosts.allow che si vogliono autorizzare solo le richieste provenienti da locale. Per questo scriviamo:

ALL : localhost

E per finire non mi rimane altro che darvi questi 10 consigli:

1) usate password non facilmente individuabili, meglio se casuali e formate da lettere maiuscole e minuscole e da numeri.

2) se la vostra distribuzione non l'ha fatto in fase di installazione abilitate le shadow password per non permettere a tutti gli utenti di vedere le password (anche se crittate). Infatti come già detto in un precedente articolo, pur se crittate le password che usano il DES possono essere decrittate con appositi programmi che cercano di "indovinarle". Per abilitarlo usate shadowconfig pwconv e grpconv.

3) usate come algoritmo di cifratura l'MD5 o il 3DES per le vostre password (abilitatelo in fase di installazione).

4) editate il file /etc/securetty che contiene i terminali dai quali È concesso loggarsi come root. È bene lasciare solo ttyX ossia i terminali aperti da locale (X È un numero).

5) usate SSH al posto di telnet se vi serve loggarvi da remoto sul vostro computer. SSH permette di crittare le proprie connessioni da remoto, risultando quindi molto più sicuro. Limitate l'uso di telnet solo nei casi particolari (molto rari) in cui non ne possiate fare a meno.

6) usate un programma per loggare nei particolari il traffico che avviene sul vostro PC. Usate per esempio ippl che permette di monitorare le connessioni che si stanno tentando, ed ha anche una facile configurazione.

7) potete utilizzare un terminale non utilizzato (per esempio tty9 che può essere scelto usando ALT+F9) per visualizzare l'output di syslog. Per farlo aggiungete: *.* /dev/tty9 al file /etc/syslog.conf

8) usate ipchains o iptables (quest'ultimo È il più recente e dipende dal kernel 2.4) per mettere a punto un firewall.

9) usate l'account di root solo per svolgere operazioni che richiedano i permessi dell'amministratore. In altre parole, limitatene il più possibile l'uso.

10) tenete i vostri programmi e in particolar modo i vostri server sempre aggiornati scaricando sempre le ultime versioni (per limitare la presenza di bug "conosciti" potenzialmente dannosi).

Ti consigliamo anche