4.5.  Sicurezza e riservatezza

Una delle caratteristiche principali di un sistema Linux o UNIX è la capacità di gestire più utenti contemporaneamente (multi-utente) e di consentire agli utenti di eseguire più attività (multitasking) nello stesso computer allo stesso tempo. Il sistema operativo supporta inoltre l'accesso alla rete invisibile all'utente, in modo tale che spesso gli utenti non percepiscono la differenza tra i dati e le applicazioni forniti dal computer in uso o quelli resi disponibili attraverso la rete.

La funzionalità multi-utente richiede la memorizzazione separata dei dati di utenti diversi, pertanto aspetti come la sicurezza e la privacy dei dati devono essere necessariamente garantiti. La sicurezza dei dati ha rappresentato un problema importante ancora prima che i computer venissero connessi attraverso reti informatiche. Allora come oggi l'elemento più importante era la capacità di assicurare la disponibilità dei dati anche in caso di perdita o danno di un supporto fisico, quasi sempre un disco rigido.

In questa sezione vengono descritti soprattutto i problemi di riservatezza e i metodi che è possibile implementare per proteggere la privacy degli utenti. È tuttavia importante sottolineare che un concetto di sicurezza completo dovrà sempre includere procedure che prevedano la disponibilità di un backup aggiornato regolarmente, fruibile e testato. Senza queste premesse, potrebbe risultare estremamente difficile recuperare i dati non solo nel caso di hardware difettoso, ma anche qualora insorga il sospetto che utenti non autorizzati abbiano potuto accedere ai file e manometterli.

4.5.1. Sicurezza locale e di rete

È possibile accedere ai dati in vari modi:

  • Mediante la comunicazione personale con utenti che dispongono delle informazioni desiderate o mediante l'accesso ai dati in un computer.

  • Direttamente dalla console di un computer (accesso fisico).

  • Attraverso una linea seriale.

  • Utilizzando un collegamento di rete.

In tutti i casi l'utente dovrà essere autenticato prima di poter accedere alle risorse o ai dati in questione. Un server Web può essere più o meno restrittivo, ma è presumibile che non si desideri rivelare i propri dati personali a chiunque.

Nel primo caso è richiesta una maggiore interazione dell'utente, analogamente a quanto avviene in una transazione bancaria nella quale è necessario provare la propria identità come titolare di un determinato conto bancario, dopodiché viene chiesto di fornire una firma, un PIN o una password per confermare tale identità. In alcuni casi è possibile che le informazioni a conoscenza di una persona vengano carpite semplicemente citando qualche dettaglio noto, in modo da ottenere la fiducia di quella persona con subdole capacità oratorie. La vittima potrebbe essere portata a rivelare maggiori informazioni gradualmente, anche senza rendersene conto. Tra i pirati informatici, la tecnica che sfrutta espedienti psicologici, ad esempio per indurre le vittime a effettuare determinate operazioni, è detta social engineering. L'unico modo per contrastare questo tipo di attacco è di mettere in guardia le persone e gestire con consapevolezza il linguaggio e le informazioni. Prima di introdursi nei sistemi informatici, chi effettua l'attacco tenta spesso un approccio con gli addetti alla ricezione, con il personale di servizio o addirittura con i familiari dei dipendenti di una società. In molti casi questo tipo di attacchi che sfruttano la tecnica del social engineering vengono scoperti solo dopo molto tempo.

Coloro che cercano di accedere ai dati senza essere autorizzati utilizzano spesso le tecniche tradizionali di accesso diretto all'hardware. È quindi necessario proteggere il computer da manomissioni, in modo da impedire che i componenti vengano rimossi, sostituiti o danneggiati. Questo concetto si applica anche ai backup, nonché al cavo di rete o di alimentazione. È necessario proteggere anche la procedura di avvio, poiché esistono combinazioni di tasti note che possono causare un comportamento anomalo. Per proteggersi da tale evenienza, impostare password per il BIOS e per il boot loader.

