Openvpn-certificaat en sleutelbestanden. De client-side configureren. OpenVPN installeren op een servermachine

OpenVPN is een van de VPN-opties (virtueel particulier netwerk of privé virtuele netwerken) waarmee u gegevens kunt overdragen via een speciaal gemaakt versleuteld kanaal. Zo kunt u twee computers aansluiten of een gecentraliseerd netwerk bouwen met een server en meerdere clients. In dit artikel zullen we leren hoe je zo'n server kunt maken en configureren.

Zoals hierboven vermeld, met behulp van de technologie waarover in kwestie, kunnen we informatie verzenden via een beveiligd communicatiekanaal. Dit kan bestandsuitwisseling zijn of beveiligde internettoegang via een server die een gemeenschappelijke gateway is. Om het te maken, hebben we niet nodig: optionele uitrusting en speciale kennis- alles gebeurt op de computer die u als VPN-server wilt gebruiken.

Voor verdere werkzaamheden het zal ook nodig zijn om de clientzijde op de machines van netwerkgebruikers te configureren. Al het werk komt neer op het maken van sleutels en certificaten, die vervolgens worden overgedragen aan klanten. Deze bestanden maken het mogelijk om bij verbinding met de server een IP-adres te verkrijgen en het bovenstaande versleutelde kanaal te creëren. Alle informatie die erdoor wordt verzonden, kan alleen worden gelezen als de sleutel aanwezig is. Deze functie kan de beveiliging aanzienlijk verbeteren en de veiligheid van gegevens waarborgen.

OpenVPN installeren op een servermachine

De installatie is: standaard procedure met enkele nuances, waar we het in meer detail over zullen hebben.


Server-side setup

Terwijl volgende stappen je moet zo voorzichtig mogelijk zijn. Eventuele fouten leiden tot onbruikbaarheid van de server. Nog een vereiste voorwaarde- jouw Rekening moet beheerdersrechten hebben.

  1. Ga naar de catalogus Easy-rsa, die zich in ons geval bevindt op

    C: \ OpenVPN \ easy-rsa

    Zoek het bestand vars.bat.sample.

    Hernoem het naar vars.bat(verwijder het woord) "Steekproef" samen met een punt).

    We openen dit bestand in de editor. Dit is belangrijk, omdat het dit notebook is waarmee u codes correct kunt bewerken en opslaan, wat fouten tijdens de uitvoering helpt voorkomen.

  2. Verwijder eerst alle geselecteerde opmerkingen in het groen- ze zullen ons alleen maar hinderen. We krijgen het volgende:

  3. Wijzig vervolgens het pad naar de map Easy-rsa aan degene die we tijdens de installatie hebben aangegeven. In dit geval verwijderen we gewoon de variabele % programmabestanden% en verander het in C:.

  4. Laat de volgende vier parameters ongewijzigd.

  5. Vul de rest van de regels willekeurig in. Een voorbeeld in de schermafbeelding.

  6. Wij slaan het bestand op.

  7. U moet ook de volgende bestanden bewerken:
    • build-ca.bat
    • build-dh.bat
    • build-key.bat
    • build-key-pass.bat
    • build-key-pkcs12.bat
    • build-key-server.bat

    Ze moeten het team veranderen

    Aan absoluut pad naar het bijbehorende bestand openssl.exe... Vergeet niet om uw wijzigingen op te slaan.

  8. Open nu de map Easy-rsa, klem VERSCHUIVING en klik met de rechtermuisknop op vrije ruimte(niet door bestanden). V contextmenu selecteer item "Open opdrachtvenster".

    Zal beginnen "Opdrachtregel" met de reeds voltooide overgang naar de doelmap.

  9. Voer de onderstaande opdracht in en klik op BINNENKOMEN.

  10. Vervolgens lanceren we nog een "batchbestand".

  11. We herhalen het eerste commando.

  12. De volgende stap is het creëren vereiste bestanden... Gebruik hiervoor het commando

    Na voltooiing zal het systeem aanbieden om de gegevens te bevestigen die we in het vars.bat-bestand hebben ingevoerd. Druk gewoon meerdere keren BINNENKOMEN totdat de originele regel verschijnt.

  13. Maak een DH-sleutel door het bestand uit te voeren

  14. Een certificaat voorbereiden voor de serverzijde. Er is er hier een belangrijk punt... Hij moet de naam toewijzen waarin we zijn geregistreerd vars.bat in lijn "KEY_NAME"... In ons voorbeeld is dit: klontjes... Het commando ziet er als volgt uit:

    build-key-server.bat Lumpics

    Hier is het ook nodig om de gegevens te bevestigen met de toets BINNENKOMEN, en voer de letter ook twee keer in "J"(ja) waar nodig (zie screenshot). De opdrachtregel kan worden gesloten.

  15. In onze catalogus Easy-rsa verscheen nieuwe map met de titel "Sleutels".

  16. De inhoud ervan moet worden gekopieerd en in een map worden geplakt "Ssl", die moet worden gemaakt in de hoofdmap van het programma.

    Mapweergave na het plakken van gekopieerde bestanden:

  17. Ga nu naar de directory

    C: \ OpenVPN \ config

    Maak hier een tekstdocument aan (RMB - Aanmaken - Tekstdocument), hernoem het naar server.ovpn en open het in Kladblok ++. We introduceren de volgende code:

    poort 443
    proto udp
    dev tun
    dev-node "VPN Lumpics"
    dh C: \\ OpenVPN \\ ssl \\ dh2048.pem
    ca C: \\ OpenVPN \\ ssl \\ ca.crt
    cert C: \\ OpenVPN \\ ssl \\ Lumpics.crt
    sleutel C: \\ OpenVPN \\ ssl \\ Lumpics.key
    server 172.16.10.0 255.255.255.0
    max-clients 32
    keepalive 10 120
    klant-tot-klant
    comp-lzo
    persistent-key
    persistent-tun
    cijfer DES-CBC
    status C: \\ OpenVPN \\ log \\ status.log
    log C: \\ OpenVPN \\ log \\ openvpn.log
    werkwoord 4
    dempen 20

    Houd er rekening mee dat de namen van certificaten en sleutels moeten overeenkomen met die in de map "Ssl".

  18. Volgende, open "Controlepaneel" en ga naar "Netwerk Controle Centrum".

  19. Klik op de link "Verander adapterinstellingen".

  20. Hier moeten we de verbinding via vinden "TAP-Windows-adapter V9"... Dit kan worden gedaan door met de rechtermuisknop op de verbinding te klikken en naar de eigenschappen ervan te gaan.

  21. Hernoem het naar VPN-lumps zonder citaten. Deze naam moet overeenkomen met de parameter "Dev-node" in bestand server.ovpn.

  22. De laatste stap is het starten van de service. Druk op de sneltoets Win + R, voer de onderstaande regel in en klik op BINNENKOMEN.

  23. Zoek een dienst met een naam "OpenVpnService", klik met de rechtermuisknop en ga naar de eigenschappen ervan.

  24. Wijzig het opstarttype in "Automatisch", start de service en klik op Van toepassing zijn.

  25. Als we alles goed hebben gedaan, zou er een rood kruis moeten verdwijnen bij de adapter. Dit betekent dat de verbinding klaar is voor gebruik.

De clientzijde configureren

Voordat u de clientconfiguratie start, moet u verschillende acties op de servermachine uitvoeren - genereer sleutels en een certificaat om de verbinding te configureren.


Werk aan de winkel klant machine:


Hiermee is de configuratie van de OpenVPN-server en -client voltooid.

Conclusie

Door uw eigen VPN-netwerk te organiseren, kunt u maximaal beschermen verzonden informatie en maak ook uw internetsurfen veiliger. Het belangrijkste is om voorzichtiger te zijn bij het instellen van de server- en client-onderdelen, wanneer: het juiste ding doen u kunt genieten van alle voordelen van een privé virtueel netwerk.

De routers uit de RTU-serie hebben de mogelijkheid om een ​​beveiligde verbinding te gebruiken via een privé virtueel netwerk, recht hebben OpenVPN

Installatie- en configuratieproces dit pakket voor een gewone gebruiker kan gepaard gaan met genoeg grote moeilijkheden wegens gebrek aan noodzakelijke kennis.

Bijna het gehele deel van de configuratie kan worden gedaan via WEB-interface, maar sommige elementen moeten nog via de console worden geproduceerd!

Wat is OpenVPN en waarom je het nodig hebt kun je vinden via het artikel op Wikipedia: OpenVPN

In dit artikel zullen we kennis maken met het voorbereidende deel, dit is het genereren van certificaten en encryptiesleutels om ons transmissiekanaal te beschermen.

1. Certificaten en sleutels genereren op Windows

Om certificaten en coderingssleutels op Windows OS te genereren, moet u de applicatie zelf installeren OpenVPN

Na het downloaden en installeren in de map die u hebt opgegeven, zal het een lijst met bestanden bevatten. Ik heb deze map C:\Program Files\OpenVPN\

We moeten naar de map easy-rsa

Moet openen Windows-console(voor Windows Vista / 7/8 / 8.1 / 10 moet u starten vanuit de beheerder)

U kunt ontdekken hoe u de opdrachtregel (console) als beheerder uitvoert door de zin in een zoekmachine (Yandex, Google, Mail, enz.) te typen: " De opdrachtprompt uitvoeren als beheerder"

Ga naar de map easy-rsa langs het installatiepad met het commando CD

Bijvoorbeeld:

cd C: \ Program Files \ OpenVPN \ easy-rsa

1.1 Voer het bestand init-config.bat uit

C: \ Program Files \ OpenVPN \ easy-rsa> init-config.bat
C: \ Program Files \ OpenVPN \ easy-rsa> kopieer vars.bat.sample vars.bat
Bestanden gekopieerd: 1.

Er verschijnt een bestand in de map vars.bat, open het tekstverwerker, we zijn geïnteresseerd in de regels helemaal aan het einde, ze moeten worden ingevuld

We hebben onze parameters vervangen, u zult andere parameters hebben.

set KEY_COUNTRY = RU
stel KEY_PROVINCE = Moskou in
stel KEY_CITY = Moskou in
stel KEY_ORG = TELEOFIS in
stel KEY_EMAIL = . in [e-mail beveiligd]
stel KEY_CN = server in
stel KEY_NAME = server in
stel KEY_OU = server in
set PKCS11_MODULE_PATH = server
stel PKCS11_PIN = 12345 in

Waar het server zegt, raak het niet aan. Wij slaan het bestand op.

Zoek de regel default_days 365 en vervang 365 door 3650. Zo verlengen we de levensduur van onze certificaten met 10 jaar.

Opslaan en afsluiten.

1.3 Sleutels genereren

We schrijven opdrachten naar de console

vars

Maak alles schoon

Het antwoord zou moeten komen

Bestanden gekopieerd: 1.
Bestanden gekopieerd: 1.

Als we dit zien, dan is alles in orde, we gaan verder...

Een Diffie-Hellman-sleutel maken

bouw-dh

Het hoofdcertificaat maken

bouw-ca

Bij het genereren van het hoofdcertificaat zal de console vragen weergeven. Druk gewoon op Enter, want we hebben al deze parameters in het bestand ingevoerd vars.bat

Druk op Enter totdat de promptregel wordt weergegeven

C: \ Program Files \ OpenVPN \ easy-rsa

build-key-server server

We drukken ook op Enter voor de vragen, maar we hebben geen haast, helemaal aan het einde worden twee vragen gesteld

Het certificaat ondertekenen?

We beantwoorden beide vragen met Y

Nu maken we het clientcertificaat en de sleutel:

build-key client

We haasten ons ook niet om te antwoorden, zodra we de regel zien " Algemene naam (bijv. uw naam of de hostnaam van uw server)"moet antwoorden cliënt

Helemaal aan het einde zullen er ook twee vragen zijn, we beantwoorden ook Y

Bovendien: voor elke klant moet u afzonderlijke sleutels maken en deze een naam geven klant1, klant2 of anders, het hangt allemaal af van je verbeelding. Vergeet ook niet om deze namen in te voeren wanneer daarom wordt gevraagd. Gemeenschappelijke naam

Bijvoorbeeld:

build-key client1

build-key kantoor1

Alle bestanden staan ​​in de map C: \ Program Files \ OpenVPN \ easy-rsa \ keys \

Uit deze map nemen we:

dh1024.pem(of dh2048.pem)

server.crt

server.key

2. Certificaten en sleutels genereren op Linux

We zullen een voorbeeld maken van het genereren van certificaten en sleutels in de operatiekamer. Ubuntu-systeem Linux 16.04 LTS

Voor andere systemen op op Linux gebaseerd, sommige commando's kunnen anders zijn!

Open de console van het besturingssysteem en installeer een klein pakket easy-rsa

sudo apt-get install easy-rsa

Ga naar de map waar het pakket voor het genereren van certificaten is geïnstalleerd

cd / usr / delen / easy-rsa /

Het enige moment deze map alleen beschikbaar om naar de superuser te schrijven, zodat we in de toekomst geen problemen zullen hebben, we zullen de eigenaar veranderen (zie de punt aan het einde van de opdracht niet over het hoofd !!!)

sudo chown -R teleofis: teleofis.

Laten we nu de informatie over de gegenereerde certificaten configureren

nano vars

We vinden deze punten en veranderen ze voor onszelf

export KEY_SIZE = 1024 // Sleutellengte
export CA_EXPIRE = 3650 // Vervaltijd hoofdsleutel in dagen
export KEY_EXPIRE = 3650 // Geldigheidsduur certificaat in dagen
export KEY_COUNTRY = "RU" // Land
export KEY_PROVINCE = "Moskou" // Regio
export KEY_CITY = "Moskou" // Stad
export KEY_ORG = "TELEOFIS" // Organisatie
export KEY_EMAIL = " [e-mail beveiligd]" // E-mailbox
export KEY_OU = "server" // Afdeling
export KEY_NAME = "server"// Sleutelnaam

Sla het bestand na het bewerken op.

Kopieer de nieuwste versie van de OpenSSL-configuratie naar een bestand openssl.cnf

cp openssl-1.0.0.cnf openssl.cnf

Variabelen laden

bron ./vars

Voor het geval dat we het van vuil zullen opruimen

./Maak alles schoon

Een servercertificaat maken

./build-ca

We drukken op Enter bij alle vragen, we hebben al deze parameters van tevoren in het bestand bewerkt vars


.........................................++++++
.......................................................................................++++++
nieuwe privésleutel schrijven naar "ca.key"
-----






-----





Algemene naam (bijv. uw naam of de hostnaam van uw server):
Naam:
E-mailadres:

Een serversleutel maken

./build-key-server server

We beantwoorden alle vragen met Enter, maar je moet voorzichtig zijn, tegen het einde zullen er verschillende vragen zijn over het wachtwoord en een optionele naam

Ook op aanvraag

Het certificaat ondertekenen?

1 op 1 certificaataanvragen gecertificeerd, commit?

Antwoord Y

Een 1024-bits RSA-privésleutel genereren
..............................++++++
.....................++++++
nieuwe privésleutel schrijven naar "server.key"
-----
U staat op het punt om informatie in te voeren die zal worden opgenomen
in uw certificaataanvraag.
Wat u bent op het punt staat in te voeren is wat een Distinguished Name of een DN wordt genoemd.
Er zijn nogal wat velden, maar u kunt er enkele leeg laten
Voor sommige velden is er een standaardwaarde,
Als u "." invoert, blijft het veld leeg.
-----
Landnaam (2-letterige code):
Naam staat of provincie (volledige naam):
Plaatsnaam (bijv. stad):
Naam organisatie (bijv. bedrijf):
Naam organisatie-eenheid (bijv. sectie):
Algemene naam (bijv. uw naam of de hostnaam van uw server):
Naam:
E-mailadres:

Voer de volgende "extra" kenmerken in
te verzenden met uw certificaataanvraag
Een uitdagingswachtwoord:
Een optionele bedrijfsnaam:
Configuratie gebruiken van /usr/share/easy-rsa/openssl-1.0.0.cnf
Controleer of het verzoek overeenkomt met de handtekening
Handtekening ok
De Distinguished Name van het onderwerp is als volgt:
landnaam: AFDRUKBAAR: "RU"
stateOrProvinceName: AFDRUKBAAR: "Moskou"
plaatsnaam: AFDRUKBAAR: "Moskou"
organisatienaam: AFDRUKBAAR: "TELEOFIS"
organisatieUnitName: AFDRUKBAAR: "server"
commonName: AFDRUKBAAR: "server"
naam: AFDRUKBAAR: "server"
e-mailadres: IA5STRING: " [e-mail beveiligd]"
Certificaat moet worden gecertificeerd tot 20 december 13:25:10 2026 GMT (3650 dagen)
Het certificaat ondertekenen? : ja

1 op 1 certificaataanvragen gecertificeerd, commit? ja
Schrijf database uit met 1 nieuwe invoer
Database bijgewerkt

Een Diffie-Hellman-sleutel maken

./build-dh

Aandacht!!! Het bestand kan lange tijd worden gegenereerd, we wachten op het einde van de generatie.

DH-parameters genereren, 1024 bit lange veilige prime, generator 2
Dit gaat lang duren
.......+................+.............+.............................................................................+................+........................+...........................................+...............................................................................................................................................+....................+........................................+...................................................................................+....................................................................................................................+.+...................................++*++*++*

We maken op dezelfde manier clientsleutels.

./build-key client1

./build-sleutel rtu968

We beantwoorden alle vragen. Kom binnen, maar wees voorzichtig, er zullen opnieuw verzoeken zijn

Het certificaat ondertekenen?

1 op 1 certificaataanvragen gecertificeerd, commit?

We beantwoorden ze Y

Hiermee is het aanmaken van certificaat- en sleutelbestanden voltooid.

In map / usr / delen / easy-rsa / sleutels / zullen onze certificaten en sleutels zijn

dh1024.pem(of dh2048.pem)

server.crt

server.key

3. Extra opties

Er zijn ook extra sleutels en methoden om de beveiliging van de verbinding te verbeteren.

3.1 Sleutel voor TLS-verificatie

Gegenereerd door het commando:

openvpn --genkey --secret% KEY_DIR% \ ta.key- Ramen

Voor Linux heb je het volledige OpenVPN-pakket nodig, alleen het pakket easy-rsa zal niet genoeg zijn!

U kunt het volledige OpenVPN-pakket installeren met het commando

sudo apt-get install openvpn

openvpn --genkey --secret /usr/share/easy-rsa/keys/ta.key- Linux

3.2 Verificatie en intrekking van certificaten

We kunnen ook een extra bestand maken crl.pem, waarmee de verificatie en intrekking van certificaten zal worden uitgevoerd.

Dit bestand mag niet worden gebruikt, er zal niets ergs gebeuren.

Om het te gebruiken, maken we een aangepast certificaat:

build-key crlsert - Windows

./build-key crlsert - Linux

We beantwoorden alle vragen door op Enter te drukken, behalve Gemeenschappelijke naam en Naam

Voor deze velden geven we de naam van het certificaat zelf aan.

En tot slot voor Onderteken het certificaat? , 1 op 1 certificaataanvragen gecertificeerd, commit? antwoord Y

Daarna voeren we het commando uit: intrekken-volledig, zij is verantwoordelijk voor het intrekken van het certificaat en de daaropvolgende aanmaak van het dossier crl.pem

revoke-full crlsert - Windows

./revoke-volledige crlsert - Linux

De certificaatbestanden zelf crlsert kan worden verwijderd. Eenmaal ingetrokken, worden ze niet automatisch uit de map verwijderd.

Hiermee is het aanmaken van sleutels voltooid.

Door naar het volgende artikel:

Extra informatie.

Virtueel prive netwerk. Met zijn hulp kunnen we:

  • Creëer een veilig communicatiekanaal terwijl we met gratis wifi in een café zitten.
  • Deel bestanden tussen netwerkleden.
  • Distribueer het internet via een gemeenschappelijke gateway.

Belangrijkste voordelen:

  • Gemakkelijk aan te passen.
  • Veiligheid.
  • Geen extra hardware nodig.
  • Hoge snelheid en stabiliteit.

Net als de auteur van het artikel over het installeren van OpenVPN op Linux, heb ik geen normaal artikel gevonden, en zelfs geen artikel dat alles tot in het kleinste detail beschrijft. In dit artikel over Habrahabr zal ik proberen alles op de meest toegankelijke manier uit te leggen. Dus laten we gaan!

Download de distributiekit.

Op het moment van dit schrijven beschikbare versie 2.3.2 ... We downloaden de Windows installer 32 of 64-bit versie voor de bitness van uw besturingssysteem.

Installatie.

Zorg ervoor dat u bij het installeren alle items met de selectievakjes aanvinkt, we antwoorden bevestigend op het voorstel om de driver te installeren. Er verschijnt een nieuwe virtuele netwerkadapter op het systeem.

Aanmaken van certificaten en sleutels.

Toen dit punt me eenmaal tegenhield, zeiden ze, nou, dit zijn de sleutels, ik ga op zoek naar iets eenvoudigers. Maar helaas, ik kon niets beters vinden. Ga dus naar C: \ Program files \ OpenVPN \ easy-rsa, voer init-config.bat uit, vars.bat zal verschijnen, open het in Kladblok. We zijn geïnteresseerd in de regels helemaal onderaan, ze moeten worden ingevuld wat je maar wilt. Bijvoorbeeld:
stel KEY_COUNTRY = RU in
stel KEY_PROVINCE = Baldur in
stel KEY_CITY = Piter in
set KEY_ORG = OpenVPN
set
stel KEY_CN = server in
stel KEY_NAME = server in
stel KEY_OU = ouou in

Waar staat geschreven? server niet aanraken. Heb gespaard.
Open nu openssl-1.0.0.cnf en zoek naar de regel default_days 365, stel deze in op 3650. Dit verlengt de levensduur van onze certificaten met 10 jaar. Wij sparen. Open vervolgens de opdrachtregel in de start-standaard-opdrachtregel (op Windows Vista / 7/8 namens de beheerder), schrijf achtereenvolgens:

cd C: \ OpenVPN \ easy-rsa
vars
Maak alles schoon

Als reactie zou het twee keer "Bestanden gekopieerd: 1" moeten schrijven. Dus alles is in orde. In hetzelfde venster typen we:
bouw-dh
Creëert een Diffie-Hellman-sleutel.
bouw-ca
Zal het hoofdcertificaat maken.
Er zullen vragen worden gesteld, druk gewoon op Enter totdat u het pad C: \ Program files \ OpenVPN \ easy-rsa ziet. Vervolgens typen we:
build-key-server server
Ook voor vragen drukken we op Enter, neem rustig de tijd! Aan het einde zullen er twee vragen zijn: "Het certificaat ondertekenen?" en "1 op 1 certificaataanvragen gecertificeerd, commit?", beantwoorden we beide vragen met Y. Laten we nu een clientcertificaat maken:
build-key client
Hier moet u voorzichtiger zijn, wanneer u wordt gevraagd naar Common Name (bijvoorbeeld uw naam of de hostnaam van uw server), moet u client invoeren. Aan het einde, ook twee keer Y. Voor elke klant moet je maken nieuw certificaat, alleen met een andere naam, bijvoorbeeld build-key client1 en specificeer deze ook in de algemene naam. Als je het goed doet, kun je uitademen! Het moeilijkste is voorbij. In de map C:\Program Files\OpenVPN\easy-rsa\keys nemen we: ca.crt, dh1024.pem, server.crt, server.key en plaatsen deze in C:\Program Files\OpenVPN\config.

Wij maken configuraties.

Ga naar C:\Program Files\OpenVPN\config, maak een tekstdocument, plak:
# Breng de L3-tunnel omhoog
dev tun
# Protocol
proto udp
# Poort die naar vpn luistert
poort 12345
# Sleutels en certificaten
ca ca.crt
cert server.crt
sleutel server.sleutel
dh dh1024.pem
# Grofweg slaan we adressen op
topologie subnet
# Pool van adressen
server 10.8.0.0 255.255.255.0
# Versleutelingsmethode
cijfer AES-128-CBC
# Compressie
comp-lzo
# Zal de ping iets verbeteren
mssfix
# Levensduur van de klant, indien niet gereageerd, wordt deze uitgeschakeld
keepalive 10 120
# Debug-niveau
werkwoord 3

Sla het bestand op als server.ovpn. Dit is onze serverconfiguratie. Nu proberen we de server te starten. Er zal een snelkoppeling op het bureaublad zijn OpenVPN Gui... Na de lancering verschijnt er een rood pictogram in de lade. We klikken er twee keer op, brandt het groen dan is alles in orde, zo niet, dan bekijken we het log in de logmap.

Nu de clientconfiguratie:
cliënt
dev tun
proto udp
# Serveradres en poort
extern adres 12345
# Sleutels moeten in de configuratiemap staan
ca ca.crt
cert client.crt
key client.key
cijfer AES-128-CBC
niet binden
comp-lzo
persistent-key
persistent-tun
werkwoord 3

Opslaan als client.ovpn. Maak een willekeurige map en plaats de client.ovpn-configuratie en de certificaten ca.crt, client.crt, client.key daar, die zich in C: \ Program files \ OpenVPN \ easy-rsa bevinden. Download de client voor Windows.Installeer op de clientcomputer, breng de map met de config en het certificaat over en voer client.ovpn uit. Als er verbinding is, typt u ping 10.8.0.1 op de opdrachtregel. Zijn de pakketten weg? Gefeliciteerd! De server is klaar! Nu gaan we naar het configuratiescherm-administratie-services, zoeken daar OpenVPN, dubbelklikken en automatisch instellen. Nu zal de server zichzelf opstarten na opnieuw opstarten.

Het wijzigen van de config of naar ieder zijn eigen.

Nu zal ik je vertellen hoe je internet en andere trivia met betrekking tot de instelling kunt verspreiden. Laten we beginnen met de kleine dingen. Alle manipulaties worden uitgevoerd met de serverconfiguratie.
Als u wilt dat klanten elkaar "zien", bijv. zou informatie kunnen uitwisselen, voer dan in de config
klant-tot-klant.
Als u wilt dat klanten worden uitgegeven statische adressen, maak vervolgens in de config-map het ip.txt-bestand en voer in de config
ifconfig-pool-persist ip.txt
Geen zin om voor iedereen certificaten te maken? Dan schrijven we duplicaat-cn, maar merk op dat ifconfig-pool-persist niet werkt met deze optie.
Nu over de clientconfiguratie. Je kunt de certificaatbestanden niet overzetten, maar direct in de config invoeren, alleen is het beter om dit niet vanuit een kladblok te doen, maar vanuit bijvoorbeeld AkelPad of Notepad++. Open ca.crt en kies uit ——BEGIN CERTIFICAAT—— tot ——EINDE CERTIFICAAT——. In de config ziet het er als volgt uit:


——BEGIN CERTIFICAAT——
certificaat
——EINDE CERTIFICAAT——


——BEGIN CERTIFICAAT——
certificaat
——EINDE CERTIFICAAT——


——BEGIN PRIVÉSLEUTEL——
toets
——EINDE PRIVÉSLEUTEL——

Wij verspreiden het internet

Voer hiervoor de serverconfiguratie in:
druk op "redirect-gateway def1"
druk op "dhcp-optie DNS 8.8.8.8"
druk op "dhcp-optie DNS 8.8.4.4"

We vervangen de DNS-adressen die in de instellingen worden gegeven. U kunt deze bekijken door naar het configuratiescherm-netwerkverbindingen te gaan door te dubbelklikken op de adapter die naar internet kijkt. Voor Win7 Configuratiescherm-Netwerk en Internetcentrum voor Netwerk en delen-Verander adapterinstellingen. Ga vervolgens naar de eigenschappen van dezelfde adapter, het tabblad Toegang, plaats het selectievakje voor "Andere netwerkgebruikers toestaan ​​..." en selecteer in de vervolgkeuzelijst, indien aanwezig virtuele adapter vpn. Vervolgens gaan we in op de eigenschappen van de vpn-adapter, eigenschappen van ipv4 en stellen de ontvangst van ip en dns automatisch in. Bedankt voor de aandacht!

OpenVPN is een applicatie voor het creëren van een veilige IP-tunnel via een enkele UDP - of TCP-poorten - poort 1194. Om de veiligheid van het besturingskanaal en de gegevensstroom te waarborgen, gebruikt OpenVPN de OpenSSL-bibliotheek (meer precies, de SSLv3 / TLSv1-protocollen), d.w.z. alle mogelijkheden van encryptie, authenticatie en certificering van de OpenSSL-bibliotheek zijn beschikbaar (elke cipher, sleutelgrootte). Batch-autorisatie HMAC-algoritme voor OpenVPN kan ook worden gebruikt om meer veiligheid te bieden, en hardware acceleratie om de versleutelingsprestaties te verbeteren.

OpenVPN wordt gebruikt op Solaris, OpenBSD, FreeBSD, NetBSD, GNU / Linux, Apple Mac OS X en Microsoft Windows.

    OpenVPN biedt de gebruiker verschillende soorten authenticatie:

    De voorkeuzetoets is de eenvoudigste methode.

    Met behulp van een gebruikersnaam en wachtwoord kan het worden gebruikt zonder een clientcertificaat aan te maken (er is nog steeds een servercertificaat nodig).

OpenVPN kan statische, vooraf ingestelde sleutels of op TLS gebaseerde dynamische sleuteluitwisseling gebruiken. Het ondersteunt ook VPN-verbindingen met dynamische externe sites (DHCP- of inbelclients), tunnels via NAT of via volledige firewall(bijvoorbeeld iptables-regels op Linux).

De instellingen van het clientconfiguratiebestand zijn identiek in syntaxis en schrijven voor zowel Linux als Windows.

OpenVPN netwerkcomponenten

Hoofd onderdelen OpenVPN-netwerken en objecten

    CA-certificeringsinstantie... Geeft certificaten uit op verzoek van VPN-knooppunten, ondertekend door een certificaat van een certificeringsinstantie. Biedt VPN-peers een eigen certificaat om de identiteit van de identiteit te verifiëren. Beheert de CRL.

    OpenVPN-server... De OpenVPN-serversoftware creëert een tunnel binnen een onbeveiligd netwerk, zoals internet. Deze tunnel zorgt voor veilig, versleuteld verkeer tussen de knooppunten die deelnemen aan de communicatie op het OpenVPN-netwerk.

    OpenVPN-client... De OpenVPN-clientsoftware is geïnstalleerd op alle knooppunten die een veilig transmissiekanaal nodig hebben dat aan de OpenVPN-server wordt gegeven. Met de juiste configuratie van de OpenVPN-server is veilige gegevensoverdracht tussen OpenVPN-clients mogelijk, niet alleen tussen clients en de OpenVPN-server.

    X.509-certificaten (openbare sleutels)... X.509-certificaten zijn openbare sleutels die zijn gecertificeerd door een CA. Ze worden gebruikt om gegevens te versleutelen. Het feit dat het certificaat is gecertificeerd door de CA-certificeringsinstantie maakt het mogelijk de partij te identificeren die de versleutelde gegevens verzendt. Het certificaataanvraagbestand wordt aangemaakt op de netwerkknooppunten, vervolgens wordt het overgebracht naar het knooppunt van de certificeringsinstantie en daar ondertekend. Het resulterende ondertekende certificaat wordt terug overgedragen naar de aanvragende OpenVPN-host.

    Privésleutels... Privésleutels zijn geheim. Ze moeten worden gemaakt en opgeslagen op elke host op het OpenVPN-netwerk, zijn ontworpen om gegevens te decoderen en mogen nooit via het netwerk worden verzonden. Privésleutels worden tegelijkertijd met het certificaataanvraagbestand gegenereerd op de OpenVPN-hosts.

    CRL-intrekkingslijst... Bevat een lijst met certificaten die het vertrouwen hebben verloren. Het wordt gemaakt en bewerkt op de CA-site. Om een ​​node los te koppelen van het netwerk, volstaat het om zijn certificaat toe te voegen aan de CRL. Na aanmaak en elke wijziging wordt de CRL overgebracht naar de OpenVPN-servers.

    Diffie-Hellman-bestand... Het wordt gebruikt om te voorkomen dat het verkeer dat vóór deze diefstal is geregistreerd, ontsleuteld wordt in het geval van sleuteldiefstal. Gemaakt op de OpenVPN-server.

Beveiliging en encryptie

Beveiliging en encryptie in OpenVPN wordt geleverd door de How to Use OpenSSL-bibliotheek en Transport Layer Security (TLS). In plaats van OpenSSL in nieuwere versies van OpenVPN, kunt u de PolarSSL-bibliotheek gebruiken. Het TLS-protocol is een verbetering van het beveiligde datatransmissieprotocol van de laag Secure Socket Layers (SSL-certificaten voor de site, mail).

Symmetrische en asymmetrische cryptografie kan worden gebruikt in OpenSSL.

In het eerste geval moet, voordat de gegevensoverdracht wordt gestart, op alle netwerkknooppunten dezelfde geheime sleutel worden geplaatst. Dit roept het probleem op van veilige verzending van deze sleutel via een onveilig internet.

In het tweede geval heeft elke deelnemer aan de gegevensuitwisseling twee sleutels - openbaar (open) en privé (geheim).

De openbare sleutel wordt gebruikt om gegevens te versleutelen en de privésleutel wordt gebruikt om deze te ontsleutelen. Versleuteling is gebaseerd op behoorlijk complexe wiskunde. Het in SSL/TLS gekozen versleutelingsalgoritme met openbare sleutel zorgt ervoor dat alleen de privésleutel kan worden ontsleuteld.

De privésleutel is geheim en moet binnen de site blijven waar deze is gemaakt. De publieke sleutel moet worden overgedragen aan de deelnemers aan de gegevensuitwisseling.

Voor een veilige gegevensoverdracht is het noodzakelijk om de bij de gegevensuitwisseling betrokken partijen te identificeren. V anders je kunt ten prooi vallen aan de zogenaamde Man in the Middle (MITM)-aanval. Tijdens zo'n aanval maakt een aanvaller verbinding met een datalink en luistert daarop af. Het kan ook gegevens verstoren, verwijderen of wijzigen.

Om authenticatie te bieden (gebruikersauthenticatie) TLS-protocol maakt gebruik van openbare sleutelinfrastructuur (PKI) en asymmetrische cryptografie.

U moet zich realiseren dat het ontsleutelen van gegevens zonder een privésleutel ook mogelijk is, bijvoorbeeld met behulp van de methode sequentiële opsomming... Hoewel deze methode rekenintensief is, is het slechts een kwestie van tijd voordat de gegevens kunnen worden ontsleuteld.

Hoewel de sleutelgrootte van invloed is op de moeilijkheidsgraad van de decodering, kan geen enkele sleutel volledige gegevensbeveiliging garanderen. Bovendien bestaat de mogelijkheid om reeds gedecodeerde gegevens en sleutels te stelen vanwege kwetsbaarheden en bladwijzers in besturingssysteem of applicatiesoftware, evenals in hardware servers en werkstations.

Gegevensversleuteling verhoogt het verkeer en vertraagt ​​de gegevensuitwisseling. Hoe langer de lengte van de sleutel die wordt gebruikt om gegevens te versleutelen, hoe moeilijker het zal zijn om deze te vinden, maar ook hoe meer merkbaar de vertraging in de gegevensuitwisseling zal zijn.

OpenVPN Debian Wheezy / sid

# aptitude install openvpn # mkdir / etc / openvpn / easy-rsa # cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* / etc / openvpn / easy-rsa /

De standaardinstellingen voor certificaten wijzigen

# nano / etc / openvpn / easy-rsa / vars ... export KEY_COUNTRY = "VS" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = " [e-mail beveiligd]"

Laten we creëren omgevingsvariabelen bash, als dit niet wordt gedaan, worden de variabelen bij het genereren van clientsleutels uit /etc/openvpn/easy-rsa/openssl.cnf gehaald en niet uit het vars-bestand

# cd / etc / openvpn / easy-rsa # source ./vars OPMERKING: als je ./clean-all uitvoert, doe ik een rm -rf op / etc / openvpn / easy-rsa / keys # ./clean- alle # ./build-dh

Laten we een certificaat maken voor een server met de naam vpnspar

# ./pkitool --initca # ./pkitool --server vpnspar

Laten we een certificaat maken voor een client met de naam farm1c. Voor elke klant een aparte sleutel.

# ./pkitool farm1c # mkdir / etc / openvpn / keys # cp keys / ca.crt / etc / openvpn / keys # cp keys / dh1024.pem / etc / openvpn / keys # cp keys / vpnspar.crt / etc / openvpn / keys # cp keys / vpnspar.key / etc / openvpn / keys

De ccd-map bevat: individuele instellingen voor elke klant. De bestandsnaam moet overeenkomen met de naam van het gegenereerde clientcertificaat. Clientconfiguratiebestanden zijn: tekstbestanden en bevatten opdrachten die door de server worden uitgevoerd wanneer clients verbinding maken. Gewoonlijk bevat het clientbestand de opdrachten:

    voegt een route toe aan de client naar het lokale subnet van het hoofdkantoor (druk op "route 192.168.1.0 255.255.255.0")

    definieert het adres van het lokale subnet achter de client (bijvoorbeeld iroute 192.168.2.0 255.255.255.0)

    binden aan statische IP (ifconfig-push 192.168.14.21 192.168.14.22), waar ifconfig-push ... De geselecteerde paren IP-adressen moeten ten eerste uniek zijn, ten tweede moeten ze deel uitmaken van opeenvolgende subnetten, beperkt door het masker / 30 (255.255.255.252), en ten derde moeten ze binnen de pool van IP-adressen vallen, toegewezen aan virtueel prive netwerk(vastbesloten met de serverparameter OpenVPN-serverconfiguratiebestand).

# mkdir / etc / openvpn / ccd # nano ccd / farm1c push "route 192.168.1.0 255.255.255.0" #push "route 192.168.35.0 255.255.255.0" # statisch IP ifconfig-push 192.168.14.21 192.168.14.22 #iroute 192.168. 2.0 255.255.255.0

server.conf

De server configureren in het bestand server.conf

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn / # gunzip server.conf.gz # nano /etc/openvpn/server.conf server.conf local xxx.196.98.xxx # IP waarop de server luistert naar inkomende berichten poort 1194 # poort waarop de server luistert naar inkomende berichten proto udp dev tun # Schakel de OpenVPN-besturingsinterface in. Beschikbaar via telnet localhost 7505 beheer localhost 7505 ca sleutels / ca.crt # locatie van het zelfondertekende vertrouwde certificaat (CA) cert-sleutels / vpnspar.crt # locatie van het servercertificaat sleuteltoetsen / vpnspar.key # locatie van de privésleutel van de server dh-sleutels / dh1024.pem # locatie van het Diffie-Halman-optiebestand # Servermodus en VPN-adres configureren, # van waaruit OpenVPN adressen aan klanten zal distribueren. # De server zal 192.168.14.1 voor zichzelf gebruiken, # de rest van de adressen zijn beschikbaar voor klanten. # Elke client kan contact opnemen met de server op 192.168.14.1. server 192.168.14.0 255.255.255.0 # het ipp.txt-bestand slaat informatie op over de verbinding, bijvoorbeeld als de verbinding wordt verbroken # en zijn verdere restauratie ifconfig-pool-persist ipp.txt # routes die naar elke klant worden verzonden. # push - OpenVPN-opdracht verzonden naar de client en uitgevoerd door de client # (voeg in dit geval twee routes toe aan de VPN aan de clientzijde) duw "route 192.168.1.0 255.255.255.0" duw "route 192.168.35.0 255.255.255.0" # Leid de standaardgateway om naar de vpn-server. Indien niet nodig, commentaar geven of # toevoegen aan ccd voor een specifieke klant druk op "redirect-gateway def1" # specificeer waar de bestanden met de client IP-adresinstellingen worden opgeslagen client-config-dir ccd # voeg een server-clientroute toe. # route - Voegt server-side routes toe aan lokale subnetten achter klanten route 192.168.14.0 255.255.255.252 # sta communicatie toe tussen clients die zijn verbonden met de OpenVPN-servercommunicatie met elkaar klant-tot-klant # Een sanity check-richtlijn inclusief verzenden # ping-achtige berichten heen en weer via # verbinding zodat elke kant weet wanneer # de andere kant zal plotseling verdwijnen (naar beneden gegaan). # Ping elke 10 seconden, in de veronderstelling dat de afstandsbediening # node is niet beschikbaar indien gedurende een bepaalde periode niet ontvangen voor één ping # gelijk aan 120 seconden. keepalive 10 120 comp-lzo max-clients 10 gebruiker niemand groep geen groep persistent-key persist-tun # Inhoud van een klein statusbestand dat wordt weergegeven # huidige verbindingen, afgekapt # en wordt eenmaal per minuut overschreven. status / var / log / openvpn-status.log log / var / log / openvpn.log werkwoord 3 # debug-niveau# /etc/init.d/openvpn start

Clientcertificaat intrekken

    Voorbeeld... Gebruikerscertificaat intrekken farm1c # cd / etc / openvpn / easy-rsa # source ./vars # ./revoke-full farm1c Configuratie gebruiken van /etc/openvpn/easy-rsa/openssl.cnf Certificaat 02 intrekken. Database bijgewerkt

    Na de opdracht revoke-full zal de regel die overeenkomt met het farm1c-gebruikerscertificaat worden gewijzigd in het bestand /etc/openvpn/easy-rsa/keys/index.txt.

OpenVPN + OpenVZ installeren

VE-installatie (VPS, VDS)

    VE Ubuntu installeren voor OpenVZ # cd / vz / template / cache / # wget -c http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz # vzctl create 111 --layout simfs --ostemplate ubuntu-14.04-x86_64-minimale CT-configuratie opgeslagen in /etc/vz/conf/111.conf

    VE 111.conf configureren.

    Alle andere instellingen zijn al gemaakt in de geïnstalleerde VE # vzctl voer 111 . in

Sleutels genereren

    Aanmaken van sleutels met behulp van het hulpprogramma Easy-RSA. Voorheen zat dit hulpprogramma in de distributiekit van de OpenVPN-server, nu is het een apart project. Laatste versie De hulpprogramma's kunnen worden gedownload van de OpenVPN-website, maar het is correcter om de versie te gebruiken die bij uw OS-distributie is geleverd. aptitude install easy-rsa

    Voordat we de OpenVPN-daemon starten, hebben we een OpenSSL-configuratiebestand nodig in de map / etc / openvpn / keys openssl.cnf; server.conf - OpenVPN-serverconfiguratiebestand; ca.crt - certificaat van de certificeringsinstantie; vpn-server.crt - OpenVPN-servercertificaat; server.key - prive sleutel OpenVPN-server, geheim; crl.pem - certificaatintrekkingslijst; dh.pem - Diffie-Hellman-bestand om verkeer te beschermen tegen decodering; ta.key - HMAC-sleutel voor extra bescherming tegen DoS-aanvallen en overstromingen

    Kopieer de easy-rsa-map naar de plaats waar we de Public Key Infrastructure (PKI) cp -R / usr / share / easy-rsa / etc / openvpn / cd / etc / openvpn / easy-rsa zullen maken

    Wijzig de standaardparameters voor certificaten in het vars-bestand

    Exporteren KEY_COUNTRY = "VS" exporteren KEY_PROVINCE = "CA" exporteren KEY_CITY = "SanFrancisco" exporteren KEY_ORG = "Fort-Funston" exporteren KEY_EMAIL = " [e-mail beveiligd]"export KEY_OU =" MijnOrganisatie-eenheid "

    Laten we omgevingsvariabelen maken.

    Source ./vars OPMERKING: als je ./clean-all uitvoert, zal ik een rm -rf doen op / etc / openvpn / easy-rsa / keys

    Laten we duidelijk maken van eerdere experimenten... Laten we een Diffie-Hellman-sleutel maken (de sleutel wordt enige tijd gegenereerd).

    ./clean-all ./build-dh DH-parameters genereren, 2048 bit lange veilige prime, generator 2 Dit gaat lang duren ...

    Laten we een map maken voor het opslaan van de privésleutels van de OpenVPN-server. Kopieer daar het Diffie-Hellman-bestand (dh2048.pem) mkdir / etc / openvpn / keys cp keys / dh2048.pem / etc / openvpn / keys /

    Laten we creëren CA-certificeringsinstantie... Ca.crt en ca.key worden aangemaakt. Het ca.key-bestand is de privésleutel van de CA, het is geheim en zijn kan niet worden gedragen naar andere knooppunten in uw netwerk. Het CA-certificaatbestand ca.crt daarentegen is open en is nodig op de OpenVPN-server en clientknooppunten. ./pkitool --initca

    Laten we een certificaat maken voor een server met de naam vpnluxor ./pkitool --server vpnluxor

    De aangemaakte bestanden vpnluxor.crt en vpnluxor.key worden gekopieerd naar de directory / etc / openvpn / keys /

    Laten we een certificaat voor client1 maken met de parameter met dezelfde naam CommonName. Voor elke klant een aparte sleutel. ./pkitool-client1

Locatie van certificaten en sleutels

Bestand Een auto Afspraak Toegang
ca.crtServer en klantenRoot CA-certificaatOpenbaar
ca.keyAlleen serverVereist om andere certificaten te ondertekenenGeheim
dh (n) .pemAlleen serverDiffie Hellman-parametersOpenbaar
vpnspar.crtAlleen serverServercertificaatOpenbaar
vpnspar.keyAlleen serverServersleutelGeheim
darkfire.crtAlleen klantClientcertificaatOpenbaar
darkfire.keyAlleen klantKlantsleutelGeheim

OpenVPN installeren

De ccd-directory slaat individuele instellingen op voor elke client. mkdir / etc / openvpn / ccd

VPN-netwerkgrenzen uitbreiden

VPN-grenzen uitbreiden om in te schakelen extra machines van subnetten aan de client- of serverzijde. Meerdere machines aan de serverzijde inschakelen bij gebruik van een gerouteerde VPN (dev tun)

Aangezien de VPN alleen point-to-point is, wil je misschien uitbreiden VPN-grenzen zodat clients kunnen communiceren met andere machines op het servernetwerk, niet alleen met de server zelf.

Om dit met een voorbeeld te illustreren, veronderstel dat in lokaal netwerk aan de serverzijde is het subnet 10.66.0.0/24 en voor de pool van VPN-adressen wordt 10.8.0.0/24 gebruikt zoals vermeld in de serverrichtlijn in het OpenVPN-serverconfiguratiebestand.

Eerst moet u de VPN-clients vertellen dat het 10.66.0.0/24-subnet toegankelijk is via de VPN. Dit kan eenvoudig worden gedaan met behulp van de volgende instructies in het serverconfiguratiebestand:

Druk op "route 10.66.0.0 255.255.255.0"

Vervolgens moet u een route configureren op de LAN-gateway in het servernetwerk voor het routeren van pakketten die bedoeld zijn voor het subnet van de VPN-clients (10.8.0.0/24) via de OpenVPN-server (dit is alleen nodig wanneer de OpenVPN-server en de LAN-gateway zijn verschillende machines) ...

Iptables -A INPUT -p udp --dport 1194 -j ACCEPT iptables -A INPUT -i tap + -j ACCEPT of iptables -A INPUT -i tun + -j ACCEPT

OpenVPN-besturing

PPPoE- en OpenVPN-probleem

Probleem: Als de server is verbonden met de ISP met behulp van de technologie Hoe PPPoE werkt, kan OpenVPN dit niet doen toegankelijke netwerken achter de aangesloten client. Het iroute-commando werkt niet. Dit komt omdat PPP de standaardroute als volgt schrijft:

# netstat -rn Kernel IP-routeringstabel Bestemming Gateway Genmask Vlaggen MSS Venster irtt Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

Die. de interface (ppp0) wordt gespecificeerd door de standaardroute, en niet het IP-adres, de OpenVPN-server begrijpt een dergelijke invoer niet, voor een juiste werking OpenVpn-servers de route zou er als volgt uit moeten zien:

# netstat -rn Bestemming Gateway Genmask Vlaggen MSS Venster irtt Iface 0.0.0.0 91.196.96.35 255.255.255.255 UGH 0 0 0 ppp0

Client proto udp dev tun ca ca.crt dh dh2048.pem cert client.crt key client.key remote xxx.xxx.xxx.xxx 1194 tls-auth ta.key 1 cijfer Een niemandES-256 -CBC gebruikersgroep geengroep werkwoord 2 dempen 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry oneindig nobind

Roterende OpenVPN-logboeken

    Schrijf in het bestand /etc/logrotate.d/openvpn de instellingen voor Beschrijving en voorbeelden van het configureren van logrotate in Linux, de sleutelparameter copytruncate(om OpenVPN niet te overbelasten en het te dwingen gegevens naar hetzelfde logbestand te schrijven) openvpn etc / openvpn / servers / vpnluxor / logs / openvpn.log (dagelijks roteren 8 comprimeren delaycompress missingok copytruncate notifempty maak 640 root)