reti di calcolatori e sicurezza

“Configurare il web-server Apache”

a cura di

Luca Sozio

Un piccolo ripasso..

HTTP: hypertext transfer protocol

E il protocollo dello stato di applicazione del web

L'http è implementato in due programmi: un programma client e uno server

client: il browser richiede, riceve, “mostra” i Web objects

server: il Web server invia gli oggetti a risposta delle richieste

Un piccolo ripasso..

L'HTTP usa il TCP come protocollo di trasmissione

vediamo in breve come funziona:

Il client inizia una connesione TCP al server, sulla porta 80(di default)

Il server accetta la connessione TCP del client

Vengono quindi scambiati messaggi HTTP tra browser (HTTP client) e il Web server (HTTP server)

La connessione TCP viene chiusa

Panoramica

Spesso però è' desiderabile dispensare contenuti in funzione dell'identità degli utenti

L'HTTP fornisce due meccanismi per aiutare il server ad identificare gli utenti:

-	AUTENTICAZIONE

-	COOKIE

Autenticazione

Spesso molti siti ci richiedono agli utenti per l'accesso di fornire un

username e una password per poter accedere a contenuti del server.

In questa presentazione ci si riferirà a questi requisiti nel parlare di AUTENTICAZIONE.

La richiesta e la ricezione dell'autorizzazione avviene spesso usando speciali intestazioni e codici di stato dell'HTTP.

Ma vediamo un'esempio per capire meglio...

Autenticazione

Nel processo di autenticazione il client invia un messaggio di richiesta, il server risponde con un corpo dell'entità vuoto e un codice di stato 401 Authorization Required. In questo messaggio il server include l'intestazione WWW-Authenticate:che specifica i dettagli su come eseguire l'autenticazione.

Il client riceve il messaggio di risposta e suggerisce all'utente di inserire username e password. Il client spedisce il messaggio di richiesta ma con in più una linea di intestazione Authorization:,che comprende username e password inseriti dall'utente

- n.b. username e password sono messi nella cache del browser

Autenticazione: il SERVER

Apache è il server web più usato al mondo

Apache, quando installato, sarà in esecuzione con le impostazioni di default, alcuni di questi parametri verranno modificati per renderli adatti alle nostre esigenze.

Il file di configurazione: /etc/httpd/conf/httpd.conf

Creazione di Aree Private

Apache da la possibilità di creare delle sezioni di un sito il cui accesso è consentito solo ad alcuni utenti a seguito dell'immissione di una login e di una password:

Creiamo una directory da proteggere mkdir /var/www/html/privato

Per applicare regole di autenticazione alla cartella bisogna intervenire sul file di configurazione di apache <Directory "/var/www/html/privato"> AllowOverride All </Directory>

Il file .htaccess

All'interno della cartella privato va creato un file .htaccess AuthName "Area Privata" AuthType Basic AuthUserFile /etc/httpd/webpasswd require valid-user

Procediamo quindi alla creazione degli utenti: touch /etc/httpd/webpasswd

e all'inserimento degli utenti htpasswd /etc/httpd/webpasswd nome nuovo utente

Sottodirectory private

Supponiamo di creare due sottodirectory private “reti” e “sicurezza” mkdir /var/www/html/privato/reti mkdir /var/www/html/privato/sicurezza

In ognuno di essi andrà creato un file .htaccess AuthName "Area Privata" AuthType Basic AuthUserFile /etc/httpd/webpasswd require user utente1 utente2

Se il numero di utenti dovesse crescere in modo elevato ed alcuni di questi richiedessero l'accesso ad entrambe le directory invece che aggiungere i nomi manualmente si può utilizzare una nuova direttiva: require Group che permette di suddividere gli utenti per gruppi.

Conclusioni

L'HTTP esegue una forma di autenticazione piuttosto debole, che non è difficile da agirare

Esistono schemi di autenticazione più robusti e sicuri per l'autenticazone

- Apache-ssl

- Crittografia a chiave pubblica

- Crittografia a chiave simmetrica

- Firma digitale

Andiamo a vedere quanto detto.

2004-10-05T17:45:54