Installatie en configuratie van openvpn ubuntu 16.04. Routing en externe scripts. Clientconfiguratiebestanden installeren

VPN-technologie bekend als een manier beveiligde toegang naar bronnen van particuliere bedrijven, evenals verschillende inhoud, of het nu gaat om audio-, video- of archiefdocumenten. Hiermee kunt u een privénetwerk creëren, waarbij documenten naar de ene computer worden omgeleid met behulp van de bronnen van een andere of meerdere. Virtual Private Network wordt overal veel gebruikt moderne browsers. Gaat zelden zonder werken op afstand medewerker van een grote en belangrijke organisatie. Het instellen van OpenVPN Ubuntu is niet alleen voor techneuten en enthousiastelingen hoge beveiliging, maar ook al degenen die het niet willen verdragen hoge kosten gelicentieerde inhoud in landen waar de toegang daartoe beperkt is.

IN Linux-installatie virtuele netwerken dun.

Met deze technologie heeft u eenvoudig toegang tot inhoud in het Chinees bestandsopslag bijvoorbeeld uit Rusland, bekend om zijn wijdverbreide internetcensuur. Of gebruik het om vele andere belangrijke voordelen te krijgen van gratis online zijn. In organisaties is de kwestie van het gebruik van VPN urgent geworden vanwege de moeilijkheden bij het opzetten van firewalls. Het gebruik ervan vereiste voortdurend veranderende parameters van de aangesloten apparatuur en toegangsinstellingen. Voorheen leidde dit tot aanzienlijke tijd- en financiële kosten.

Het installeren van OpenVPN is een toepassing van vrij beschikbare virtuele particuliere netwerktechnologie. Het is zowel mogelijk in Windows- als Linux-gebaseerde besturingssystemen. Sinds in Linux-omgeving fijnafstemming Alle parameters van deze functie zijn eenvoudiger, we zullen er rekening mee houden. Het onderwerp Virtual Private Networks wordt uitgebreid behandeld op veel thematische sites en forums, waardoor zowel professionals als nieuwe aanhangers van beveiligingstechnologieën over de hele wereld zich erbij hebben kunnen aansluiten. Door OpenVPN Ubuntu te installeren, kunt u niet alleen het beveiligingsniveau van persoonlijke gegevens verhogen, maar ook uw activiteiten op het netwerk goed organiseren.

Waarom VPN gebruiken en geen andere beschermingsmethoden? persoonlijke informatie? Deze methode hoeft slechts één keer te worden geconfigureerd. Alle gegevens passeren automatisch de server particulier netwerk, onmiddellijk in gecodeerde vorm.

OpenVPN is behoorlijk functionele, snelle en flexibele software waarmee u met SSL VPN kunt werken. Het heeft een opening broncode. Dit betekent dat iedereen de mogelijkheden ervan individueel kan gebruiken en de programmacode aan zijn eigen behoeften kan aanpassen.

In feite biedt deze technologie het gebruik van onveilige netwerken alsof ze dat wel zouden doen krachtige bescherming. Dit zal zeer relevant zijn als:

  1. U gebruikt een internetverbinding met zwakke beveiliging om toegang te krijgen.
  2. In uw woonplaats geldt censuur op de toegang tot informatie.
  3. U bevindt zich op een locatie met openbare Wi-Fi-hotspots.
  4. U moet uw locatie goed verbergen voor andere netwerkgebruikers.
  5. U wilt uw persoonlijke gegevens en wachtwoorden nog beter beschermen.

ADVIES. VPN-netwerk wordt virtueel genoemd, omdat alle elementen ervan worden gecombineerd met behulp van software, dat gebruik maakt van virtuele verbindingen.

Het is privé omdat het voor niemand toegankelijk is. Dit kan alleen gedaan worden door individuele deelnemers die onderling zo’n verbinding hebben gecreëerd. Elk netwerkelement moet bevatten beschermende informatie. Deze informatie maakt het voor sommige internetdeelnemers gemakkelijk om toegang te krijgen tot het netwerk, en ontzegt ook eenvoudigweg de toegang aan anderen.

Basisconcepten

Een tunnel is een veilige verbinding die gebruikmaakt van de bronnen van een onveilig netwerk (in dit geval het internet) en het mogelijk maakt dat informatie wordt uitgewisseld via een privékanaal dat alleen is geconfigureerd voor vertrouwde apparaten.

Een client is een programma dat wordt geïnstalleerd op apparatuur waarop het nodig is om een ​​gegevensuitwisselingskanaal met de server te bieden. Dit kanaal is beveiligd.

Server - een computer of plaats waar informatie wordt opgeslagen rekeningen gebruikers van virtuele particuliere netwerken. Door een server te gebruiken, kunt u programma's versnellen en het verkeer (de hoeveelheid overgedragen gegevens) verminderen.

Openbare sleutels en certificaten zijn speciale gegevens die worden gebruikt om informatie te versleutelen. Bij het uitwisselen van gegevens gaan ze naar een certificeringscentrum waar ze worden ondertekend. Later keren ze terug naar bronelement netwerken.

Laten we verder gaan met oefenen

Om uw OpenVPN Ubuntu-server in te stellen, moet u uw server aanschaffen Ubuntu geïnstalleerd Linux. Je moet er rootrechten op krijgen. Momenteel kunt u een oplossing tegen een lage prijs aanschaffen en het aantal bedrijven dat dergelijke diensten aanbiedt, groeit. Het installeren van OpenVPN Ubuntu zelf vergt geen aanzienlijke tijdsinvestering.

Laten we aan de slag gaan met de installatie en configuratie

Eerst moet u verbinding maken met de server en deze de volgende opdrachten geven:

"apt-get-update
apt-get installeer openvpn"

Deze instructies zullen beginnen OpenVPN installeren. Vervolgens moet u het hulpprogramma voor het maken van sleutels en certificaten installeren en voorbereiden:

"cd/tmp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
apt-get install unzip
unzip master.zip
cd easy-rsa-master
./build/build-dist.sh
tar xvzf ./EasyRSA-git-development.tgz
cd EasyRSA-git-ontwikkeling"

"./easyrsa init-pki
./easyrsa bouw-ca
./easyrsa build-server-volledige server
./easyrsa build-client-full client1
./easyrsa gen-dh"

Na het genereren moet u de ontvangen gegevens overbrengen naar /etc/openvpn/:

"mv ./pki/dh.pem /etc/openvpn/dh.pem
mv ./pki/private/client1.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client1.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/"

Maak een server.conf-bestand in dezelfde map met de volgende parameters:

"modusserver
dev-tune
server 10.128.0.0 255.255.255.0
push "omleidingsgateway def1"
push "dhcp-optie DNS 8.8.8.8"
tls-server
caca.crt
cert-server.crt
sleutel server.sleutel
dh dh.pem
proto tcp-server
poort 1194
klant-tot-klant
comp-lzo
in leven houden 10 120
werkwoord 4
cijfer AES-256-CBC
gebruiker niemand
groep geengroep
max-klanten 10"

Launch

"dienst openvpn starten"

"mkdir vpn
cd-vpn
scp vpn-server:/etc/openvpn/client1.crt ./
scp vpn-server:/etc/openvpn/client1.key ./
scp vpn-server:/etc/openvpn/ca.crt ./"

Hier op de externe regel moet u het IP-adres van de server schrijven, zoals weergegeven in het voorbeeld.

"cliënt
proto-tcp
dev-tune
op afstand 123.45.67.89 1194
persistent-sleutel
volhouden-tun
caca.crt
cert-client1.crt
sleutel klant1.sleutel
cijfer AES-256-CBC
comp-lzo
werkwoord 3"

"sudo openvpn --config client.conf"

In het aangrenzende terminalvenster moet je de opdracht invoeren:

"ping 10.128.0.1
traceroute mail.ru"

Als alles correct is gedaan, zult u merken dat 10.128.0.1 succesvol pingt. Er worden echter geen pakketten naar de ontvanger verzonden, omdat NAT niet op de server is geconfigureerd. Deze stap moeten we nog voltooien.

Op de server moet u een bestand openen met de naam /etc/sysctl.conf en het commentaar verwijderen van de regel “net.ipv4.ip_forward=1”, waardoor het actief wordt.

"echo1>>/proc/sys/net/ipv4/conf/all/forwarding"

Dan moet je invoeren:

"iptables -A FORWARD -s 10.128.0.0/24 -j ACCEPTEREN
iptables -A FORWARD -d 10.128.0.0/24 -m status \
--state GEVESTIGD, GERELATEERD -j ACCEPTEREN
iptables -t nat -A POSTROUTING -s 10.128.0.0/24\
-j SNAT —naar-bron (serveradres)"

"iptables-save > /etc/iptables.rules"

U moet ook controleren of de regel “pre-up iptables-restore” is geschreven in het bestand “/etc/network/interfaces”< /etc/iptables.rules». Перезагрузите сервер OpenVPN, чтобы настраивать его дальше.

Je moet voltooien VPN-installatie door Netwerkbeheerder. Om dit te doen, moet u het commando “sudoapt-get install network-manager-openvpn-gnome” invoeren. U kunt alle eerder gespecificeerde bestanden in tekstvorm in de configuratie schrijven.

Hiermee is de installatie van de OpenVPN-server in Ubuntu voltooid! Als je problemen ondervindt, aarzel dan niet om het in de reacties te stellen of voor details te zoeken op thematische forums! Linux is complex en veelzijdig systeem, dat zich zelden meteen leent voor beginners. Maar met de juiste hoeveelheid inspanning is het mogelijk om dit te overwinnen. En dan openen zich voor de gebruiker een miljoen nieuwe mogelijkheden die voorheen buiten beeld waren.

VPN (Virtual Private Network) is een technologie waarmee u computers via internet kunt verbinden alsof ze zich op hetzelfde lokale netwerk bevinden. Hierdoor kunnen we kantoren in verschillende steden en landen verenigen in één netwerk.
Door thuis een VPN-server te installeren, en cliënt deel op uw smartphone heeft u via het openbaar toegang tot internet WiFi-punten zonder angst dat uw wachtwoorden worden onderschept.
Het huren van een server in een buitenlands datacenter kost vanaf $5 per maand en door het plaatsen van een VPN in de Amerikaanse regio krijgen wij toegang tot Spotify, Pandora, Hulu en andere diensten die in jouw land niet beschikbaar zijn, en heb je geen last meer van internetcensuur .

1. Installeer OpenVPN.

Laten we onze server updaten en OpenVPN en een certificeringsinstantie installeren.

