Apache e SSL - I



Una tra le maggiori limitazioni dell'Internet attuale è rappresentata dal fatto che i dati tra client e server vengono inviati in chiaro, ovvero senza alcun meccanismo che possa preservare il dato dall'essere letto ed interpretato da chiunque riesca nell'intento di carpirlo. Eventualità forse rara ma non difficile da realizzarsi, e particolarmente facile nell'ambiente di una rete locale (sniffing).

SSL è un protocollo di livello intermedio tra TCP e protocolli applicativi (HTTP compreso) che fornisce ad essi il supporto necessario alla cifratura dei dati senza modificarne l'implementazione.

Questo protocollo:

  • protegge i dati in transito;
  • garantisce l'identità delle parti (generalmente solo del Web server).

Apache2 su Debian è configurato per avere di default il supporto per l'SSL (OpenSSL).

Il funzionamento

L'implementazione SSL per Web server si basa sui concetti di crittografia RSA a chiave pubblica e privata (di cui si dà per nota la logica sottostante) e di certificato X.509, il quale rappresenta un sistema col quale l'identità del server viene verificata.

Una entità terza (certification authority, CA) universalmente riconosciuta, si occupa, inizialmente ed una volta sola (previa scadenza del riconoscimento), di verificare la nostra identità e di convalidare la nostra richiesta di certificato ritornandoci il certificato da essa firmato.

La richiesta di certificato (certificate-signing request, CSR) include i dati del nostro server e la chiave pubblica dello stesso.

Quindi

  • CSR contiene (dati_identità_server + chiave_pubblica_server);
  • CRT = contiene (CSR + firma_ca).

Il browser, appena stabilita una comunicazione HTTP su tunnel SSL (visualizzata sul browser con il prefisso https:// e diretta verso la porta 443) col nostro Web server, visiona il suo certificato, che riconosce come valido o no interpretando, tramite crittografia a chiave pubblica, la firma dalla CA. Gli è possibile perché è ad esso nota la chiave pubblica della CA.

A verifica ultimata con successo, client (che conosce ora con certezza la chiave pubblica del server) e server negoziano un più veloce sistema di crittografia a chiave privata col quale cifreranno i dati scambiati fino alla chiusura della comunicazione.

La pratica

Vedremo ora come utilizzare un tunneling SSL per i dati scambiati con il nostro Web server.

Le uniche azioni a noi richieste sono l'importazione (o la generazione) di un certificato e la configurazione del modulo mod_ssl di Apache.

Utilizzeremo un nostro certificato (self-signed certificate); non essendo tale certificato tuttavia convalidato da una CA, il suo funzionamento sarà sì regolare (proteggerà i dati in transito) ma gli utenti verranno avvisati dal browser di non essere in presenza di una firma riconosciuta come valida (ovvero l'identità del server non sarà provata) in sede di visualizzazione del programma Web.

Per la creazione di un "vero" certificato, dovremo rivolgerci appunto ad una CA che, previo pagamento, ci riconoscerà un certificato valido a tutti gli effetti.

Ultimi articoli Sicurezza

Nmap: tecniche per evadere un firewall

Vediamo come sfuggire ai controlli di un firewall utilizzando Nmap.

Sfruttare vulnerabilità XSS con BeEF

Usiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross...

Trojan Flashback: rimuoverlo da Mac OS X

Individuiamo e rimuoviamo il trojan Flashback da Mac OS X

Individuare vulnerabilità in Joomla con JoomScan

Usiamo JoomScan per verificare la sicurezza di Joomla e la presenza...

XSS: attacchi avanzati

Approfondiamo le vulnerabilità Cross Site Scripting analizzando...

Altri articoli

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto