www.linuxpress.org
GNU Not Unix

October 24, 2007

Come connettersi a internet con qualsiasi protocollo in modo libero, stando dietro un proxy ISA con autenticazione NTLM.

Filed under: Howto — Simone Federici @ 6:01 pm

Premessa:
Questo howto ha come scopo solo la pubblicazione di un esperimento, non vuole incitare nessuno a violare l regole.

Abstract:
Fondamentale è riuscire a stabilire una connessione p2p tra il tuo PC (client) e un server casalingo.
Per fare questo dobbiamo, identificarci (avere username e password per l’autenticazione NTLM del proxy)
E usiamo un proxy locale al client ntlnaps per identificarci una volta per tutte.
Visto che ISA permette il metodo TCP CONNECT solo sulla porta 443 (per permettere l’https) sarà necessario avviare un server ssh sul server in ascolto sulla 443.
Tramite corkscrew è possibile stabilire una connessione ssh over http.
Una volta che siamo in grado di fare una connessione ssh tra il client e il server, dobbiamo stabilire una connessione ppp tra di essi, lanciando pppd in modo reciproco.
Ora siamo in VPN casalinga. Dobbiamo però sistemare le tabelle di routing in modo da uscire su internet tramite questa connessione ppp.
Non ci scordiamo però che l’unico routing che dobbiamo lasciare come è la connessione tra il client e il proxy ISA.
L’ultimo passo è configurare il server casalingo per forwardare il traffico tcp e impostare quindi il nat.

Software sul Server
sshd
pppd
iptable

Software sul client
ssh
pppd
corkscrew
ntlmaps

Facciamo un ESEMPIO

ip del client 10.0.0.1/255.255.255.0
ip del server 10.0.1.1/255.255.255.0

proxy ISA ntlm: 10.17.2.1
gateway di default del client: 10.0.0.254

Cosa fare sul SERVER

Sul server è necessario far partire ssh sulla porta 443 questo perchè il proxy ISA accetta CONNECT solo su 443 per consentire il traffico https

Poi è necessario abilitare il NAT

echo “1″ > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

La configurazione del CLIENT è un po’ più complessa

Configurare il proxy ntlmaps per autenticarsi tramite ntlm su ISA in modo che ssh non debba avere bisogno di autenticarsi sul proxy.

Ora bisogna fare un SSH over HTTP

Modificare ${HOME}/.ssh/config
Host *
ProxyCommand corkscrew 127.0.0.1 5865 %h %p

TEST: ssh 10.0.1.1 dovrebbe funzionare

ora facciamo un PPP over SSH
eseguiamo da root:

/usr/sbin/pppd updetach noauth silent nodeflate pty “/usr/bin/ssh -p 443 root@10.0.1.1 /usr/sbin/pppd nodetach notty noauth” ipparam vpn 10.0.55.1:10.0.55.2

in questo modo viene stabilita una connessione p2p tra il nuovo ip del client 10.0.55.1 e il il nuovo ip del server 10.0.55.2

Ora è necessario configurare il routing over ppp

route -n
segnarsi quale è il gateway di default ad esempio 10.0.0.254

aggiungere una regola fissa per l’ip del proxy verso il gateway di default
route add 10.17.2.1 gw 10.0.0.254 eth0

rimuovere il routing di default
route del default

aggiungere il routing verso il tuo ppp
route add default gw 10.0.55.2 ppp0

editare /etc/resolv.conf in modo che si punti ad un dns pubblico

e il gioco è fatto, il client tramite la connessione ppp over ssh over http/ntlm è ingrado di andare su internet su tutti i protocolli
un passo in più:

ora se sul client facciamo questa semplice cosa:
echo “1″ > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

tanti clientini potranno connettersi a internet semplicemente cambiando il loro gateway sull’ip
del tuo magico client :-P

Ciao, e ricordate che se ci sono delle regole vanno rispettate, giocate solo se potete farlo e non commettete violazioni illegali.

Powered by WordPress