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.
Geef een reactie