I terminali seriali connessi alle porte seriali sono ancora diffusi in molti ambienti. A differenza delle interfacce di rete, non utilizzano un protocollo di rete per la comunicazione con l'host, bensì un semplice cavo o una porta a infrarossi per lo scambio di semplici caratteri tra dispositivi. In un sistema di questo tipo il cavo stesso costituisce il punto più debole. Con una vecchia stampante connessa al cavo è estremamente semplice registrare qualsiasi informazione trasmessa sul filo. Ciò che è possibile ottenere con una stampante può essere realizzato anche in altri modi, a seconda dell'impegno prodigato nell'attacco.

La lettura locale di un file in un host richiede altre regole di accesso rispetto all'apertura di una connessione di rete mediante un server in un host diverso. Tra il concetto di sicurezza locale e quello di sicurezza di rete esiste una distinzione, infatti per inviare dati altrove è necessario includerli in pacchetti.

4.5.1.1. Sicurezza locale

La sicurezza locale inizia dall'ambiente fisico nel quale il computer è in esecuzione. Installare il computer in un ambiente nel quale la sicurezza è in linea con le proprie aspettative ed esigenze. L'obiettivo principale della sicurezza locale è di mantenere separati gli utenti, in modo che nessuno possa assumere le autorizzazioni o l'identità di altri. Questa regola generale è valida in particolare per l'utente root, il quale ha il controllo totale del sistema. L'utente root può assumere l'identità di qualsiasi altro utente locale senza fornire la password e leggere tutti i file memorizzati localmente.

4.5.1.2. Password

In un sistema Linux le password non vengono memorizzate come testo normale e la stringa di testo immessa non viene semplicemente confrontata con il modello salvato poiché in tal caso tutti gli account nel sistema verrebbero compromessi se qualcuno riuscisse ad accedere al file corrispondente. La password memorizzata viene al contrario cifrata e cifrata nuovamente a ogni immissione, quindi vengono confrontate le due stringhe cifrate. Questo meccanismo offre maggiore sicurezza solo se la password cifrata non può essere decodificata nella stringa di testo originale.

Questo si ottiene mediante uno speciale tipo di algoritmo, detto anche algoritmo trapdoor, che funziona solo in una direzione. Anche se chi effettua l'attacco è riuscito a ottenere la stringa cifrata, non sarà in grado di rilevare la password semplicemente applicando lo stesso algoritmo una seconda volta. Dovrà invece provare tutte le possibili combinazioni di caratteri finché non troverà una combinazione corrispondente alla password cifrata. Per le password di otto caratteri le combinazioni possibili da calcolare sono numerose.

Negli anni '70 si riteneva che questo metodo sarebbe stato più sicuro rispetto ad altri, a causa della relativa lentezza dell'algoritmo utilizzato che impiegava alcuni secondi per cifrare una sola password. Nel frattempo i PC sono diventati abbastanza potenti da eseguire alcune centinaia di migliaia o addirittura milioni di cifrature al secondo. Per questo motivo le password cifrate non dovrebbero essere visibili ai normali utenti, ovvero /etc/shadow non può essere letto dai normali utenti. È ancora più importante ricorrere all'uso di password che non siano facili da individuare qualora il file delle password diventi visibile agli utenti a causa di un errore. Non è quindi molto utile "convertire" una password come "tantalize" in "t@nt@1lz3".

La sostituzione di alcune lettere di una parola in numeri dall'aspetto simile non è un metodo sufficientemente sicuro. Anche i programmi di individuazione delle password che utilizzano dizionari per identificare le parole ricorrono a questo tipo di sostituzioni. Il metodo migliore consiste nel creare una parola priva di significato che abbia senso solo per l'utente, ad esempio le prime lettere di una frase o del titolo di un libro quale "Il nome della rosa" di Umberto Eco, che consente di ottenere la password sicura "INodRdUE9". Al contrario, password come "compagnidiviaggio" o "michela76" sono facilmente individuabili da chi abbia anche solo una conoscenza superficiale dell'utente.

4.5.1.3. Procedura di avvio

Configurare il sistema in modo che non possa essere avviato da un disco floppy o da un CD. A questo scopo, rimuovere completamente le unità o impostare una password per il BIOS e configurarne l'avvio solo da un disco rigido. Un sistema Linux viene in genere avviato da un boot loader in modo da consentire il passaggio di opzioni aggiuntive al kernel avviato. Per impedire ad altri di utilizzare questi parametri durante l'avvio, impostare una password aggiuntiva in /boot/grub/menu.lst (vedere il Capitolo 9, Boot Loader). Questa impostazione è fondamentale per la sicurezza del sistema. Non solo lo stesso kernel viene eseguito con autorizzazioni root, ma è anche la prima autorità che concede autorizzazioni root all'avvio del sistema.

4.5.1.4. Autorizzazioni dei file

Come regola generale, utilizzare sempre privilegi più restrittivi possibile per una determinata attività. Non è assolutamente necessario, ad esempio, disporre di autorizzazioni root per leggere o scrivere messaggi e-mail. Se nel programma di posta elettronica è presente un bug, questo potrebbe essere sfruttato per un attacco utilizzando esattamente le stesse autorizzazioni del programma al momento dell'avvio. L'applicazione della regola sopra descritta consente di limitare al minimo il possibile danno.

Le autorizzazioni per gli oltre 200.000 file inclusi in una distribuzione SUSE vengono scelte con attenzione. In caso di installazione di software o altri file aggiuntivi, l'amministratore di sistema dovrà procedere con la massima precauzione, specialmente per l'impostazione dei bit delle autorizzazioni. Gli amministratori esperti e attenti alla sicurezza utilizzano sempre l'opzione -l con il comando ls per ottenere un elenco di file esteso, in modo da rilevare immediatamente eventuali autorizzazioni di file non corrette. Un attributo di file non corretto non significa solo che i file potrebbero essere stati danneggiati o eliminati, ma anche che questi file modificati potrebbero essere eseguiti da root o, nel caso dei file di configurazione, essere utilizzati da programmi con autorizzazioni root con un aumento significativo delle possibilità di attacco. Attacchi di questo genere sono detti cuckoo egg (uova di cuculo), poiché il programma (l'uovo) viene eseguito (covato) da un altro utente (uccello), proprio come il cuculo induce altri uccelli a covare le sue uova.

In un sistema SUSE Linux sono disponibili i file permissions, permissions.easy, permissions.secure e permissions.paranoid nella directory /etc. Lo scopo di questi file è la definizione di autorizzazioni speciali, ad esempio directory di tipo world-writable oppure, per i file, il bit setuser ID. I programmi con impostato il bit setuser ID non vengono eseguiti con le autorizzazioni dell'utente che li ha avviati, bensì con le autorizzazioni del proprietario del file, nella maggior parte dei casi root. Per aggiungere impostazioni personali, l'amministratore può utilizzare il file /etc/permissions.local.

Per definire quale dei file sopra indicati viene utilizzato dai programmi di configurazione di SUSE per impostare le autorizzazioni di conseguenza, selezionare Sicurezza in YaST. Per ulteriori informazioni sull'argomento, leggere i commenti nel file /etc/permissions o consultare la documentazione di chmod (man chmod).

4.5.1.5. Overflow del buffer e bug delle stringhe di formato

Quando si prevede che un programma elabori dati che possono o potrebbero essere danneggiati da un utente, è necessario prestare particolare attenzione anche se questo problema riguarda più il programmatore di un'applicazione che i normali utenti. Il programmatore dovrà assicurarsi che l'applicazione interpreti i dati nel modo corretto, evitando che vengano scritti in aree di memoria troppo piccole per contenerli. I dati dovranno inoltre essere trasmessi in maniera coerente, utilizzando le interfacce definite a tale scopo.

