Openvpn-certifikat och nyckelfiler. Konfigurera klientsidan. Installera OpenVPN på en servermaskin

OpenVPN är ett av VPN-alternativen (virtuella privata nätverk eller privata virtuella nätverk) som låter dig överföra data över en speciellt skapad krypterad kanal. Således kan du koppla två datorer eller bygga ett centraliserat nätverk med en server och flera klienter. I den här artikeln kommer vi att lära oss hur man skapar en sådan server och konfigurerar den.

Som nämnts ovan, med hjälp av tekniken om vilken i fråga, kan vi överföra information via en säker kommunikationskanal. Detta kan vara filutbyte eller säker internetåtkomst via en server som är en vanlig gateway. För att skapa det behöver vi inte valfri utrustning och specialkunskaper- allt görs på datorn som du planerar att använda som VPN-server.

För ytterligare arbete du måste också konfigurera klientsidan på nätverksanvändarnas maskiner. Allt arbete handlar om att skapa nycklar och certifikat, som sedan överförs till klienter. Dessa filer tillåter, när du ansluter till servern, att få en IP-adress och skapa ovanstående krypterade kanal. All information som överförs genom den kan endast läsas om nyckeln finns. Den här funktionen kan avsevärt förbättra säkerheten och säkerställa datasäkerheten.

Installera OpenVPN på en servermaskin

Installationen är standardförfarande med några nyanser, som vi kommer att prata om mer i detalj.


Installation på serversidan

Medan du gör nästa steg du bör vara så försiktig som möjligt. Eventuella brister kommer att leda till att servern inte fungerar. En till erforderligt skick- din konto måste ha administratörsrättigheter.

  1. Gå till katalogen Lätt-rsa, som i vårt fall är belägen på

    C: \ OpenVPN \ easy-rsa

    Hitta filen vars.bat.sample.

    Byt namn på den till vars.bat(ta bort ordet "Prov" tillsammans med en prick).

    Vi öppnar den här filen i editorn. Detta är viktigt, eftersom det är den här anteckningsboken som låter dig redigera och spara koder korrekt, vilket hjälper till att undvika fel under körningen.

  2. Först och främst, ta bort alla valda kommentarer i grönt– de kommer bara att hindra oss. Vi får följande:

  3. Ändra sedan sökvägen till mappen Lätt-rsa till den som vi angav under installationen. I det här fallet tar vi bara bort variabeln % Program filer% och ändra det till C:.

  4. Lämna de nästa fyra parametrarna oförändrade.

  5. Fyll i resten av raderna godtyckligt. Ett exempel i skärmdumpen.

  6. Vi sparar filen.

  7. Du måste också redigera följande filer:
    • build-ca.bat
    • bygga-dh.bat
    • build-key.bat
    • build-key-pass.bat
    • build-key-pkcs12.bat
    • build-key-server.bat

    De måste förändra laget

    absolut väg till motsvarande fil openssl.exe... Kom ihåg att spara dina ändringar.

  8. Öppna nu mappen Lätt-rsa, klämma FLYTTA och högerklicka på ledigt utrymme(inte av filer). V innehållsmeny Välj föremål "Öppna kommandofönster".

    Kommer att starta "Kommandorad" med den redan genomförda övergången till målkatalogen.

  9. Ange kommandot nedan och klicka STIGA PÅ.

  10. Därefter lanserar vi ytterligare en "batchfil".

  11. Vi upprepar det första kommandot.

  12. Nästa steg är att skapa nödvändiga filer... För att göra detta, använd kommandot

    Efter slutförandet kommer systemet att erbjuda dig att bekräfta data som vi angav i vars.bat-filen. Tryck bara flera gånger STIGA PÅ tills den ursprungliga raden visas.

  13. Skapa DH-nyckel genom att köra filen

  14. Förbereder ett certifikat för serversidan. Det finns en här viktig poäng... Han måste tilldela det namn som vi registrerade oss i vars.bat i kö "KEY_NAME"... I vårt exempel är detta Lumpics... Kommandot ser ut så här:

    build-key-server.bat Lumpics

    Här är det också nödvändigt att bekräfta data med knappen STIGA PÅ, och ange även bokstaven två gånger "Y"(ja) vid behov (se skärmdump). Kommandoraden kan stängas.

  15. I vår katalog Lätt-rsa dök upp ny mapp med titeln "Nycklar".

  16. Innehållet måste kopieras och klistras in i en mapp "Ssl", som måste skapas i programmets rotkatalog.

    Mappvy efter att ha klistrat in kopierade filer:

  17. Gå nu till katalogen

    C: \ OpenVPN \ config

    Skapa ett textdokument här (RMB - Skapa - Textdokument), byt namn på det till server.ovpn och öppna den i Notepad ++. Vi introducerar följande kod:

    port 443
    proto udp
    dev tun
    dev-noden "VPN Lumpics"
    dh C: \\ OpenVPN \\ ssl \\ dh2048.pem
    ca C: \\ OpenVPN \\ ssl \\ ca.crt
    cert C: \\ OpenVPN \\ ssl \\ Lumpics.crt
    nyckel C: \\ OpenVPN \\ ssl \\ Lumpics.key
    server 172.16.10.0 255.255.255.0
    max-klienter 32
    keepalive 10 120
    kund till kund
    komp-lzo
    persist-nyckel
    persist-tun
    chiffer DES-CBC
    status C: \\ OpenVPN \\ logg \\ status.log
    log C: \\ OpenVPN \\ log \\ openvpn.log
    verb 4
    tyst 20

    Observera att namnen på certifikat och nycklar måste matcha de som finns i mappen "Ssl".

  18. Öppna sedan "Kontrollpanel" och gå till "Nätverkskontrollcenter".

  19. Klicka på länken "Ändra adapterinställningar".

  20. Här måste vi hitta kopplingen igenom "TAP-Windows Adapter V9"... Detta kan göras genom att högerklicka på anslutningen och gå till dess egenskaper.

  21. Byt namn på den till VPN Lumpics utan citat. Detta namn måste matcha parametern "Dev-nod" i fil server.ovpn.

  22. Det sista steget är att starta tjänsten. Tryck på kortkommandot Win + R, ange raden nedan och klicka STIGA PÅ.

  23. Hitta en tjänst med ett namn "OpenVpnService", högerklicka och gå till dess egenskaper.

  24. Ändra starttyp till "Automatiskt", starta tjänsten och klicka Tillämpa.

  25. Om vi ​​gjorde allt korrekt, borde ett rött kryss försvinna nära adaptern. Det betyder att anslutningen är redo att gå.

Konfigurera klientsidan

Innan du startar klientkonfigurationen måste du utföra flera åtgärder på servermaskinen - generera nycklar och ett certifikat för att konfigurera anslutningen.


Arbete att göra på klientmaskin:


Detta slutför konfigurationen av OpenVPN-servern och klienten.

Slutsats

Genom att organisera ditt eget VPN-nätverk kan du skydda dig maximalt överförd information och gör din internetsurfning säkrare. Det viktigaste är att vara mer försiktig när du ställer in servern och klientdelarna, när göra rätt sak du kan njuta av alla fördelar med ett privat virtuellt nätverk.

RTU-seriens routrar har möjlighet att använda en säker anslutning via en privat virtuellt nätverk, berättigad OpenVPN

Installations- och konfigurationsprocess detta paket för en vanlig användare kan åtföljas av tillräckligt stora svårigheter på grund av brist på nödvändig kunskap.

Nästan hela delen av konfigurationen kan göras igenom Webbgränssnitt, men vissa element måste fortfarande produceras via konsolen!

Vad är OpenVPN och varför du behöver det kan hittas genom artikeln på Wikipedia: OpenVPN

I den här artikeln kommer vi att bekanta oss med den förberedande delen, detta är genereringen av certifikat och krypteringsnycklar för att skydda vår överföringskanal.

1. Generera certifikat och nycklar på Windows

För att generera certifikat och krypteringsnycklar på Windows OS måste du installera själva programmet OpenVPN

Efter nedladdning och installation i mappen du angav kommer den att innehålla en lista med filer. Jag har den här mappen C: \ Program Files \ OpenVPN \

Vi måste gå till mappen lätt-rsa

Behöver öppna Windows-konsolen(för Windows Vista / 7/8 / 8.1 / 10 måste du köra från administratören)

Du kan ta reda på hur du kör kommandoraden (konsolen) som administratör genom att skriva frasen i en sökmotor (Yandex, Google, Mail, etc.): " Hur man kör kommandotolken som administratör"

Gå till mappen lätt-rsa längs installationsvägen med kommandot CD

Till exempel:

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

1.1 Kör filen init-config.bat

C: \ Program Files \ OpenVPN \ easy-rsa> init-config.bat
C: \ Program Files \ OpenVPN \ easy-rsa> kopiera vars.bat.sample vars.bat
Filer kopierade: 1.

En fil visas i mappen vars.bat, öppna den textredigerare, vi är intresserade av raderna i slutet, de måste fyllas i

Vi har ersatt våra parametrar, du kommer att ha andra parametrar.

uppsättning KEY_COUNTRY = RU
ställ in KEY_PROVINCE = Moskva
ställ in KEY_CITY = Moskva
ställ in KEY_ORG = TELEOFIS
ställ in KEY_EMAIL = [e-postskyddad]
ställ in KEY_CN = server
ställ in KEY_NAME = server
ställ in KEY_OU = server
ställ in PKCS11_MODULE_PATH = server
ställ in PKCS11_PIN = 12345

Där det står server, rör den inte. Vi sparar filen.

Hitta raden default_days 365 och ersätt 365 med 3650. Därmed kommer vi att öka livslängden på våra certifikat med 10 år.

Spara och stäng.

1.3 Generera nycklar

Vi skriver kommandon till konsolen

vars

städa allt

Svaret borde komma

Filer kopierade: 1.
Filer kopierade: 1.

Om vi ​​ser detta är allt bra, vi fortsätter ...

Hur man skapar en Diffie-Hellman-nyckel

bygga-dh

Skapa huvudcertifikatet

bygg-ca

När huvudcertifikatet genereras kommer konsolen att visa frågor. Tryck bara på Enter, eftersom vi skrev in alla dessa parametrar i filen vars.bat

Tryck på Enter tills uppmaningsraden visas

C: \ Program Files \ OpenVPN \ easy-rsa

bygg-nyckel-server-server

Vi trycker också på Enter för frågorna, men vi har inte bråttom, alldeles i slutet kommer två frågor att ställas

Signera certifikatet?

Vi svarar på båda dessa frågor med Y

Nu skapar vi klientcertifikatet och nyckeln:

byggnyckelklient

Dessutom skyndar vi oss inte att svara, så snart vi ser raden " Common Name (t.ex. ditt namn eller din servers värdnamn)"måste svara klient

Allra i slutet kommer det också att finnas två frågor, vi svarar även på Y

Dessutom: för varje klient måste du skapa separata nycklar och namnge dem klient1, klient2 eller på annat sätt, allt beror på din fantasi. Kom också ihåg att ange dessa namn när du uppmanas. Vanligt namn

Till exempel:

byggnyckelklient1

byggnyckelkontor1

Alla filer kommer att finnas i mappen C: \ Program Files \ OpenVPN \ easy-rsa \ keys \

Från denna mapp tar vi:

dh1024.pem(eller dh2048.pem)

server.crt

server.nyckel

2. Generera certifikat och nycklar på Linux

Vi kommer att ta fram ett exempel på generering av certifikat och nycklar i operationssalen. Ubuntu system Linux 16.04 LTS

För andra system på Linux baserad, vissa kommandon kan vara annorlunda!

Öppna operativsystemets konsol och installera ett litet paket lätt-rsa

sudo apt-get install easy-rsa

Gå till katalogen där certifikatgenereringspaketet installerades

cd / usr / share / easy-rsa /

Det enda ögonblicket denna mapp tillgängligt för att bara skriva till superanvändaren, så att vi inte har problem i framtiden, kommer vi att byta ägare (Förbise inte pricken i slutet av kommandot !!!)

sudo chown -R teleofis: teleofis.

Låt oss nu konfigurera informationen om de genererade certifikaten

nano vars

Vi hittar dessa punkter och ändrar dem för oss själva

export KEY_SIZE = 1024 // Nyckellängd
export CA_EXPIRE = 3650 // Huvudnyckelns utgångstid i dagar
export KEY_EXPIRE = 3650 // Certifikatets giltighetstid i dagar
export KEY_COUNTRY = "RU" // Land
export KEY_PROVINCE = "Moskva" // Region
export KEY_CITY = "Moskva" // Stad
export KEY_ORG = "TELEOFIS" // Organisation
exportera KEY_EMAIL = " [e-postskyddad]" // E-postlåda
export KEY_OU = "server" // Avdelning
export KEY_NAME = "server"// Nyckelnamn

Efter redigering, spara filen.

Kopiera den senaste versionen av OpenSSL-konfigurationen till en fil openssl.cnf

cp openssl-1.0.0.cnf openssl.cnf

Laddar variabler

källa ./vars

För säkerhets skull kommer vi att rengöra den från skräp

./städa allt

Skapa ett servercertifikat

./bygg-ca

Vi trycker på Enter på alla frågor, vi redigerade alla dessa parametrar i förväg i filen vars


.........................................++++++
.......................................................................................++++++
skriver ny privat nyckel till "ca.key"
-----






-----





Vanligt namn (t.ex. ditt namn eller din servers värdnamn):
Namn:
E-postadress:

Skapa en servernyckel

./build-key-server server

Vi svarar på alla frågor med Enter, men du måste vara försiktig, mot slutet kommer det flera frågor om lösenordet och ett valfritt namn

Även på förfrågningar

Signera certifikatet?

1 av 1 certifikatförfrågningar certifierade, commit?

Svar Y

Genererar en 1024 bitars RSA privat nyckel
..............................++++++
.....................++++++
skriver ny privat nyckel till "server.key"
-----
Du är på väg att bli ombedd att ange information som kommer att införlivas
i din certifikatbegäran.
Vad du är på väg att gå in är vad som kallas ett Distinguished Name eller ett DN.
Det finns en hel del fält men du kan lämna några tomma
För vissa fält kommer det att finnas ett standardvärde,
Om du anger ".", lämnas fältet tomt.
-----
Landsnamn (kod på två bokstäver):
Namn på staten eller provinsen (fullständigt namn):
Ortsnamn (t.ex. stad):
Organisationsnamn (t.ex. företag):
Organisationsenhetsnamn (t.ex. avsnitt):
Vanligt namn (t.ex. ditt namn eller din servers värdnamn):
Namn:
E-postadress:

Vänligen ange följande "extra" attribut
skickas med din certifikatbegäran
Ett utmaningslösenord:
Ett valfritt företagsnamn:
Använda konfiguration från /usr/share/easy-rsa/openssl-1.0.0.cnf
Kontrollera att begäran stämmer överens med signaturen
Signatur ok
Ämnets distinguished Name är följande
countryName: PRINTABLE: "RU"
stateOrProvinceName: PRINTABLE: "Moskva"
localityName: PRINTABLE: "Moskva"
organisationsnamn: UTSKRIFTSBAR: "TELEOFIS"
organisationsenhetsnamn: PRINTABLE: "server"
commonName: PRINTABLE: "server"
namn: PRINTABLE: "server"
e-postadress: IA5STRING: " [e-postskyddad]"
Certifikatet ska vara certifierat till 20 december 13:25:10 2026 GMT (3650 dagar)
Signera certifikatet? : y

1 av 1 certifikatförfrågningar certifierade, commit? y
Skriv ut databas med 1 ny post
Databas uppdaterad

Hur man skapar en Diffie-Hellman-nyckel

./bygg-dh

Uppmärksamhet!!! Filen kan genereras under lång tid, vi väntar på slutet av generationen.

Genererar DH-parametrar, 1024 bit lång säker prime, generator 2
Det här kommer att ta lång tid
.......+................+.............+.............................................................................+................+........................+...........................................+...............................................................................................................................................+....................+........................................+...................................................................................+....................................................................................................................+.+...................................++*++*++*

Vi skapar klientnycklar på samma sätt.

./build-key client1

./build-nyckel rtu968

Vi svarar på alla frågorna Enter, men i slutet var försiktig, igen kommer det att finnas förfrågningar

Signera certifikatet?

1 av 1 certifikatförfrågningar certifierade, commit?

Vi svarar dem Y

Detta slutför skapandet av certifikat- och nyckelfiler.

I mapp / usr / share / easy-rsa / keys / kommer att vara våra certifikat och nycklar

dh1024.pem(eller dh2048.pem)

server.crt

server.nyckel

3. Ytterligare alternativ

Det finns också ytterligare nycklar och metoder för att förbättra säkerheten för anslutningen.

3.1 Nyckel för TLS-autentisering

Genereras av kommandot:

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

För Linux behöver du hela OpenVPN-paketet, bara paketet lätt-rsa kommer inte att räcka!

Du kan installera hela OpenVPN-paketet med kommandot

sudo apt-get installera openvpn

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

3.2 Verifiering och återkallelse av certifikat

Vi kan också skapa en extra fil crl.pem, genom vilken verifiering och återkallelse av certifikat kommer att utföras.

Den här filen kanske inte används, inget dåligt kommer att hända.

För att använda det skapar vi ett anpassat certifikat:

build-key crlsert - Windows

./build-key crlsert - Linux

Vi svarar på alla frågor genom att trycka på Enter, förutom Vanligt namn och namn

För dessa fält anger vi namnet på själva certifikatet.

Och slutligen för Signera certifikatet? , 1 av 1 certifikatförfrågningar certifierade, commit? svara Y

Efter det kör vi kommandot återkalla-full, är hon ansvarig för att återkalla certifikatet och det efterföljande skapandet av filen crl.pem

revoke-full crlsert - Windows

./revoke-full crlsert - Linux

Certifikatfilerna själva crlsert kan raderas. När de har återkallats tas de inte automatiskt bort från mappen.

Detta slutför skapandet av nycklar.

Går vidare till nästa artikel:

Ytterligare information.

Virtuellt privat nätverk. Med dess hjälp kan vi:

  • Skapa en säker kommunikationskanal medan vi sitter med gratis Wi-Fi på ett café.
  • Dela filer mellan nätverksmedlemmar.
  • Distribuera Internet med en gemensam gateway.

Huvudfördelar:

  • Lätt att anpassa.
  • Säkerhet.
  • Ingen extra hårdvara krävs.
  • Hög hastighet och stabilitet.

Liksom författaren till artikeln om att installera OpenVPN på Linux har jag inte hittat en normal artikel, och till och med en som beskriver allt in i minsta detalj. I den här artikeln om Habrahabr ska jag försöka förklara allt på det mest lättillgängliga sättet. Låt oss gå!

Ladda ner distributionspaketet.

När detta skrivs tillgänglig version 2.3.2 ... Vi laddar ner Windows Installer 32- eller 64-bitarsversionen för bitheten i ditt operativsystem.

Installation.

När du installerar, se till att markera alla objekt med kryssrutorna, vi svarar jakande på förslaget att installera drivrutinen. En ny virtuell nätverksadapter kommer att dyka upp på systemet.

Skapande av certifikat och nycklar.

När den här punkten stoppade mig, säger de, ja, det här är nycklarna, jag ska leta efter något enklare. Men tyvärr, jag kunde inte hitta något bättre. Så gå till C: \ Programfiler \ OpenVPN \ easy-rsa, kör init-config.bat, vars.bat kommer att visas, öppna den i anteckningsblocket. Vi är intresserade av raderna längst ner, de måste fyllas i vad du vill. Till exempel:
ställ in KEY_COUNTRY = RU
ställ in KEY_PROVINCE = Baldur
ställ in KEY_CITY = Piter
ställ in KEY_ORG = OpenVPN
uppsättning
ställ in KEY_CN = server
ställ in KEY_NAME = server
ställ in KEY_OU = ouou

Där det står skrivet server rör inte. Har sparat.
Öppna nu openssl-1.0.0.cnf och leta efter raden default_days 365, ställ in den på 3650. Detta kommer att förlänga livslängden för våra certifikat med 10 år. Vi sparar. Öppna sedan kommandoraden i start-standard-kommandoraden (på Windows Vista / 7/8 på uppdrag av administratören), skriv i tur och ordning:

cd C: \ OpenVPN \ easy-rsa
vars
städa allt

Som svar bör den skriva två gånger "Filer kopierade: 1". Så allt är okej. I samma fönster skriver vi:
bygga-dh
Skapar en Diffie-Hellman-nyckel.
bygg-ca
Kommer att skapa huvudcertifikatet.
Frågor kommer att ställas, tryck bara på Enter tills du ser sökvägen C: \ Programfiler \ OpenVPN \ easy-rsa. Därefter skriver vi:
bygg-nyckel-server-server
Vi trycker även på Enter för frågor, ta bara tid på dig! I slutet kommer det att finnas två frågor: "Skriv under certifikatet?" och "1 av 1 certifikatförfrågningar certifierade, commit?", svarar vi på båda frågorna med Y. Låt oss nu skapa ett klientcertifikat:
byggnyckelklient
Här måste du vara mer försiktig, när du tillfrågas Common Name (t.ex. ditt namn eller din servers värdnamn), måste du ange klient. I slutet, också två gånger Y. För varje klient måste du skapa nytt certifikat, bara med ett annat namn, till exempel build-key client1 och även ange det i det gemensamma namnet. Om det görs rätt kan du andas ut! Den svåraste delen är över. I mappen C: \ Program Files \ OpenVPN \ easy-rsa \ keys tar vi: ca.crt, dh1024.pem, server.crt, server.key och lägger dem i C: \ Program Files \ OpenVPN \ config.

Vi skapar konfigurationer.

Gå till C: \ Program Files \ OpenVPN \ config, skapa ett textdokument, klistra in:
# Höj L3-tunneln
dev tun
# Protokoll
proto udp
# Port som lyssnar på vpn
port 12345
# Nycklar och certifikat
ca ca.crt
cert server.crt
nyckel server.nyckel
dh dh1024.pem
# Grovt sett sparar vi adresser
topologi undernät
# Adresspool
server 10.8.0.0 255.255.255.0
# Krypteringsmetod
chiffer AES-128-CBC
# Kompression
komp-lzo
# Kommer att förbättra ping något
mssfix
# Klientlivstid, om den inte svaras stängs den av
keepalive 10 120
# Felsökningsnivå
verb 3

Spara filen som server.ovpn. Detta är vår serverkonfiguration. Nu försöker vi starta servern. Det kommer att finnas en genväg på skrivbordet OpenVPN Gui... Efter lanseringen visas en röd ikon i facket. Vi klickar på den två gånger, om den lyser grönt så är allt bra, om inte så tittar vi på loggen i loggmappen.

Nu klientkonfigurationen:
klient
dev tun
proto udp
# Serveradress och port
fjärradress 12345
# Nycklar måste finnas i konfigurationsmappen
ca ca.crt
cert client.crt
nyckel klient.nyckel
chiffer AES-128-CBC
nobind
komp-lzo
persist-nyckel
persist-tun
verb 3

Spara som client.ovpn. Skapa valfri mapp och placera client.ovpn config och certifikaten ca.crt, client.crt, client.key där, som finns i C: \ Program files \ OpenVPN \ easy-rsa. Ladda ner klienten för Windows Installera på klientdatorn, överför mappen med konfigurationen och certifikatet och kör client.ovpn. Om du är ansluten, försök att skriva ping 10.8.0.1 på kommandoraden. Är paketen borta? Grattis! Servern är klar! Nu går vi till kontrollpanelen-administration-tjänster, letar efter OpenVPN där, dubbelklickar och ställer in det automatiskt. Nu startar servern sig själv efter omstart.

Ändra konfigurationen eller till var och en sin egen.

Nu ska jag berätta för dig hur du distribuerar Internet och andra trivia relaterade till inställningen. Låt oss börja med de små sakerna. Alla manipulationer kommer att utföras med serverkonfigurationen.
Om du vill att klienter ska "se" varandra d.v.s. kunde utbyta information, gå sedan in i konfigurationen
kund till kund.
Om du vill att kunder ska utfärdas statiska adresser, skapa sedan filen ip.txt i config-mappen och skriv in config
ifconfig-pool-persist ip.txt
Ovilliga att skapa certifikat för alla? Sen skriver vi duplicate-cn, men observera att ifconfig-pool-persist inte fungerar med det här alternativet.
Nu om klientkonfigurationen. Du kan inte överföra certifikatfilerna utan mata in dem direkt i konfigurationen, bara det är bättre att inte göra detta från ett anteckningsblock, utan från till exempel AkelPad eller Notepad ++. Öppna ca.crt och välj från ——BEGIN CERTIFICATE—— till ——END CERTIFICATE——. I konfigurationen kommer det att se ut så här:


——BÖRJA CERTIFIKAT——
certifikat
——SLUTCERTIFIKAT——


——BÖRJA CERTIFIKAT——
certifikat
——SLUTCERTIFIKAT——


——BÖRJA PRIVAT NYCKEL——
nyckel-
——SLUT PRIVAT NYCKEL——

Vi distribuerar Internet

För att göra detta, ange serverkonfigurationen:
tryck "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

Vi ersätter DNS-adresserna som anges i inställningarna. Du kan se den genom att gå till kontrollpanelen-nätverksanslutningar genom att dubbelklicka på adaptern som tittar på Internet. För Win7 Kontrollpanel-Nätverk och Internet Center för nätverk och delning-Ändra adapterinställningar. Gå sedan till egenskaperna för samma adapter, åtkomstfliken, markera kryssrutan framför "Tillåt andra nätverksanvändare ..." och i rullgardinsmenyn, om någon, välj virtuell adapter vpn. Sedan går vi in ​​på egenskaperna för vpn-adaptern, egenskaperna för ipv4 och ställer in kvittot för ip och dns automatiskt. Tack för uppmärksamheten!

OpenVPNär en applikation för att skapa en säker IP-tunnel genom en enda UDP - eller TCP-portar - port 1194. För att säkerställa säkerheten för kontrollkanalen och dataflödet använder OpenVPN OpenSSL-biblioteket (mer exakt, SSLv3 / TLSv1-protokollen), d.v.s. alla möjligheter till kryptering, autentisering och certifiering av OpenSSL-biblioteket är tillgängliga (valfritt chiffer, nyckelstorlek). Batch-auktorisering HMAC-algoritm för OpenVPN kan också användas för att ge mer säkerhet, och hårdvaruacceleration för att förbättra krypteringsprestandan.

OpenVPN används på Solaris, OpenBSD, FreeBSD, NetBSD, GNU / Linux, Apple Mac OS X och Microsoft Windows.

    OpenVPN erbjuder användaren flera typer av autentisering:

    Den förinställda nyckeln är den enklaste metoden.

    Med hjälp av ett användarnamn och lösenord kan det användas utan att skapa ett klientcertifikat (ett servercertifikat behövs fortfarande).

OpenVPN kan använda statiska, förinställda nycklar eller TLS-baserat dynamiskt nyckelutbyte. Den stöder också VPN-anslutningar till dynamiska fjärrplatser (DHCP eller uppringda klienter), tunnlar över NAT eller genom fullständig brandvägg(till exempel iptables-regler på Linux).

Klientkonfigurationsfilens inställningar är identiska i syntax och skrivning för både Linux och Windows.

OpenVPN nätverkskomponenter

Huvudkomponenter OpenVPN-nätverk och föremål

    CA Certification Authority... Utfärdar certifikat på begäran av VPN-noder, signerade av ett certifikat från en certifieringsmyndighet. Ger VPN-kamrater med ett eget certifikat för att verifiera identiteten på identiteten. Hanterar CRL.

    OpenVPN-server... OpenVPN-servermjukvaran skapar en tunnel i ett osäkrat nätverk, såsom Internet. Denna tunnel tillhandahåller säker, krypterad trafik mellan noderna som deltar i kommunikationen på OpenVPN-nätverket.

    OpenVPN-klient... OpenVPN-klientmjukvaran är installerad på alla noder som behöver en säker överföringskanal som ges till OpenVPN-servern. Med lämplig konfiguration av OpenVPN-servern är säker dataöverföring mellan OpenVPN-klienter möjlig, inte bara mellan klienter och OpenVPN-servern.

    X.509-certifikat (offentliga nycklar)... X.509-certifikat är offentliga nycklar certifierade av en CA. De används för att kryptera data. Det faktum att certifikatet är certifierat av CA-certifieringsmyndigheten gör det möjligt att identifiera den part som överför den krypterade informationen. Certifikatförfrågningsfilen skapas på nätverksnoderna, sedan överförs den till certifieringsmyndighetens nod och signeras där. Det resulterande signerade certifikatet överförs tillbaka till den begärande OpenVPN-värden.

    Privata nycklar... Privata nycklar är hemliga. De bör skapas och lagras på varje värd i OpenVPN-nätverket, är designade för att dekryptera data och bör aldrig överföras över nätverket. Privata nycklar genereras på OpenVPN-värdarna samtidigt som certifikatbegäran.

    CRL återkallelselista... Innehåller en lista över certifikat som har förlorat förtroendet. Den skapas och redigeras på CA-webbplatsen. För att koppla bort en nod från nätverket räcker det att lägga till dess certifikat till CRL. Efter skapande och varje ändring överförs CRL till OpenVPN-servrarna.

    Diffie-Hellman fil... Den används för att förhindra dekryptering av trafik som registrerats före denna stöld i händelse av en nyckelstöld. Skapat på OpenVPN-servern.

Säkerhet och kryptering

Säkerhet och kryptering i OpenVPN tillhandahålls av How to Use OpenSSL-biblioteket och Transport Layer Security (TLS). Istället för OpenSSL i nyare versioner av OpenVPN kan du använda PolarSSL-biblioteket. TLS-protokollet är en förbättring av det säkra dataöverföringsprotokollet för Secure Socket Layers (SSL-certifikat för webbplatsen, e-post).

Symmetrisk och asymmetrisk kryptografi kan användas i OpenSSL.

I det första fallet, innan dataöverföring påbörjas, måste samma hemliga nyckel placeras på alla nätverksnoder. Detta väcker problemet med säker överföring av denna nyckel över ett osäkert Internet.

I det andra fallet har varje deltagare i datautbytet två nycklar - offentlig (öppen) och privat (hemlig).

Den offentliga nyckeln används för att kryptera data, och den privata nyckeln används för att dekryptera den. Kryptering är baserad på ganska komplex matematik. Den offentliga nyckelkrypteringsalgoritmen som väljs i SSL/TLS säkerställer att endast den privata nyckeln kan dekrypteras.

Den privata nyckeln är hemlig och måste finnas kvar på platsen där den skapades. Den publika nyckeln måste överföras till deltagarna i datautbytet.

För säker dataöverföring är det nödvändigt att identifiera de parter som är involverade i datautbytet. V annat du kan falla offer för den så kallade Man in the Middle-attacken (MITM). Under en sådan attack ansluter en angripare till en datalänk och lyssnar på den. Det kan också störa, radera eller ändra data.

Att tillhandahålla autentisering (användarautentisering) TLS-protokoll använder offentlig nyckelinfrastruktur (PKI) och asymmetrisk kryptografi.

Du måste inse att det också är möjligt att dekryptera data utan en privat nyckel, till exempel med metoden sekventiell uppräkning... Även om denna metod är beräkningskrävande, är det bara en tidsfråga innan data kan dekrypteras.

Även om nyckelstorleken påverkar svårigheten att dekryptera, kan ingen nyckel garantera fullständig datasäkerhet. Dessutom finns det möjlighet att stjäla redan dekrypterade data och nycklar på grund av sårbarheter och bokmärken i operativ system eller applikationsprogramvara, såväl som i hårdvara servrar och arbetsstationer.

Datakryptering ökar trafiken och saktar ner datautbytet. Ju längre längden på nyckeln som används för att kryptera data, desto svårare blir det att hitta den, men också desto mer märkbar blir nedgången i datautbytet.

OpenVPN Debian Wheezy / sid

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

Ändra standardinställningarna för certifikat

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

Låt oss skapa Miljövariabler bash, om detta inte görs, när klientnycklar genereras, kommer variablerna att tas från /etc/openvpn/easy-rsa/openssl.cnf och inte från vars-filen

# cd / etc / openvpn / easy-rsa # source ./vars OBS: Om du kör ./clean-all kommer jag att göra en rm -rf på / etc / openvpn / easy-rsa / keys # ./clean- alla # ./build-dh

Låt oss skapa ett certifikat för en server som heter vpnspar

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

Låt oss skapa ett certifikat för en klient som heter farm1c. En separat nyckel för varje klient.

# ./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

ccd-katalogen innehåller individuella inställningar för varje kund. Filnamnet måste matcha namnet på det genererade klientcertifikatet. Klientkonfigurationsfiler är textfiler och innehåller kommandon som körs av servern när klienter ansluter. Vanligtvis innehåller klientfilen kommandona:

    lägger till en rutt till klienten till det lokala undernätet för centralkontoret (tryck på "route 192.168.1.0 255.255.255.0")

    definierar adressen till det lokala undernätet bakom klienten (till exempel iroute 192.168.2.0 255.255.255.0)

    binda till statisk IP (ifconfig-push 192.168.14.21 192.168.14.22), där ifconfig-push ... De valda paren av IP-adresser måste för det första vara unika, för det andra måste de vara en del av på varandra följande subnät, begränsade av masken / 30 (255.255.255.252), och för det tredje måste de vara inom poolen av IP-adresser, dedikerade till virtuell privata nätverk(fast besluten med serverparametern OpenVPN-serverns konfigurationsfil).

# 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" # statisk IP ifconfush.16.29.19.19.19.16.19.16. 2,0 255,255,255,0

server.conf

Konfigurera servern i filen 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 lokal xxx.196.98.xxx # IP på vilken servern lyssnar efter inkommande meddelanden port 1194 # port på vilken servern lyssnar efter inkommande meddelanden proto udp dev tun # Aktivera OpenVPN-kontrollgränssnittet. Tillgänglig via telnet localhost 7505 management localhost 7505 ca nycklar / ca.crt # plats för det självsignerade betrodda certifikatet (CA) cert-nycklar / vpnspar.crt # plats för servercertifikatet nyckelnycklar / vpnspar.key # plats för serverns privata nyckel dh-nycklar / dh1024.pem # plats för Diffie-Halman-alternativfilen # Konfigurera serverläge och VPN-adress, # varifrån OpenVPN kommer att distribuera adresser till klienter. # Servern tar 192.168.14.1 för sig själv, # resten av adresserna kommer att vara tillgängliga för kunder. # Varje klient kommer att kunna kontakta servern på 192.168.14.1. server 192.168.14.0 255.255.255.0 # filen ipp.txt lagrar information om anslutningen, till exempel om anslutningen bryts # och dess ytterligare restaurering ifconfig-pool-persist ipp.txt # rutter som kommer att skickas till varje klient. # push - OpenVPN-kommando skickas till klienten och exekveras av klienten # (lägg i det här fallet till två rutter till VPN på klientsidan) skjuta på "rutt 192.168.1.0 255.255.255.0" skjuta på "rutt 192.168.35.0 255.255.255.0" # Omdirigera standardgateway till vpn-server. Om det inte behövs, kommentera eller # lägg till ccd för en specifik klient tryck "redirect-gateway def1" # ange var filerna med klientens IP-adressinställningar kommer att lagras client-config-dir ccd # lägg till en server-klient rutt. # rutt - Lägger till rutter på serversidan lokala undernät bakom kunderna rutt 192.168.14.0 255.255.255.252 # tillåt kommunikation mellan klienter som är anslutna till OpenVPN-serverns kommunikation med varandra kund till kund # Ett förnuftskontrolldirektiv inklusive sändning # pingliknande meddelanden fram och tillbaka via # anslutning så att varje sida vet när # den andra sidan kommer plötsligt att försvinna (försvunnit). # Ping var 10:e sekund, med antagandet att fjärrkontrollen # nod är inte tillgänglig om den inte tagits emot för en ping under en viss tid # lika med 120 sekunder. keepalive 10 120 comp-lzo max-klienter 10 användare ingen grupp noggrupp persist-key persist-tun # Innehållet i en liten statusfil visas # aktuella anslutningar, trunkerade # och skrivs över en gång i minuten. status / var / log / openvpn-status.log log / var / log / openvpn.log verb 3 # felsökningsnivå# /etc/init.d/openvpn start

Återkalla klientcertifikat

    Exempel... Återkalla användarcertifikat farm1c # cd / etc / openvpn / easy-rsa # source ./vars # ./revoke-full farm1c Använda konfiguration från /etc/openvpn/easy-rsa/openssl.cnf Återkalla certifikat 02. Databas uppdaterad

    Efter kommandot revoke-full kommer raden som motsvarar farm1c-användarcertifikatet att ändras till filen /etc/openvpn/easy-rsa/keys/index.txt.

Installerar OpenVPN + OpenVZ

VE-installation (VPS, VDS)

    Installera VE Ubuntu för OpenVZ # cd / vz / mall / 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-minimal CT-konfiguration sparad till /etc/vz/conf/111.conf

    Konfigurera VE 111.conf.

    Alla andra inställningar görs redan i den installerade VE # vzctl enter 111

Genererar nycklar

    Skapa nycklar med hjälp av verktyget Easy-RSA. Tidigare ingick detta verktyg i distributionssatsen för OpenVPN-servern, nu är det ett separat projekt. Senaste versionen Verktygen kan laddas ner från OpenVPN-webbplatsen, men det är mer korrekt att använda versionen som medföljer din OS-distribution. aptitude installera easy-rsa

    Innan vi startar OpenVPN-demonen behöver vi en OpenSSL-konfigurationsfil i katalogen / etc / openvpn / keys openssl.cnf; server.conf - OpenVPN-serverkonfigurationsfil; ca.crt - certifikat från certifieringsmyndigheten; vpn-server.crt - OpenVPN-servercertifikat; server.key - privat nyckel OpenVPN-server, hemlig; crl.pem - certifikatåterkallelselista; dh.pem - Diffie-Hellman-fil för att skydda trafik från dekryptering; ta.key - HMAC-nyckel för ytterligare skydd mot DoS-attacker och översvämningar

    Kopiera easy-rsa-katalogen till den plats där vi kommer att skapa Public Key Infrastructure (PKI) cp -R / usr / share / easy-rsa / etc / openvpn / cd / etc / openvpn / easy-rsa

    Ändra standardparametrarna för certifikat i vars-filen

    Export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = " [e-postskyddad]"export KEY_OU =" MyOrganizational Unit "

    Låt oss skapa miljövariabler.

    Källa ./vars OBS: Om du kör ./clean-all kommer jag att göra en rm -rf på / etc / openvpn / easy-rsa / keys

    Låt oss klara från tidigare experiment... Låt oss skapa en Diffie-Hellman-nyckel (nyckeln genereras under en tid).

    ./clean-all ./build-dh Genererar DH-parametrar, 2048 bit lång säker prime, generator 2 Det här kommer att ta lång tid ...

    Låt oss skapa en katalog för att lagra de privata nycklarna till OpenVPN-servern. Kopiera dit Diffie-Hellman-filen (dh2048.pem) mkdir / etc / openvpn / keys cp keys / dh2048.pem / etc / openvpn / keys /

    Låt oss skapa CA-certifieringsmyndighet... Ca.crt och ca.key kommer att skapas. Ca.key-filen är CA:s privata nyckel, det är den hemlighet och hans kan inte bäras till andra noder i ditt nätverk. CA-certifikatfilen ca.crt, å andra sidan, är öppen och den kommer att behövas på OpenVPN-servern och klientnoderna. ./pkitool --initca

    Låt oss skapa ett certifikat för en server som heter vpnluxor ./pkitool --server vpnluxor

    De skapade filerna vpnluxor.crt och vpnluxor.key kopieras till katalogen / etc / openvpn / keys /

    Låt oss skapa ett certifikat för klient1 med parametern med samma namn CommonName. En separat nyckel för varje klient. ./pkitool klient1

Placering av certifikat och nycklar

Fil En bil Utnämning Tillgång
ca.crtServer och klienterRoot CA-certifikatoffentlig
ca.nyckelEndast serverKrävs för att signera andra certifikatHemlighet
dh (n) .pemEndast serverDiffie Hellman parametraroffentlig
vpnspar.crtEndast serverServercertifikatoffentlig
vpnspar.keyEndast serverServernyckelHemlighet
darkfire.crtEndast klientKlientcertifikatoffentlig
darkfire.keyEndast klientKlientnyckelHemlighet

Installerar OpenVPN

ccd-katalogen lagrar individuella inställningar för varje klient. mkdir / etc / openvpn / ccd

Expandera VPN-nätverksgränser

Utökar VPN-gränser för att aktivera ytterligare maskiner från subnät på klient- eller serversidan. Aktivera flera maskiner på serversidan när du använder en routerad VPN (dev tun)

Eftersom VPN bara är punkt-till-punkt, kanske du vill expandera VPN-gränser så att klienter kan kommunicera med andra maskiner på serverns nätverk, inte bara själva servern.

För att illustrera detta med ett exempel, anta att i lokalt nätverk på serversidan är subnätet 10.66.0.0/24 och för poolen av VPN-adresser används 10.8.0.0/24 som anges i serverdirektivet i OpenVPN-serverns konfigurationsfil.

Först måste du berätta för VPN-klienterna att 10.66.0.0/24-undernätet är tillgängligt via VPN. Detta kan enkelt göras med hjälp av följande direktiv i serverkonfigurationsfilen:

Tryck på "rutt 10.66.0.0 255.255.255.0"

Därefter måste du konfigurera en rutt på LAN-gatewayen i servernätverket för att dirigera paket avsedda för VPN-klientens subnät (10.8.0.0/24) genom OpenVPN-servern (detta är endast nödvändigt när OpenVPN-servern och LAN-gatewayen är olika maskiner) ...

Iptables -A INPUT -p udp --dport 1194 -j ACCEPTERA iptables -A INPUT -i tryck på + -j ACCEPT eller iptables -A INPUT -i tun + -j ACCEPT

OpenVPN-kontroll

PPPoE och OpenVPN problem

Problem: Om servern är ansluten till Internetleverantören med tekniken Hur PPPoE fungerar, kommer OpenVPN inte att kunna göra tillgängliga nätverk bakom den anslutna klienten. Kommandot iroute kommer inte att fungera. Detta beror på att PPP skriver standardrutten så här:

# netstat -rn Kernel IP-routningstabell Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

De där. gränssnittet (ppp0) anges av standardrutten och inte IP-adressen, OpenVPN-servern förstår inte en sådan post, för korrekt funktion OpenVpn-servrar rutten ska se ut så här:

# netstat -rn Destination Gateway Genmask Flags MSS Window 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 chiffer A nobodyES-256 -CBC användargrupp nogroup verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-försök oändligt nobind

Roterande OpenVPN-loggar

    I filen /etc/logrotate.d/openvpn, skriv inställningarna för Beskrivning och exempel på konfiguration av logrotate i Linux, nyckelparametern copytruncate(för att inte överbelasta OpenVPN och tvinga den att skriva data till samma loggfil) openvpn etc / openvpn / servers / vpnluxor / logs / openvpn.log (dagligen rotera 8 komprimera delaycompress missingok copytruncate notifempty skapa 640 root)