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:

Az openvpn konfigurálása

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.

Kapcsolódó cikkek