Protocolli di Sicurezza AAA Tacacs Radius IPSec,SSl,SSH VPN eL2F
Architettura AAA (basata sulla separazione delle 3 fasi A.A.A.) AUTENTICAZIONE è l’azione per determinare chi è l’utente o l’entità che accede al sistema e può essere fatta in varie forme. Quella tradizionale utilizza il nome e una password fissata, anche se ci sono alcune limitazioni soprattutto nel campo della sicurezza. Altri meccanismi utilizzano password “one time”. Di solito l’autenticazione viene effettuata quando l’utente chiede un servizio a un server oppure quando chiede privilegi particolari. AUTORIZZAZIONE è l’azione per determinare che cosa ad un utente è consentito di fare. Generalmente l’autenticazione precede la fase di autorizzazione; infatti una richiesta di autorizzazione può indicare che l’utente non è identificato. ACCOUNTING è l’azione per memorizzare che cosa un utente sta facendo e\o ha fatto. In Tacacs+ può servire per due scopi: tenere conto dei servizi usati, o fornire supporto per controlli di sicurezza. Per quest’ultimo scopo il Tacacs+ supporta tre tipi di records: a) start record che indica quale tipo di servizio sta per iniziare; b) update record che fornisce informazioni sullo stato di esecuzione del servizio; c) stop record che indica quale servizio sta per terminare. Ovviamente l'accounting è un'operazione trasparente all'utente, ed è gestita automaticamente dal protocollo che provvede a informare opportunamente il server.
Architettura AAA
Protocollo Tacacs Dopo che il client si sarà autenticato presso l'AAA Server potrà richiedere opportune autorizzazioni per usare determinati servizi. Nel protocollo TACACS+, le fasi di autenticazione, autorizzazione e accounting vengono gestite separatamente. Questo permette di avere maggiore controllo e flessibilita' nella gestione di tutte le richieste. L'autenticazione e' essenzialmente la fase nella quale viene accertata l'identita' di chi si sta autenticando. Cio' puo' essere ottenuto attraverso una semplice coppia username/password o con sistemi piu' sofisticati quali Kerberos, OTP o CHAP. Dopo essere stato autenticato, e' normale che l'utente richieda di poter utilizzare alcuni servizi. A seguito della richiesta di utilizzo di un servizio, il NAS richiede al server TACACS+ la relativa autorizzazione accludendo l'identita' (gia' accertata nella fase di autenticazione) dell'utente. A questo punto, in base alle proprie policies, il server TACACS+ decide se concedere o meno l'autorizzazione e risponde di conseguenza. Infine, il server TACACS+ viene informato dell'inizio e della fine del servizio attraverso delle richieste di accounting che includono anche i dati della sessione, quali data/ora di inizio, durata, bytes trasferiti etc. Il protocollo prevede anche l'invio di dati di accounting periodici per informare il server dell'evolversi di una sessione.
Protocollo Radius Le comunicazioni tra un server di accesso alla rete (NAS) e un server RADIUS sono basate sul protocollo User Datagram (UDP). In genere il protocollo RADIUS viene considerato come un servizio connectionless perchè problemi relativi alla disponibilità del server (ritrasmissione dei dati e timeout) sono gestiti direttamente dai dispositivi su cui è abilitato, piuttosto che dal protocollo di trasmissione. Inoltre RADIUS è un protocollo client/server. Il client è tipicamente un server di accesso alla rete (NAS) e il server di solito è un processo daemon in esecuzione su UNIX o Windows NT. Il client invia informazioni sull'utente all'appropriato server RADIUS e agisce in base alla risposta che gli viene restituita. Il server RADIUS riceve le richieste di connessione dell'utente e dopo l'autenticazione restituisce le informazioni di configurazione necessarie per il client in modo che siano forniti gli appropriati servizi all'utente. Infine un server RADIUS può agire come un client proxy per altri server RADIUS o altri tipi di server di autenticazione
Radius Remote Authentication Dial-In User Service (RADIUS) è un protocollo standard (RFC 2138 e 2139 "Remote Authentication Dial-in User Service (RADIUS)" e "RADIUS Accounting") che fornisce servizi di autenticazione, autorizzazione e accounting per le connessioni remote distribuite. Un client RADIUS, in genere un server di connessione remota utilizzato da un provider di servizi Internet (ISP), invia informazioni sull'utente e sulla connessione a un server RADIUS. Il server RADIUS autentica e autorizza la richiesta del client RADIUS. Il server di accesso remoto Windows 2000 include un client RADIUS per consentire l'utilizzo del server di accesso remoto da parte di provider di servizi Internet o di utenti di accesso remoto aziendali che utilizzano RADIUS come schema di autenticazione o di accounting. È possibile configurare separatamente i provider di autenticazione e di accounting del server di accesso remoto Windows 2000. Un server di accesso remoto può utilizzare Windows 2000 come provider di autenticazione e RADIUS come provider di accounting. È possibile configurare più server RADIUS per consentire automaticamente l'utilizzo di server RADIUS secondari in caso di non disponibilità del server RADIUS primario
Utilizzo di Radius in Win2000 Per utilizzare l'autenticazione RADIUS Aprire Routing e Accesso remoto Fare clic con il pulsante destro del mouse sul nome del server per il quale si desidera configurare l'autenticazione RADIUS, quindi scegliere Proprietà. Nella casella Provider autenticazione della scheda Protezione fare clic su Autenticazione RADIUS, quindi sul pulsante Configura. Nella finestra di dialogo Autenticazione RADIUS fare clic sul pulsante Aggiungi. Nella finestra di dialogo Aggiunta server RADIUS, configurare le impostazioni relative al server di autenticazione RADIUS, quindi scegliere OK
Differenze tra Radius e Tacacs Ecco le differenze tra i due protocolli: UDP e TCP Innanzitutto il RADIUS utilizza il protocollo UDP per la comunicazione, mentre il TACACS+ si serve del TCP. Quest’ultimo offre più servizi dell’altro, per esempio: trasporto orientato alla connessione, non richiede variabili aggiuntive utili per tentativi di ritrasmissione e time_out per compensare il miglior trasporto di pacchetti (cose queste che succedono con RADIUS). Una trasmissione TCP offre: un acknowledgment diverso per ogni richiesta che ha ricevuto all'interno di una rete RTT; un’indicazione immediata di un server rotto. L’utente può determinare quando un server è disconnesso e quando non lo è, se le connessioni TCP sono abbastanza lunghe. Invece UDP non distingue un server disconnesso, un server lento, o un server non esistente da uno connesso. connessioni a server multipli che possono essere mantenute simultaneamente: in tal caso sarà possibile identificare server funzionanti e in esecuzione ai quali mandare eventuali messaggi; Adattabilità ad un eventuale crescita della rete.
Cifratura dei pacchetti Per quanto riguarda la cifratura, il Radius cifra solo le password nei pacchetti di richiesta di accesso dal client al server. Poiché la parte rimanente è spedita in chiaro, altre informazioni come username, servizi autorizzati e accounting, possono essere catturate da una terza parte. Invece il TACACS+ cifra l’intero corpo del pacchetto ad eccezione dell’header. Dentro all’header vi è un campo che indica se il corpo è cifrato o meno: per scopi di debbunging è utile averlo in chiaro, per scopi di sicurezza è necessario non averlo in chiaro. Autenticazione e Autorizzazione Per quanto riguarda l’autenticazione e l’autorizzazione, il Radius invia i pacchetti dal server al client con informazione relativa ad entrambi i processi, rendendo difficile una eventuale separazione. Il TACACS+ usa l’architettura AAA (Autenticazione, Autorizzazione, Accounting) che separa questi processi, permettendo tipi di autenticazione diversi ma compatibili con gli altri due processi
Protocolli per reti wireless
WEP
Autenticazione
802.1x
IPsec IPSec fornisce uno standard robusto e facilmente espandibile a garanzia della sicurezza di IP e dei protocolli di livello superiore (come ad esempio UDP e TCP), proteggendo i pacchetti che viaggiano tra due sistemi host, tra due security gateway (ad esempio router o firewall) oppure tra sistema host e security gateway. I servizi IPSec sono garantiti da due protocolli per la sicurezza del traffico, AH (Authentication Header) ed ESP (Encapsulating Security Payload) e, in aggiunta, da altri protocolli, non facenti parte delle specifiche IPSec, dedicati alla gestione del materiale chiave, IKE (Internet Key Exchange) e ISAKMP (Internet Security Association and Key Management Protocol).
Header Authentication Header (AH) in Transport Mode Il protocollo AH (IP 51) garantisce sia per l'intestazione IP che per i dati trasportati nel pacchetto, l'autenticazione, l'integrità e la protezione contro un eventuale riutilizzo dei dati stessi. Totale 24 bytes.
Security Association (SA) e IKE IKE agisce nelle fasi iniziali della comunicazione IPSec sfruttando la creazione di Security Association, cioè accordi circa i protocolli, gli algoritmi crittografici e le chiavi da utilizzare. In pratica in una prima fase, definita come "main mode" (sei messaggi) oppure "aggressive mode" (tre messaggi), verrà dapprima creata una SA per IKE stesso (ISAKMP SA - Internet Security Association and Key Management Protocol), in modo da proteggere lo scambio dei messaggi da parte del protocollo di scambio chiave, dopo di che si passerà ad una seconda fase, che prende il nome di "quick mode" (tre messaggi). Riferimenti Black, U., Protocolli per la sicurezza in Internet, McGraw Hill, Milano, 2002. Doraswamy, N., IPSec: The New Security Standard for the Internet, Intranets, and Virtual Private Networks, Second Edition, Prentice Hall, 2003.
SSL:Presentazione del problema Ogni sistema di telecomunicazione ha sei funzioni tipicamente vulnerabili agli attacchi : identificazione e autenticazione: identificano un utente o un gruppo di utenti del sistema. controllo degli accessi: controlla e definisce i diritti di accesso. responsabilità: archiviazione delle azioni inerenti la sicurezza da parte degli utenti. riutilizzabilità degli oggetti: prevenzione del riuso delle risorse senza autorizzazione. protezione: assicura le informazioni contro eventuali attacchi. affidabilità del servizio: assicura che le informazioni siano disponibili su richiesta lecita. Per proteggere le comunicazioni sono impiegate diverse misure di sicurezza: per esempio una LAN può scegliere un firewall per proteggersi dall'esterno, quindi controllare gli accessi tramite password e chiavi private; ma questi sistemi non eliminano del tutto i rischi di attacchi alla privacy . All'esterno della LAN, se questa è collegata ad Internet, i firewalls non difendono da attacchi del tipo "l'uomo in mezzo". E' per questo motivo che i nuovi server WEB sicuri, prodotti da svariate imprese, prevedono un protocollo come SHTTP, estremamente flessibile rispetto alle esigenze degli utenti riguardo alle comunicazioni sul WWW, e come SSL che invece è più rigido ma più generale, nel senso che offre sicurezza anche per altri protocolli di livello applicazione. Dato che la fiducia è ciò che supporta gli operatori, sempre più numerosi, che decidono di sviluppare il commercio elettronico usando Internet come mezzo di comunicazione, ne consegue che rinforzare la sicurezza e ridurre le esposizioni ai rischi sono la migliore scelta possibile.
SSL e SHTTP SSL è un protocollo a livelli che deve interfacciarsi a livello più basso con un livello di trasporto affidabile come il TCP ed a livello superiore con un protocollo applicazione, per esempio HTTP, FTP, Telnet etc.; SHTTP aggiunge sicurezza ai messaggi HTTP. Ognuno di questi protocolli può esistere su un sistema indipendemente dalla presenza dell'altro. I protocolli SSL e SHTTP non sono mutuamente esclusivi, piuttosto possono facilmente coesistere in modo complementare interfacciando SHTTP su SSL. Ed in tale direzione di cooperazione e standardizzazione sembrano muoversi Netscape Communication e W3C con la collaborazione dell' IETF.
SecureSocketLayer Il protocollo SSL provvede alla sicurezza del collegamento garantendo tre funzionalità fondamentali: Privatezza del collegamento. La crittografia è usata dopo un handshake iniziale per definire una chiave segreta. Per crittografare i dati è usata la crittografia simmetrica (e.g. DES, RC4, etc.). Autenticazione. L'identità nelle connessioni può essere autenticata usando la crittografia asimmetrica, o a chiave pubblica (per es. RSA, DSS, etc.). Così i clients sono sicuri di comunicare con il corretto server, prevenendo ogni interposizione. E' prevista la certificazione sia del server che del client. Affidabilità. Il livello di trasporto include un check dell'integrità del messaggio basato su un apposito MAC (Message Authentication Code) che utilizza funzioni hash sicure (e.g. SHA, MD5, etc.). In tal modo si verifica che i dati spediti tra client e server non siano stati alterati durante la trasmissione
Obiettivi di SSL Lo scopo primario del SSL Protocol è fornire riserbo ed affidabilità alle comunicazioni. Il protocollo è composto da due strati (vedi figura ): a livello più basso, interfacciato su di un protocollo di trasporto affidabile come il TCP, c'è il protocollo SSL Record. Questo è usato per l'incapsulamento dei vari protocolli di livello superiore. Sul protocollo SSL Record si interfaccia l'SSL Handshake Protocol che permette al server ed al client di autenticarsi a vicenda e di negoziare un algoritmo di crittografia e le relative chiavi prima che il livello applicazione trasmetta o riceva il suo primo byte. Un vantaggio del SSL è la sua indipendenza dal protocollo di applicazione: un protocollo di livello più alto può interfacciarsi sul protocollo SSL in modo trasparente
Versioni di SSL Per Unix e Windows 3.1/95/NT esiste la versione SSLLeay 0.6.0 che implementa SSLv2.0, free sia per uso privato che commerciale, disponibile in forma di pre-built DLL e di codice sorgente VisualC++ : include una implementazione di DES tra le più veloci, oltre agli algoritmi di crittografia più comuni, IDEA, RC4, RSA, e MD5 . Inoltre è disponibile Secure HTTP e SSL Toolkit commercializzato da Terisa: "http://www.terisa.com/prod/prod.html" . Web server sicuri di IBM sono distribuiti per le maggiori piattaforme al sito: http://www.ics.raleigh.ibm.com/. Con questi mezzi è possibile usare, per esempio, https, cioè http con SSL, e scambiare informazioni con un client per mezzo di https. Poichè http+SSL e http sono differenti protocolli ed usano porte diverse, lo stesso sistema server può far girare contemporaneamente sia il server http+SSL che quello http. Ciò significa che un server può offrire alcune informazioni a tutti gli utenti senza sicurezza, ed altre solo in modo sicuro: ad esempio un catalogo può essere "non sicuro" mentre gli ordini ed i pagamenti devono essere protetti
SSL:soluzioni tecniche Il protocollo SSL è un protocollo a livelli; ad ogni livello i messaggi possono includere campi per la lunghezza, la descrizione ed il contenuto. SSL procede sui messaggi da trasmettere nel modo seguente: li frammenta in blocchi adeguati, eventualmente comprime i dati, applica un MAC, crittografa e infine trasmette il risultato. I dati ricevuti, viceversa, sono messi in chiaro, verificati, scompattati e riassemblati e, quindi, consegnati ai client di livello superiore. In particolare SSL prevede un handshake di "sicurezza" usato per iniziare la connessione TCP/IP: il risultato di tale handshake è la contrattazione da parte del client e del server del livello di sicurezza da usare ed il completamento delle autenticazioni necessarie alla connessione. Quindi SSL procede alla cifratura (e/o alla messa in chiaro) della sequenza di bytes del protocollo applicazione usato, ad esempio HTTP, SHTTP, NNTP o Telnet. Ciò significa che tutte le informazioni sia nell'HTTP request che nell'HTTP response sono completamente crittografate, incluso l'URL richiesto dal client, qualsiasi contenuto di forms compilati (quindi anche eventuali numeri di carte di credito...), ogni informazione sulle autorizzazioni all'accesso come usernames e passwords, e tutti i dati risposti dal server al client.
SSH L'idea di base è quella di sfruttare la funzione di forwarding del comando SSH per effettuare una connessione protetta col server remoto e una non protetta col client locale, che però essendo situato sulla stessa macchina che realizza la connessione remota non corre particolari rischi di intercettamenti. Vediamo di chiarire la cosa con un esempio concreto: una connessione POP3. Tale protocollo lavora sulla porta TCP numero 110: il nostro scopo quindi è quello di realizzare una connessione sicura tra la nostra macchina e la porta 110 del server e una connessione non sicura tra il client della posta e la porta 20000 (una porta sufficientemente alta da non influenzare altre applicazioni e da poter essere allocata da qualsiasi utente). Per fare questo utilizziamo la seguente linea di comando: ssh -f -C Server -L 20000:Server:110 sleep 10 in cui il parametro -f forza il programma in background dopo l'autenticazione col server
Prova della proc edura Un modo veloce per vedere se la procedura funziona è quello di effettuare subito un telnet sulla nostra macchina alla porta specificata e vedere se il server risponde: [~]# telnet localhost 20000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK POP3 server.univision.it v7.59 server ready quit +OK Sayonara Connection closed by foreign host.
Introduzione a SSH Caratteristiche di SSH SSH (o Secure SHell) è un protocollo che vi consente di stabilire connessioni sicure tra due sistemi mediante un'architettura client server. Nel protocollo SSH il computer client avvia tutte le connessioni con il computer server. Il protocollo SSH fornisce le seguenti misure di protezione: Dopo una connessione iniziale, il client verifica il collegamento allo stesso server durante sessioni successive. Il client trasmette le proprie informazioni di autenticazione al server, per esempio il nome utente e la password, in forma cifrata. Tutti i dati inviati e ricevuti durante la connessione vengono trasferiti utilizzando una cifratura a 128 bit. In questo modo è estremamente complesso decifrare e leggere le trasmissioni decifrate. Il client può utilizzare le applicazioni X11 [1] avviate dal prompt della shell. Questa tecnica, chiamata X11 forwarding, fornisce un'interfaccia grafica e sicura. SSH è progettato per sostituire applicazioni precedenti, meno sicure utilizzate per l'accesso a sistemi remoti come telnet o rsh. Un programma chiamato scp sostituisce i programmi meno recenti per copiare i file tra host, quali ftp o rcp. Dato che queste applicazioni non cifrano le password tra il client e il server, si consiglia di utilizzarle il meno possibile. Se usate dei metodi sicuri per collegarvi ad altri sistemi in remoto, correte meno rischi per la sicurezza del vostro sistema e del sistema a cui vi collegate
Cos’è una VPN? VPN: Acronimo di "Virtual Private Network". Rete virtuale private chiamata anche Extranet. E' un sistema per la comunicazione sicura e cifrata tra due o più siti collegati a INTERNET che permette di realizzare una rete privata protetta sull'infrastruttura pubblica VPN e' l'acronimo di Virtual Private Network, in italiano Rete Privata Virtuale. Una VPN permette a due reti private locali (LAN) di essere connesse tra loro in maniera sicura attraverso reti pubblicamente accessibili come Internet. Pertanto una VPN e' un'estensione di una rete privata su un'infrastruttura pubblica. L'utilizzo di una rete pubblica per trasmettere informazioni private, però, ha portato alla luce alcune interessanti problematiche principalmente legate all'aspetto della sicurezza.