PROXY SERVER In informatica e telecomunicazioni

Transcript

PROXY SERVER In informatica e telecomunicazioni
PROXY SERVER
In informatica e telecomunicazioni un proxy è un programma che si interpone tra un client ed un server facendo da
tramite o interfaccia tra i due host ovvero inoltrando le richieste e le risposte dall'uno all'altro. Il client si collega al proxy
invece che al server, e gli invia delle richieste. Il proxy a sua volta si collega al server e inoltra la richiesta del client,
riceve la risposta e la inoltra al client.
A differenza di bridge e router, che lavorano ad un livello ISO/OSI più basso in quanto sfruttano i NAT, i proxy nella
maggior parte dei casi lavorano a livello applicativo; di conseguenza un programma proxy gestisce un numero limitato
di protocolli applicativi.
Il protocollo SOCKS realizza invece una forma di proxy a livello di trasporto che inoltra semplicemente le
connessioni TCP e UDP tra client e server, senza analizzare i protocolli applicativi. Esistono due tipi di protocolli Socks:
1. Socks 4: permette di lavorare solo con i protocolli TCP, come HTTP (web browsing), accesso NNTP
newsgroup, IRC,
2. Socks 5: è più avanzato, permettendo di rendere anonimo anche i protocolli UDP (ICQ per esempio).
Il proxy ARP è una funzionalità che può essere adottata su alcuni router per realizzare configurazioni particolari.
Il proxy SIP è un componente di una architettura di comunicazione VoIP o multimediale, che viene usato come punto di
contatto per terminali che devono comunicare tra loro, e in alcuni casi come vero e proprio proxy tra i terminali.
Un proxy CGI consiste in un sito web attraverso il quale e' possibile navigare in rete. Per utilizzare un proxy CGI occorre
collegarsi ad un apposito sito web che ci permette, dopo aver digitato nel campo apposito l'indirizzo web che si vuole
visitare, di collegarci ad esso in modo anonimo. Su internet è possibile trovare liste di siti CGI.
Vantaggi: permettono all'utente di scegliere quali dati inviare al server (cookies, tipo di browser, etc.) nascondendo l'IP e
permettono ad un utente di rete (che non abbia i diritti di amministratore per modificare le impostazioni del browser o del
sistema operativo), di bypassare le restrizioni di navigazione imposte ed operare on-line in modo anonimo
Svantaggi: un proxy CGI potrebbe non poter gestire autonomamente cookies, referer e javascript
Un caso in cui viene spesso usato un proxy è la navigazione web (denominato proxy HTTP dal nome del protocollo
usato).
Per utilizzare un proxy è possibile configurare il client in modo che si colleghi al proxy invece che al server, oppure
definire un proxy trasparente; in questo caso, a seconda della configurazione, alcune connessioni (ad esempio quelle
HTTP) vengono automaticamente indirizzate al proxy senza che sia necessario configurare un client (quindi
l'impostazione rimane attiva anche cambiando client).
Un proxy può essere usato per una o più delle seguenti ragioni:

connettività: per permettere ad una rete privata di accedere all'esterno è possibile configurare un computer in modo
che faccia da proxy tra gli altri computer e Internet, in modo da mantenere un unico computer connesso all'esterno,
ma permettere a tutti di accedere. In questa situazione, solitamente il proxy viene usato anche come firewall.

caching: un proxy può immagazzinare per un certo tempo i risultati delle richieste di un utente, e se un altro utente
effettua le stesse richieste può rispondere senza dover consultare il server originale. Collocando il proxy in una
posizione "vicina" agli utenti, questo permette un miglioramento delle prestazioni ed una riduzione del consumo
di ampiezza di banda.

monitoraggio: un proxy può permettere di tenere traccia di tutte le operazioni effettuate (ad esempio, tutte le pagine
web visitate), consentendo statistiche ed osservazioni dell'utilizzo della rete che possono anche violare
la privacy degli utenti.

controllo: un proxy può applicare regole definite dall'amministratore di sistema per determinare quali richieste
inoltrare e quali rifiutare, oppure limitare l'Ampiezza di banda utilizzata dai client, oppure filtrare le pagine Web in
transito, ad esempio bloccando quelle il cui contenuto è ritenuto offensivo in base a determinate regole.

privacy: un proxy può garantire un maggiore livello di privacy mascherando il vero indirizzo IP del client in modo che
il server non venga a conoscenza di chi ha effettuato la richiesta.
Quando la configurazione della rete consente di collegarsi ad internet solamente attraverso un proxy, non sono
ovviamente utilizzabili molti tipi di applicazioni basate su protocolli non supportati dal proxy, ad esempio:

Giochi on-line

webcam: la ricezione e l'invio di immagini tramite webcam con programmi di messagistica istantanea

browser che non supportano la configurazione di un proxy. Questo caso è frequente su dispositivi particolari
come console per videogiochi o telefoni cellulari.

servizi VoIP

applicazioni di file sharing
Talune di queste applicazioni sono state modificate per poter far passare il proprio traffico incapsulato in HTTP e quindi
per poterlo veicolare in un proxy.
I proxy HTTP, a seconda dell'anonimato che riescono a fornire, possono essere suddivisi in:

NOA (non anonymous proxy) proxy non anonimi (o "trasparenti"): Modificano alcuni header trasmessi dal browser e
ne aggiungono altri, mostrano anche l'indirizzo IP reale del richiedente. Sono molto facili da riconoscere da parte del
server web.

ANM (anonymous proxy server) proxy anonimi: non trasmettono l'IP del richiedente, ma modificano o aggiungono
alcuni header. Sono pertanto facilmente riconoscibili.

HIA (high anonymous proxy) proxy altamente anonimi (o "elite"): non trasmettono l'IP del richiedente e non
modificano gli header della richiesta. Sono difficili da riconoscere attraverso i normali controlli.

Proxy distorcenti: trasmettono un IP casuale, diverso da quello del richiedente e modificano o aggiungono alcuni
header. Solitamente vengono scambiati per proxy Anonimi, ma offrono una protezione maggiore, in quanto il server
web vede le richieste di un utente provenienti da indirizzi IP diversi.
Esistono programmi che, basandosi sulla tecnologia peer to peer forniscono funzionalità di proxy "anonimizzante" (un
proxy che non inoltra al server l'indirizzo IP del client).
Il protocollo HTTP è stateless, ovvero una richiesta non lascia alcuno stato nel server. Tuttavia, per realizzare
applicazioni web complesse, sono stati sviluppati meccanismi a livello superiore come i cookies per costruire "sessioni".
Questi meccanismi possono permettere al server web di ottenere informazioni sul client nonostante gli sforzi fatti dal
proxy per difenderne l'anonimato, in particolare possono permettere di riconoscere un utente di un server web anche se
questi si collega da reti totalmente diverse.
Per vedere se il proxy server consente una navigazione anonima, ossia se non rivela l'IP del client a nessun altro server
della rete, è bene effettuare un "Who-is". Il server del sito per il Who-is deve restituire l'IP del proxy server; se invece,
rende visibile un IP diverso, presumibilmente si tratta di quello del client, e il test è fallito.
DNS
Il sistema dei nomi a dominio, in inglese Domain Name System (spesso indicato con DNS), è un sistema utilizzato per la
risoluzione di nomi dei nodi della rete (in inglese host) in indirizzi IP e viceversa. Il servizio è realizzato tramite
un database distribuito, costituito dai server DNS.
Il nome DNS denota anche il protocollo che regola il funzionamento del servizio, i programmi che lo implementano,
i server su cui questi girano, l'insieme di questi server che cooperano per fornire il servizio.
I nomi DNS, o "nomi di dominio", sono una delle caratteristiche più visibili di Internet.
C'è confusione in merito alla definizione dell'acronimo: la S spesso viene interpretata come service, ma la definizione
corretta è system.
L'operazione di convertire un nome in un indirizzo è detta risoluzione DNS, convertire un indirizzo IP in nome è
detto risoluzione inversa.
-
La possibilità di attribuire un nome testuale facile da memorizzare a un server (ad esempio un
sito world wide web) migliora di molto l'uso del servizio, in quanto noi esseri umani troviamo più facile
ricordare nomi testuali (mentre gli host e i router sono raggiungibili utilizzando gli indirizzi IP numerici).
Per questo, il DNS è fondamentale per l'ampia diffusione di internet anche tra utenti non tecnici, ed è
una delle sue caratteristiche più visibili.
-
È possibile attribuire più nomi allo stesso indirizzo IP (o viceversa) per rappresentare diversi servizi o
funzioni forniti da uno stesso host (o più host che erogano lo stesso servizio).
-
La risoluzione inversa è utile per identificare l'identità di un host, o per leggere il risultato di
un traceroute.
Questa flessibilità risulta utile in molti casi:
-
Nel caso il server debba sostituire il server che ospita un servizio, o si debba modificare il suo indirizzo
IP, è sufficiente modificare il record DNS, senza dover intervenire sui client.
-
Un utilizzo molto popolare di questa possibilità è il cosiddetto virtual hosting basato sui nomi, una
tecnica per cui un web server dotato di una singola interfaccia di rete e di singolo indirizzo IP può
ospitare più siti web, usando l'indirizzo alfanumerico trasmesso nell'header HTTP per identificare il sito
per cui viene fatta la richiesta.
-
Utilizzando nomi diversi per riferirsi ai diversi servizi erogati da un host, è possibile spostare una parte
dei servizi su un altro host, e spostare i client su questo nuovo host modificando il suo record nel DNS.
-
Facendo corrispondere più indirizzi IP a un nome, il carico dei client viene distribuito su diversi server,
ottenendo un aumento delle prestazioni complessive del servizio e una tolleranza ai guasti (ma è
necessario assicurarsi che i diversi server siano sempre allineati, ovvero offrano esattamente lo stesso
servizio ai client).
Il DNS viene usato da numerose tecnologie in modo poco visibile agli utenti, per organizzare le informazioni necessarie
al funzionamento del servizio.
Una zona DNS è una parte dello spazio dei nomi, costituita da un dominio e i suoi sottodomini che non sono a loro volta
delegati, che è sotto una stessa gestione amministrativa e quindi è gestita da uno o più server.
La gestione di una zona è delegata dalla zona superiore tramite dei record di tipo NS. Ad esempio, nella zona.org ci sarà
una delega per la zona wikipedia.org ai server DNS che la gestiscono. Per ragioni di ridondanza, ciascuna zona
è replicata su più server, e di conseguenza la delega è costituita da più record NS, che indicano che ciascuno dei server
indicati contiene le informazioni per quella zona (ovvero è autoritativo per la zona). All'interno di una zona possono
essere delegate delle zone di livello inferiore, ad esempio inwikipedia.org potrebbero esistere deleghe
per devel.wikipedia.org o per accounting.admin.wikipedia.org.
I diversi server che sono delegati per una zona dovrebbero contenere le stesse informazioni, in modo che uno qualsiasi
di questi possa rispondere ad una query per un record della zona.
Lo schema di replica tipicamente prevede che ci sia un server master (primario), che è quello sul quale vengono
aggiornate le informazioni, e uno o più server slave (secondari), che copiano le informazioni dal master quando
necessario. Per tener traccia delle diverse "versioni" di una zona che possono esserci in circolazione, ed in particolare
per permettere ad un secondario di decidere se deve trasferire la zona dal primario, ogni zona ha un numero di serie,
che deve essere aumentato ogni volta che vengono fatte modifiche sul primario. Per ottenere il numero di serie di una
zona presente su un server, si effettua una interrogazione di tipo SOA. Il secondario confronta il proprio numero di serie
con quello del primario, e se quello del primario è superiore trasferisce la zona.
L'operazione di copia di tutti i record di una zona dal master ad uno slave è detta zone transfer, e può essere completo
(tutto il contenuto della zona viene copiato) o incrementale (vengono copiati solo i record modificati rispetto alla versione
già presente).
Alcune implementazioni di DNS permettono di modificare le zone da qualsiasi server autorevole, propagando le
modifiche sugli altri server.
La radice (root) dell'albero dei nomi DNS è la zona . (punto), che è gestita da un insieme di server chiamati appunto root
servers.
Qualsiasi rete IP può usare il DNS per implementare un suo sistema di nomi privato. Tuttavia, il termine "nome di
dominio" è più comunemente utilizzato quando esso si riferisce al sistema pubblico dei DNS su Internet. Questo è
basato su 13 "root server" universali, i cui indirizzi IP sono distribuiti indipendentemente dal DNS tramite un file detto
"root hints" (letteralmente: indizi per la radice). Da questi server principali, il DNS viene poi delegato ad altri server DNS
che si occupano dei nomi all'interno di parti specifiche dello spazio dei nomi DNS.
Dieci dei tredici root server sono, almeno nominalmente, situati negli USA. Tuttavia, dato l'accesso a molti di essi è
realizzato tramite indirizzamento anycast, che permette di assegnare a più computer lo stesso indirizzo IP per fornire un
servizio uniforme su vaste aree geografiche, la maggior parte dei server sono in effetti localizzati al di fuori degli Stati
Uniti.
Il proprietario di un nome di dominio è rintracciabile in un database chiamato Whois: per molti domini di primo livello un
Whois base è gestito dalla IANA, con il Whois dettagliato mantenuto dall'autorità di registrazione che controlla quel
dominio. Per i più di 240 domini nazionali l'autorità di registrazione gestisce in esclusiva il Whois per il dominio di
competenza.
FIREWALL
In Informatica, nell'ambito delle reti di computer, un firewall (termine inglese dal significato originario di parete
refrattaria, muro tagliafuoco, muro ignifugo; in italiano anche parafuoco o parafiamma) è un componente passivo di
difesa perimetrale che può anche svolgere funzioni di collegamento tra due o più tronconi di rete.
Usualmente la rete viene divisa in due sottoreti: una, detta esterna, comprende l'intera Internet mentre l'altra interna,
detta LAN (Local Area Network), comprende una sezione più o meno grande di un insieme di computer locali. In alcuni
casi è possibile che si crei l'esigenza di creare una terza sottorete detta DMZ (o zona demilitarizzata) adatta a contenere
quei sistemi che devono essere isolati dalla rete interna ma devono comunque essere protetti dal firewall.
Una prima definizione chiusa di firewall è la seguente:
Apparato di rete hardware o software che filtra tutti i pacchetti entranti ed uscenti, da e verso una rete o un computer,
applicando regole che contribuiscono alla sicurezza della stessa.
In realtà un firewall può essere realizzato con un semplice computer (con almeno due schede di rete e software
apposito), può essere una funzionalità logica inclusa in un router oppure può essere un apparato specializzato. Esistono
inoltre i cosiddetti "firewall personali", che sono programmi installati sui normali calcolatori, che filtrano solamente i
pacchetti che entrano ed escono da quel calcolatore; in tal caso viene utilizzata una sola scheda di rete.
La funzionalità principale in sostanza è quella di creare un filtro sulle connessioni entranti ed uscenti, in questo modo il
dispositivo innalza il livello di sicurezza della rete e permette sia agli utenti interni che a quelli esterni di operare nel
massimo della sicurezza. Il firewall agisce sui pacchetti in transito da e per la zona interna potendo eseguire su di essi
operazioni di:

controllo

modifica

monitoraggio
Questo grazie alla sua capacità di "aprire" il pacchetto IP per leggere le informazioni presenti sul suo header, e in alcuni
casi anche di effettuare verifiche sul contenuto o payload del pacchetto.
Oltre al firewall a protezione perimetrale ne esiste un secondo tipo, definito "Personal Firewall", che si installa
direttamente sui sistemi da proteggere (per questo motivo è chiamato anche Firewall Software). In tal caso, un buon
firewall effettua anche un controllo di tutti i programmi che tentano di accedere ad Internet presenti sul computer nel
quale è installato, consentendo all'utente di impostare delle regole che possano concedere o negare l'accesso ad
Internet da parte dei programmi stessi, questo per prevenire la possibilità che un programma malevolo possa connettere
il computer all'esterno pregiudicandone la sicurezza.
Il principio di funzionamento differisce rispetto a quello del firewall perimetrale in quanto, in quest'ultimo, le regole che
definiscono i flussi di traffico permessi vengono impostate in base all'indirizzo IP sorgente, quello di destinazione e la
porta attraverso la quale viene erogato il servizio, mentre nel personal firewall all'utente è sufficiente esprimere il
consenso affinché una determinata applicazione possa interagire con il mondo esterno attraverso il protocollo IP.
Da sottolineare che l'aggiornamento di un firewall è importante ma non è così vitale come invece lo è l'aggiornamento di
un antivirus, in quanto le operazioni che il firewall deve compiere sono sostanzialmente sempre le stesse. È invece
importante creare delle regole che siano corrette per decidere quali programmi devono poter accedere alla rete esterna
e quali invece non devono.
Tipologie di firewall, in ordine crescente di complessità:

Il più semplice è il packet filter, che si limita a valutare gli header di ciascun pacchetto, decidendo quali far passare e
quali no sulla base delle regole configurate. Ciascun pacchetto viene valutato solamente sulla base delle regole
configurate, e per questo un firewall di questo tipo è detto anche stateless. Alcuni packet filter, analizzando i flag
dell'header TCP, sono in grado di discriminare un pacchetto appartenente ad una "connessione TCP stabilita
(established)" rispetto a quelli che iniziano una nuova connessione, ma non sono in grado di riconoscere un
pacchetto malevolo che finga di appartenere ad una connessione TCP stabilita. Molti router posseggono una
funzione di packet filter.

Un firewall di tipo stateful inspection, tiene traccia di alcune relazioni tra i pacchetti che lo attraversano, ad esempio
ricostruisce lo stato delle connessioni TCP.

I firewall di tipo deep inspection effettuano controlli fino al livello 7 della pila ISO/OSI, ovvero valutano anche il
contenuto applicativo dei pacchetti, ad esempio riconoscendo e bloccando i dati appartenenti a virus o worm noti in
una sessione HTTP o SMTP.

I cosiddetti Application Layer Firewall sono apparati che intercettano le connessioni a livello applicativo. A questa
categoria appartengono i proxy. In tali casi, la configurazione della rete privata non consente connessioni dirette
verso l'esterno, ma il proxy è connesso sia alla rete privata che alla rete pubblica, e permette alcune connessioni in
modo selettivo, e solo per i protocolli che supporta.
La sintassi della configurazione di un firewall in molti casi è basata su un meccanismo di lista di controllo degli
accessi (ACL), che possono essere statiche (quindi modificabili solo tramite configurazione esplicita) o dinamiche (cioè
che possono variare in base allo stato interno del sistema, come ad esempio nel Port knocking).
Una funzione spesso associata al firewall è quella di NAT (traduzione degli indirizzi di rete), che può contribuire a
rendere inaccessibili i calcolatori sulla rete interna.
Molti firewall possono registrare tutte le operazioni fatte (logging), effettuare registrazioni più o meno selettive (ad
esempio, registrare solo i pacchetti che violano una certa regola, non registrare più di N pacchetti al secondo), e tenere
statistiche di quali regole sono state più violate.
La registrazione integrale dell'attività di un firewall può facilmente assumere dimensioni ingestibili, per cui spesso si usa il
logging solo temporaneamente per diagnosticare problemi, o comunque in modo selettivo (logging dei soli pacchetti
rifiutati o solo di alcune regole). Tuttavia, l'analisi dei log di un firewall (o anche dei contatori delle varie regole) può
permettere di individuare in tempo reale tentativi di intrusione.
Talvolta ad un firewall è associata anche la funzione rilevamento delle intrusioni (IDS), un sistema basato su euristiche
che analizza il traffico e tenta di riconoscere possibili attacchi alla sicurezza della rete, e può anche scatenare reazioni
automatiche da parte del firewall (Intrusion prevention system).
Una delle vulnerabilità più conosciute di un firewall di fascia media è l'HTTP tunneling, che consente di bypassare le
restrizioni Internet utilizzando comunicazioni HTTP solitamente concesse dai firewall. Altra tipica vulnerabilità è la dll
injection, ovvero una tecnica utilizzata da molti trojan, che sovrascrive il codice maligno all'interno di librerie di sistema
utilizzate da programmi considerati sicuri. L'informazione riesce ad uscire dal computer in quanto il firewall, che di solito
controlla i processi e non le librerie, crede che l'invio ad Internet lo stia eseguendo un programma da lui ritenuto sicuro,
ma che di fatto utilizza la libreria contaminata. Alcuni firewall hanno anche il controllo sulla variazione delle librerie in
memoria ma è difficile capire quando le variazioni sono state fatte da virus.
CABLAGGIO STRUTTURATO
In telecomunicazioni e informatica il cablaggio è l'insieme degli impianti fisici (cavi, connettori, permutatori, infrastrutture
di supporto) che permettono l'interconnessione di terminali di rete sotto forma di una rete di calcolatori, tipicamente
nell'ambito di un edificio o un gruppo di edifici (campus) ovvero in una rete locale. Il termine può essere esteso anche ad
alte infrastrutture di rete locali quale ad esempio la rete elettrica locale pur con le debite differenze tecniche e
tecnologiche di interconnessione.
Le caratteristiche elettriche, le lunghezze dei cavi e dei connettori impiegati influenzano le tipologie di reti
locali realizzabili.
Tra i primi esempi di cablaggio si possono citare le prime reti ethernet (dette 10Base5, thick cable), costituite da
grossi cavi coassiali in rame, a cui i calcolatori dovevano essere collegati perforando la guaina esterna fino a
raggiungere il connettore interno. Questi cablaggi avevano una topologia a bus.
Negli edifici moderni destinati ad uffici vengono realizzati impianti di cablaggio strutturato, destinati a supportare la
realizzazione di tipi diversi di reti locali, inclusa ad esempio la rete telefonica. Gli impianti sono basati su cavi di categoria
5 o superiore e connettori RJ-45. I cavi hanno una lunghezza massima di 90 m, a cui vanno aggiunti 10 m per i cavi di
permuta (lato apparato: EC Equipment Cable, e lato terminale: WAC Work Area Cable). Questo vincolo è dettato dalle
caratteristiche della rete Ethernet.
Per ogni postazione da servire, vengono posati uno o più cavi in apposite canalizzazioni nelle pareti, nei controsoffitti o
nei pavimenti dell'edificio, fino a raggiungere un armadio di distribuzione di piano (nel gergo del cablaggio
strutturato, Floor Distributor o FD), solitamente si tratta di un rack standard da 19 pollici, che può ospitare sia permutatori
che apparati attivi.
Questi cavi sono attestati da una parte in un pannello di permutazione nell'armadio, dall'altra in una placca a muro o a
pavimento in prossimità della postazione utente. Collegando un cavo di permuta dal calcolatore alla presa a muro, e un
altro dal permutatore ad un apparato di rete (come un hub o uno switch), si crea un collegamento elettrico che permette
di collegare il calcolatore alla rete.
Nel caso le dimensioni dell'edificio non permettano di servire tutte le utenze con un solo FD, i vari FD vengono collegati
ad un armadio di edificio (Building Distributor, BD), tramite cavi in rame e/o in fibra ottica, anche questi attestati in
permutatori.
Allo stesso modo, i diversi edifici di un campus sono collegati ad un armadio di permutazione di campus, o Campus
Distributor, CD.
I locali che ospitano gli armadi di distribuzione dovrebbero avere caratteristiche adeguate per alimentazione
elettrica (meglio se protetta da un gruppo di continuità), condizionamento, controllo d'accesso (sono luoghi privilegiati per
intrusioni o per provocare malfunzionamenti della rete).