05 gen 2009

VPN furba - Kit di "scasso aziendale"

E' proprio vero che la necessità aguzza l'ingegno... mi sono trovato improvvisamente da un cliente con l'accesso ad internet bloccato quasi del tutto.
Questo potrebbe indicare anche che viene filtrato e controllato/censurato ogni accessso/sito.

Inoltre la stessa configurazione può essere utilizzata per configurare una VPN aziendale/casalinga quando si è in remoto e si vuole accedere al proprio ufficio/pc di casa.

Ecco da qui nasce questo documento, dove indico cosa ho fatto per poter avere un accesso FULL, senza controlli ad internet.

risorse necessarie:
  • una linuxbox, ovvero un bel pc con gnu/linux anche di poca potenza che sarà il server
  • una linea adsl (possibilmente di buona qualità) collegata al server
  • il pc aziendale/portatile che si userà in remoto
In alternativa una soluzione come una vps poco costosa anche oltreoceano è molto valida, ed evita i costi del mantenimento di una linuxbox e della adsl (consumi, backup, disponibilità al 99,9% ).

Il software necessario da installare è:

Come poter accedere quindi alla nostra macchina?
Creeremo una VPN verso la linuxbox sulla porta 443, https, la quale poi ci permetterà di ridirigere tutto il nostro traffico verso l'esterno.
La porta 443, che useremo con protocollo TCP, non viene filtrata in quanto le informazioni che passano sono criptate tra il client ed il server remoto.
E' necessario utilizzare un servizio come noip o dyndns per puntare sempre alla propria linuxbox con un indirizzo facile da ricordare e soprattutto nel caso non si avesse un ip statico fornito dal proprio ISP.

Ho scelto di creare una sotto-rete locale per le macchine che si connettono tramite VPN, che avranno come IP 10.8.0.X, assegnato in modo dinamico da OpenVpn server.
Per quasi tutti i programmi server si dovrà abilitare anche le ACL relative alla sotto-rete della VPN, oltre che quelle della nostra rete locale.

Configurazione
Indicherò le modifiche ai file di configurazione che ho effettuate rispetto allo standard.

Per OpenVpn consiglio di seguire le seguenti guide:
Quindi procediamo alla modifica del file di configurazione del server openvpn come segue:
#cat /etc/openvpn/server.conf
dev tun
ca /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt
cert /usr/share/openvpn/easy-rsa/2.0/keys/server.crt
key /usr/share/openvpn/easy-rsa/2.0/keys/server.key
dh /usr/share/openvpn/easy-rsa/2.0/keys/dh1024.pem
verb 3
mute 10
proto tcp-server
lport 443
server 10.8.0.0 255.255.255.0
client-to-client
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
Molto interessante per poter dirigere tutto il traffico solo attraverso la vpn creata questa guida.

Per i client openvpn si devono generare gli opportuni certificati e copiati sui pc dove si è installato openvpn client (il client che uso è una macchina con OS di Guglielmo Cancelli)
client
dev tun
proto tcp
remote serverino.homelinux.org 443
ca ca-mobile1.crt
cert mobile1.crt
key mobile1.key
comp-lzo
Se utilizzare iptables come firewall, è necessario aprire le porte per permettere la connessione in entrata alla VPN, nel nostro caso la 443.

A questo punto ci si può connettere da remoto alla linuxbox tramite vpn :)

Navigazione e IM tramite Squid proxy
Ora abilitiamo tramite Squid server la navigazione, porte 80 443, ed anche l'utilizzo dei comuni programmi per istant message, come ICq, Msn e jabber/GTalk - porte 5222 5190 1863.
#cat /etc/squid/squid.conf
acl im_ports port 5190 5222 1863
http_access allow CONNECT im_ports
acl our_networks src 10.8.0.0/24
http_access allow our_networks
icp_access allow our_networks
Per navigare ora basterà impostare il proxy porta 3128 sul proprio browser preferito (Firefox o Chrome) e sul client IM Pidgin. Consiglio di aggiungere in firefox qualche plugin che permetta il cambio di proxy al volo, come MM3-ProxySwitch o simili.

Socks server
Per poter aver accesso a qualsiasi altra cosa, senza dover ogni volta configurare la porta specifica, consiglio di installare un Sockd server, come Dante.
La sua configurazione è la seguente.
#cat /etc/sockd.conf
client pass {
from: 10.8.0.0/8 port 1-65535 to: 0.0.0.0/0
}

pass {
from: 10.0.0.0/8 to: 0.0.0.0/0
protocol: tcp udp
log: connect error
}
Sul client si imposterà l'utilizzo del socks server sulla porta 1080.
Io lo uso per poter accedere tramite Pop3 Imap, alla mia posta.

Per la posta consiglio caldamente thunderbird che permette l'utilizzo di un server socks; inoltre con l'utilizzo di un add-on come MM3-ProxySwitch in un click si può cambiare il proxy/socks utilizzato.

Dns Relay ed altri utili servizi
Se si usa il DNS della propria linuxbox si evita di lasciare le richieste sulla rete aziendale; per semplicità è possibile impostare bind in modalità relay come indicato in questa guida. Ricordarsi di permettere l'accesso anchegli ip 10.8.0.0 dei client che accedono in VPN.

Inoltre visto che le risorse sarebbe meglio condividerle, magari è doveroso avere anche
- un server tor (magari configurato anche come exit-node)
- privoxy
- un client bittorrent/emule, come mldonkey (controllabile tramite web, telnet e client grafico)

Sia tor che mldonkey devono essere modificati per poter essere utilizzati anche dai client VPN.
#cat /etc/tor/torrc
SocksPolicy accept 10.8.0.1/16
#cat downloads.ini
allowed_ips = [
"192.168.9.0/24";
"127.0.0.1";
"10.8.0.0/24";]
Ho volontariamente omesso la distribuzione utilizzata, ma considerate che la linuxbox sarà esposta su internet e quindi è meglio avere qualcosa di solido e sicuro.

Nessun commento: