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 /var/www/html/privato mkdir 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 Andiamo a vedere quanto detto. ● ● 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