Configurazione di sicurezza di XAMPP Andrea Atzeni (shocked@polito.it) Marco Vallini (marco.vallini@polito.it) Politecnico di Torino Dip. Automatica e Informatica
Siti web sicuri alcuni siti web possono gestire informazioni sensibili necessario garantire confidenzialità autenticazione client server integrità protezione da attacchi replay cancellazione di pacchetti autenticità dei dati controllo degli accessi...
Apache controllo accessi basic authentication modalita storica di HTTP messaggi (e credenziali) di autenticazione in chiaro semplice (no cookie, form di login, certificati,...) molto insicuro (password in chiaro!) digest authentication digest di password e altri dati usati come autenticatore limitato SSL client authentication autenticazione con sfida asimmetrica (certificato sul client)... più tutta la sicurezza di SSL
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so attivazione mod_auth_basic e mod_authn_file <VirtualHost *:80> <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so URL di applicabilità <VirtualHost *:80 > <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so nome del reame <VirtualHost *:80> <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so tipo di autenticazione <VirtualHost *:80> <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so file con credenziali (user/pass) <VirtualHost *:80> <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache - basic authentication LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so quali utenti possono accedere alla risorsa <VirtualHost *:80> <Location /> AuthName "My Protected Area" AuthType Basic AuthUserFile c:\xampp\htdocs\xampp\htpassword\.htpasswd require valid-user </Location> </VirtualHost>
Apache creazione credenziali (basic authn) occore creare un file con coppie username/password tramite il comando htpasswd apposito per creare e aggiornare lista di utenti per BA lista di coppie user:password (una per riga) aggiorna e crea file (no DB) C:\xampp\apache\bin\htpasswd.exe (MS Windows) esempio htpasswd.exe c m b.htpasswd admin admin_pass posizione file risultante indicata tramite AuthUserFile
Apache - digest authentication LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so attivazione mod_auth_digest e mod_authn_file <VirtualHost *:80> <Location /> AuthType Digest AuthName "private area" AuthDigestProvider file AuthUserFile "c:\xampp\htdocs\xampp\htpassword\.htpasswd_dg" Require valid-user </Location> </VirtualHost>
Apache - digest authentication LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so accesso a file per le credenziali <VirtualHost *:80> <Location /> AuthType Digest AuthName "private area" AuthDigestProvider file AuthUserFile "c:\xampp\htdocs\xampp\htpassword\.htpasswd_dg" Require valid-user </Location> </VirtualHost>
Apache - digest authentication LoadModule auth_digest_module modules/mod_auth_digest.so file con credenziali (user/digest ) <VirtualHost *:80> <Location /> AuthType Digest AuthName "private area" AuthDigestProvider file AuthUserFile "c:\xampp\htdocs\xampp\htpassword\.htpasswd_dg" Require valid-user </Location> </VirtualHost>
Apache creazione credenziali (digest authn) occore creare file di coppie username/password tramite il comando htdigest apposito per creare e aggiornare lista di utenti per DA lista di coppie user:digest (una per riga) aggiorna e crea file (no DB) C:\xampp\apache\bin\htdigest.exe (MS Windows) esempio htdigest.exe c.htpasswd_dg "private area" admin posizione file risultante indicata tramite AuthUserFile
Apache HTTPS soddisfa i requisiti di sicurezza autenticazione (server, server+client) autenticazione ed integrità dei messaggi riservatezza dei dati trasmessi protezione da replay e da filtering mediante l uso dei protocolli SSL/TLS applicati a HTTP SSL v2 (obsoleto e altamente deprecato) e v3 (obsoleto) TLS (evoluzione di SSL) implementati con OpenSSL tramite il modulo mod_ssl mod_ssl interfaccia tra Apache e OpenSSL
Apache HTTPS uso di crittografia simmetrica e asimmetrica richiede certificati digitali a chiave pubblica almeno per il server (server authentication) opzionalmente, per client e server (mutual authentication) validi non scaduti non revocati adatti allo scopo riconosciuti presente nella lista dei certificati accettati e/o firmati da una CA fidata
Apache HTTPS binding Listen [::]:443 Listen 127.0.0.1:443 sintassi Listen inalterata 443 porta di default per HTTPS Listen 580 Listen 8080 Listen 192.168.0.1:8080 Listen 80
Apache HTTPS binding Listen [::]:80 Listen 127.0.0.1:80 Listen 580 ma in linea di principio possibile Listen 8080 porsi in ascolto su qualsiasi porta Listen 192.168.0.1:8080 Listen 80
Apache HTTPS virtual host binding tra porta in ascolto e TLS/SSL <VirtualHost _default_:443> ServerAdmin webmaster@ilmiosito.it ServerName www.ilmiosito.it DocumentRoot "C:\xampp\htdocs\ilmiosito.it\" ErrorLog "C:\xampp\apache\logs\ilmiosito.it\error.log" #Server Certificate: SSLCertificateFile "conf/ssl.crt/server.crt #Server Private Key: SSLCertificateKeyFile "conf/ssl.key/server.key #Certificate Authority (CA): SSLCACertificatePath "c:/apache24/conf/ssl.crt" </VirtualHost>
Apache direttive HTTPS direttiva SSLEngine Sintassi: SSLEngine on off optional usata per attivare l uso di SSL/TLS direttiva SSLCertificateFile sintassi: SSLCertificateFile file-path file con il certificato per autenticazione server Opzionalmente, puo includere la chiave privata del server direttiva SSLCertificateKeyFile sintassi: SSLCertificateKeyFile file-path file con la chiave privata del server direttiva SSLCipherSuite SSLCipherSuite cipher-spec lista di ciphersuite accettabili dal server
Apache cartelle e direttive HTTPS Direttiva SSLCACertificateFile sintassi: SSLCACertificateFile file-path file con i certificati delle CA fidate per autenticazione client Direttiva SSLCACertificatePath sintassi: SSLCACertificateFile directory-path cartella con i certificati delle CA fidate per autenticazione client... revocation, cache, crypto HW,...
Avvio di Apache (HTTPS) avvio di Apache
Avvio di Apache Apache avviato (HTTPS su porta 443)
Apache file di configurazione HTTPS
Apache SSL/TLS virtual host <VirtualHost _default_:443> ServerAdmin webmaster@ilmiosito.it ServerName www.ilmiosito.it DocumentRoot "C:\xampp\htdocs\ilmiosito.it\" attivazione SSL/TLS SSLEngine on #Server Certificate: SSLCertificateFile "conf/ssl.crt/server.crt" #Server Private Key: SSLCertificateKeyFile "conf/ssl.key/server.key" #Certificate Authority (CA): SSLCACertificatePath "C:/Apache24/conf/ssl.crt" </VirtualHost>
Apache SSL/TLS virtual host <VirtualHost _default_:443> ServerAdmin webmaster@ilmiosito.it ServerName www.ilmiosito.it DocumentRoot "C:\xampp\htdocs\ilmiosito.it\" SSLEngine on certificato X.509 del server web #Server Certificate: SSLCertificateFile conf/ssl.crt/server.crt #Server Private Key: SSLCertificateKeyFile C:\xampp\apache\conf\ssl.crt\ conf/ssl.key/server.key #Certificate Authority cartella (CA): di default (MS Windows) SSLCACertificatePath C:/Apache24/conf/ssl.crt </VirtualHost>
Apache SSL/TLS virtual host <VirtualHost _default_:443> ServerAdmin webmaster@ilmiosito.it ServerName www.ilmiosito.it DocumentRoot "C:\xampp\htdocs\ilmiosito.it\" SSLEngine on chiave privata del server web #Server Certificate: SSLCertificateFile "conf/ssl.crt/server.crt #Server Private Key: SSLCertificateKeyFile "conf/ssl.key/server.key" #Certificate Authority (CA): SSLCACertificatePath "c:/apache24/conf/ssl.crt" </VirtualHost>
Apache SSL/TLS virtual host <VirtualHost _default_:443> ServerAdmin webmaster@ilmiosito.it ServerName www.ilmiosito.it DocumentRoot "C:\xampp\htdocs\ilmiosito.it\" certificato della CA fidata SSLEngine on (client authentication) #Server Certificate: SSLCertificateFile "conf/ssl.crt/server.crt #Server Private Key: SSLCertificateKeyFile "conf/ssl.key/server.key" #Certificate Authority (CA): SSLCACertificatePath "c:/apache24/conf/ssl.crt" </VirtualHost>