OpenVpn aziendale

Powered by linuxvar 2.png

Autore: Pipex

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.

Contenuti

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 (gestibile 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.