Un overflow del buffer può verificarsi se la dimensione effettiva di un buffer di memoria non viene considerata durante la scrittura nel buffer. In alcuni casi i dati generati dall'utente utilizzano più spazio di quanto sia disponibile nel buffer e di conseguenza vengono scritti oltre la fine di tale area del buffer. In alcuni casi ciò consente l'esecuzione di sequenze del programma determinate dall'utente (non dal programmatore), anzichè la semplice elaborazione dei dati. Un bug di questo genere può avere conseguenze molto serie, specialmente se il programma in questione viene eseguito con privilegi speciali (vedere la Sezione 4.5.1.4, "Autorizzazioni dei file").

Il funzionamento dei bug delle stringhe di formato è leggermente diverso ma, anche in questo caso, l'input dell'utente può influire sul programma. Nella maggior parte dei casi questi errori di programmazione vengono sfruttati mediante programmi eseguiti con autorizzazioni speciali, ad esempio programmi setuid e setgid. Ciò significa che i dati e il sistema possono essere protetti da tali bug eliminando i corrispondenti privilegi di esecuzione dai programmi. Anche in questo caso la procedura migliore consiste nell'applicare un criterio che preveda l'uso del livello di privilegi più basso possibile (vedere la Sezione 4.5.1.4, "Autorizzazioni dei file").

Considerato che gli overflow del buffer e i bug delle stringe di formato sono correlati alla gestione dei dati utente, essi possono essere sfruttati non solo se è stato consentito l'accesso a un account locale. Molti dei bug segnalati possono infatti essere sfruttati anche tramite un collegamento di rete. Per questo motivo gli overflow del buffer e i bug delle stringhe di formato dovrebbero essere classificati tra i bug che interessano sia la sicurezza locale sia della rete.

4.5.1.6. Virus

Contrariamente a quanto sostenuti da alcuni, esistono virus eseguibili in ambiente Linux. I virus noti sono comunque stati rilasciati dagli autori come prova concettuale del funzionamento della tecnica secondo le intenzioni. Di nessuno di questi virus è stata riscontrata finora una diffusione incontrollata.

I virus non possono sopravvivere e diffondersi senza un host in cui risiedere. In questo caso, l'host potrebbe essere un programma o un'importante area di memorizzazione del sistema, ad esempio il Master Boot Record (MBR), che dovrà essere accessibile in scrittura al codice di programma del virus. In conseguenza della capacità multi-utente di Linux, il sistema è in grado di limitare l'accesso in scrittura a determinati file, specialmente i file di sistema importanti. Per questo motivo, se si svolge la normale attività con autorizzazioni root, si aumenta il rischio che il sistema venga infettato da un virus. Se invece si segue il principio di utilizzare il più basso livello possibile di privilegi, come indicato in precedenza, le possibilità di introduzione di virus nel sistema sono estremamente limitate.

Ciò premesso, è opportuno evitare di farsi indurre a eseguire programmi da siti Internet di cui non si ha una conoscenza effettiva. I pacchetti RPM di SUSE sono dotati di una firma di cifratura sotto forma di etichetta digitale per indicare che sono stati creati con attenzione. I virus sono una tipica indicazione che l'amministratore o l'utente non è consapevole dei reali requisiti di sicurezza necessari per evitare di mettere a rischio persino un sistema che, per sua stessa natura di progettazione, dovrebbe essere estremamente sicuro.

Evitare di confondere i virus con i worm, che fanno parte del mondo delle reti e non richiedono un host per diffondersi.

4.5.1.7. Sicurezza di rete

La sicurezza della rete è importante per proteggere il sistema da attacchi avviati dall'esterno. La tipica procedura di login, che prevede l'uso di un nome utente e di una password per l'autenticazione dell'utente, continua a essere un problema di sicurezza locale. Nel caso particolare del login in rete, è necessario distinguere i due aspetti della sicurezza. Tutto ciò che accade fino all'effettiva autenticazione riguarda la sicurezza di rete, mentre tutto ciò che accade successivamente riguarda la sicurezza locale.

4.5.1.8. X Window System e autenticazione X

