Unnikked - Esperienze personali in campo informatico

Come configurare una VPN tramite PPTP

Una rete privata virtuale (VPN) abilita l’accesso ad una rete privata tramite una rete pubblica, come Internet. Permette ai computer di scambiarsi dati tramite una rete pubblica o condivisa come se fossero direttamente connessi alla rete privata, mantenendone la funzionalità, sicurezza e politiche di gestione della stessa.

Una VPN viene creata stabilendo una connessione virtuale punto-punto attraverso l’uso di connessioni dedicate, protocolli virtuali di tunneling o crittografando il traffico.

Una connessione VPN tramite Internet è simile ad una wide area network (WAN). Dal punto di vista dell’utente, le risorse della rete privata estesa vengono utilizzate allo stesso modo delle risorse presenti nella rete privata.

In un precedente articolo ho esposto i benefici dell’utilizzo di una VPN. In questo articolo vedremo come configurare una VPN tramite un protocollo point-to-point tunneling.

Installiamo per prima cosa il server PPTP:

apt-get install pptpd

Ora apriamo il file di configurazione /etc/pptpd.conf con qualsiasi editor di testo e aggiungiamo le seguenti linee:

localip 10.0.0.1
remoteip 10.0.0.100-200

Dove localip è l’indirizzo il del server e remoteip sono gli IP che saranno assegnati ai client che si connetteranno a esso.

Ora bisogna impostare l’autenticazione per PPTP aggiungendo utenti e password. Bisogna aggiungerli nel file /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
  utente1       pptpd   password1               *
  utente2       pptpd   password2               *

Dove client è la username, server è la tipologia del servizio e secret è la password. IP addresses specifica da quale IP il cliente potrebbe collegarsi, impostando tale campo utilizzando il simbolo ‘*’ significa che il server accetterà connessioni da qualsiasi IP per la combinazione utente/password.

Aggiungiamo ora un server DNS al file /etc/ppp/pptpd-options:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

E avviamo il demone PPTP con:

service pptpd restart

Possiamo verificare che il demone sia effettivamente attivo utilizzando il comando:

netstat -alpn | grep :1723

Risultato comando

Impostiamo ora l’inoltro di IP sul server PPTP. Ciò consentirà di inoltrare i pacchetti tra l’indirizzo IP pubblico e gli indirizzi IP privati impostati con PPTP e consentiamo anche ai vari client connessi di poter comunicare tra loro.

Modifichiamo il file /etc/sysctl.conf e modifichiamo la linea come specificato:

net.ipv4.ip_forward = 1

Per abilitare le modifiche:

sysctl -p

Ora creiamo una regola NAT per iptables:

iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
iptables --table nat --append POSTROUTING   --out-interface ppp0 --jump MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Bisogna notare che il comando iptables –table nat –append POSTROUTING –out-interface ppp0 –jump MASQUERADE abilità la possibilità di comunicazione fra pari (peer), cioè due client connessi alla VPN saranno in grado di comunicare tra di loro, in questo modo si può utilizzare ICMP, Samba o qualiasi altra cosa.

Bisogna anche notare che il comando iptables -I FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu risolve i problemi con la variazione dell’ MTU.

Salviamo la configurazione con:

iptables-save

Ora il server funziona anche da router.