Az openvpn konfigurálása
Távoli munkatársat kell csatlakoztatnunk a munkahálózathoz. Ez a VPN használatával történik, esetünkben az OpenVPN-ben. Ez egy szabad, meglehetősen megbízható és nem túl bonyolult a konfigurációs kiszolgálón és egy VPN-ügyfélen.
Hálózatunk struktúrája:

A kezdeti beállítás minden népszerű operációs rendszer számára egyszerű:
Talán nem mondok semmit a Mac OS-ről, tk. nem találkozott személyesen.
Az OpenVPN telepítése Linux alatt
Használom a CentOS-ot, így leírhatom a telepítést erre a speciális Linuxra.
Mint másutt is, a csomag letöltése és telepítése nem jó; nehezebb lesz frissíteni. És azóta "yum install openvpn" fog megjeleníteni a fügét, meg kell csatlakoztatnunk az adattárat.
1. opció - próbálja meg a repository-ot a very openvpn.net-ből:
Valószínűleg ez nem az Ön számára a ride :)
2. lehetőség - RPMForge tároló
Ellenőrizzük, hogy mit tanítottak:
Különösen ne hordozzon semmilyen tárolót sem :) Minél kevesebbet, annál jobb.
Szóval, bármit is csinálj, sikeresen végre kell hajtania a parancsot:
# yum telepítse az openvpn-t
telepített:
openvpn.i386 0: 2,3-3
Telepített függőség:
pkcs11-helper.i686 0: 1.08-1.el6.rf
Initial OpenVPN konfiguráció
Függetlenül attól, hogy a FreeBSD, a Linux vagy a Windows az OpenVPN-hez szükséges infrastruktúra létrehozásához szükséges általános lépések közel azonosak.
Másolja a konfigurációs fájlt:
# cp /usr/share/doc/openvpn-*/sample-config-files/server.conf / etc / openvpn /
Másolja az RSA kulcskezelő csomagot az OpenVPN-ból az / etc / openvpn / easy-rsa-ba történő szállításhoz:
# cp /usr/share/doc/openvpn-*/easy-rsa/2.0/ / etc / openvpn /
# cd / etc / openvpn / easy-rsa
# cp openssl-1.0.0.cnf openssl.cnf
# mkdir billentyűk
A / etc / openvpn / rsa-keys / vars fájl szerkesztése:
export KEY_COUNTRY = "RU"
export KEY_PROVINCE = "RU"
export KEY_CITY = "Moszkva"
export KEY_ORG = "Társaság"
export KEY_EMAIL = "[email protected]"
exportáljon [email protected]
export KEY_CN = changeme
export KEY_NAME = changeme
export KEY_OU = Iroda
export PKCS11_MODULE_PATH = changeme
export PKCS11_PIN = 1234
Ezután exportálnia kell a KEY_ * változókat, amelyekre szükség van a tanúsítványokat generáló * * parancsfájl futtatásához. Ebben a lépésben megjegyezhetem, hogy nem sikerült azonnal exportálni a változókat a / etc / openvpn / easy-rsa / keys fájlból. Volt, hogy egy script, hogy exportálja a PATH környezeti változó $, de nekem úgy tűnik, ez pusztán az én ügyem volt (a Windows-alapú változat C: Program FilesOpenVPNeasy-rsavars.bat változók exportált gond nélkül):
# cd / etc / openvpn / easy-rsa
# ./vars
A Windows rendszerben nyissa meg a "cmd" parancssort:
cd "C: Program FilesOpenVPNeasy-rsa
vars.bat
Megjegyzem, abban az esetben, ha nem tudsz parancsfájlt végrehajtani, akkor valószínűleg egyszerűen nincs jogosultsága elindítani, például amikor elindul ./build-ca, először megkaptam ezt az üzenetet:
Szerkessze a vars szkriptet, hogy tükrözze a konfigurációt,
akkor a "source ./vars" forrással.
Ezután kezdjen új PKI-konfigurációval és törölni
korábbi tanúsítványok és kulcsok, futtassa a "./clean-all" parancsot.
Végül futtathatja az eszközt (pkitool) a tanúsítványok / kulcsok létrehozásához.
Mi ez? És egyszerűen a fájlok egy változóját nem exportálták, mivel. vars nem futott, mert joga van a futáshoz, azaz "chmod + x vars". Engedélyt kellett adnom több fájl futtatásához, többek között:
build-ca, tiszta-minden, pkitool, vars, whichopensslcnf.
Az összes korábbi kulcs és tanúsítványfájl törlése az / etc / openvpn / easy-rsa / keys könyvtárból (ez a könyvtár a vars fájl KEY_DIR változójában van megadva):
# chmod + x clean-all
# ./clean-all
A szerver tanúsítványhatóságát hoztuk létre:
# chmod + x build-ca
# chmod + x pkitool
# ./build-ca
++++++
. ++++++
új magánkulcs írása a "ca.key"
-----
Arra fogják kérni, hogy adja meg a beillesztendő információkat
a tanúsítványkérelmére.
Mi a neve egy Megkülönböztető névnek vagy egy DN-nek?
Van néhány területen, de hagyhatsz néhányat
Egyes mezők esetén alapértelmezett érték lesz,
Ha megadja a '.' Mezőt, akkor a mező üresen marad.
-----
Országnév (2 betűs kód) [RU]:
Állam vagy tartomány neve (teljes név) [RU]:
Helység neve (pl. Város) [Moszkva]:
Szervezet neve (pl. Cég) [Vállalat]:
Szervezeti egység neve (pl. Szakasz) [Iroda]:
Közönséges név (pl. Neve vagy kiszolgáló host neve) [changeme]: VPNServer
Név [changeme]: Név
E-mail cím [[email protected]]:
Oké, olyasmit tettünk.
A tanúsítványok kitöltésekor legyen óvatos, a Közönséges név mezőt ki kell tölteni, és a kiszolgálónak egynek kell lennie, és az ügyfélnek másiknak kell lennie. Például a Common Name mezőben, amikor létrehozza az X.509 tanúsítványt a kiszolgálóhoz, akkor írhat "server" -et, és az ügyfél, vagy "client" -et.
Hozzon létre egy X.509 tanúsítványt a kiszolgálóhoz.
# chmod + x build-key-server
# ./build-key-server kiszolgáló
1024 bites RSA privát kulcs létrehozása
.++++++
. ++++++
új magánkulcs írása a 'server.key'
-----
Arra fogják kérni, hogy adja meg a beillesztendő információkat
a tanúsítványkérelmére.
Mi a neve egy Megkülönböztető névnek vagy egy DN-nek?
Van néhány területen, de hagyhatsz néhányat
Egyes mezők esetén alapértelmezett érték lesz,
Ha megadja a '.' Mezőt, akkor a mező üresen marad.
-----
Országnév (2 betűs kód) [RU]:
Állam vagy tartomány neve (teljes név) [RU]:
Helység neve (pl. Város) [Moszkva]:
Szervezet neve (pl. Cég) [Vállalat]:
Szervezeti egység neve (pl. Szakasz) [Iroda]:
Közönséges név (pl. Neve vagy kiszolgáló host neve) [kiszolgáló]:
Name [changeme]: IAmServer
E-mail cím [[email protected]]:
Kérjük, adja meg a következő "extra" attribútumokat
hogy elküldjük a tanúsítványt
A kihívás jelszava []:
Opcionális cégnév []:
A konfiguráció használata a /etc/openvpn/easy-rsa/openssl.cnf címen
Ellenőrizze, hogy a kérés megfelel-e az aláírásnak
Aláírás rendben
A Tárgy megkülönböztetett neve a következő
országName: PRINTABLE: "RU"
stateOrProvinceName: PRINTABLE: "RU"
localityName: PRINTABLE: "Moszkva"
szervezetNév: PRINTABLE: 'Company'
szervezeti egységName: PRINTABLE: 'Office'
commonName: PRINTABLE: 'szerver'
név: PRINTABLE: 'IAmServer'
emailAddress: IA5STRING:'[email protected] '
A tanúsítványt ki kell igazítani, amíg április 7-én 12:15:29 2022 GMT (3650 nap)
Aláírja a tanúsítványt? [y / n]: y
1-ből 1 tanúsítványkérelmek hitelesítettek, kötelezzék el magukat? [y / n] y
Írj ki adatbázisot 1 új bejegyzéssel
Adatbázis frissítve
Diffie-Hellman paraméterfájl létrehozása megbízhatóbb adatvédelemhez ügyfél-kiszolgáló kapcsolat létrehozásakor:
# chmod + x build-dh
# ./build-dh
DH-paraméterek létrehozása, 1024 bites hosszú biztonságos elsődleges, 2. generátor
Ez sokáig tart
Tanúsítványokat hozunk létre egy távoli ügyfél számára:
# ./build-key-pass Client1
1024 bites RSA privát kulcs létrehozása
. ++++++
. ++++++
írjon új titkos kulcsot a "Client1.key"
.
1-ből 1 tanúsítványkérelmek hitelesítettek, elkötelezzék? [y / n] y
Írj ki adatbázisot 1 új bejegyzéssel
Adatbázis frissítve
Végül TLS-kulcsot generálunk, amely gyakori az ügyfél és a szerver számára, és kiegészítő védelmet nyújt. A TLS lehetővé teszi az adatok interneten keresztüli hitelesítését és biztonságát, kriptográfiai eszközök segítségével. Gyakran előfordul, hogy csak a kiszolgáló hitelesítése zajlik, míg az ügyfél nem hitelesített. A kölcsönös hitelesítés, mindkét oldalon támogatnia kell a nyilvános kulcsú infrastruktúra (PKI), amely segít megvédeni a kliens-szerver alkalmazások az lehallgatását, szerkesztheti a meglévő bejegyzéseket és létre hamis (forrás: wikipedia).
openvpn --genkey --secret ta.key
Ennek eredményeképpen az / etc / openvpn / easy-rsa / keys mappában a következő fájlok állnak rendelkezésre:
ca.crt - a fő hitelességi tanúsítvány (Certificate Authority), ez a fájl mind az ügyfélnek, mind a kiszolgálónak szüksége van
dh1024.pem - Diffie Helman kulcs, ez a fájl csak a szerver által szükséges
server.crt - X.509 tanúsítvány szerverről (normál X.509 ITU-T szabvány alapvető alátámasztó minden egyéb alkalmazott nyilvános kulcsú infrastruktúra (PKI) Fő célja -. meghatározását az elektronikus formátum a tanúsítvány és tanúsítvány visszavonási lista) csak a szerver szükséges
server.key - server kulcs, csak a kiszolgáló szükséges (SECRET fájl)
client1.crt - client X.509 tanúsítvány, csak az ügyfél szükséges
client1.key - kliens kulcs, csak az ügyfél szükséges (SECRET fájl)
ta.key - TLS-kulcs, mind az ügyfél, mind a kiszolgáló igényeihez
Szerver - egy, az ügyfél - egy másik
Most a mappa / etc / openvpn / kulcsok jövőbeni OpenVPN szerver ca.crt fájlmásolás dh1024.pem, server.crt, server.key és ta.key:
# mkdir / etc / openvpn / keys
# Cp /etc/openvpn/easy-rsa/keys/ca.crt dh1024.pem server.crt server.key ta.key / etc / openvpn / kulcsok
A jövőbeli ügyfélsomagban / etc / openvpn / client1 másolja a ca.crt, client1.crt, client1.key és ta.key fájlokat:
# mkdir / etc / openvpn / client1
# cp /etc/openvpn/easy-rsa/keys/ca.crt kliens1.crt kliens1.key ta.key / etc / openvpn / client1
Most a "client1" alkönyvtár átmásolható a jövőbeni Windows távoli ügyfél konfigurációs mappájába.
Alapvetően a / etc / openvpn / easy-rsa / keys / mappában maradhat az összes fájl, csak abban az esetben, ha az openvpn mappához való hozzáférési jogosultság jobb, ha a helyesre frissül:
# chown -R root: kerék / etc / openvpn
OpenVPN szerver konfiguráció
Hely szerver konfigurációs fájl: "/etc/openvpn/config/server.conf" (Windows: "C: Program FilesOpenVPNconfigserver.ovpn").
Példa az OpenVPN kiszolgáló konfigurációs fájljára (Windows, Linux, FreeBSD, minimális változtatásokkal):
# a fejlesztők webhelyén javasoljuk a udp használatát is
# biztonsági okokból
proto udp
ca "/etc/openvpn/keys/ca.crt"
cert "/etc/openvpn/keys/server.crt"
kulcs "/etc/openvpn/keys/server.key" # Tartsa titokban a fájlt!
# include TLS hitelesítés
tls-szerver
# adja meg a tls-kulcsot, és adja meg a 0-at a kiszolgálónak, és 1 az ügyfél számára
tls-auth "/etc/openvpn/keys/ta.key" 0
# időtúllépés, amíg újra nem kapcsolódik
tls-timeout 120
auth MD5
# állítsa be az Útvonalat az ügyfélnek
# és az alhálózati maszk annak érdekében, hogy "látja"
# hálózat az OpenVPN szerver mögött (hálózat 192.168.10.0/24)
push "útvonal 192.168.10.0 255.255.255.0"
útvonal 192.168.10.0 255.255.255.0
# megtartja a kapcsolatot (hasznos, ha natonon, proxyon stb. dolgozik)
tartani 10 120
# engedélyezi a csomagok kódolását
titkosított BF-CBC
# engedélyezze a tömörítést (ha problémák vannak a kapcsolattal - kapcsolja ki ezt az opciót az ügyfélen és a kiszolgálón)
comp-LZO
# az ügyfelek maximális száma
max-ügyfelek 5
felhasználó senki
csoport senki sem
# Ne olvassa újra a kulcsokat a fogadás után
# SIGUSR1 vagy ping újraindítás
fennállnak-kulcs
# Ne zárja be és ne nyissa fel újra a TUNTAP-ot
# készüléket, miután megkapta
# SIGUSR1 vagy ping újraindítás
fennállnak-tun
# az ügyfelek "látják" egymást
kliens-kliens
log "/etc/openvpn/log/openvpn.log"
log-append "/etc/openvpn/log/openvpn.log"
# Jelentés részletes szintje
3. ige
Megjegyzések az OpenVPN kiszolgáló konfigurációs fájljához
Ebben a konfigurációban csak két különbség van a kiszolgálóverziók Unix vagy Windows rendszeren.
1. A konfigurációs fájlok, tanúsítványok stb. Helymeghatározási útvonalát a Windows konfigurációs fájlban a következőképpen kell megadni:
dh "C: Program FilesOpenvpnconfigdh1024.pem"
és Linux / FreeBSD-ben így:
felhasználó senki
csoport senki sem
felhasználó senki sem senki sem
csoport senki senki sem
A kiszolgáló beállítása elvileg mindent. A működés megkezdéséhez elegendő a fent megadott konfiguráció.
Az OpenVPN szerver automatikus indítása Linux / FreeBSD-ben
#! / bin / sh
dir = / etc / openvpn / config
modprobe tun
echo 1> / proc / sys / net / ipv4 / ip_forward
openvpn --cd $ dir --daemon --config /etc/openvpn/config/server.conf
# By the way, itt futtathat több OpenVPN szervert egyszerre:
# openvpn --cd $ dir --daemon --config /etc/openvpn/config/server2.conf
(például a FreeBSD-ben):
openvpn_enable = "YES"
openvpn_if = "tun" #
openvpn_configfile = "/ etc / openvpn / config / server.conf"
openvpn_dir = "/ etc / openvpn" # --cd könyvtár
OpenVPN ügyfélkonfiguráció Windows XP rendszeren
A kliens fájlokat a szerveren lévő / etc / openvpn / client1 mappából veszünk át, és másoljuk át őket a kliens "C: Program FilesOpenVPNconfig" mappájába.
Hely kliens konfigurációs fájl: „C: Program FilesOpenVPNconfigclient1.ovpn” (Linux / FreeBSD helyen, azt hiszem, bárhol a saját könyvtár a felhasználó, például „/home/vpn/client1.ovpn”).
Példa az OpenVPN ügyfél konfigurációs fájljára:
ca "C: Program FilesOpenVPNconfigca.crt"
cert "C: Program FilesOpenVPNconfigclient1.crt"
kulcs "C: Program FilesOpenVPNconfigclient1.key"
tls-kliens
tls-auth "C: Program FilesOpenVPNconfigta.key" 1
auth MD5
# Ez egy másik védelem, ezúttal az "ember a középen" támadásban
ns-cert típusú szerver
Be kell állítania a tűzfalat úgy, hogy az OpenVPN külső ügyfelei "láthassák" a hálózatot "NAT mögött". A CentOS / Squid átjáró konfigurációs iptables egy részét (belső hálózat: 192.168.10.0/24) hozom:
Ezekkel a konfigurációkkal a VPN ügyfél együttműködhet a helyi hálózatok számítógépeivel. Ha gondolatai vannak az iptables és az átirányítás beállításairól - nagyon hálás lennék. És az olvasók is. Végül is, ha elolvassa ezt a cikket, akkor valószínűleg tud róla, hogy sok másolatot töröltek e témában.
Az ügyfél-tanúsítvány visszavonása
Bármely ügyfél tanúsítványának visszavonása (például akkor, ha elveszíti a táblagépet a konfigurált OpenVPN-mel), azaz. Annak érdekében, hogy a kliens már nem tud kapcsolódni a szerverhez a tanúsítványával, meg kell tennie néhány egyszerű műveletet.
# cd /etc/openvpn/easy-rsa/2.0/
#. /etc/openvpn/easy-rsa/2.0/vars
# ./revoke-full ügyfél25
23 hiba 0 mélységi keresési: tanúsítvány visszavonva
Sikeres lezárása után az utolsó parancs (akkor lásd az utolsó sort) a könyvtárban jön létre /etc/openvpn/easy-rsa/2.0/keys fájl crl.pem fájlt (CRL - tanúsítvány visszavonási lista - a lista a visszavont tanúsítványok). Másolja azt a könyvtárba, ahol az OpenVPN szerveren futó egyéb fájlok vannak. Elméletileg ez a könyvtár a / etc / openvpn. Csak abban az esetben ellenőrizze a régi crl.pem fájl meglétét ebben a könyvtárban (van egy jó gyakorlat, hogy először biztonsági másolatot készítsen). Felhívjuk a figyelmet arra, hogy a csapat relatív utakat jelent, nem pedig abszolút értékeket:
# cp gombok / crl.pem / etc / openvpn /
És most megmondjuk a szerverünknek, hogy ellenőrizze a visszavont tanúsítványok listáját minden egyes új ügyfél csatlakoztatásakor. Ehhez adj hozzá egy sort a kiszolgáló konfigurációhoz (talán /etc/openvpn/server.conf):
Indítsa újra az OpenVPN kiszolgálót:
# service openvpn restart
Most akkor is, ha nem törölte a kliens25 ügyfélkulcsát a kiszolgálóról, akkor nem fog tudni csatlakozni.