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