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.
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.
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, effettuando in maniera esplicita la crittografazione dei dati, ...
Nei paragrafi successivi vengono esaminati i principali strumenti presenti per lutilizzo in reti interne su cui non siano presenti stringenti requistiti di sicurezza.
Il servizio HTTP o web e' il piu' noto servizio
di Internet. Con tale servizio e' possibile pubblicare su Internet testi, immagini
e programmi interattivi. Le attuali versioni dei web server hanno raggiunto
un buon livello di affidabilita' e sono relativamente poco soggetti ad "attacchi"
(eccezion fatta per il firing) se correttamente configurati e mantenuti aggiornati.
La parte piu' debole
e' sempre quella del lancio di programmi (eg. attraverso richiami CGI) che,
se non programmati correttamente, possono lasciare backdoor.
Nel tempo la crescita del WWW e' stata esponenziale e si sono notevolmente complicati
i servizi forniti e le tecnologie utilizzate: ora la superficie d'attacco diventa sempre piu'
ampia e complessa da controllare.
Il protocollo di telnet consente l'utilizzo di un sistema Unix con un emulazione di terminale con un collegamento TCP-IP.
Con una connessione telnet si entra in shell ed e' quindi possibile effettuare tutte le operazioni abilitate all'utente. Si tratta quindi di un servizio potenzialmente molto pericoloso.
Tutto il dialogo telnet avviene in chiaro sulla rete. In chiaro vengono anche trasmesse la login e la password.
E' opportuno disabilitare completamente il telnet in caso di utilizzo su reti non sicure. In tal caso e' eventualmente possibile utilizzare altri programmi che consentano l'emulazione di terminale ma che utilizzino tecniche di encryption (eg. deslogin)
In ogni caso qualsiasi protocollo venga utilizzato un'utenza Unix che ha accesso diretto al sistema e' in grado di estrarre un grande numero di informazioni (anche senza essere un'utenza privilegiata). Spesso si preferisce evitare di fornire un accesso diretto al sistema agli utenti.
E lacronimo di File Transfer Protocol. Il protocollo ftp consente lo scambio di file tra macchine connesse in rete.
Per consentire luso 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 nellutilizzo di ftp:
Sono disponibili come software di pubblico dominio versioni di ftpd che offrono maggiori controlli di sicurezza (eg. wu-ftp che si configura agendo su /etc/ftpaccess). Alcuni Unix commerciali offrono comunque ftpd con funzioni o possibilita' di configurazione superiori allo standard (eg. AIX).
Su Unix e presente una serie di programmi (rlogin, rsh, rcp, ...), comunemente chiamati r-program, che consentono lesecuzione 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 lidentita 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 lutilizzo dellequivalenza in rete.
I servizi r* sono suscettibili ad attacchi molto pericolosi ed efficaci quali lo spoofing (invio di messaggi con un IP Address mittente impostato da programma).
Per un buon livello di sicurezza si debbono escludere completamente i servizi r* (rlogin, rsh, rcp, ..) che utilizzano tale meccanismo per la validazione.
E lacronimo 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 lintroduzione 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 laccessibilita ad hosts specifici e concedere il solo diritto di lettura. E inoltre opportuno evitare di condividere in rete dischi che contengano informazioni riservate.
Il livello di sicurezza ottenibile con NFS e' discreto, se utilizzato in sola lettura e non e' necessario differenziare gli accessi. In caso di esigenze di sicurezza ulteriori non e' consigliabile l'utilizzo di NFS.
Si tratta di servizi che consentono la gestione cetralizzata di host/utenti/gruppi/...
E' opportuno utilizzare solo le ultime versioni di tali programmi. Nelle prime versioni erano stati segnalati diversi problemi di sicurezza.
In caso di stringenti requisiti di sicurezza e' opportuno non utilizzare affatto tali servizi.
Il programma di sendmail si occupa dello smistamento della posta in arrivo e partenza. Si tratta in effetti del piu diffuso, completo 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:
Se non necessario e' opportuno disabilitare il servizio di sendmail.
Vi sono alcune tipologie di attacco (eg. spamming: invio di posta da utenti che si fingono altri utenti) verso le quali il sendmail non offre protezioni. In questi casi una soluzione e' quella di individuare i siti responsabili e bloccarli con opportune regole su un firewall.
X-Windows e' un ambiente grafico che ha un'ampia diffusione in ambiente Unix. C-Windows utilizza una serie di algoritmi di sicurezza per impedire che sistemi/utenti non autorizzati non inviino videate o comunque interagiscano in modo non corretto con la stazione di lavoro.
Alcune di queste protezioni vengono spesso disabilitate per poter operare con maggior facilita' su un piu' sistemi in contemporanea (con il comando "xhost +"). E' importante abilitare solo gli host/utenti e il periodo di tempo necessari per effettuare le varie operazioni.
In ogni caso la protezione fornita da X-Windows non e' assoluta e non deve essere utilizzato su sistemi con elevati requisiti di sicurezza.
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.
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.
Un alternativa (opportuna se il numero di sistemi in rete diventa elevato) e' l'utilizzo di un DNS su cui vengono mantenuti tutti gli indirizzi.
Laccesso delle utenze puo avvenire tramite terminali (o programmi di emulazione) connessi in maniera diretta (sulla console di sistema) o attraverso linea telefonica.
Le connessioni dirette avvengono su linea seriale su cui e attivo il programma getty.
Le connessioni su linea telefonica debbono essere trattate come poco sicure. In caso di necessita' possono essere utilizzati meccanismi di callback e di validazione (eg. PAP/CHAP su PPP).
UUCP e lacronimo di Unix to Unix CoPy. Con linsieme 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. Lutilizzo di uucp e piuttosto limitato.
Il file /usr/lib/L.sys contiene nomi di host e password in chiaro.
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.
E' possibile installare un TCP Wrapper su alcuni servizi di rete. Il programma di wrapper effettua alcune validazioni (ovviamente configurabili), genera informazioni di logging e quindi richiama il servizio richiesto (eg. telnet, ftp, ...).
L'installazione di un TCP Wrapper e' generalmente effettuata configurando opportunamente il demone inetd.
Alcuni sistemi Unix offrono alcune funzioni tipiche di un wrapper direttamente nel processo di inetd (eg. HP-UX).
Sono disponibili potenti strumenti software/hardware per il controllo dei pacchetti scambiati sulla rete tra le diverse macchine. Le tecniche utilizzate sono diverse. I firewall offrono il massimo dal punto di vista della sicurezza, delle prestazioni e del controllo se correttamente configurati.
Si tratta in genere di sistemi dedicati, che non rispondono a nessun servizio di rete (quindi "invisibili") con interfacce di rete poste sulle diverse reti che debbono controllare. Vengono programmati a regole con in principio di base che tutto quello che non e' esplicitamente permesso e' proibito!
L'evoluzione e' molto forte in questo campo e cosi' come si sono evoluti gli attacchi informatici nello stesso modo sono cambiati i firewall: NGFW, IPS, WAF, Cloud Firewall, ...
Per accesso ad Internet si intende il collegamento fisico alla rete Internet (rete mondiale cui sono connessi milioni di calcolatori ed utenti).
Laccesso 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 lutilizzo di TCP-wrapper e di FireWall a protezione delle proprie reti rispetto alle reti esterne.
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.
Facciamo l'ipotesi di una societa' che sia connessa su Internet e vediamone la tipica configurazione. Tale esempio puo' essere preso come punto di partenza per comprendere la configurazione di un ISP (Internet Service Provider) o per altre configurazioni piu' complesse possibili (eg. VPN (Virtual Private Network) tra sedi remote della stessa azienda).
La connessione ad Internet sara' fornita
da un router del fornitore esterno (eg. telecom) che fornisce la connettivita'
di base.
Direttamente connesso a questo vi sara' un sistema Unix che agisce da firewall
e non ospita altri servizi. Su un'altra scheda di rete del firewall troviamo
la DMZ (l'area demilitarizzata) che contiene i server dei servizi resi all'esterno:
HTTP (il web), DNS, anonymous FTP, SMTP, il proxy (che in realta' e' un servizio
dato solo all'interno ma che accede all'esterno). La terza scheda di rete del
firewall viene connessa sulla LAN aziendale. Le regole del firewall prevedono
che dall'esterno si possano unicamente utilizzare alcuni servizi presenti sulla
DMZ (eg. la navigazione sul web). Nessuna regola consente un accesso diretto
alla LAN. Dalla rete interna in genere non si accede all'esterno in modo diretto
ma solo tramite i servizi di proxy ospitati sulla DMZ. Eventuali (e motivate)
eccezioni utilizzano il NAT (Network Address Translation) per mascherare gli
accessi.
I server della rete interna possono essere uno o piu'. In ogni caso sui sistemi
della DMZ vengono attivati solo i servizi necessari (eg. il demone di sendmail
e' attivato solo sull'SMTP server). Tutti i servizi "pericolosi" sono disattivati:
NFS, rsh, ... I server/servizi presenti sono:
Testo: Sicurezza su Unix in rete
Data: 15 Settembre 1997
Versione: 1.1
Autore: mail@meo.bogliolo.name