VPN: VPN over SSH

Attention: open in a new window. PDFPrintE-mail

Download Txt Download PS Download PS Come creare una semplice VPN utilizzando SSH e PPP

CREATE A VPN OVER SSH WITH PPP


Hal

Table of Contents



1) INTRODUZIONE 2) INSTALLAZIONE & CONFIGURAZIONE 3) TODO

4) REFERENCE

1) INTRODUZIONE

Prima di tutto che cos'e' una VPN?
Il termina inglese identifica un acronimo per:
Virtual Private Network
ovvero Rete Virtuale Privata.
Praticamente e' una connessione, che solitamente usa internet, per far passare dati fra 2 o piu' computer in modo sicuro; evitando che chiunque malintenzionato riesca a leggere i dati trasmessi.

A chi puo' servire?
Beh a tutti quelli che hanno 2 computer remoti e vogliono trasmettere dati in modo "sicuro" e comodo.

La soluzione che vi propongo usa software standard reperibile per la tutti i sistemi operativi Unix e Unix-Like oggi disponibili.

1.1 COSA SERVE?

 

  • Root account
  • SSH Server e client
  • PPP
  • Sudo

    2) INSTALLAZIONE & CONFIGURAZIONE

    2.1 INSTALLAZIONE

    Prima di tutto e' necessario avere l'accesso di root sulle proprie macchine!
    Se non lo avete! AhiAHiAHi
    Installate openssh su gli host che volete mettere in comunicazione; con altre versioni di ssh il tutto dovrebbe funzionare senza problemi ma non l'ho mai testato.
    Sudo e' inceve necessario solo sull'host Server, quello che riceve la connessione.

    2.2 CONFIGURAZIONE

    LATO CLIENT

    Crea la coppia di chiavi pubblica/privata; la chiave pubblica dovra' essere messa sul server per permettere di collegarsi al server senza password.
    ssh-keygen -t rsa -b 2048

    LATO SERVER

    Crea un gruppo ed un utente personalizzato per la vpn; l'utente dovra' essere diverso tra i vari utenti a cui si vuole dare l'accesso:
    groupadd vpnuser
    useradd -g vpnuser -d /home/vpnuser -s /home/vpnuser/connect vpnuser

    Abilita il gruppo vpnuser a lanciare il Cmnd_Alias VPN senza password aggiungendo le seguenti linee al file sudoers; usa il comando visudo da root se disponibile.
    Cmnd_Alias VPN=/usr/sbin/pppd, /sbin/route
    %vpnuser ALL=NOPASSWD:VPN

    Inserisci lo scriprt di connessione nella lista di shell valide
    cat /home/vpnuser/connect >> /etc/shells

    Sistema i permessi della home directory e della shell connect in modo che l'utente non possa scrivere nella directory ma possa solo eseguire la shell connect.
    chmod 500 /home/vpnuser
    chmod 500 /home/vpnuser/connect

    Inserisci la chiave pubblica dell'utente prima generata
    mkdir /home/vpnuser/connect/.ssh
    cat id_rsa.pub >> /home/vpnuser/connect/.ssh/authorized_keys

    Crea lo script di connessione "/home/vpnuser/connect" che deve essere personalizzato per ogni utente.
    #!/bin/bash
    /usr/bin/sudo /usr/sbin/pppd noauth lock 192.168.252.2:192.168.252.1
    # eventuale routing remoto per abilitare la comunicazioni delle 2 diverse reti.
    exit 0

    Lo script deve essere di root e non editabile dall'utente; gli ip devono essere cambiati per ogni utente.
    chown root:root /home/vpnuser/connect
    chmod 555 /home/vpnuser/connect

    LATO CLIENT

    Abilita il tuo utente a lanciare ppp e route senza la necessita' di diventare root. Usa il comando visudo da root se disponibile.
    User_Alias TEST = test
    Cmnd_Alias VPN=/usr/sbin/pppd, /sbin/route
    TEST ALL=NOPASSWD:VPN

    Dal tuo utente lancia la stringa di connessione /usr/bin/sudo /usr/sbin/pppd noauth debug dump logfd 2 passive updetach name vpn-client linkname vpn pty '/usr/bin/ssh -p 53 -l vpnuser -t SERVER_REMOTO -C'

    A questo punto aggiungi le rotte che ti servono per far passare il traffico che vuoi attraverso il canale criptato:
    # MSN ROUTE
    sudo /sbin/route add -net 65.54.0.0 netmask 255.255.0.0 gw 192.168.252.1
    sudo /sbin/route add -net 207.46.0.0 netmask 255.255.255.0 gw 192.168.252.1
    # YAHOO ROUTE
    sudo /sbin/route add -net 216.155.193.0 netmask 255.255.255.0 gw 192.168.252.1
    # VODAFONE MAIL
    sudo /sbin/route add popmail.vodafone.it gw 192.168.252.1
    # MAIL SUPEREVA
    sudo /sbin/route add mail.supereva.it gw 192.168.252.1
    #YAHOO MAIL
    sudo /sbin/route add pop.mail.yahoo.it gw 192.168.252.1
    # LIBERO MAIL
    sudo /sbin/route add popmail.libero.it gw 192.168.252.1
    sudo /sbin/route add smtp.libero.it gw 192.168.252.1
    ## LDAP
    sudo /sbin/route add ils.seconix.com gw 192.168.252.1
    ## dict.org
    sudo /sbin/route add dict.org gw 192.168.252.1

    3) TODO

    4) REFERENCE

    4.1 AUTHORS


    This e-mail address is being protected from spambots. You need JavaScript enabled to view it

    4.2 LINKS

  •