Sudo apt update sudo apt upgrade sudo apt install openvpn easy-rsa

OpenVPN is een virtueel particulier netwerk dat TLS/SSL gebruikt om verkeer te versleutelen. Dit betekent dat we vertrouwde certificaten nodig hebben.

2. Opzetten van een certificeringsinstantie

Laten we een certificeringsinstantie oprichten.

Make-cadir ~/openvpn-ca cd ~/openvpn-ca nano vars

Laten we het volgende fragment zoeken:

. . . . . export KEY_COUNTRY="VS" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[e-mailadres beveiligd]

" export KEY_OU="MijnOrganisatie-eenheid" . . .

en vervang het door uw gegevens

. . . . .

export KEY_COUNTRY="RU " export KEY_PROVINCE="SPb " export KEY_CITY="Sankt-Peterburg " export KEY_ORG="site " export KEY_EMAIL="admin@site " export KEY_OU="IT " . . . . .

Een paar regels hieronder zullen we de waarde van KEY_NAME wijzigen

Exporteer KEY_NAME="server" cd ~/openvpn-ca bronvars

Als reactie hierop zou het systeem het volgende moeten uitgeven:

OPMERKING: als u ./clean-all uitvoert, zal ik een rm -rf uitvoeren op /home/sammy/openvpn-ca/keys

Laten we voor de zekerheid de map met alle sleutels leegmaken:

./schoon-alles

De vereiste waarden worden automatisch vervangen door het vars-bestand, dat we zojuist hierboven hebben bewerkt. Druk eenvoudigweg op Enter om uw selectie te bevestigen.

We hebben een certificeringsinstantie geïnstalleerd die we zullen gebruiken om de andere bestanden te maken die we nodig hebben.

3. Maak een certificaat, sleutel en coderingsbestanden voor de server

Laten we eerst creëren OpenVPN-certificaat en sleutels voor de server. Om dit te doen, voert u de volgende opdracht uit:

./build-key-server-server

We gaan akkoord met alle standaardwaarden, aan het einde selecteren we tweemaal “y”.
Laten we nu Diffie-Hellman-protocolsleutels genereren met de opdracht:

./build-dh

en een HMAC-handtekening om het vermogen van de server om de integriteit en authenticiteit van verzonden TSL-gegevens te verifiëren te versterken:

Openvpn --genkey --geheime sleutels/ta.key

4. Maak een certificaat en sleutelpaar voor de client

Laten we eens kijken naar de procedure voor het maken van een sleutel en certificaat voor de client client1. Als er meerdere klanten zijn, is het creatieproces vergelijkbaar. automatische verbinding we zullen een bestand zonder wachtwoord aanmaken. We gebruiken het build-key commando:

Cd ~/openvpn-ca source vars ./build-key client1

5. De OpenVPN-service instellen

Kopieer de gemaakte bestanden (CA-certificaat en -sleutel, servercertificaat en -sleutel, HMAC-handtekening, Diffie-Hellman-bestand) van de map ~/openvpn-ca/keys naar /etc/openvpn

Cd ~/openvpn-ca/keys sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf sudo nano /etc/openvpn/server.conf

Laten we de HMAC-sectie zoeken en de regel verwijderen met tls-auth, en ook de parameter key-direction toevoegen:

Tls-auth ta.key 0 # Dit bestand heeft de geheime sleutelrichting 0

Vervolgens zoeken we naar het coderingsgedeelte en verwijderen we de regel met het AES-128-CBC-cijfer en voegen daarna het HMAC-algoritme toe:

Cipher AES-128-CBC-authenticatie SHA256

En tot slot, zoek de regelsgebruiker en -groep en verwijder de opmerkingen:

Gebruiker niemand groep geengroep

6. De OpenVPN-service inschakelen

Om onze server voor het beoogde doel te kunnen gebruiken, moet deze verkeer kunnen omleiden.

sudo nano /etc/sysctl.conf

Zoek de regel en verwijder het commentaar:

net.ipv4.ip_forward=1

Om de gewijzigde instellingen toe te passen:

sudo sysctl-p

Laten we beschrijven hoe onze server zal starten. Omdat de naam van het configuratiebestand server.conf is, zullen we het volgende commando geven:

sudo systemctl start openvpn@server

Laten we controleren of de server is gestart:

sudo systemctl-status openvpn@server

en is de tun-interface actief?

ip-adres show tun0

Als alles werkt, voeg dan de instellingen toe bij het opstarten:

sudo systemctl schakel openvpn@server in

7. Script voor het instellen van clients.

mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files cp /usr/share/doc/openvpn/voorbeelden/sample-config-files/client.conf ~/client-configs/base.conf

Laten we enkele wijzigingen aanbrengen in het bestand base.conf

nano ~/client-configs/base.conf . . . # De hostnaam/IP en poort van de server. # Dat kan hebben meerdere externe vermeldingen # om de belasting tussen de servers te verdelen. externe server_IP_adres 1194 . . .

In plaats van server_IP_address schrijven we het IP-adres van onze OpenVPN-server.

proto udp-gebruiker niemand groep nogroup

We slaan certificaten en sleutels rechtstreeks op in het configuratiebestand, dat we later zullen maken. Laten we daarom de regels becommentariëren ca, cert En sleutel

# SSL/TLS-parms. # Zie de serverconfiguratie bestand voor meer # beschrijving. Het is het beste # een afzonderlijk .crt/.key-bestandspaar # te gebruiken voor elk cliënt. Eén enkel ca #-bestand kan voor alle clients worden gebruikt. #ca ca.crt #cert client.crt #key client.key

Laten we de instellingen van het clientgedeelte naar dezelfde instellingen van de server brengen.

Controleer de aanwezigheid van het bestand /etc/openvpn/update-resolv-conf op uw clientsysteem. Als er een is, moeten de laatste drie regels zonder commentaar worden verwijderd.

cipher AES-128-CBC auth SHA256 sleutelrichting 1 # scriptbeveiliging 2 # omhoog /etc/openvpn/update-resolv-conf # omlaag /etc/openvpn/update-resolv-conf

Ten slotte gaan we een script maken waarmee we configuratiebestanden voor klanten maken.

Nano ~/client-configs/make_config.sh

Laten we de tekst invoegen:

#!/bin/bash # Eerste argument: Client-ID KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat $(BASE_CONFIG) \<(echo -e "")\$(KEY_DIR)/ca.crt\<(echo -e "\N ")\$(KEY_DIR)/$(1).crt\<(echo -e "\N ")\$(KEY_DIR)/$(1).sleutel\<(echo -e "\N ")\$(KEY_DIR)/ta.key\<(echo -e "") \ > $(OUTPUT_DIR)/$(1).ovpn

Laten we het bestand opslaan en sluiten, en het vervolgens uitvoerbaar maken:

Chmod 700 ~/client-configs/make_config.sh

8. Generatie van clientconfiguratiebestanden

cd ~/client-configs ./make_config.sh client1

Laten we eens kijken wat er is gebeurd:

Ls ~/client-configs/files

als gevolg hiervan zouden we het bestand moeten krijgen

Klant1.ovpn

met verbindingsinstellingen, certificaten en sleutel.

Dit bestand moet via een beveiligde verbinding op de clientcomputer worden afgeleverd. Op Linux kun je het scp-commando gebruiken. Op clientcomputer laten we rennen:

Scp viktor@openvpn_server_ip :client-configs/files/client1.ovpn ~/

Kopieer het bestand “client1.ovpn” uit externe server naar uw lokale computer.

9. Clientconfiguratiebestanden installeren

We zullen de volgende stappen alleen uitvoeren op de clientcomputer waarop Ubuntu draait. Laten we OpenVPN installeren.

Sudo apt-get update sudo apt-get install openvpn

Laten we controleren of er een bestand /etc/openvpn/update-resolv-conf op ons systeem staat

Ls /etc/openvpn

Als we uitvoeren:

Update-oplossen-conf

laten we het client1 .ovpn-configuratiebestand bewerken, dat we van de server hebben gedownload

Nano-client1 .ovpn

Laten we de volgende regels verwijderen:

Scriptbeveiliging 2 omhoog /etc/openvpn/update-resolv-conf omlaag /etc/openvpn/update-resolv-conf

Laten we het bestand opslaan en sluiten.

Laten we nu proberen de verbinding te starten:

Sudo openvpn --config client1 .ovpn

Als je alles goed hebt gedaan, maak je uiteindelijk verbinding met de server.

Wilt u veilig internetten vanaf uw smartphone of laptop wanneer u verbonden bent met een onbeveiligd netwerk via hotel- of café-wifi? Met een Virtual Private Network (VPN) kunt u onbeveiligde netwerken gebruiken alsof u zich op een particulier netwerk bevindt. Al uw verkeer gaat in dit geval via de VPN-server.

In combinatie met het gebruik van een HTTPS-verbinding kunt u met de hieronder beschreven instellingen uw privégegevens, zoals logins en wachtwoorden, en uw aankopen beveiligen. Bovendien kun je omzeilen regionale beperkingen en censuur, en verberg uw locatie en niet-gecodeerd HTTP-verkeer voor een onbeveiligd netwerk.

U kunt een profiel van uw computer naar uw telefoon overbrengen door verbinding te maken Android-apparaat via USB naar uw computer en kopieer het bestand. U kunt het profielbestand ook verplaatsen met behulp van een SD-kaart door het profiel naar de kaart te kopiëren en de kaart in uw Android-apparaat te plaatsen.

Start de OpenVPN-applicatie en klik op het menu om het profiel te importeren.

Verbinding

Om een ​​verbinding tot stand te brengen, klikt u op de knop Verbinden. U wordt gevraagd of u de OpenVPN-applicatie vertrouwt. Antwoord OK om een ​​verbinding tot stand te brengen. Om de verbinding te verbreken, gaat u naar de OpenVPN-applicatie en selecteert u Verbreek de verbinding.

Stap 13. Testen van de VPN-verbinding

Nadat alles is geïnstalleerd en geconfigureerd, gaan we ervoor zorgen dat alles correct werkt. Zonder een VPN-verbinding tot stand te brengen, opent u uw browser en gaat u naar DNSLeakTest.

Deze site retourneert het IP-adres dat uw internetprovider aan u heeft toegewezen. Om te controleren welke DNS-servers in gebruik zijn, klik dan op Uitgebreide proef.

Breng nu een verbinding tot stand met behulp van uw VPN-client en ververs de pagina in uw browser. Het IP-adres dat u krijgt, moet compleet anders zijn. Nu gebruik je dit nieuwe IP-adres voor iedereen op internet. Klik Uitgebreide proef nogmaals om uw DNS-instellingen en zorg ervoor dat u nu de DNS-server van uw VPN gebruikt.

Stap 14: Clientcertificaten intrekken

Van tijd tot tijd moet u mogelijk een clientcertificaat intrekken om toegang tot de VPN-server te voorkomen

Om dit te doen, gaat u naar de map van uw certificeringsinstantie en voert u de opdrachten in:

  • cd ~/openvpn-ca
  • bron var
  • ./revoke-full client3

De uitvoer van deze opdracht eindigt met fout 23. Dit is normaal. Als resultaat van dit werk wordt er een crl.pem-bestand aangemaakt in de sleutelsmap met de informatie die nodig is om het certificaat in te trekken.

Verplaats dit bestand naar de map /etc/openvpn:

  • sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
  • sudo nano /etc/openvpn/server.conf

Voeg de regel crl-verify toe aan het einde van het bestand. De OpenVPN-server controleert de certificaatintrekkingslijst telkens wanneer iemand verbinding maakt met de server.

/etc/openvpn/server.conf

Crl-verifieer crl.pem

Sla het bestand op en sluit het.

Start OpenVPN opnieuw om het certificaatintrekkingsproces te voltooien:

  • sudo systemctl herstart openvpn@server

Nu kan de client geen verbinding tot stand brengen met de OpenVPN-server met behulp van het oude certificaat.

Volg deze stappen om aanvullende certificaten in te trekken:

    Genereer nieuwe lijst ingetrokken certificaten met behulp van de opdracht source vars in de map ~/openvpn-ca en door de opdracht revoke-full uit te voeren met de clientnaam.

    Kopieer de nieuwe certificaatintrekkingslijst naar de map /etc/openvpn en overschrijf daarmee de oude lijst.

    Start de OpenVPN-service opnieuw.

Deze procedure kan worden gebruikt om certificaten in te trekken die u eerder hebt gemaakt.

Conclusie

Gefeliciteerd! Nu hebt u veilig toegang tot internet en wordt al uw verkeer beschermd tegen afluisteren door censuur en indringers.

Voor configuratie extra klanten herhaal stappen 6 En 11-13 voor elk nieuw apparaat. Gebruik de stap om de toegang voor een bepaalde client in te trekken 14 .

Wie deed mijn taak om gedistribueerd te linken lokale netwerken samen. De eerste ervaring was het opzetten van een server voor FreeBSD, en vanaf daar ging het, zoals ze zeggen, verder. Tot nu toe draaien bijna alle servers die ik heb geconfigureerd op Ubuntu Linux of een andere versie.

En onlangs merkte ik dat tussen de rommel die erin zat opgeslagen /etc/init.d, een script met de naam ligt bescheiden op de loer. “En dan?” - een ervaren beheerder zal er onmiddellijk naar vragen. Het punt is dat tot voor kort de opkomst van netwerkinterfaces, inclusief TUN, Ik organiseerde uitsluitend via /etc/netwerk/interfaces, werkend met opties vooraf om de OpenVPN-daemon en opties te starten voor-naar beneden om het te stoppen. Al deze "schande" werd overal verwaterd door verschillende commando's die routeringstabellen manipuleerden... Over het algemeen was het resultaat een nogal omslachtig beeld. In principe werkte alles redelijk goed, maar aangezien de ontwikkelaars een andere (Ubuntu-manier?) manier bieden, waarom zou je die dan niet gebruiken, vooral omdat dit de problemen aanzienlijk zal verlichten /etc/netwerk/interfaces. Wat heb ik gekregen?

OpenVPN installeren

Voor het installeren van OpenVPN op Ubuntu zijn geen trucjes met je oren nodig:

$ sudo apt-get installeer openvpn

Zorg ervoor dat u bevestigt dat alle afhankelijkheden zijn geïnstalleerd.

Degenen die OpenVPN vanuit de broncode willen/moeten installeren, zullen zich hiermee vertrouwd moeten maken.

Als je geïnteresseerd bent binaire pakketten voor andere platforms, bezoek .

Locatie van sleutelbestanden

Omdat ik in dit artikel heb besloten om het te hebben over het instellen van het OpenVPN-clientgedeelte, gaan we ervan uit dat je al over de coderingssleutelbestanden beschikt (de beheerder van de OpenVPN-server heeft ze aan je gegeven). Het aantal en type sleutels hangt af van hoe de OpenVPN-server waarmee u verbinding maakt, is geconfigureerd. In dit artikel wordt ervan uitgegaan dat er drie bestanden worden gebruikt voor codering en authenticatie:

  • de persoonlijke coderingssleutel van de klant in het formaat .pem(laten we het bestand klant.sleutel);
  • clientcertificaat ondertekend door een certificeringsinstantie in het formaat .pem, (laten we het bestand een naam geven klant.crt);
  • certificaat van de servercertificeringsinstantie in de indeling .pem waarmee het bestand is ondertekend klant.crt(laten we het bestand ca.crt)

Zodra u de sleutel en certificaten heeft ontvangen, moet u ervoor zorgen dat de veiligheid ervan gewaarborgd is. Goede beslissing al deze dingen worden op een flashdrive geplaatst, gecodeerd in bijvoorbeeld . In dit artikel gaan we ervan uit dat de sleutels en certificaten zich in de directory bevinden /media/toetsen. Zorg er ook voor dat u minimale toegangsrechten hebt voor de map met de sleutel en certificaten:

$ sudo chown -R root.root /media/keys
$ sudo chmod 0700 /media/keys
$ sudo chmod 0600 /media/keys/*
# ls -la /media/toetsen
drwx------ 2 root root 1024 2010-08-18 15:32 .
drwx------ 5 root root 1024 2010-08-18 15:24 ..
-rw------- 1 root root 1265 2010-08-18 22:27 ca.crt
-rw------- 1 root root 3821 2010-08-18 15:13 client.crt
-rw------- 1 root root 887 18-08-2010 15:13 client.key

Configuratiebestand

OpenVPN-configuratiebestanden bevinden zich doorgaans in een map of /usr/local/etc/openvpn. In dit artikel ga ik ervan uit dat je OpenVPN hebt geïnstalleerd vanuit de Ubuntu-repository's en dat de map waarin de configuratie wordt opgeslagen .

Als u verbinding maakt met een OpenVPN-server die niet door u is geconfigureerd, moet deze persoon u doorgaans een “basis”-configuratiebestand geven met de minimaal vereiste set parameters. Te midden van configuratieparameters OpenVPN is individueel voor de clienthost, meestal de paden naar de sleutel- en certificaatbestanden, evenals de paden naar externe scripts en initialisatiescripts.

Stel dat de server waarmee u verbinding maakt, wordt aangeroepen mijnvpnsrv.com. Het is heel handig om de configuratiebestanden een naam te geven (er kunnen er meerdere zijn als u meerdere verbindingen of meerdere opties voor een verbinding gebruikt) in overeenstemming met de servernamen. In ons voorbeeld bevindt het configuratiebestand zich dus in /etc/openvpn/myvpnsrv.conf met de volgende inhoud:

cliënt
op afstand myvpnsrv.com
ca /media/keys/ca.crt
sleutel /media/keys/client.key
cert /media/keys/client.crt
demon
dev-tune
proto udp
comp-lzo

De eerste regel vertelt OpenVPN dat de verbinding in clientmodus zal zijn.

Parameterwaarde op afstand specificeert de hostnaam of het IP-adres van de server.

Parameterwaarden ca, sleutels En cert definieer de paden naar respectievelijk het CA-certificaatbestand, de privésleutel en het clientcertificaat.

Door de parameter op te geven demon we dwingen OpenVPN om los te koppelen van de console en op de achtergrond te draaien.

Parameter ontwikkelaar specificeert het type netwerkinterface dat zal worden gebruikt om gecodeerd verkeer met de server uit te wisselen. Kan een verschil maken ton of kraan. Het fundamentele verschil tussen deze twee soorten interfaces kan worden ontdekt.

Parameter proto definieert het protocol waarin gecodeerd verkeer wordt verpakt. gebruik UDP.

Beschikbaarheid van parameter comp-lzo dwingt OpenVPN om het verkeer te comprimeren, wat erg handig is als je een “smal” datatransmissiekanaal hebt.

Routing en externe scripts

Met OpenVPN kunt u onder andere externe programma's uitvoeren na het opstarten, maar ook voor en na het stoppen van de daemon. Erg handig als je bij het ophogen van een tunnel aan routeringstabellen moet sleutelen.

Merk onmiddellijk een subtiel punt op. Om ervoor te zorgen dat de OpenVPN-daemon externe programma's kan starten, moet dit expliciet worden toegestaan ​​door de parameter door te geven script-beveiliging met een waarde niet lager dan 2. Veiligheid echter.

Om het pad op te geven naar een programma dat automatisch daarna wordt aangeroepen netwerkinterface wordt verhoogd, gebruikt u de parameter omhoog, waarbij het het pad naar het programma en mogelijk aanvullende parameters als waarde wordt doorgegeven.

Om een ​​extern programma te starten nadat de netwerkinterface is losgekoppeld, gebruikt u de parameter omlaag, waarbij uiteraard het pad en de parameters van het opgeroepen programma worden vermeld. Als het nodig is dat het programma wordt gestart voor Als u de interface uitschakelt, geeft u ook de parameter op omlaag-voor geen betekenis.

Nu iets over de details van het aanroepen van externe programma's door de OpenVPN-daemon. Feit is dat ze niet alleen "dom" worden genoemd, maar dat er nog meer verbindingsparameters aan worden doorgegeven, wat erg handig is bij het werken met routeringstabellen.

Formaat voor het aanroepen van een extern programma door de OpenVPN-daemon tijdens initialisatie tun-interface volgende:

tun_dev tun_mtu link_mtu ifconfig_local_ip ifconfig_remote_ip

  • tun-ontwikkelaar— naam van de netwerkinterface, bijvoorbeeld tun1;
  • tun_mtu— MTU van de netwerkinterface;
  • link_mtu— aansluiting MTU;
  • ifconfig_local_ip— IP-adres van de klant (aan “onze” kant);
  • ifconfig_remote_ip— client-IP-adres (serverzijde);
  • begin— verzonden als het programma wordt aangeroepen terwijl de daemon aan het starten is;
  • opnieuw opstarten— verzonden als het programma wordt aangeroepen tijdens een daemon-herstart (bijvoorbeeld als de verbinding is verbroken);

Voor tik op de interface het formaat is hetzelfde, behalve dat in plaats van ifconfig_remote_ip verzonden ifconfig_netmasker, met daarin het subnetmasker waar onze client zich bevindt.

Er moet ook worden opgemerkt dat u alle parameters doorgeeft extern programma, gebruik omhoog/omlaag, zal worden vervangen voor de hierboven genoemde parameters.

Ik denk dat dit genoeg theorie is, laten we aan de slag gaan. Stel dat u op de een of andere manier de routeringstabel van uw host moet wijzigen wanneer u de OpenVPN-daemon start/herstart/stopt. Voor twee netwerkinterfaces heb ik dit probleem opgelost met het volgende bash-script:

#!/bin/bash case $(1) in "up") case $(2) in "tun0") ip-regel toevoegen ... ip-route toevoegen ... ;;

"tun1") ip-regel toevoegen ... ip-route toevoegen ... ;;

esac ;; "down") case $(2) in "tun0") ip-regel del ... ip-route del ... ;;
"tun1") ip-regel del ... ip-route del ... ;;

esac ;; esac

  • $1 omhoog of omlaag;
  • $2 En het script wordt aangeroepen door twee OpenVPN-parameters: up "/usr/local/bin/routes.sh up" of down "/usr/local/bin/routes.sh down";
  • $3 Dat wil zeggen dat het gelanceerde script ongeveer de volgende parameters ontvangt:
  • $4 — interfacenaam. In het systeem dat ik denk, zou dit wel kunnen
  • $5 tun0
  • $6 tun1
  • $7 begin of opnieuw opstarten(deze parameter wordt door mij volledig genegeerd, dus manipulaties met routes worden altijd uitgevoerd, zelfs als de netwerkinterface niet was uitgeschakeld, maar er alleen een "normale" herstart van de daemon plaatsvond vanwege een gebrek aan communicatie).

Het spreekt voor zich dat u parameterwaarden $3 - $6 kunt (en moet) gebruiken. Als u bijvoorbeeld een deel van het verkeer door een VPN-tunnel wilt leiden, kunt u zoiets gebruiken als:

IP-route toevoegen vanaf 192.168.0.0/24 via $(6)

waarbij de variabele $6 wordt gebruikt om het routeradres te bepalen waarlangs verkeer moet worden gerouteerd.

De daemon starten en stoppen

Waarom eigenlijk al deze dansen met het oproepen van externe scripts en het verlaten van het goede oude /etc/netwerk/interfaces? Hier gaat het allemaal om.

Open het bestand /etc/default/openvpn en in de variabele AUTOSTART specificeer de naam van het configuratiebestand (of meerdere, gescheiden door een spatie) uit de map, waarbij de extensie “.conf” wordt verwijderd. Voor ons voorbeeld ziet het er als volgt uit:

AUTOSTART="mijnvpnsrv"

Of, als u wilt dat OpenVPN verbindingen maakt op basis van alle gevonden configuratiebestanden:

Nu is “één tablet voldoende” in de vorm van:

sudo-service openvpn starten

en script uit /etc/init.d/openvpn zal OpenVPN voorzichtig starten voor alle gevonden configuraties.

Het stoppen van de daemon is ook niet erg moeilijk:

sudo-service openvpn stop

En tot slot. Als u een van de bestaande nodig heeft configuratiebestanden niet is verwerkt, volstaat het om in te definiëren /etc/default/openvpn.

OpenVPN dit is het krachtigst softwarepakket open source voor het creëren van VPN-netwerken van elke complexiteit. Hij werd enorm populair en op dit moment ondersteunt alle platforms. Voldoet aan alle normen van veiligheid, betrouwbaarheid en flexibiliteit. Het enige negatieve is de vereiste om software aan de clientzijde te installeren, maar de voordelen wegen zwaarder dan alle nadelen.

OpenVPN-functies:

  • Een vooraf ingestelde sleutel is de eenvoudigste authenticatiemethode.
  • Certificaatauthenticatie is de meest flexibele methode in instellingen.
  • Met login en wachtwoord - kan worden gebruikt zonder een clientcertificaat aan te maken ( servercertificaat nog steeds nodig).
  • Verkeerscompressie met lzo.
  • Gebruik het TCP/UDP-protocol van uw keuze.
  • Gebruik van IP-tunneling/Ethernet-tunnel.

Voer de opdracht uit om te installeren:

apt-get installeer openvpn

De belangrijkste authenticatiemethode is natuurlijk een certificaat, en dat is waar we zullen beginnen.

We hebben nodig:

  • Servercertificaat, serversleutel (geheim).
  • Clientcertificaat, clientsleutel (geheim).
  • Diffie Hellman-sleutel voor TLS-sessie.
  • CA-certificaat (Maak een certificeringsinstantie om het servercertificaat te ondertekenen en klant, deze methode handig voor het beheren van certificaten).
  • CA-sleutel (zeer geheim).
  • De laatste sleutel voor TLS-authenticatie (HMAC-handtekening).

Schrik niet meteen als je niet zo goed bent in certificaten; ze hebben alles voor je bedacht. OpenVPN bevat een set scripts voor het genereren van certificaten gemakkelijk-rsate vinden op /usr/share/easy-rsa/ . We zullen voor het gemak een map aanmaken en easy-rsa verplaatsen naar /etc/openvpn/easy-rsa.

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

Exporteer KEY_SIZE=2048 #Sleutelgrootte. export KEY_COUNTRY="VS" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL=" export CA_EXPIRE=3650 #CA-certificaat geldigheidsduur, dagen.

export KEY_EXPIRE=3650 #Geldigheidsperiode certificaat, dagen.

export KEY_COUNTRY="US" #Land export KEY_PROVINCE="CA" #Alleen gebruikt in de VS export KEY_CITY="SanFrancisco" #Stad export KEY_ORG="Fort-Funston" #Organisatie export KEY_EMAIL="
" #Servermail. export KEY_OU="MijnOrganisatieUnit" #Mijn eenheid.
export KEY hoeft niet te worden gewijzigd tijdens het genereren van certificaten en sleutels, u kunt de gegevens handmatig invoeren. We starten de scriptshell en genereren een CA-certificaat: cd /etc/openvpn/easy-rsa/
bron var

./schoon-alles

# Wist alle certificaten in de map /etc/openvpn/keys.

./bouw-ca Laten we nu een certificaat en serversleutel maken:./build-key-server-server Vul de velden in voor vragen Een uitdagingswachtwoord: , Een optionele bedrijfsnaam:

Wij antwoorden N. Wij ondertekenen het certificaat

Het certificaat ondertekenen?

wij antwoorden

j. ./build-dh TLS-authenticatiesleutel: openvpn --genkey --geheime sleutels/ta.key Het laatste doel is de clientsleutel en het certificaat. Dit kan zowel op de server als via de overdracht van de sleutel naar de client

BESCHERMD kanaal of met genereren aan

klantmachine en onderteken het met de certificeringsinstantie van de server. Voor de eenvoud genereren we alles op de server en dragen we vervolgens de sleutel en het certificaat over naar de client..

./build-key gebruiker

  • # Als u veel klanten heeft, veranderen we naar analogie de namen gebruiker1, gebruiker2, enz.
  • Met de opdracht kunt u ook een met een wachtwoord beveiligde clientsleutel maken
  • ca.crt
  • ./build-key-pass-gebruiker

De klant heeft de volgende sleutels nodig: gebruiker.crt gebruiker.sleutel

ta.sleutel

Modusserverpoort 1194 #Poort. proto udp #Protocol. dev tun #Verbindingstype. ca ca.crt #Pad naar het certificaat. cert server.crt sleutel server.key #Pad naar de serversleutel. dh dh2048.pem #Pad naar dh. server 10.0.0.1 255.255.255.0 ifconfig-pool-persist ipp.txt # bestand waarin de “clientprofiel, toegewezen IP-adres”-verbindingen worden opgeslagen. keepalive 10 120 # stel het aantal seconden in voor respectievelijk ping en ping-herstart. comp-lzo #Schakel verkeerscompressie in persistent-key #wanneer een SIGUSR1-signaal wordt ontvangen of ping-restart wordt geactiveerd, is het niet nodig om de certificaten opnieuw te lezen, aangezien de server niet voldoende rechten heeft persistent-tun # Hetzelfde voor de tunnel. status openvpn-status.log log /var/log/openvpn.log werkwoord 3 #Logdetail 0-11. tls-auth ta.key 0 #tls autorisatiecijfer AES-256-CBC #officieel aanbevolen codering of AES-128-CBC. auth SHA512 # Standaard wordt SHA1 gebruikt, wat niet langer zo veilig is. Met #client-to-client kunnen VPN-serverclients met elkaar communiceren. max-clients 5 # limiet maximaal aantal gelijktijdig verbonden clients #Verlaag de VPN-serverrechten voor meer veiligheid gebruiker niemand groep geengroep

We starten de server en als alles in orde is, verschijnt de tun0-interface:

root@debian:/# service openvpn start (herstart)

Als er zich problemen voordoen, bekijk dan het logboek en zoek het uit:

journalctl | grep ovpn-server

Nu moeten we de client configureren om verbinding te maken met de server. Als voorbeeld zal ik de installatie op Windows laten zien. Download eerst de client zelf van de officiële website (https://openvpn.net/). Na de installatie zullen we een configuratiebestand moeten maken dat eruit ziet als *.ovpn en dat kun je in elke teksteditor maken.

klant.ovpn :

Client proto udp poort 1194 dev tun remote 192.168.0.1 #OpenVPN serveradres.

ca ca.crt cert client.crt sleutel client.key tls-auth ta.key 1 auth SHA512 cipher AES-256-CBC comp-lzo

Mogelijk hebt u toegang tot internet nodig via een VPN. Om dit te doen, moet u het doorsturen op de server inschakelen:
We schakelen het doorsturen in de kernel in, verwijderen de commentaarregels in het bestand /etc/sysctl.conf:

net.ipv4.ip_forward=1
Om niet opnieuw op te starten, informeren we de kernel dat doorsturen is ingeschakeld:

echo 1 > /proc/sys/net/ipv4/conf/all/forwarding Nu moeten we nog configureren iptables

om NAT-pakketten te doorkruisen:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Druk op "redirect-gateway" # na een succesvolle verbinding met de server, zal de client een nieuwe standaardgateway vanaf de VPN-server installeren. push "dhcp-optie DNS 8.8.8.8" # verzenden DNS-adres server.

Hiermee is de basisconfiguratie voltooid. Geniet ervan.