Creëer een VPN op Ubuntu 18.04 met OpenVPN

Geschatte leestijd: 6 min

Introductie

Met VPN-technologie kun je VPN-servers verbinden via een versleutelde verbinding en anoniem surfen op het internet omdat jouw verkeersdata privé is. OpenVPN is gratis, het is een open source en veel gebruikte VPN (Virtual Private Network) oplossing. Met OpenVPN kun je een lokaal netwerk maken tussen meerdere computers op verschillende netwerksegmenten. Je kunt vanuit de externe locatie toegang krijgen tot bedrijfssystemen die binnen het LAN bestaan. OpenVPN implementeert OSI layer 2/3 beveiligde netwerkextensie met behulp van het SSL / TLS-protocol. Daarnaast biedt OpenVPN externe gebruikers en branch offices toegang tot bedrijfstoepassingen en -bronnen met behulp van een versleutelde tunnel.

In deze tutorial leggen we je uit hoe je een VPN creëert op Ubuntu 18.04 met OpenVPN.

Vereisten

  • Een nieuwe Ubuntu 18.04 server installatie op jouw systeem
  • Een nieuwe statische ip-adres 192.168.0.101 die geconfigureerd is op jouw server

Stap 1: Laten we beginnen met de installatie

Voordat je begint is het van belang dat je IP-forwarding inschakelt om netwerkpakktetten correct door te sturen. Je kunt dit doen door /etc/sysctl.conf te bewerken:

nano /etc/sysctl.conf

Verander de volgende regel:

net.ipv4.ip_forward=1

Sla de wijzigingen op en sluit het bestand wanneer je klaar bent. Pas vervolgens de nieuwe instellingen toe door de volgende opdrachten uit te voeren:

sysctl -p

Stap 2: Installeer OpenVPN Server

Je kunt OpenVPN server installeren door het onderstaande commando uit te voeren:

apt-get install openvpn -y

Nadat de installatie is voltooid, start je de OpenVPN-service, voer het onderstaande commando uit zodat OpenVPN-service automatisch is ingeschakeld tijdens het opstarten.

systemctl start openvpn@server
systemctl enable openvpn@server

Als je klaar bent, kun je doorgaan naar de volgende stap.

Stap 3: Installeer en configureer EasyRSA

Allereerst moet je Easy RSA installeren om alle certificaten te genereren. Je kunt Easy RSA installeren door het volgende commando uit te voeren:

apt-get install easy-rsa -y

Kopieer vervolgens de EasyRSA directory naar /etc/openvpn/ . Je kunt dit doen door het onderstaande commando uit te voeren:

cp -r /usr/share/easy-rsa  /etc/openvpn/

Wijzig de directory naar /etc/openvpn/easy-rsa door het onderstaande commando uit te voeren:

cd /etc/openvpn/easy-rsa

Open het vars bestand en pas het aan volgens jouw locatie:

nano vars

Pas de onderstaande wijzigingen toe: 

export KEY_COUNTRY="INDIA"
export KEY_PROVINCE="CA"
export KEY_CITY="Ahmedabad"
export KEY_ORG="Snel"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"

Sla de wijzigingen op en sluit het bestand. Genereer vervolgens de Certificate Authority (CA) certificaat  en sleutel door het onderstaande commando uit te voeren:

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

Verstrek alle informatie die je hieronder ziet:

Generating a 2048 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) [INDIA]:
string is too long, it needs to be no more than 2 bytes long
Country Name (2 letter code) [INDIA]:IN
State or Province Name (full name) [CA]:CA
Locality Name (eg, city) [Ahmedabad]:
Organization Name (eg, company) [Snel]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) [Snel CA]:server
Name [EasyRSA]:
Email Address [[email protected]]:

Genereer vervolgens een certificaat en prive sleutel voor de server door het onderstaande commando uit te voeren:

./build-key-server server

Je zou de volgende output moeten zien:

Generating a 2048 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) [INDIA]:IN
State or Province Name (full name) [CA]:
Locality Name (eg, city) [Ahmedabad]:
Organization Name (eg, company) [Snel]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) [server]:
Name [EasyRSA]:
Email Address [[email protected]]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:Snel
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Can't open /etc/openvpn/easy-rsa/keys/index.txt.attr for reading, No such file or directory
140584598217152:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:74:fopen('/etc/openvpn/easy-rsa/keys/index.txt.attr','r')
140584598217152:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:81:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'IN'
stateOrProvinceName   :PRINTABLE:'CA'
localityName          :PRINTABLE:'Ahmedabad'
organizationName      :PRINTABLE:'Snel'
organizationalUnitName:PRINTABLE:'VPN'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'EasyRSA'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Apr 30 15:08:34 2029 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

Vervolgens moet je een sterke Diffie-Hellman-sleutel maken om te gebruiken tijdens de sleuteluitwisseling. Dit kun je doen met het onderstaande commando:

ls keys/

Output:

ca.crt  ca.key  dh2048.pem  index.txt  index.txt.attr  index.txt.old  serial  serial.old  server.crt  server.csr  server.key

Genereer vervolgens een secret ta.key met het onderstaande commando:

openvpn --genkey --secret ta.key

Kopieer alle certificaat bestanden naar /etc/openvpn/ directory met de onderstaande commando:

cd keys
cp server.crt server.key ca.crt dh2048.pem /etc/openvpn/
cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/

Vervolgens  genereer je client certificaat bestanden voor jouw server. Je kan dit doen door het onderstaande commando uit te voeren:

cd /etc/openvpn/easy-rsa/
source vars
./build-key client

Je zou nu de volgende output moeten zien:

Generating a 2048 bit RSA private key
.......................+++
...............+++
writing new private key to 'client.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) [INDIA]:IN
State or Province Name (full name) [CA]:
Locality Name (eg, city) [Ahmedabad]:
Organization Name (eg, company) [Snel]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) [client]:
Name [EasyRSA]:
Email Address [[email protected]]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:Snel
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:'IN'
stateOrProvinceName   :PRINTABLE:'CA'
localityName          :PRINTABLE:'Ahmedabad'
organizationName      :PRINTABLE:'Snel'
organizationalUnitName:PRINTABLE:'VPN'
commonName            :PRINTABLE:'client'
name                  :PRINTABLE:'EasyRSA'
emailAddress          :IA5STRING:'[email protected]'
Certificate is to be certified until Apr 30 15:17:30 2029 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

Nadat alle server and client certificaten zijn gegenereerd, kun je doorgaan met de volgende stap.

Stap 4: Configureer OpenVPN

Jouw server- en clientcertificaten zijn nu gereed, het is tijd om de OpenVPN-service te configureren zodat je alle certificaten kunt gebruiken die je eerder hebt gemaakt.

Om dit te kunnen doen, kopieer je een voorbeeld OpenVPN configuratiebestand naar de /etc/openvpn/ directory:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

Pak nu het configuratiebestand uit door het onderstaande commando uit te voeren:

gzip -d /etc/openvpn/server.conf.gz

Bewerk nu dit bestand /etc/openvpn/server.conf door de volgende wijzingen uit te voeren:

nano /etc/openvpn/server.conf

Pas deze wijzigingen toe:

tls-auth ta.key 0
key-direction 0
cipher AES-256-CBC
auth SHA256
dh dh2048.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
ca ca.crt
cert server.crt
key server.key

Sla de wijzingen op en sluit het bestand. Start de OpenVPN service opnieuw op zodat de wijzigingen zichtbaar zijn.

systemctl restart openvpn@server

Je kunt de status van OpenVPN server zien met het onderstaande commando:

systemctl status openvpn@server

Output:

[email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-05-03 21:19:02 IST; 40s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 3581 (openvpn)
   Status: "Initialization Sequence Completed"
    Tasks: 1 (limit: 1111)
   CGroup: /system.slice/system-openvpn.slice/[email protected]
           └─3581 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config 

May 03 21:19:02 ubuntu1804 ovpn-server[3581]: Could not determine IPv4/IPv6 protocol. Using AF_INET
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: Socket Buffers: R=[212992->212992] S=[212992->212992]
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: UDPv4 link local (bound): [AF_INET][undef]:1194
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: UDPv4 link remote: [AF_UNSPEC]
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: GID set to nogroup
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: UID set to nobody
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: MULTI: multi_init called, r=256 v=256
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: IFCONFIG POOL LIST
May 03 21:19:02 ubuntu1804 ovpn-server[3581]: Initialization Sequence Completed

Stap 5: Installeer en configureer Openvpn Client

Log eerst in op de Client-machine en installeer OpenVPN met het volgende commando:

apt-get install openvpn -y<

Kopieer vervolgens het voorbeeldbestand van de clientconfiguratie naar de map / etc / openvpn met het volgende commando:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Kopieer vervolgens alle clientcertificaatbestanden van de OpenVPN server naar de clientcomputer met het volgende commando:

scp [email protected]:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/easy-rsa/keys/client.key /etc/openvpn/
scp [email protected]:/etc/openvpn/easy-rsa/keys/client.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/ta.key /etc/openvpn/

Open vervolgens het client.conf-bestand, definieer het IP-adres van jouw server en clientcertificaat:

nano /etc/openvpn/client.conf

Pas de volgende wijzigingen toe:

client
remote 192.168.0.101 1194
user nobody
group nogroup
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1

Sla het bestand op en sluit het zodra je klaar bent. Start vervolgens de OpenVPN-clientservice met het volgende commando:

systemctl start openvpn@client

Je ziet nu het nieuwe IP-adres dat je hebt ontvangen van de OpenVPN server met het onderstaande commando:

ifconfig

Output:

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2528 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2528 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:228962 (228.9 KB)  TX bytes:228962 (228.9 KB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:100 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:6681 (6.6 KB)

Conclusie

Gefeliciteerd! Je hebt nu een OpenVPN-server geïnstalleerd en een verbinding gemaakt vanaf de clientcomputer. Je kunt nu jouw identiteit, locatie en verkeer beschermen tegen hackers. Daarnaast kun je nu ook vanuit Windows en macOS verbinding maken met de OpenVPN-server, je gebruikt hiervoor hetzelfde client.ovpn-bestand.

Was dit artikel nuttig?
Niet leuk 0
Weergaven: 1783

Reader Interactions

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *