Tux vpn

Aus SpaceOnEarth
Version vom 31. Dezember 2019, 11:45 Uhr von h_>Axel (Textersetzung - „ * “ durch „* “)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
I_UfE_Ag_vpn

links

output

ufe:/etc/openvpn/easy-rsa # . ./vars

NOTE: when you run ./clean-all, I will be doing a rm -rf on  /etc/openvpn/easy-rsa/keys

ufe:/etc/openvpn/easy-rsa # ./clean-all

ufe:/etc/openvpn/easy-rsa # ./build-ca

Generating a 1024 bit RSA private key
........++++++
...................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) DE:
State or Province Name (full name) norden:
Locality Name (eg, city) luebeck:
Organization Name (eg, company) ufe-vpntest:
Organizational Unit Name (eg, section) [[]]:erste_section
Common Name (eg, your name or your server's hostname) [[]]:ufe 
Email Address von_ufevpntest@hoxel.org:

ufe:/etc/openvpn/easy-rsa # ./build-key-server server

Generating a 1024 bit RSA private key
..........................++++++
......++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) DE:
State or Province Name (full name) norden:
Locality Name (eg, city) luebeck:
Organization Name (eg, company) ufe-vpntest:
Organizational Unit Name (eg, section) [[]]:
Common Name (eg, your name or your server's hostname) [[]]:l.ufegmbh.de
Email Address von_ufevpntest@hoxel.org:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password [[]]:bingo5
An optional company name [[]]:ufe
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'DE'
stateOrProvinceName   :PRINTABLE:'norden'
localityName          :PRINTABLE:'luebeck'
organizationName      :PRINTABLE:'ufe-vpntest'
commonName            :PRINTABLE:'l.ufegmbh.de'
emailAddress          :IA5STRING:'von_ufevpntest@hoxel.org'
Certificate is to be certified until Aug 10 16:24:50 2018 GMT (3650 days)
Sign the certificate? y/n:y
1 out of 1 certificate requests certified, commit? y/ny
Write out database with 1 new entries
Data Base Updated

ufe:/etc/openvpn/easy-rsa # ./build-key client1

Generating a 1024 bit RSA private key ...............++++++ ....++++++ writing new private key to 'client1.key'


You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.


Country Name (2 letter code) [DE]: State or Province Name (full name) [norden]: Locality Name (eg, city) [luebeck]: Organization Name (eg, company) [ufe-vpntest]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:client1 Email Address [von_ufevpntest@hoxel.org]:

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:bingo5 An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'DE' stateOrProvinceName :PRINTABLE:'norden' localityName :PRINTABLE:'luebeck' organizationName :PRINTABLE:'ufe-vpntest' commonName :PRINTABLE:'client1' emailAddress :IA5STRING:'von_ufevpntest@hoxel.org' Certificate is to be certified until Aug 10 16:30:33 2018 GMT (3650 days) Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
ufe:/etc/openvpn/easy-rsa # ./build-key client2 Generating a 1024 bit RSA private key .........................................................................++++++ ............................................++++++ writing new private key to 'client2.key'


You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.


Country Name (2 letter code) [DE]: State or Province Name (full name) [norden]: Locality Name (eg, city) [luebeck]: Organization Name (eg, company) [ufe-vpntest]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:client2 Email Address [von_ufevpntest@hoxel.org]:

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:bingo5 An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'DE' stateOrProvinceName :PRINTABLE:'norden' localityName :PRINTABLE:'luebeck' organizationName :PRINTABLE:'ufe-vpntest' commonName :PRINTABLE:'client2' emailAddress :IA5STRING:'von_ufevpntest@hoxel.org' Certificate is to be certified until Aug 10 16:31:17 2018 GMT (3650 days) Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
ufe:/etc/openvpn/easy-rsa # ./build-key client3 Generating a 1024 bit RSA private key .................................++++++ ........++++++ writing new private key to 'client3.key'


You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.


Country Name (2 letter code) [DE]: State or Province Name (full name) [norden]: Locality Name (eg, city) [luebeck]: Organization Name (eg, company) [ufe-vpntest]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:client3 Email Address [von_ufevpntest@hoxel.org]:

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:bingo5 An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'DE' stateOrProvinceName :PRINTABLE:'norden' localityName :PRINTABLE:'luebeck' organizationName :PRINTABLE:'ufe-vpntest' commonName :PRINTABLE:'client3' emailAddress :IA5STRING:'von_ufevpntest@hoxel.org' Certificate is to be certified until Aug 10 16:31:55 2018 GMT (3650 days) Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

beschreibung

OpenVPN-Server

Dies ist eine Anleitung, die sich mit der Installation eines VPN-Servers unter Ubuntu und der Konfiguration von Clients zum Verbinden mit diesem VPN beschäftigt. Sie ist aus meinem eigenen Bedürfnis entstanden, von verschiedenen Standorten aus auf ein virtuelles internes Netzwerk zuzugreifen, um z.B. mit Freunden sicher und privat Dateien auszutauschen. Solide Linux-Grundkenntnisse sollten vor der Installation eines solchen VPN-Servers prinzipiell vorhanden sein, auch wenn diese Anleitung jeden Schritt relativ idiotensicher erklärt. Als VPN-Software habe ich mich für OpenVPN entschieden, ein unter der GPL-Lizenz stehendes freies Programm, das neben Linux auch für Windows und MacOS verfügbar ist und als Verschlüsselungsmethode SSL nutzt. Diese Anleitung orientiert sich sehr stark am offiziellen HowTo für OpenVPN 2.0, ist jedoch für Ubuntu angepasst und auf Deutsch statt Englisch.

Auf Client-Seite wird bei OpenVPN eine “virtuelle” Netzwerkkarte installiert (im beschriebenen Fall ein sog. tun-Device). Über diese virtuelle Schnittstelle läuft dann der gesamt Netzwerkverkehr zwischen VPN-Client und VPN-Server.

Diese Anleitung basiert auf einem unter Ubuntu 6.06 laufenden Server und Clients, die Windows 2000/XP, Linux oder MacOS verwenden. Serverseitig wurde Ubuntu 6.06 LTS Server Edition genutzt, die Anleitung sollte sich aber auf alle Ubuntu 6.06-Versionen übertragen lassen.

OpenVPN installieren Als ersten Schritt OpenVPN auf dem Server installiert. Dazu wird natürlich das pratische apt verwendet:

   sudo apt-get install openvpn

Die für uns relevanten Konfigurationsdateien befinden sich nun in

   /usr/share/doc/openvpn/

Wir kopieren sie um, da bei einem eventuellen Upgrade nicht die zu machenden Änderungen überschrieben werden sollen:

   sudo cp -r /usr/share/doc/openvpn/ /etc/

Auswählen eines Subnet Ein VPN befindet sich in einem virtuellen Subnet. Ein von der IANA für LANs freigegebenes Subnet ist z.B. das bekannte und weit verbreitete 192.168/16-Netz (also IP-Adressen wie 192.168.0.1). Dieses könnte man für ein VPN verwenden, es wäre aber in vielen Fällen sehr ungünstig. Wenn man sich z.B. aus einem Internet-Cafe oder einem WLAN-Hotspot, das dieses Subnet verwendet, in das VPN einwählen würde, dass ebenfalls auf diesem Subnet basiert, würden Probleme entstehen. Der Rechner wüßte nicht, über welches Interface (also die physikalische oder die virtuelle Netzwerkkarte) er in dieses Netz addressierte Pakete versenden sollte. Damit sich solche LANs und das VPN nicht auf eine solche Art und Weise in die Quere kommen, wählen wir am Besten ein Subnet aus dem Bereich 10/8 (also 10.0.0.0 bis 10.255.255.255). Diese Bereiche werden viel seltener genutzt als das 192.168/16-Netz. In diesem Beispiel wird folgender Bereich verwendet: 10.8.0.0/24. Wie wir später sehen werden, erspart uns dieser Bereich ein wenig Tipparbeit, da er bereits die Standardeinstellung von OpenVPN ist. Er kann aber auch einfach verändert werden.

Zertifikate und Schlüssel generieren OpenVPN stellt prinzipiell zwei Methoden Zur Authentifikation zur Verfügung: per preshared key oder zertifikatsbasiert. Hier soll die zertifikatsbasierte Authentifikation verwendet werden, da sich bei einem preshared key stets nur ein Client im VPN befinden könnte. In dem zu erstellenden VPN sollen aber mehrere Clients parallel mit dem Netzwerk Verbindung aufnehmen können.

Für den Betrieb benötigen wir verschiedene Zertifikate und Schlüssel: Jeder Client benötigt einen eigenen privaten und einen öffentlichen Schlüssel (Zertifikat), ebenso wie der Server. Zusätzlich ist ein Master-Schlüssel und -Zertifikat erforderlich, mit dem die anderen Zertifikate signiert werden. Weitere Informationen zu asymmetrischen Verschlüsselungs-Verfahrens findet man hier.

Wir wechseln nun in folgendes Verzeichnis:

   cd /etc/openvpn/examples/easy-rsa/

Dort bearbeiten wir die Datei “vars”:

   sudo nano vars

Folgende Einträge sollten dort verändert werden:

   export KEY_COUNTRY=DE
   export KEY_PROVINCE=Hessen
   export KEY_CITY=Kassel
   export KEY_ORG=”vpn-test”
   export KEY_EMAIL=”spammerfalle@henningdippel.de”

Als E-Mail sollte natürlich die reguläre Adresse des Administrators angegeben werden, ebenso sollten Provinz und Stadt individuell verändert werden.

Wenn die Änderungen durchgeführt wurden, speichern wir die Datei und beenden nano:

   Strg+O
   Strg+X

OpenVPN kommt schon mit fertigen Scripten, um die PKI (Public-Key-Infrastruktur) zu intialisieren. Diese führen wir aus:

   . ./vars
   sudo ./clean-all
   sudo ./build-ca

Mit dem letzten Scriptaufruf wird das Master-Zertifikat und der Master-Schlüssel erstellt.

Nun erstellen wir das Zertifikat und den Schlüssel für den Server:

   sudo ./build-key-server server

Anschließend wird automatisch der Schlüssel mit dem vorher erstellten Master-Zertifikat signiert. Hierbei tragen wir als “Common Name” “server” ein, anschließend bestätigen wir zwei Mal mit “y”.

Nun ist es an der Zeit, die Schlüssel für die Clients zu generieren. In diesem Beispiel möchten wir drei Clients den Zugang zum VPN ermöglichen und generieren dazu drei Schlüssel:

   sudo ./build-key client1
   sudo ./build-key client2
   sudo ./build-key client3

Als “Common Name” muß hierbei immer jeweils client1, client2 oder client3 verwendet werden.Jetzt generieren wir die sogenannten Diffie-Hellman-Parameter. Diese bieten eine Möglichkeit, kryptografische Schlüssel sicher über unsichere Kanäle auszuhandeln. Diese Möglichkeit wird später beim Einwählen in das VPN benötigt.

   sudo ./build-dh

Dieser Schritt kann einige Zeit dauern.Nun sind alle benötigten Dateien im Ordner

   /etc/openvpn/examples/easy-rsa/keys/

Wir müssen die für die Clients benötigten Dateien an diese weitergeben. Da das Verzeichnis keys/ aber nur vom User root gelesen werden darf, ändern wir kurzerhand die Rechte:

   sudo chmod 755 /etc/openvpn/examples/easy-rsa/keys/

Wir kopieren folgende Dateien, die die Clients benötigen:

   ca.crt
   client1.crt
   client1.key
   client2.crt
   client2.key
   client3.crt
   client3.key


Erstellen der Konfigurations-Dateien für Server und Clients Zur Erstellung der Konfigurations-Dateien editieren wir die mitgelieferten Beispiel-Konfigurationen.

   cd /etc/openvpn/examples/sample-config-files/

Die Datei server.conf ist komprimiert, wir entkomprimieren sie:

   sudo gunzip server.conf.gz

Nun bearbeiten wir die Datei für den Server:

   sudo nano /etc/openvpn/examples/sample-config-files/server.conf

Die Einstellungen sind schon sehr brauchbar, es wird der UDP-Port 1194 und das Subnetz 10.8.0.0/24 verwendet. Wenn man möchte, dass sich die mit dem VPN verbundenen Clients auch untereinander sehen können, muss die Zeile client-to-client auskommentiert werden (d.h. das Semikolon muss gelöscht werden).

Ansonsten sollten noch folgende Zeilen anpgeasst werden, damit der OpenVPN-Server unsere erstellen Schlüssel und Zertifikate findet:

   ca /etc/openvpn/examples/easy-rsa/keys/ca.crt
   cert /etc/openvpn/examples/easy-rsa/keys/server.crt
   # This file should be kept secret
   key /etc/openvpn/examples/easy-rsa/keys/server.key 
   # Diffie hellman parameters.
   dh /etc/openvpn/examples/easy-rsa/keys/dh1024.pem

Nun Speichern und Beenden wir die Datei

Anschließend muss die Konfigurationsdatei für die Clients editiert werden. Diese brauchen sie, um das VPN zu erreichen.

   sudo nano /etc/openvpn/examples/sample-config-files/client.conf

Wir ändern zunächst die Adresse des VPN-Servers, unter der dieser im Internet erreichbar ist. Ich habe dazu einen DynDNS-Host angelegt:

   remote beispielname.dyndns.org

Desweiteren müssen eventuell die Pfadangaben zu den Dateien ca.crt, clientX.crt und clientX.key angepasst werden. Wenn sie beim Client aber im selber Verzeichnis wie die Datei client.conf liegen, ist dies aber nicht nötig.

Wir speichern und beenden wiederum.

Den eventuell durch eine Firewall geschützten Server aus dem Internet erreichbar machen Wenn der Server in einem Netzwerk steht, dass durch einen DSL-Router ins Internet geht, ist das Netzwerk höchstwahrscheinlich durch eine Router-interne Firewall geschützt. Daher müssen wir das Port-Forwarding auf dem DSL-Router aktivieren. Der Port 1194 (UDP) muss dabei auf die interne IP-Adresse des VPN-Servers weitergeleitet werden. Dazu sollte die Anleitung des DSL-Routers konsultiert werden.

OpenVPN-Server starten Nun können nun auch schon den Server starten:

   sudo openvpn /etc/openvpn/examples/sample-config-files/server.conf

Clients mit dem Server verbinden Die Clients verbinden sich mit dem VPN unter Linux folgendermaßen:

   openvpn /home/henning/OpenVPN-Test/client.conf

Dazu muss natürlich vorher openvpn installiert worden sein und das tun-Device (/dev/net/tun) muss die richtigen Rechte besitzen.

VPN-Server automatisch beim Booten starten

Wenn der VPN-Server sofort beim Booten von Ubuntu gestartet werden soll, müssen einfach folgende Dateien in das Verzeichnis

   /etc/openvpn/

gelegt werden:

   server.conf
   server.key
   cerver. crt
   ca.crt

Dabei müssen natürlich auch noch die Pfadangaben zu diesen Dateien in der Datei server.conf angepasst werden.

Rechner im lokalen LAN für die VPN-Clients sichtbar machen

Wir wollen nun, dass auch die anderen Rechner, die im LAN des VPN-Servers stehen, für die via VPN eingewählten Benutzer sichtbar sind. Dazu editieren wir die Datei server.conf sudo /etc/openvpn/server.conf und ergänzen den entsprechenden Bereich um ein

   push “route 192.168.178.0 255.255.255.0″

wobei der (für mein LAN gültige) Eintrag 192.168.178.0 durch den IP-Bereich des jeweiligen serverseitigen LANs ersetzt werden muss.

Nun muss noch das IP-Forwarding auf dem VPN-Server aktiviert werden. Dies geschieht, indem in der Datei

   /proc/sys/net/ipv4/ip_forward

die “0″ durch eine “1″ ersetzt wird.

Anschließend muss das serverseitige LAN-Gateway (in meinem Fall eine Fritz!Box) angewiesen werden, den Traffic für das VPN-Subnet 10.8.0.0/24 über den VPN-Server zu routen. Wie und ob das geht, ist der Anleitung des Gateways zu entnehmen.

Nun sind alle Rechner im serverseitign LAN über die VPN-Verbindung für die verbundenen Clients sichtbar. Hierbei ist allerdings zu beachten, dass die beiden LANs (von Server und Client) nicht dasselbe Subnet wie z.B. 192.168.0.0/24 verwenden dürfen, ansonsten funktioniert es nicht!


openvpn virtual private network (vpn) auf einem client installieren

dateien vom UfE-Server aus /etc/openvpn/keys/mpc003_ufe/* nach /etc/openvpn/ des m_pcs

vom server:#scp /etc/openvpn/keys/mpc003_keys/* root@192.168.2.100:/etc/openvpn
oder vom mpc:#scp root@l.ufegmbh.de:/etc/openvpn/keys/keys_mpc017/* /etc/openvpn

danach das vpn auf dem mpc neu starten

/etc/init.d/openvpn restart

Nun geht es immer noch nicht! In der Datei auf dem UfE-Server /etc/openvpn/u_client_conf/mpc003_ufe muß die Zeile:

ifconfig-push 10.1.1.3 10.1.1.4

stehen.\n\n