Sicurezza del Web server
Transcript
Sicurezza del Web server
24/10/12 Elementi di Sicurezza e Privatezza Laboratorio 3 - Web Server Apache (1) Chiara Braghin [email protected]! Sicurezza del Web server 1 24/10/12 Sicurezza Web Server (1) • Perché attaccare un Web server? w Per ottenere accesso ad una rete interna (LAN) w Sono host esposti al pubblico e spesso intrinsecamente vulnerabili w Attaccare usando le porte standard di HTTP (80, 81, etc.) è più facile che attaccare da dietro un firewall Sicurezza Web Server (2) • Cosa fare una volta compromesso un WS? w Manipolare il server e trafugare informazioni § modificare contenuto di pagine Web § cancellare il contenuto del sito § trafugare informazioni sensibili § usare l’host come base per lanciare attacchi contro altri sistemi § sniffing w Denial of Service 2 24/10/12 Sicurezza Web Server (3) • A che livello si compiono gli attacchi? w Sistema operativo w Servizio HTTP o altri servizi di rete (SMTP, FTP, database, etc.) w Programmi/interpreti e script usati per la generazione del contenuto del sito w Dispositivi di controllo degli accessi (router e firewall) Sicurezza Web Server (4) • Come progettare un WS sicuro? w SO: § No vulnerabilità note § Oculata gestione di utenti e permessi § Controllo delle risorse e delle autorizzazioni degli utenti w Configurazione di rete: § Bloccare il traffico UDP, TCP e ICMP non strettamente necessario w Configurazione del WS: § Disabilitare i servizi di rete non essenziali § Definizione di una corretta politica che regoli l’accesso alle risorse w Uso di script regolato e attento w Uso di meccanismi di logging e di auditing 3 24/10/12 Caso di studio: Apache Web Server References • Pagina web di Apache w http://httpd.apache.org! • Pagina relativa al modulo di autenticazione w http://httpd.apache.org/docs/2.2/howto/auth.html! • Articoli interessanti su Apache w http://www.apacheweek.com/ 4 24/10/12 Apache Web Server- Storia (1) • Il suo sviluppo è curato dalla Apache Software Foundation, un' organizzazione no-profit • Nasce nell’aprile 1995 come evoluzione di httpd 1.3, sviluppato dal NCSA (National Center for Supercomputing Applications) w ne ingloba le carrateristiche, risolvendo i problemi ed implementando nuove feature w da qui il nome: A PAtCHy sErver! (in realtà il nome in onore della tribù di nativi americani) Apache Web Server- Storia (2) • Nel dicembre 1995 viene rilasciata la versione 1.0 del server Apache completamente indipendente dal codice della NCSA w Il Web server è free e open source • È un progetto nato per creare un webserver stabile, affidabile e veloce per piattaforme Unix (funziona anche su Windows) 5 24/10/12 Apache - Caratteristiche (1) • È un Web server che utilizza il protocollo HTTP w gira come un processo standalone che sulla base delle impostazioni contenute nel file di configurazione (httpd.conf o apache2.conf) permette l’accesso a uno o più siti • Ha una struttura modulare per una più semplice ed efficace gestione Apache - Caratteristiche (2) • L’architettura modulare permette a chiunque di aggiungere nuove funzionalità al server w I moduli possono venire rimossi o rimpiazziati, se ne possono aggiungere di nuovi • Ci sono alcuni moduli standard inclusi nella distribuzione, altri sono scritti da sviluppatori esterni e non sono garantiti w mod_access (dalla versione 2.1 mod_authz_host) w mod_auth (dalla versione 2.1 mod_auth_basic e mod_auth_digest) 6 24/10/12 Controllo degli Accessi (1) • Il WS Apache è configurato inserendo delle direttive (o regole) nei file di configurazione che sono file di testo w Il file di configurazione principale è apache2.conf (httpd.conf) § La locazione del file è stabilita a tempo di compilazione, dipende dalla distribuzione w Si possono aggiungere altri file di configurazione usando la direttiva Include w File incluso per default: /etc/apache2/sitesavailable/000-default! Controllo degli Accessi (2) • Il WS permette una gestione distribuita e decentralizzata della configuazione mediante l’uso di file “speciali” inseriti nel Web tree w di solito i file speciali sono chiamati .htaccess w usando la direttiva AccessFileName si può indicare un nome diverso w le direttive nel file .htaccess si applicano alla directory in cui viene messo il file, e alle sotto-directory 7 24/10/12 Controllo degli Accessi (3) w NB1: il file .htaccess viene letto ad ogni richiesta quindi le modifiche hanno effetto immediato w NB2: il file segue la stessa sintassi degli altri file di configurazione w NB3: bisogna comunicare al server che deve cercare gli eventuali file .htaccess! § AllowOverride All Controllo degli Accessi (4) • Le direttive per il controllo degli accessi possono essere: w Host-based: le regole vengono definite in base all’indirizzo IP, al nome di dominio o al valore di una variabile d’ambiente del richiedente w User-based: regole definite in base all’identità dell’utente (richiedono autenticazione) 8 24/10/12 Direttive Principali • Allow (= permetti) w determina chi può accedere ad una risorsa" • Deny (= nega) w determina a chi è negato l’accesso ad una risorsa • Order" w stabilisce l’ordine di valutazione delle direttive allow e deny" Allow • Sintassi:" w Allow from hosts | env=variabile" w Dove: § hosts = host1 host2 host3 (lista di host) § hosti = • all • • • • • nome di dominio completo ( mioserver.miodominio.it ) nome di dominio parziale ( miodominio.it o .org ) indirizzo IP completo ( 217.199.180.21 ) pattern IP ( 217.199.180 ) rete/maschera ( 192.20.250.0/255.255.255.0 ) § variabile = variabile di ambiente basata sull’header HTTP • BrowserMatch MSIE ms_browser! • SetEnvIf Referer www\.miosito\.it internal_pg 9 24/10/12 Deny • Sintassi:" w Deny from hosts" w Dove: § hosts = host1 host2 host3 (lista di host) § Hosti = " • all ! • • • • • nome di dominio completo ( mioserver.miodominio.it ) nome di dominio parziale ( miodominio.it o .org ) indirizzo IP completo ( 217.199.180.21 ) pattern IP ( 217.199.180 ) rete/maschera ( 192.20.250.0/255.255.255.0 ) § variabile = variabile di ambiente basata sull’header HTTP" Order • Sintassi:" w Order tipo_ordine" w Dove: § tipo_ordine =" • Deny,Allow: deny viene valutata prima di allow, l’accesso è permesso di default (politica aperta)" • Allow,Deny: allow viene valutata prima di deny, l’accesso è negato di default (politica chiusa) • Mutual-failure: solo gli host della lista di allow che non compaiono in deny hanno il permesso di accedere 10 24/10/12 Esempi • • • • • Allow Allow Allow Allow Uso di from all! from miodominio.it! from .org altrodominio.biz from 217.171.50 62.110 variabili 1: BrowserMatch MSIE ms_browser! Allow from env=ms_browser! • Uso di variabili 2: ! SetEnvIf Referer www\.miosito\.it internal_pg! Allow from env=internal_pg! • Uso di Order: Order Deny/Allow! Deny from all! Allow from dominiofidato.it! Granularità delle regole di accesso (1) • Se le direttive si trovano nel file .htaccess c’è già un’indicazione dello scope • Altrimenti, altre direttive: w Directory: le direttive si applicano alla directory indicata e alle sue sottodirectory w Files: le direttive influenzano tutti i file corrispondenti al nome indicato w Location: si riferisce allo “spazio Web” w Limit: restringe l’uso dei metodi HTTP 11 24/10/12 Granularità delle regole di accesso (2) • Sintassi:" w <Directory /web > direttive principali </ Directory>" w <Files index.html> direttive principali </ Files>" w <Location /prova> direttive principali </ Location>" w <Limit POST PUT> direttive principali </ Limit>" Granularità delle regole di accesso (3) 12 24/10/12 Granularità delle regole di accesso (4) Granularità delle regole di accesso (5) 13 24/10/12 Esempi (1) • 1: <Directory /dir_controllata>! Order Allow,Deny! </Directory> ! • 2: <Directory /miosito/dir_controllata>! Order Allow,Deny! Allow from dominiofidato.it! Deny from escluso.dominiofidato.it! </Directory> ! Esempi (2) • 3:" <Limit POST PUT>! Order Deny,Allow! Deny from all! Allow from dominiofidato.it! </Limit>" • 4:" <Files nonsitocca.html>! Order allow,deny! Deny from all! </Files>! 14 24/10/12 Valutazione file .htaccess! • Data una richiesta di accesso ad un file la valutazione parte dalla directory dove si trova il file e sale fino alla radice del server " w I file .htaccess vengono combinati secondo il principio most specific takes precedence " w L’ordine di valutazione caso di utilizzo contemporaneo di diversi “contenitori” è <Directory>, <Files> e <Location>" Apache e Ubuntu (1) • Il Web Server Apache2 è disponibile per Ubuntu Linux • Per installare Apache2: w Da linea di comando inserire il seguente comando (a meno che non si sia già root): § sudo apt-get install apache2 • Il file di configurazione principale (apache2.conf) si trova in: w /etc/apache2/apache2.conf 15 24/10/12 Apache e Ubuntu (2) • Document root (del Web document tree) w /var/www! • Come far partire il server? w ps aux per vedere se è già in esecuzione! w sudo /etc/init.d/apache2 start! w sudo /etc/init.d/apache2 restart! • Come vedere le pagine? w http://localhost/! w http://127.0.1.1/ Apache e Ubuntu (3) • Quale versione di Apache? w apache2 -v! chiara@ubuntu:/etc/apache2$ apache2 -v! Server version: Apache/2.2.17 (Ubuntu)! Server built: Feb 22 2011 18:34:09 • Quali librerie già installate? w apache2 -l! chiara@ubuntu:/etc/apache2$ apache2 -l! Compiled in modules:! !core.c! !mod_log_config.c! !mod_logio.c! !worker.c! !http_core.c! !mod_so.c! 16 24/10/12 Esercizi in laboratorio Esercizi (1) Usando il file di configurazione principale e file .htaccess separati: 1. Creare 2 directory, imgs e docs, nella root directory di Apache. Dentro imgs mettere alcuni file jpeg e un file index.html, in docs mettere solo alcuni file html 2. Fare in modo che nella directory imgs sia possibile visualizzare solo i file jpeg 3. Aggiungere una direttiva in modo che anche il file index.html inserito nella directory imgs sia visibile (mentre tutti gli altri eventuali file .html non siano accessibili) 4. Fare in modo che i file in docs siano visibili solo a richieste che provengono dal vostro indirizzo IP (ottenuto usando il comando ifconfig) 17 24/10/12 Esercizi (2) 5. Nella direttiva <Directory> si deve usare il path assoluto o quello relativo? Giustificare la risposta. 6. Cercare nello user manual a cosa serve la parola chiave Indexes. Provare ad utilizzarla. 7. Quali sono i permessi minimi che si devono dare ad un file e ad una directory nel Web tree per fare in modo che vengano letti tramite richiesta HTTP? 18