# Captive portal

Un Captive portal è una pagina web che viene mostrata agli utenti di una rete di telecomunicazioni quando tentano di connettersi ad Internet mediante una richiesta http del loro browser. Questo meccanismo forza la visualizzazione di tale pagina (usualmente finalizzata all'autenticazione degli utenti) prima di poter accedere alle risorse internet, tipicamente la fruizione del web.

## Funzionamento

Il termine "captive" (bloccato, chiuso), deriva dal fatto che la navigazione libera è disabilitata finché non si accettano determinate condizioni. Ciò si ottiene intercettando tutti i pacchetti, relativi a indirizzi e porte, fin dal momento in cui l'utente tenta l'accesso alla rete o apre il proprio browser per navigare. Il captive portal è presentato all'utente e solitamente allocato sul gateway della rete o sul server web che ospita la pagina che ha richiesto l'utente, o nei casi piu semplici, direttamente sul router. A seconda delle specifiche settate nel gateway, le porte TCP (Transmission Control Protocol) o i siti web, possono essere inseriti in whitelist in modo che quando l'utente tenta l'accesso, venga reindirizzato al captive portal relativo. L'Indirizzo MAC di un utente autenticato, può essere usato per bypassare il processo di login.

## Uso

I captive portal sono comunemente utilizzati per presentare una pagina di login che può richiedere l'inserimento di password, pagamenti, accettazione di EULA/policy, o altre credenziali dell'utente che intende accedere. I captive portal sono impiegati per un ampio set di servizi, inclusi esercizi commerciali o hotspot domestici wifi o cablati. Un captive portal può anche essere usato per fornire l'accesso per reti cablate aziendali o residenziali (appartamenti, centri commerciali, hotel, stazioni balneari, ecc) o scolastiche/universitarie o presso sedi di enti pubblici e di associazioni; si può ritrovare anche in spazi pubblici in cui è offerta alle persone la connessione internet. I captive portal sono ampiamente adottati anche in reti wireless aperte dove agli utenti è mostrato un messaggio di benvenuto, che li informa delle condizioni di accesso (porte consentite, responsabilità, etc.). Gli amministratori tendono ad adottare questa politica in modo che gli utenti che si connettono alla rete si assumano le responsabilità delle loro azioni al fine di evitare qualche problema maggiore.
I captive portal hanno avuto un incremento presso i free open wireless network dove al posto dell'autenticazione degli utenti viene semplicemente mostrata una pagina di accettazione delle condizioni d'uso. Anche se la legge al riguardo è ancora poco chiara (specialmente negli USA) è pensiero comune che forzare gli utenti ad accettare le condizioni d'uso del provider sollevi quest'ultimo da particolari obblighi di legge.

### Possibili anomalie

Può succedere che all'atto dell'accesso l'utente riceva dal browser dei messaggi di errore e relativa impossibilità di conclusione dell'autenticazione. Quello tipico è quello relativo all’utilizzo di un certificato digitale non valido o ad un’autorità di certificazione non riconosciuta. Ad esempio, accade qualora la pagina del captive portal sia pubblicata in http ma il browser sia impostato (criteri di sicurezza relativi al DNS) perché accetti solo indirizzi in https o sul gateway non sia stata selezionata la risoluzione automatica in https. In questi casi è sufficiente forzare l'indirizzament in http (si può anche digitare la URL http://neverssl.com) o disabilitare temporaneamente la sicurezza sul DNS e relativo certificato. Oppure, se configurati dall'utente, non usare DNS alternativi (ad esempio quello di Google o di openDNS) ma impostare l'indirizzamento totalmente automatico via DHCP (l'altermativa sarebbe quella di usare il protocollo DNS-over-HTTPS a livello di browser o di sistema operativo in modo da superare l'eventuale blocco sul router all'uso di DNS alternativi).
Un altro è quello per cui, una volta connessi alla rete wireless, non si apre in automatico la pagina (del browser predefinito) del captive portal con la quale eseguire l'autenticazione: a volte, è sufficiente eseguire la disconnessione e nuovamente la connessione.

### Impiego in marketing ed analytics

Spesso i captive portal sono utilizzati per la comunicazione commerciale e di marketing. In questo caso, l'accesso a internet tramite wifi aperto è proibito sino a quando l'utente non fornisce i propri dati, riempiendo il form di registrazione. Il form online si apre automaticamente nel browser del dispositivo o appare quando l'utente prova a visitare una pagina web tramite il suo browser.
Il captive portal è anche uno strumento per segmentare gli utenti. Oltre a fornire i dati necessari all'autenticazione, i captive portal possono essere predisposti ad ottenere anche altre informazioni (anagrafiche, geografiche, ecc.). Questo consente di generare statistiche per chi gestisce la rete.
Il meccanismo del captive portal consente inoltre al provider del servizio di far visualizzare o inviare pubblicità agli utenti che sono connessi.

## Implementazione

Ci sono diversi modi per implementare captive portal:

### Ridirezione HTTP

Si tratta del metodo più comune: direzionare tutto il traffico web su un server, che restituisce una ridirezione http ad un captive portal. Per rendere attivo un captive portal, si fa ricorso all'utilizzo di un gateway che funge da router di default per la rete. Quando un dispositivo, abilitato per la navigazione internet si connette per la prima volta ad una rete, esso invia una request http (well known host + URI) e, in condizioni normali, riceve un http status code di 204. Questo gateway ha il compito di bloccare il traffico IP verso l'esterno e catturare ogni request http o https verso le porte TCP 80 e 443, che ridireziona ad un web server. Questo server fa quindi visualizzare ai client il captive portal, con codice di ritorno http di 302. Se l'utente accede con le sue credenziali, il web server riferisce al gateway che il client ha l'autorizzazione alla navigazione e sono inibiti i filtri per il traffico per quell'utente.

### Ridirezione ICMP

Il traffico del client può anche essere ridirezionato utilizzando un reindirizzamento ICMP sul terzo livello di layer.

### Ridirezione del DNS

Quando un client richiede una pagina web, il DNS è interrogato dal browser. In un setup che prevede l'utilizzo di un captive portal, il firewall assicurerà che solo il server DNS fornito dal DHCP della rete, potrà essere usato da un client non autenticato (o in alternativa, esso ridirezionerà tutte le request dei client non autenticati verso quel server DNS). Il server DNS restituirà' l'indirizzo IP della pagina del captive portal come un risultato del lookup di tutti i DNS, fintanto che i client non sono autorizzati all'accesso.
Il captive portal usa una tecnica analoga al DNS hijacking per effettuare un'azione simile ad un attacco man in the middle nei confronti degli utenti non autenticati. Per limitare l'impatto della manomissione del DNS è utilizzato un TTL di 0.

## Sicurezza
### Attacchi di spoofing

La maggior parte delle implementazioni di captive portal richiede agli utenti di superare una pagina SSL di login criptata, dopo la quale il loro indirizzo IP e MAC sono abilitati a passare attraverso il gateway. È stato dimostrato che questo tipo di accesso è facilmente attaccabile tramite un semplice packet sniffer. Una volta ottenuti IP e indirizzi MAC di altri dispositivi già autenticati e connessi, chiunque dotato di mezzi e conoscenza tecnica può superare i controlli falsificando le proprie credenziali (spoofing) con quelle degli utenti autorizzati e attraversare indisturbato il gateway. Per questa ragione sono state create alcune soluzioni di autenticazione estesa per limitare i rischi di usurpazione di captive portal. Una possibile soluzione a questo problema consiste nell'utilizzare una finestra di controllo che continuamente rinnova l'autenticazione mandando al gateway un pacchetto criptato. Tale tecnica è implementata per esempio nel captive portal di Zeroshell.

### Attacchi DNS

I captive portal sono noti per avere il set di regole del firewall incompleto. In alcune configurazioni, il set di regole instrada le richieste al DNS, dai client ad internet oppure il DNS individuato fornisce un DNS arbitrario al client. In questo caso un client può bypassare un captive portal ed avere accesso libero ad internet, con un traffico di tunneling arbitrario dentro ai pacchetti del DNS (porta 53).
L'amministratore, non può bloccare tale porta poiché il client deve poter risolvere nomi di dominio; può optare per le restrizione delle regole di accesso al DNS. In modo tale da permettere solo al server stesso di accedervi, poi, il server distribuisce ai client gli IP ricavati dalle interrogazioni di quel DNS.

### Attacchi tramite clonazione di MAC address

Un captive portal che usa indirizzi MAC per tracciare i dispositivi connessi può spesso essere aggirato connettendo un router che consente l'impostazione degli indirizzi MAC. Una volta che un dispositivo è stato autenticato al captive portal, il suo indirizzo MAC può essere immesso nel router, che verrà in questo modo, autorizzato alla navigazione.

### Attacchi agli account

Alcuni captive portal possono essere configurati per consentire agli utenti appropriatamente equipaggiati, di autenticarsi automaticamente (ad esempio un computer aziendale nella rete dell'azienda). User agent e applicazioni supplementari (come Apple Captive Portal Assistant), possono, a volte bypassare la visualizzazione di un captive portal contro la volontà dell’operatore di servizio, per il tempo in cui si hanno le credenziali corrette. L'autenticazione avviene anche quando questi utenti provano ad autenticarsi con credenziali scorrette, con comportamenti risultanti come la conseguenza di una chiusura incondizionata dell'account associato a tali credenziali.

### Attacchi al proxy

Se è aperta la porta 22 (ssh), molti server consentono la creazione di un tunnel cifrato tra due host. Questo tunnel può essere utilizzato per configurare le opzioni del proxy del server. Si può quindi settare questo proxy con richieste dirottate su un server esterno, bypassando le restrizioni delle porte http ed https. Allo stesso modo se è aperta la porta 3128 (proxy).
In definitiva, per effettuare un attacco volto ad aggirare un captive portal, può semplificare di molto le cose, fare uno scanning delle porte aperte.

### Protezione

Talvolta, l'utilizzo di tecniche di protezione del Layer 2, come WPA e WPA2 non sono adottabili per via del loro processo di setup oneroso per l'utente. Ad ogni modo, la loro adottabilità dipende dall'utilizzo di hardware (schede di rete ed access point) e di sistemi operativi che siano in grado di supportare i suddetti protocolli. Sovente, è comunque necessario un sistema di sicurezza svincolato dal canale di comunicazione sia esso wireless o via cavo. Spostare il controllo degli accessi dal livello 2 al livello 3 (del modello OSI), si può rivelare una politica vincente.

## Limiti

I captive portal richiedono l'utilizzo di un browser; questa è solitamente la prima applicazione che gli utenti utilizzano quando si interfacciano alla rete internet. Gli utenti che utilizzano per prime applicazioni di email, o di altro tipo, possono riscontrare che queste non funzionino a causa della connessione inspiegabilmente assente, e hanno bisogno che venga aperto il broswer per essere validate tramite il "passaggio" per il captive portal. È comunque possibile usare email e altre facilities che non fanno affidamento sul DNS (ad esempio, se l'applicazione specifica la connessione IP prima dell'accesso al web). Un problema simile può manifestarsi se il client usa AJAX o raggiunge il network con pagine già caricate nel suo broswer, causando un comportamento non definito, quando una pagina prova una richiesta HTTP al suo server di origine.

### Dispositivi che non possono utilizzarlo

I dispositivi che possiedono connettività Wi-Fi e TCP/IP ma non sono dotati di browser web che supporti https non possono usare i captive portals. Tali dispositivi includono ad esempio Nintendo DS con giochi che usino Nintendo Wi-Fi Connection. Esistono comunque dei produttori di dispositivi che grazie ad accordi per servizi di connettività gratuiti o scontati permettono l'accesso alla rete. Per esempio, le porte VOIP SIP possono essere liberamente abilitate al traffico verso il gateway per permettere ai telefoni di connettersi.