Sicurezza su Unix in rete

Nella societa’ della comunicazione il valore e la riservatezza delle informazioni riveste un ruolo sempre piu’ importante. Di conseguenza la sicurezza dei dati, in tutte le sue forme, e’ un aspetto fondamentale per la gestione e l’utilizzo di un Sistema Informativo.

Di particolare interesse, per l'enorme crescita delle reti Intranet e di Internet, e' la sicurezza in rete dei sistemi Unix.

In questo documento sono riportate una serie di verifiche per controllare i livelli di sicurezza presenti sui Sistemi Unix con particolare riferimento ad un loro utilizzo in rete.

Utilizzo del Sistema in rete

La presenza di piu’ sistemi e la comunicazione di dati tra essi e’ una esigenza sempre piu’ diffusa ed importante. Per fornire tali funzionalita’ sono state create opportune apparecchiature hardware e protocolli di comunicazione.

Su una macchina Unix sono presenti di default una serie di servizi in rete che forniscono una serie molto ampia di funzionalita’ e diverse modalita’ di comunicazione (eg. TCP-IP, UUCP).

Il livello di sicurezza di tali servizi non e’ in genere elevato. Non vengono infatti utilizzati meccanismi di encription dei dati e sono presenti diverse funzioni che forniscono informazioni sui sistemi presenti in rete.

Per fornire un adeguato livello di sicurezza debbono essere bilanciati la facilita’ di comunicazione con il controllo degli accessi. E’ infatti possibile ottenere un maggior livello di sicurezza disabilitando alcuni servizi, effettuato in maniera esplicita la crittografazione dei dati, ...

Nei paragrafi successivi vengono esaminati i principali strumenti presenti per l’utilizzo in rete.

Utilizzo in reti non sicure

I messaggi che attraversano una rete di comunicazione possono essere ascoltati. Per effettuare tali operazioni sono necessari strumenti hardware/software che tipicamente vengono utilizzate per effettuare la messa a punto o il debug di protocolli o sistemi di comunicazione. Per evitare tale problema e’ necessario provvedere alla sicurezza fisica della rete di comunicazione. Quando e’ possibile che un oggetto esterno si colleghi direttamente alla rete, la rete viene definita non sicura.

Alcuni protocolli inviano informazioni con messaggi non criptati e quindi di facile individuazione. Tra questi: telnet, ftp, rlogin, che oltre alle altre informazioni trasmettono login e password in chiaro.

Tali protocolli non debbono essere utilizzati su un canale di comunicazione non sicuro. Nel caso in cui questo avvenga e’ necessario cambiare immediatamente le password e riverificare la sicurezza del Sistema.

Nel caso sia necessario proteggere i dati che vengono trasmessi con tali protocolli e’ necessario provvedere alla crittografazione dei dati.

FTP

E’ l’acronimo di File Transfer Protocol. Il protocollo ftp consente lo scambio di file tra macchine connesse in rete.

Per consentire l’uso del programma ftp e’ necessario collegarsi con una utenza valida Unix (conoscendone la relativa password).

Possono essere segnalate alcune note relative agli aspetti di sicurezza nell’utilizzo di ftp:

rsh

Su Unix e’ presente una serie di programmi (rlogin, rsh, rcp, ...), comunemente chiamati r-program, che consentono l’esecuzione remota di comandi. La validazione delle utenze/macchine abilitate a tali servizi si basa sugli IP Address. Con tale definizione gli utenti presenti sulle altre macchine non vengono ulteriormente validati sul Sistema corrente "fidandosi" (trust) quindi del Sistema di provenienza. Pertanto quando viene richiesto un servizio in remoto non e’ necessario indicare la password.

La configurazione delle abilitazioni avviene sui file /etc/hosts.equiv e sui file ~utente/.rhosts.

Tale meccanismo di validazione presenta pero’ un lato debole poiche’ l’identita’ di un host su rete TCP-IP e’ dichiarata, ma non validata. In sistemi che richiedano un certo livello di sicurezza e’ necessario limitare tale accessibilita’ ad utenti specifici o, meglio, non consentire l’utilizzo dell’equivalenza in rete.

Come massimo livello di sicurezza si possono escludere completamente i servizi r* (rlogin, rsh, rcp, ..) che utilizzano tale meccanismo per la validazione.

NFS

E’ l’acronimo di Network File System. Con tale protocollo, implementato sulla pila TCP-IP (per essere pignoli UDP-IP) si puo’ accedere in maniera trasparente a file system di sistemi remoti.

Poiche’ lo stesso file system e’ acceduto sia localmente che in remoto e’ necessario porre attenzione ai diritti di accesso ai file presenti.

Per quanto riguarda i dischi utilizzati da remoto e’ necessario impedire l’introduzione di programmi con il SUID attivo (eg. mount -F nfs -o nosuid, bg remotehost:/remotedir /localdir). E’ inoltre necessario evitare di porre dati/programmi con contenuti riservati su tale disco remoto.

Per quanto riguarda i dischi forniti alla rete e’ necessario limitare l’accessibilita’ ad hosts specifici e concedere il solo diritto di lettura. E’ inoltre opportuno evitare di condividere in rete dischi che contengano informazioni riservate.

Sendmail

Il programma di sendmail si occupa dello smistamento della posta in arrivo e partenza. Si tratta in effetti del piu’ diffuso e famigerato MTA per la gestione della posta. La sua complessita’ e’ elevata e sono note alcune anomalie del programma presenti nelle varie release.

Alcune indicazioni:

Servizi statistici e di amministrazione

Sono disponibili diversi servizi che forniscono utilita’ di amministrazione e statistiche.

Il servizio fingerd offre, via rete, un servizio che consente di saper quali sono le utenze attive, da quanto tempo non si collegano, ... Benche’ tale funzione sia comoda per un amministratore offre informazioni sulle utenze presenti sul sistema, sulle attivita’ svolte, .. tali informazioni possono essere sfruttate da utenti non autorizzati per cercare di "indovinare" nuove utenze e password per tentare accessi sul Sistema.

Altri servizi vengono richiamati dal comando ruptime ed rwho che forniscono le informazioni tipiche dei comandi uptime ed who ma in ambiente di rete.

Accesso ai terminali connessi direttamente ed a terminali virtuali

L’accesso delle utenze puo’ avvenire tramite terminali (o programmi di emulazione) connessi in maniera diretta, attraverso linea telefonica o su rete locale.

Le connessioni dirette avvengono su linea seriale su cui e’ attivo il programma getty.

Le connessioni in rete avvengono attraverso il servizio telnetd.

Catalogo dei sistemi in rete

Per verificare in modo veloce quali siano le connessioni di rete locale attive e’ opportuno compilare in maniera completa il file di /etc/hosts riportando gli IP Address di tutti gli host/PC che possono accedere al Sistema.

Accesso ad Internet

Per accesso ad Internet si intende il collegamento fisico alla rete Internet (rete mondiale cui sono connessi milioni di calcolatori ed utenti).

L’accesso ad Internet pone particolari problemi di sicurezza poiche’ il numero di potenziali hacker e’ elevatissimo.

Nel caso di accesso ad Internet e’ necessario provvedere ad adeguati strumenti di sicurezza. E’ assolutamente necessario l’utilizzo di TCP-wrapper e di FireWall a protezione delle proprie reti rispetto alle reti esterne.

Servizi Internet

Sotto tale nome sono impropriamente raccolti normali servizi di rete TCP-IP che vengono utilizzati in special modo su Internet. In particolare ci si riferisce ai servizi: httpd, wais, gopher, ..

Sono note alcune anomalie su tali programmi (eg. l’httpd NCSA v.1.3 non e’ "sicuro" ed e’ consigliato il passaggio ad una release successiva) e vi sono configurazioni che richiedono particolare attenzione per non aprire porte verso l’esterno (eg. shell richiamate con cgi-bin).

UUCP

UUCP e’ l’acronimo di Unix to Unix CoPy. Con l’insieme di programmi forniti da tale protocollo possono essere effettuati scambi di dati, invio di mail, file transfer tra sistemi Unix connessi su linee seriali dedicate o switched (caso piu’ comune). Tale protocollo ha avuto una notevole diffusione prima della diffusione di tecnologie (Internet) che hanno consentito velocita’ di trasferimento superiore. UUCP e’ distribuito su praticamente tutti i sistemi Unix. Le principali versioni di software sono due. L’utilizzo di uucp e’ piuttosto limitato.

Il file /usr/lib/L.sys contiene nomi di host e password in chiaro.

etc

Altre ambienti: WEB Server, X Windows, Architetture di rete (e.g. Client-Server), Firewall, Proxy Server, Router, ... Tutti da mononitorare con opportuni Strumenti, ...

Crittografia a chiave pubblica

Trasmettendo i dati su reti non sicure e' opportuno provvedere alla loro crittografazione in modo da renderli inutilizzabili ad estranei.

I dati vengono alterati e sono leggibili solo utilizzando una speciale chiave (che e' naturalmente una stringa di caratteri).

Un metodo molto diffuso per la crittografazione e' quello a chiave pubblica. In realta' le chiavi sono due: una pubblica, nota a tutti, ed una privata, nota solo al proprietario. Per crittografare/decrittografare un messaggio e' necessario applicare entrambe le chiavi.

Per inviare un messaggio ad un utente in modo che nessun altro possa leggerlo e' sufficiente crittografarlo con la chiave pubblica di tale utente. Solo l'utente stesso, con la sua chiave privata potra' leggerlo.

Di converso un messaggio crittografato con la chiave privata di un utente sara' leggibile a tutti, utilizzando la chiave pubblica di tale utente, ma la sua provenienza ed integrita' e' certa: nessun altro utente avrebbe potuto generare o modificare tale messaggio.

Affinche' il meccanismo funzioni e' necessario assicurarsi che la chiave pubblica di un utente appartega veramente ad uno specifico utente e non ad un hacker che cerca di impersonare l'utente. Per accertarsi di tale corrispondenza vengono utilizzati i certificati. L'assegnazione dei certificati e' competenza dei Certificate Autority.

Esistono organizzazioni pubbliche che svolgono tale compito oppure e' possibile


Testo: Sicurezza su Unix in rete
Data: 15 Settembre 1997
Versione: 1.1.1
Autore: bbo@archesis.it