Come accennato all'inizio, la trasparenza della rete costituisce una delle caratteristiche principali di un sistema UNIX. X è il sistema a finestre dei sistemi operativi UNIX in grado di utilizzare questa funzionalità in maniera ottimale. Con X non è un problema accedere a un host remoto e avviare un programma grafico, che viene quindi inviato attraverso la rete per essere visualizzato nel computer in uso.

Quando è necessario visualizzare un client X remoto su un server X, quest'ultimo dovrà proteggere la risorsa gestita (il display) dall'accesso non autorizzato. In termini più concreti, al programma client dovranno essere concesse determinate autorizzazioni. In X Window System è possibile eseguire questa operazione in due modi, ovvero mediante il controllo dell'accesso basato sull'host e il controllo dell'accesso basato su cookie. Il primo si basa sull'indirizzo IP dell'host nel quale dovrà essere eseguito il client. A questo scopo è disponibile il programma xhost, che immette l'indirizzo IP di un client valido in un piccolo database appartenente al server X. L'uso di indirizzi IP per l'autenticazione non è tuttavia un metodo sicuro. Se, ad esempio, un secondo utente dell'host invia il programma client, anche questo utente potrà accedere al server X, come chiunque si impossessi dell'indirizzo IP. A causa di questi inconvenienti, questa procedura di autenticazione non viene descritta più dettagliatamente in questa sezione. Per ulteriori informazioni è tuttavia possibile utilizzare il comando man xhost.

Nel caso di controllo dell'accesso basato su cookie viene generata una stringa di caratteri, nota solo al server X e all'utente legittimo, che funge da scheda di identificazione. Il cookie (il termine inglese, che significa biscotto, non si riferisce in questo caso ai biscotti comuni, bensì ai biscotti cinesi che contengono una massima) viene memorizzato al login nel file .Xauthority nella home directory dell'utente ed è disponibile a tutti i client X che richiedono l'uso del server X per visualizzare una finestra. Il file .Xauthority può essere esaminato dall'utente mediante lo strumento xauth. Se il file .Xauthority viene rinominato o eliminato accidentalmente dalla home directory, non sarà possibile aprire nuove finestre o client X. Per ulteriori informazioni sui meccanismi di sicurezza di X Window System, vedere la documentazione di Xsecurity (man Xsecurity).

È possibile utilizzare SSH (Secure Shell) per cifrare completamente una connessione di rete e inoltrarla a un server X in maniera trasparente, senza che il meccanismo di cifratura venga percepito dall'utente. Questo metodo, definito inoltro X, si ottiene mediante la simulazione di un server X sul lato server e l'impostazione di una variabile DISPLAY per la shell nell'host remoto. Per ulteriori informazioni su SSH, vedere la Sezione 4.2, " SSH: operazione di rete protette".

[Warning]Avvertimento

Se l'host nel quale si esegue il login non è considerato sicuro, non utilizzare il metodo di inoltro X. Quando è abilitato l'inoltro X, un utente malintenzionato potrebbe effettuare l'autenticazione attraverso la connessione SSH e introdursi nel server X, ad esempio, per rilevare l'input dalla tastiera.

4.5.1.9. Overflow del buffer e bug delle stringhe di formato

Come descritto nella Sezione 4.5.1.5, "Overflow del buffer e bug delle stringhe di formato", gli overflow del buffer e i bug delle stringhe di formato dovrebbero essere classificati come problemi che interessano sia la sicurezza locale che la sicurezza della rete. Come avviene con le varianti locali di tali bug, gli overflow del buffer nei programmi di rete, se sfruttati per un attacco, vengono principalmente utilizzati per ottenere le autorizzazioni root. Sebbene non sia questo il caso, il bug potrebbe consentire l'accesso a un account locale senza privilegi per sfruttare eventuali altre vulnerabilità esistenti nel sistema.

Lo sfruttamento degli overflow del buffer e dei bug delle stringhe di formato attraverso un collegamento di rete è certamente la forma più frequente di attacchi remoti in generale. I programmi che consentono di sfruttare queste nuove falle nel sistema di sicurezza vengono spesso pubblicati nelle mailing list sulla sicurezza e possono essere utilizzati per attaccare la vulnerabilità del sistema senza conoscere i dettagli del codice. Nel corso degli anni l'esperienza ha dimostrato che la disponibilità dei codici di tali programmi ha contribuito a rendere più sicuri i sistemi operativi perché i produttori sono stati costretti a correggere i problemi presenti nel software. Con il software libero chiunque può accedere al codice sorgente (SUSE Linux viene fornito con tutti i codici sorgente disponibili) e chiunque individui una vulnerabilità e il codice per sfruttarla può inviare una patch per correggere il bug corrispondente.

4.5.1.10. Denial of Service (DoS)

Lo scopo di un attacco Denial Of Service (DoS) consiste nel bloccare un programma server o un intero sistema utilizzando vari mezzi, ad esempio sovraccaricando il server, tenendolo occupato con pacchetti inutili oppure sfruttando l'overflow di un buffer remoto. Un attacco DoS ha spesso il solo obiettivo di far scomparire un servizio tuttavia, quando un dato servizio non è più disponibile, le comunicazioni possono diventare vulnerabili ad attacchi di tipo man-in-the-middle (sniffing, hijacking della connessione TCP, spoofing) e DNS poisoning.

4.5.1.11. Man-in-the-middle: sniffing, hijacking, spoofing

In generale, qualsiasi attacco remoto da parte di un utente che si inserisce nelle comunicazioni tra gli host è detto attacco di tipo man-in-the-middle. L'elemento comune di questi tipi di attacchi è che in genere la vittima non è consapevole di ciò che sta accadendo. Le varianti possibili sono molte, ad esempio il pirata informatico potrebbe rilevare una richiesta di connessione e inoltrarla al computer di destinazione. In questo caso la vittima avrà inconsapevolmente stabilito una connessione con l'host non corretto, in quanto l'altra estremità della connessione si presenta come un computer di destinazione valido.

La forma più semplice di attacco man-in-the-middle è detta sniffer, ovvero il pirata informatico rimane "semplicemente" in ascolto del traffico di rete in transito. Una forma più complessa di attacco "man-in-the-middle" può essere il tentativo di assumere il controllo di una connessione già stabilita (hijacking). Per fare ciò, il pirata informatico deve analizzare i pacchetti per un certo intervallo di tempo per poter determinare i numeri della sequenza TCP appartenenti alla connessione. Quando il pirata informatico è finalmente in grado di assumere il ruolo di host di destinazione, la vittima viene informata mediante un messaggio di errore nel quale è indicato che la connessione è stata terminata a causa di un errore. Alcuni protocolli, tuttavia, non sono protetti da hijacking mediante la cifratura, ma eseguono solo una semplice procedura di autenticazione al momento in cui viene stabilita la connessione rendendo più facili gli attacchi.

Lo spoofing è un tipo di attacco in cui i pacchetti vengono modificati mediante l'immissione di dati di origine contraffatti, in genere l'indirizzo IP. Le forme di attacco più attive si basano sull'invio di tali pacchetti contraffatti, un'operazione che in un computer Linux può essere eseguita solo dal superutente (root).

Molti degli attacchi descritti vengono portati a termine in combinazione con DoS. Se un pirata informatico rileva l'opportunità di rendere improvvisamente inattivo un determinato host, anche solo per un breve intervallo, potrà portare avanti più facilmente l'attacco attivo, in quando l'host non sarà in grado di interferire per un dato periodo.

4.5.1.12. DNS poisoning

DNS poisoning è una tecnica che consente di danneggiare la cache di un server DNS mediante l'invio di pacchetti di risposta DNS contraffatti per fare in modo che il server invii dati particolari a una vittima che richiede informazioni da quel server. Molti server mantengono una relazione di fiducia con altri host basate su indirizzi IP e nomi host. Per assumere l'identità di uno degli host sicuri, il pirata informatico deve avere una buona conoscenza della struttura effettiva delle relazioni di fiducia. Di solito analizza alcuni pacchetti ricevuti dal server per ottenere le informazioni necessarie e spesso deve prevedere contemporaneamente un attacco DoS con la giusta temporizzazione al server dei nomi. Per proteggersi da questo tipo di attacchi, utilizzare connessioni cifrate in grado di verificare l'identità degli host ai quali si stabilisce la connessione.

