Con SSH, le cose sono fatte in questo modo:
- sul laptop, eseguire
ssh -N -D 5000 proxy-machine
(dove proxy-machine
è il nome DNS della macchina "Proxy Web");
- configura il browser per utilizzare il protocollo SOCKS su
localhost
e porta 5000.
Questo è conveniente e attivato in meno di 20 minuti. Ha, tuttavia, le seguenti conseguenze:
- L'utente laptop deve eseguire il comando
ssh
e tenerlo attivo finché desidera navigare in Internet attraverso il proxy.
- Il comando
ssh
deve essere installato sul laptop (è un problema standard con MacOS X, Linux e tutti i sistemi di tipo Unix, ma non con Windows).
- Il computer del proxy Web deve eseguire un server SSH.
- L'utente laptop deve avere un account sul computer Proxy Web (è possibile limitare tale account all'impostazione di tunnel come quello sopra, ma non è facile da configurare).
Con SSL, dovresti installare alcuni software proxy sul Proxy Web (ad esempio calamari ) e configurarlo con un Certificato X.509, in modo che i client (il laptop) utilizzino https://proxy-machine:9000/
come URL proxy (il numero di porta può essere modificato a piacere, ho usato 9000 come esempio). Non c'è software da installare sul laptop; il browser deve solo essere configurato per utilizzare l'URL corretto come proxy a livello HTTP. Fai attenzione agli script di configurazione automatica del proxy, potrebbero essere modi in cui l'autore dell'attacco può forzare un'altra configurazione del proxy; è meglio configurare il proxy manualmente.
SSL e SSH utilizzano protezioni distinte contro gli attacchi Man-in-the-Middle. Il client SSH registra la chiave pubblica del computer di destinazione (nel file $HOME/.ssh/known_hosts
su sistemi Unix-like) in modo che possa verificare che la chiave pubblica del server sia quella giusta; solo la prima connessione è mai vulnerabile. Le chiavi pubbliche SSH hanno impronte digitali (cioè valori hash) che possono essere usate per verificare che una chiave sia corretta (l'idea è che puoi telefonare al sysadmin e lui scriverà l'impronta digitale, questo è noioso ma deve essere fatto solo una volta per server SSH). Fino a quando il laptop o il proxy non viene compromesso, o gli algoritmi crittografici vengono completamente demoliti dai crittanalisti irati, la via SSH è sicura.
SSL si basa su certificati X.509 . La sicurezza proviene dal set di trust anchors (noti anche come "certificati radice") già incorporati nel browser (o nel sistema operativo). Le autorità di certificazione dovrebbero emettere certificati solo per le entità debitamente autenticate e le firme digitali sono gli strumenti crittografici con cui il browser può verificare che i contenuti dei certificati non siano stati manomessi e solo le autorità di certificazione accettate sono state coinvolte. Per montare un MitM, un utente malintenzionato dovrebbe corrompere una CA per emettere un certificato falso, con il nome proxy-machine
, ma con una chiave pubblica di proprietà dell'attaccante.
La sicurezza X.509 si basa su molte più supposizioni della sicurezza SSH, che viene gestita localmente e dove ciò che accade è piuttosto semplice. Ma lo scenario SSH richiede che l'utente laptop sia un po 'più consapevole di ciò che sta accadendo. Per me , userei SSH (in effetti, questo è quello che faccio); per un'organizzazione con molti utenti, seguirei il percorso SSL (ma il requisito "20 minuti" sarebbe uno scherzo).