Har tidigare skrivit om vpn, att det är en smidig lösning. Det var en server-server konfiguration det, men det är ju ofta man vill komma åt sitt nätverk när man tex reser. OpenVPN är lösningen, säkert och smidigt.

Jag förutsätter att du kör en riktigt operativsystem, så guiden är anpassad för FreeBSD (och brandväggen pf om du kör den)

Installera openvpn från ports; cd /usr/ports/security/openvpn && make install clean
Lägg till openvpn_enable=”YES” i din rc.conf

Nu är det dags att skapa lite konfigurationsfiler; cd /usr/local/etc && mkdir openvpn && cd openvpn
Skapa en fil som heter openvpn.conf, i denna ska vi lägga följande:

#Standardporten, bör du inte ändra om du inte verkligen vill.
port 1194

# Devices
dev tun
proto udp

# Server och client IP och Pool
#Ta nåt annat än din befintliga ip-range
#ipp.txt håller info om tidigare anslutningar
#likt en dhcp server så ger den klienten ip´t den
#hade förra gången (om tillgängligt)
server 192.168.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# Certfikaten som ska användas.
#Klienterna kommer ha matchande för att kunna ansluta.
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh2048.pem

# Routes att pusha till klienterna, och dhcp options
push “route 192.168.0.0 255.255.255.0″
push “dhcp-option WINS 192.168.0.5″

#extra säkerhet, kan kommentras bort.
#skapas med openvpn –genkey –secret ta.key
tls-auth /usr/local/etc/openvpn/keys/ta.key 0

#bestämm cipher
cipher AES-128-CBC

# Komprimera data i länken
comp-lzo

# Gör länken lite mer resistent mot anslutningsfel
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

max-clients 4

# Kör som en daemon och droppa behörigheter
user nobody
group nobody
daemon

Nu är det dags att skapa alla certifikat. Kör cp -r /usr/local/share/doc/openvpn/easy-rsa /home/myuser/ cd /home/myuser/easy-rsa

Du ska helst vara root för att fixa detta. Gör chmod u+x på vars, clean-all, build-ca, build-key-server, build-key-client och build-dh.

Öppna filen “vars” i din favoriteditor och ändra nåt om du behöver det (främst kanske variablerna för certet längst ner i filen). Kör sedan ./vars och efter det ./clean-all följt av ./build-ca

Skapa certet du ska använda på servern: ./build-key-server server
Gör ett gäng client-certs: ./build-key client1
Fortsätt med samma fast client2, client3 osv tills du tycker att du har skapat tillräckligt många cert för att täcka ditt framtida användningsområde.

Bygg “Diffie-Hellman” paramterar som ska ligga på servern: ./build-dh

Kopiera alla nycklar till din openvpn katalog: cp -fR keys /usr/local/etc/openvpn/

Om du vill att loggningen inte ska hamna i /var/log/messages så kan du göra såhär:
vim /etc/syslog.conf
Lägg till:

!openvpn
*.* /var/log/openvpn.log
Skapa den nya logfilen: touch /var/log/openvpn.log
Och starta om syslogd: killall -HUP syslogd
Starta openvpn: /usr/local/etc/rc.d/openvpn start
Kolla i /var/log/openvpn.log om det är några fel som måste åtgärdas.

Använder du pf, så måste du tillåta trafik på port 1194:
# OPENVPN
pass in quick log on $ext proto udp from any to any port 1194 keep state

Nu är serverkonfigurationen (förhoppningsvis) färdig!
Då går vi vidare till att skapa client-konfigurationen. Ladda ner det smidiga GUI´t för openvpn klienter, på www.openvpn.se och installera det.

Nu måste du föra över dina certifikat från servern (ett utav client-certen och ca.crt)
client1.crt
client1.key
ca.crt
(och ta.key om du valde att göra en sådan)

Skapa en minvpn.ovpn i C:/program/openvpn/config och i den lägger du:
#inställningar för tunneln
client
remote vpn.loggnet.se 1194
dev tun
proto udp
tls-auth loggnet.se/ta.key 1
cipher AES-128-CBC
comp-lzo

#sökvägar till certen
ca ca.crt
cert client1.crt
key client1.key

# Loggning
verb 3

Prova att ansluta, det borde fungera!
Det finns mycket rolig information på http://openvpn.net/ om man stöter på problem eller vill göra ytterligare anpassningar.

Från: http://www.ubergeek.co.uk/blog/2008/05/openvpn-freebsd-pf-windows-howto/

7 Svar på “OpenVPN den enkla vägen”
  1. Lägg till “ns-cert-type server” i cert-sektionen av din client.conf fil för att låta klienten verifiera server-certet för att skydda sig mot MITM attack som beskrivs här http://openvpn.net/howto.html#mitm

  2. Vet inte vad jag sika tycka, har följt din guide från punk a-ö, antingen är UNIX skit som är så svårt att det inte funkar trots guider eller så har du inte gjort en bra guide =/ Är väldigt nybörjare på Unix och gick igenom din guide precis som det stog från punkt a-ö för att jag vill lära mig och vill kunna sätta upp en vpn men det var en massa kommandon som inte funkade osv. Kör FreeBSD 7.0.

  3. Ano, det kan vara lite krångligt om man inte har arbetat med unixsystem förrut. Vilket kommando är det som inte fungerar för dig? /Ludwig

  4. Hej!
    Jo, problemen börjar när jag ska chmoda build-key-client. Den filen finns inte :S

    Sen när jag ska köra ./vars så tycker han att D: Undefined variable.

    Tacksam för svar :)

  5. Hittar du sökvägen till /usr/local/share/doc/openvpn/easy-rsa ?
    Där finns alla verktyg för att bygga certifikaten. I guiden ovan står det att du ska flytta den katalogen, men skit i det för nu och testa om du kan köra på för att skapa client/server certen.
    /Ludwig

  6. Absolut. Har även kopierat över till /home/minanvändare. Problem 1 kvarstår: build-key-client finns inte. När jag ska köra ./build kommandona så vill han att jag ska deffinera Key_DIR. Har tittat i vars och hittat vart det är men har ingen aning om vad jag ska göra med det. Samt att jag inte vet vad jag ska göra med “D is undefiend” :P
    Jag vet inte riktigt vart det har gått snett, har testat att installera det två gånger (har installerat om burken helt då).
    Är det ens nån ide att jag försöker få det att funka? :P

    Mvh/ Ano

  7. Okej, kolla så variabeln D i filen ‘vars’ ser OK ut. Bör vara: export D=`pwd`
    För keydirs så ska du sätta vart du vill lagra certen som kommer att skapas. Exempel export KEY_DIR=$D/keys där $D är variabeln D du satte förrut (pwd betyder den katalogen du står i just nu) Du skulle lika gärna kunna sätta export KEY_DIR=$D/. för att skriva certen direkt där du är

    min vars:

    # easy-rsa parameter settings

    # NOTE: If you installed from an RPM,
    # don’t edit this file in place in
    # /usr/share/openvpn/easy-rsa –
    # instead, you should copy the whole
    # easy-rsa directory to another location
    # (such as /etc/openvpn) so that your
    # edits will not be wiped out by a future
    # OpenVPN package upgrade.

    # This variable should point to
    # the top level of the easy-rsa
    # tree.
    export D=`pwd`

    # This variable should point to
    # the openssl.cnf file included
    # with easy-rsa.
    export KEY_CONFIG=$D/openssl.cnf

    # Edit this variable to point to
    # your soon-to-be-created key
    # directory.
    #
    # WARNING: clean-all will do
    # a rm -rf on this directory
    # so make sure you define
    # it correctly!
    export KEY_DIR=$D/keys

    # Issue rm -rf warning
    echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

    # Increase this to 2048 if you
    # are paranoid. This will slow
    # down TLS negotiation performance
    # as well as the one-time DH parms
    # generation process.
    export KEY_SIZE=2048

    # These are the default values for fields
    # which will be placed in the certificate.
    # Don’t leave any of these fields blank.
    export KEY_COUNTRY=SE
    export KEY_PROVINCE=OSTERGOTLANDS
    export KEY_CITY=LINKOPING
    export KEY_ORG=”sfsdfs”
    export KEY_EMAIL=”e@mail.com”

Lämna ett svar