Differences between revisions 1 and 2
Revision 1 as of 2011-08-16 15:09:10
Size: 3619
Editor: Kurgan
Comment:
Revision 2 as of 2011-08-16 15:28:43
Size: 6474
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
auth # il "nome del server", lo trovate dopo nella configurazione della autenticazione
Line 48: Line 48:
# (puo` essere diversa a seconda della vostra versione del ppp)
auth
Line 70: Line 72:


=== Autenticazione ===

Per come e` configurato sopra, il server ppptp autentica gli utenti in chap, quindi dovremo lavorare sul file {{{/etc/ppp/chap-secrets}}}, del quale riporto un esempio qui (l'utente "DOMAIN\\user1" e` un utente che usa anche il dominio nell'autenticazione, si veda la voce "Configurazione dei client Windows" in seguito):

{{{
# Secrets for authentication using CHAP
# client server secret IP addresses

  kurgan pptpd lamiapassword *
  pippo pptpd pluto 192.168.35.160
  paperino pptpd quack *
  DOMAIN\\user1 pptpd pippero *
}}}

Questo file contiene lo username dell'utente remoto, il nome del "server" (che occorre se si hanno piu` istanze di qualcosa che usa il ppp e deve autenticare degli utenti), e la password dell'utente. A seguire c'e` un asterisco che significa "prendi un ip a caso fra quelli disponibili" oppure un indirizzo IP preciso da assegnare sempre a quel client li`.

=== Firewall ===

Il server ppptp deve accettare connessioni tcp sulla porta di "controllo" del protocollo, e poi il protocollo GRE. Una configurazione valida per iptables e` questa (supponendo che eth1 sia la WAN del nostro server pptp/firewall):
{{{
iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth1 --protocol 47 -m state --state NEW -j ACCEPT
}}}


=== Configurazione dei client Windows ===

Sul client Windows (o altro client) e` sufficiente impostare lo username, la password e l'indirizzo del gateway pptp remoto (il pptp server, lato WAN). Alcuni client prevedono un campo "domain". Se potete lo lasciate vuoto. Se il client si impunta a dover inserire un dominio, probabilmente cerchera` di autenticare sul server come "dominio\utente", e voi dovrete configurare di conseguenza il file degli utenti (chap-secrets) in modo da creare un utente che corrisponda alla stringa che il client vi manda.


=== Problemi di routing sui client ===

Di default il client Windows quando stabilisce una connessione PPTP definisce una regola che fa passare TUTTO il traffico non locale verso l'interfaccia della VPN. Il server non ha una maniera standard (windows usa un sistema tutto suo che fa uso di un parametro del DHCP sul server) per passare al client informazioni sul routing, quindi se non vi va bene il metodo di windows (default gateway sulla vpn) dovrete arrangiarvi a farvi il routing lato client come meglio credete. Io non ho mai approfondito la cosa perche` cerco di evitare il piu` possibile di usare il PPTP se posso usare alternative, come per esempio l'ottima openvpn.

PPTP con Linux Debian (aggiornato a Squeeze)

Questi sono poco piu` che appunti su come mettere online un semplice server PPTP (un protocollo che a mio avviso dovrebbe essere abolito come l' FTP e il fax) usando Linux.

Il PPTP ha un sacco di problemi:

  • Usa il protocollo GRE che non tutti i router (quelli da 2 lire) supportano
  • Richiede un helper per il NAT lato client, altrimenti se due client nattati dietro lo stesso ip pubblico si connettono allo stesso server vanno a tratti, o l'uno o l'altro
  • Credo che sia impossibile da nattare lato server, se per qualsiasi motivo occorre mettere due server dietro lo stesso indirizzo pubblico
  • Non consente di "passare" al client informazioni di routing da parte del server, quindi in pratica occorre impostare sul client le regole di routing per la rete che si trova dietro al server.

Nonostante questo, e` usatissimo in quanto e` la VPN standard di Windows. Come siamo messi? Male, molto male.

Installazione di poptop

In Debian, basta installare il pacchetto pptpd con le sue dipendenze, prima fra le quali ovviamente il ppp. Esiste anche il client, che e` "pptp-linux", ma che qui non trattero`. Per poter usare la crittografia e` necessario avere il supporto MPPE nel ppp, in Debian c'e`.

Configurazione di poptop

La configurazione si fa in due passi, una e` la configurazione del demone del pptp e l'altra contiene i parametri che il pptp passa al ppp.

  • File /etc/pptpd.conf Fate riferimento a quello originale, che e` commentato e molto semplice. Questo e` conciso e contiene quello che serve per funzionare. Credo, ma non sono sicuro, che il ppp legga comunque anche il file /etc/ppp/options oltre a questo, e che faccia un "mix" delle impostazioni. Mi ricordo di aver letto una cosa simile non ricordo dove. Nel caso, se volete togliervi ogni dubbio, rinominate l'eventuale file /etc/ppp/options in modo che non venga piu` letto.

    # dove sono le opzioni del ppp
    option /etc/ppp/pptpd-options
    
    # logga gli accessi su wtmp
    logwtmp
    
    # fai relay dei broadcast da eth0 (questa e` la NIC lato LAN del server pptp)
    bcrelay eth0
    
    # indirizzi locali e remoti: localip e` (puo` essere, non e` obbligatorio) l' ip della NIC lato LAN (la eth0 di prima)
    # remoteip e` un gruppo di indirizzi contigui che saranno assegnati dinamicamente (o staticamente) ai client. Ovviamente non devono
    # essere in uso nella LAN, ma sono nella stessa subnet della LAN (usiamo una configurazione in bridge, non in routing)
    localip 192.168.35.252
    remoteip 192.168.35.151-170
  • File /etc/ppp/pptpd-options. Contiene le opzioni da passare al ppp quando si connette un client pptp. Anche in questo caso consiglio di fare riferimento a quello originale per capire come funzionano le opzioni. Queste opzioni si applicano al ppp e non al pptp, quindi possono variare a seconda della versione di ppp che avete installato e alle patch. Il che non e` affatto "comodo".

    # il "nome del server", lo trovate dopo nella configurazione della autenticazione
    name pptpd
    
    # autenticazione e crittografia: accetto solo il massimo possibile della sicurezza, che e` comunque scarsa.
    # (puo` essere diversa a seconda della vostra versione del ppp)
    auth
    refuse-pap
    refuse-chap
    refuse-mschap
    require-mschap-v2
    require-mppe-128
    
    # passo ai client gli indirizzi di DNS e WINS. Posso anche metterne due (duplicando le righe)
    ms-dns 192.168.35.252
    ms-wins 192.168.35.252
    
    # opzioni varie del ppp utili in questo setup
    proxyarp
    nodefaultroute
    lock
    
    # opzioni di compatibilita` che mi e` capitato di dover usare con client rognosi:
    nobsdcomp
    ipcp-accept-local
    ipcp-accept-remote
    lcp-echo-failure 30
    lcp-echo-interval 5

Autenticazione

Per come e` configurato sopra, il server ppptp autentica gli utenti in chap, quindi dovremo lavorare sul file /etc/ppp/chap-secrets, del quale riporto un esempio qui (l'utente "DOMAIN\\user1" e` un utente che usa anche il dominio nell'autenticazione, si veda la voce "Configurazione dei client Windows" in seguito):

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

  kurgan        pptpd   lamiapassword           *
  pippo         pptpd   pluto                   192.168.35.160
  paperino      pptpd   quack                   *
  DOMAIN\\user1 pptpd   pippero                 *

Questo file contiene lo username dell'utente remoto, il nome del "server" (che occorre se si hanno piu` istanze di qualcosa che usa il ppp e deve autenticare degli utenti), e la password dell'utente. A seguire c'e` un asterisco che significa "prendi un ip a caso fra quelli disponibili" oppure un indirizzo IP preciso da assegnare sempre a quel client li`.

Firewall

Il server ppptp deve accettare connessioni tcp sulla porta di "controllo" del protocollo, e poi il protocollo GRE. Una configurazione valida per iptables e` questa (supponendo che eth1 sia la WAN del nostro server pptp/firewall):

iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth1  --protocol 47 -m state --state NEW      -j ACCEPT

Configurazione dei client Windows

Sul client Windows (o altro client) e` sufficiente impostare lo username, la password e l'indirizzo del gateway pptp remoto (il pptp server, lato WAN). Alcuni client prevedono un campo "domain". Se potete lo lasciate vuoto. Se il client si impunta a dover inserire un dominio, probabilmente cerchera` di autenticare sul server come "dominio\utente", e voi dovrete configurare di conseguenza il file degli utenti (chap-secrets) in modo da creare un utente che corrisponda alla stringa che il client vi manda.

Problemi di routing sui client

Di default il client Windows quando stabilisce una connessione PPTP definisce una regola che fa passare TUTTO il traffico non locale verso l'interfaccia della VPN. Il server non ha una maniera standard (windows usa un sistema tutto suo che fa uso di un parametro del DHCP sul server) per passare al client informazioni sul routing, quindi se non vi va bene il metodo di windows (default gateway sulla vpn) dovrete arrangiarvi a farvi il routing lato client come meglio credete. Io non ho mai approfondito la cosa perche` cerco di evitare il piu` possibile di usare il PPTP se posso usare alternative, come per esempio l'ottima openvpn.

LinuxDebian/PPTP (last edited 2011-08-16 15:28:43 by Kurgan)