4.5.1.13. Worm

I worm vengono spesso confusi con i virus, benché vi sia una chiara differenza. Diversamente dai virus, l'esistenza dei worm non è legata all'infezione di un programma host. Sono invece specializzati nel diffondersi il più velocemente possibile attraverso le strutture di rete. I worm che si sono diffusi in passato, ad esempio Ramen, Lion o Adore, sfruttano le falle conosciute nel sistema di sicurezza dei programmi server come bind8 o lprNG. La protezione dai worm è relativamente semplice. Poiché tra la scoperta di una falla nel sistema di sicurezza e il momento in cui il worm penetra nel server trascorre un pò di tempo, è molto probabile che sia già disponibile una versione aggiornata del programma interessato. Questo aspetto è utile solo se l'amministratore installa effettivamente gli aggiornamenti di sicurezza nei sistemi in questione.

4.5.2. Alcuni suggerimenti generali sulla sicurezza

Per gestire la sicurezza in maniera competente, è importante tenersi aggiornati sui nuovi sviluppi e informati sui più recenti problemi di sicurezza. Un ottimo metodo per proteggere i sistemi da qualsiasi tipo di problema consiste nell'ottenere e installare al più presto possibile i pacchetti aggiornati suggeriti dagli annunci relativi alla sicurezza. Gli annunci relativi alla sicurezza di SUSE vengono pubblicati in una mailing list che è possibile sottoscrivere all'indirizzo http://www.novell.com/linux/security/securitysupport.html (in lingua inglese). La mailing list suse-security-announce@suse.de costituisce una pratica fonte di informazioni sui pacchetti aggiornati e, tra i collaboratori attivi, include i membri del team di sicurezza di SUSE.

La mailing list suse-security@suse.de è un'ottima area di discussione per qualsiasi argomento riguardante problemi di sicurezza specifici. È possibile sottoscrivere la mailing list nella stessa pagina Web.

bugtraq@securityfocus.com è una delle mailing list sulla sicurezza più conosciute al mondo, nella quale vengono inseriti tra 15 e 20 messaggi ogni giorno, di cui si consiglia la lettura. Ulteriori informazioni sono disponibili all'indirizzo http://www.securityfocus.com (in lingua inglese).

Di seguito è riportato un elenco di regole utili per la gestione delle problematiche di base relative alla sicurezza:

  • In base alla regola di utilizzare il set di autorizzazioni più restrittivo possibile per ogni lavoro, evitare di svolgere la normale attività come root. In questo modo si riduce la vulnerabilità agli attacchi di tipo cuckoo egg o ai virus, proteggendosi inoltre dai propri errori.

  • Utilizzare sempre, se possibile, connessioni cifrate quando si accede a un computer remoto. L'uso di ssh (Secure Shell) in sostituzione di telnet, ftp, rshe rlogin dovrebbe costituire una regola abituale.

  • Evitare di utilizzare metodi di autenticazione basati solo su indirizzi IP.

  • Mantenere aggiornati i più importanti pacchetti relativi alla rete e sottoscrivere le mailing list corrispondenti per ricevere gli annunci riguardanti nuove versioni di tali programmi (bind, sendmail, ssh e così via). Lo stesso concetto è valido per il software relativo alla sicurezza locale.

  • Modificare il file /etc/permissions per ottimizzare le autorizzazioni dei file fondamentali per la sicurezza del sistema. Se si rimuove il bit setuid da un programma, è possibile che non possa più essere utilizzato nel modo previsto. D'altra parte, si consideri che nella maggior parte dei casi il programma non costituirà più un rischio potenziale per la sicurezza. Questo tipo di approccio può essere adottato per i file e per le directory di tipo world-writable.

  • Disattivare tutti i servizi di rete che non sono assolutamente necessari per il corretto funzionamento del server, il sistema risulterà più sicuro. Le porte aperte con lo stato del socket LISTEN possono essere individuate con il programma netstat. Si consiglia di utilizzare l'opzione netstat -ap o netstat -anp. L'opzione -p consente di vedere quale processo occupa una porta e con quale nome.

    Confrontare i risultati di netstat con quelli di una scansione completa delle porte eseguita dall'esterno dell'host. Un ottimo programma a questo scopo è nmap, poiché oltre al controllo delle porte nel computer in uso consente di trarre alcune conclusioni sui servizi in attesa su tali porte. La scansione delle porte può tuttavia essere interpretata come un'azione aggressiva, è quindi opportuno evitare di eseguirla in un host senza l'esplicita approvazione dell'amministratore. Ricordare infine che oltre alla scansione delle porte TCP è importante anche la scansione delle porte UDP (opzioni -sS e -sU).

  • Per un monitoraggio efficiente dell'integrità dei file del sistema, utilizzare il programma AIDE (Advanced Intrusion Detection Environment) disponibile in SUSE Linux. Per impedirne la manomissione, cifrare il database creato da AIDE. Conservare inoltre una copia di backup di questo database all'esterno del computer in uso, memorizzandola in un supporto fisico non collegato al computer mediante un collegamento di rete.

  • Installare programmi software di terze parti con cautela. Si sono verificati casi in cui un pirata informatico ha introdotto un trojan horse nell'archivio tar di un pacchetto software di sicurezza che è stato fortunatamente scoperto con tempestività. Se si installa un pacchetto di dati binari, verificare l'affidabilità del sito dal quale è stato scaricato.

    I pacchetti RPM di SUSE sono firmati con GPG. La chiave utilizzata da SUSE per la firma è la seguente:

    ID:9C800ACA 2000-10-19 SUSE Package Signing Key <build@suse.de>

    Key fingerprint = 79C1 79B2 E1C8 20C1 890F 9994 A84E DAE8 9C80 0ACA

    Il comando rpm --checksig package.rpm consente di verificare se il valore checksum e la firma di un pacchetto non installato sono corretti. Cercare la chiave nel primo CD della distribuzione e nella maggior parte dei server delle chiavi disponibili nel mondo.

  • Verificare regolarmente i backup dei file utente e di sistema. Se il funzionamento dei backup non viene verificato, è possibile che questi siano inservibili.

  • Controllare i file di log. Quando possibile, creare un piccolo script per la ricerca di voci sospette. In effetti non si tratta di un'attività semplice poiché solo l'utente può sapere quali sono le voci insolite e quelle normali.

  • Utilizzare tcp_wrapper per limitare l'accesso ai singoli servizi in esecuzione nel computer in uso, in modo da controllare esplicitamente quali indirizzi IP si connettono a un servizio. Per ulteriori informazioni su tcp_wrapper, consultare la documentazione di tcpd e hosts_access (man 8 tcpd, man hosts_access).

  • Per migliorare la sicurezza fornita da tcpd (tcp_wrapper), utilizzare SuSEfirewall.

  • Progettare misure di sicurezza ridondanti poiché è preferibile visualizzare due volte un messaggio piuttosto che non visualizzarne nessuno.

4.5.3. Indirizzo per l'invio di rapporti al centro di sicurezza

Se si individua un problema legato alla sicurezza, dopo aver controllato i pacchetti di aggiornamento disponibili inviare una e-mail a security@suse.de. Includere una descrizione dettagliata del problema e il numero di versione del pacchetto in questione. SUSE tenterà di fornire una risposta al più presto. Si consiglia di cifrare i messaggi e-mail con pgp. La chiave pgp di SUSE è la seguente:


ID:3D25D3D9 1999-03-06 SUSE Security Team <security@suse.de>
Key fingerprint = 73 5F 2E 99 DF DB 94 C4 8F 5A A3 AE AF 22 F2 D5

Questa chiave può essere scaricata anche all'indirizzo http://www.novell.com/linux/security/securitysupport.html (in lingua inglese).