ProHoster > Blog > Adminisztráció > Hitelesítés beállítása az L2TP hálózatban a Rutoken EDS 2.0 és a Rutoken PKI használatával
Hitelesítés beállítása az L2TP hálózatban a Rutoken EDS 2.0 és a Rutoken PKI használatával
Problémák
Nemrég sokan nem tudták, milyen otthonról dolgozni. A világjárvány drámai módon megváltoztatta a világ helyzetét, mindenki elkezdett alkalmazkodni a jelenlegi körülményekhez, nevezetesen ahhoz, hogy egyszerűen nem biztonságos a ház elhagyása. Sokuknak pedig gyorsan meg kellett szervezniük az otthoni munkát alkalmazottaik számára.
A távmunka megoldásainak megfelelő hozzáértő megközelítésének hiánya azonban visszafordíthatatlan veszteségekhez vezethet. A felhasználói jelszavak ellophatók, így a támadó ellenőrizhetetlenül csatlakozhat a vállalat hálózati és informatikai erőforrásaihoz.
Ezért nőtt meg az igény a megbízható vállalati VPN-hálózatok létrehozására. mesélek róla megbízható, biztonságos и egyszerű VPN hálózat használatában.
Az IPsec/L2TP séma szerint működik, amely nem visszakereshető kulcsokat és tokeneken tárolt tanúsítványokat használ a kliensek hitelesítésére, emellett titkosított formában továbbítja az adatokat a hálózaton.
Egy CentOS 7-es szervert (cím: centos.vpn.server.ad) és egy Ubuntu 20.04-es klienst, valamint egy Windows 10-es klienst használtak demonstrációs állványként a konfigurációhoz.
Rendszer Leírás
A VPN az IPSec + L2TP + PPP séma szerint fog működni. Jegyzőkönyv Pont-pont protokoll (PPP) az OSI modell adatkapcsolati rétegében működik, és biztosítja a felhasználó hitelesítését és a továbbított adatok titkosítását. Adatai az L2TP protokoll adataiba vannak beágyazva, ami ténylegesen biztosítja a VPN hálózatban a kapcsolat létrejöttét, de hitelesítést és titkosítást nem.
Az L2TP adatok IPSec-be vannak beágyazva, amely hitelesítést és titkosítást is biztosít, de a PPP-vel ellentétben a hitelesítés és titkosítás eszközszinten történik, nem felhasználói szinten.
Ez a funkció lehetővé teszi a felhasználók hitelesítését csak bizonyos eszközökről. Az IPSec protokollt úgy fogjuk használni, ahogy van, és lehetővé tesszük a felhasználói hitelesítést bármely eszközről.
Az intelligens kártyákkal történő felhasználói hitelesítés a PPP protokoll szintjén, az EAP-TLS protokoll használatával történik.
Ennek az áramkörnek a működéséről részletesebb információkat találhat ezt a cikket.
Miért felel meg ez a séma egy jó VPN-hálózat mindhárom követelményének?
Ennek a rendszernek a megbízhatóságát az idő tesztelte. 2000 óta használják VPN-hálózatok telepítésére.
A biztonságos felhasználói hitelesítést a PPP protokoll biztosítja. A Paul Mackerras által kifejlesztett PPP protokoll szabványos megvalósítása nem nyújt megfelelő szintű biztonságot, mert A hitelesítéshez a legjobb esetben a bejelentkezési névvel és jelszóval történő hitelesítést használjuk. Mindannyian tudjuk, hogy a bejelentkezési jelszó után kémkedhet, kitalálható vagy ellopható. Azonban már hosszú ideje a fejlesztő Jan Just Keijser в végrehajtását Ez a protokoll kijavította ezt a problémát, és lehetővé tette az aszimmetrikus titkosításon alapuló protokollok, például az EAP-TLS hitelesítési használatát. Emellett hozzáadta az intelligens kártyák hitelesítéshez való használatának lehetőségét, ami biztonságosabbá tette a rendszert.
Jelenleg aktív tárgyalások folynak e két projekt összevonásáról, és biztos lehet benne, hogy ez előbb-utóbb úgyis megtörténik. Például a PPP javított verziója hosszú ideje megtalálható a Fedora tárolókban, biztonságos protokollokat használva a hitelesítéshez.
Egészen a közelmúltig ezt a hálózatot csak Windows-felhasználók használhatták, de kollégáink a Moszkvai Állami Egyetemről, Vaszilij Shokov és Alekszandr Szmirnov régi L2TP kliens projekt Linuxhoz és módosította. Közösen kijavítottunk számos hibát és hiányosságot a kliens munkájában, leegyszerűsítettük a rendszer telepítését és konfigurálását, még akkor is, ha forrásból építünk. Közülük a legjelentősebbek:
Javítva a régi kliens kompatibilitási problémái az openssl és qt új verzióinak felületével.
A pppd eltávolítva a token PIN-kód ideiglenes fájlon keresztüli átadásából.
Javítva a jelszókérő program hibás elindítása a grafikus felületen keresztül. Ez az xl2tpd szolgáltatás megfelelő környezetének telepítésével történt.
Az L2tpIpsecVpn démon összeállítása most magával a kliens buildjével együtt történik, ami leegyszerűsíti a felépítési és konfigurációs folyamatot.
A fejlesztés megkönnyítése érdekében az Azure Pipelines rendszer csatlakoztatva van a build helyességének teszteléséhez.
Hozzáadtuk a leminősítés kényszerítésének lehetőségét biztonsági szint az openssl kontextusában. Ez hasznos az új operációs rendszerek megfelelő támogatásához, ahol a szabványos biztonsági szint 2, olyan VPN-hálózatok esetében, amelyek olyan tanúsítványokat használnak, amelyek nem felelnek meg ennek a szintnek a biztonsági követelményeinek. Ez az opció hasznos lehet a meglévő régi VPN-hálózatokkal való együttműködéshez.
Ez a kliens támogatja az intelligens kártyák használatát a hitelesítéshez, és a lehető legjobban elrejti a séma Linux alatti beállításával járó nehézségeket és nehézségeket, így a kliens beállítása a lehető legegyszerűbb és leggyorsabb.
Természetesen a PPP és a kliens grafikus felhasználói felülete közötti kényelmes kapcsolat érdekében ez nem volt lehetséges az egyes projektek további szerkesztése nélkül, de ennek ellenére minimalizálták és minimálisra csökkentették:
Rögzített hiba a konfiguráció betöltésének és az openssl kontextus inicializálásának sorrendjében. Ez a hiba nem tette lehetővé, hogy semmit betöltsünk a helyi /etc/ppp/openssl.cnf konfigurációs fájlból, kivéve az intelligens kártyákkal való munkavégzéshez szükséges openssl motorokkal kapcsolatos információkat, ami komoly kényelmetlenséget jelentett, ha például a motorokkal kapcsolatos információk mellett valami mást akartunk beállítani. Például rögzítse a biztonsági szintet a kapcsolat létrehozásakor.
Most elkezdheti a beállítást.
Szerver hangolás
Telepítsük az összes szükséges csomagot.
A strongswan (IPsec) telepítése
Először is állítsuk be a tűzfalat az ipsec működéshez
Egy közös bejelentkezési jelszót is beállítunk. A megosztott jelszót a hálózat összes résztvevőjének ismernie kell a hitelesítéshez. Ez a módszer nyilvánvalóan megbízhatatlan, mert ez a jelszó könnyen ismertté válhat olyan személyek számára, akiknek nem kívánunk hozzáférést biztosítani a hálózathoz.
Azonban még ez a tény sem befolyásolja a hálózat biztonságát, mert Az alapvető adattitkosítást és a felhasználói hitelesítést a PPP protokoll végzi. De az igazságosság kedvéért érdemes megjegyezni, hogy a strongswan biztonságosabb technológiákat támogat a hitelesítéshez, például privát kulcsok használatával. A Strongswan képes intelligens kártyákkal történő hitelesítésre is, de egyelőre csak korlátozott számú eszköz támogatott, ezért a Rutoken tokenekkel és intelligens kártyákkal történő hitelesítés még mindig nehéz. Állítsunk be egy általános jelszót fájlon keresztül /etc/strongswan/ipsec.secrets:
Állítsuk be fájlon keresztül /etc/xl2tpd/xl2tpd.conf:
[global]
force userspace = yes
listen-addr = 0.0.0.0
ipsec saref = yes
[lns default]
exclusive = no
; определяет статический адрес сервера в виртуальной сети
local ip = 100.10.10.1
; задает диапазон виртуальных адресов
ip range = 100.10.10.1-100.10.10.254
assign ip = yes
refuse pap = yes
require authentication = yes
; данную опцию можно отключить после успешной настройки сети
ppp debug = yes
length bit = yes
pppoptfile = /etc/ppp/options.xl2tpd
; указывает адрес сервера в сети
name = centos.vpn.server.ad
Kiállítjuk a gyökértanúsítványt és a szervertanúsítványt:
#директория с сертификатами пользователей, УЦ и сервера
sudo mkdir /etc/ppp/certs
#директория с закрытыми ключами сервера и УЦ
sudo mkdir /etc/ppp/keys
#запрещаем любой доступ к этой дирректории кроме администатора
sudo chmod 0600 /etc/ppp/keys/
#генерируем ключ и выписываем сертификат УЦ
sudo openssl genrsa -out /etc/ppp/keys/ca.pem 2048
sudo openssl req -key /etc/ppp/keys/ca.pem -new -x509 -out /etc/ppp/certs/ca.pem -subj "/C=RU/CN=L2TP CA"
#генерируем ключ и выписываем сертификат сервера
sudo openssl genrsa -out /etc/ppp/keys/server.pem 2048
sudo openssl req -new -out server.req -key /etc/ppp/keys/server.pem -subj "/C=RU/CN=centos.vpn.server.ad"
sudo openssl x509 -req -in server.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/server.pem -CAcreateserial
Így elkészültünk a szerver alapbeállításával. A szerverkonfiguráció többi része új ügyfelek hozzáadását foglalja magában.
Új ügyfél hozzáadása
Ha új klienst szeretne hozzáadni a hálózathoz, hozzá kell adnia annak tanúsítványát a kliens megbízható klienseinek listájához.
Ha egy felhasználó VPN-hálózat tagjává kíván válni, létrehoz egy kulcspárt és egy tanúsítványalkalmazást ehhez az ügyfélhez. Ha a felhasználó megbízható, akkor ez az alkalmazás aláírható, és a kapott tanúsítvány a tanúsítványok könyvtárába írható:
JEGYZET
A félreértések elkerülése érdekében jobb, ha: A közönséges név, a tanúsítványfájl neve és a felhasználónév egyedi.
Érdemes azt is ellenőrizni, hogy az általunk hozzáadott felhasználó neve más hitelesítési fájlokban sehol ne jelenjen meg, különben problémák lesznek a felhasználó hitelesítésével.
Ugyanezt a tanúsítványt kell visszaküldeni a felhasználónak.
Kulcspár és tanúsítvány generálása
A sikeres hitelesítéshez az ügyfélnek:
létrehoz egy kulcspárt;
rendelkezik CA gyökértanúsítvánnyal;
rendelkezzen a kulcspárhoz tartozó tanúsítvánnyal, amelyet a root CA aláírt.
Linux rendszerű klienshez
Először is hozzunk létre egy kulcspárt a tokenen, és hozzunk létre egy alkalmazást a tanúsítványhoz:
Küldje el a megjelenő client.req alkalmazást a CA-nak. Miután megkapta a tanúsítványt a kulcspárhoz, írja be egy tokenbe, amelynek azonosítója megegyezik a kulcséval:
Windows és Linux kliensekhez (univerzálisabb módszer)
Ez a módszer univerzálisabb, mert lehetővé teszi olyan kulcs és tanúsítvány létrehozását, amelyet a Windows és Linux felhasználók sikeresen felismernek, de a kulcsgenerálási eljárás végrehajtásához Windows-gép szükséges.
A kérelmek generálása és a tanúsítványok importálása előtt hozzá kell adni a VPN-hálózat gyökértanúsítványát a megbízhatóak listájához. Ehhez nyissa meg, és a megnyíló ablakban válassza a „Tanúsítvány telepítése” lehetőséget:
A megnyíló ablakban válassza ki a tanúsítvány telepítését a helyi felhasználó számára:
Telepítsük a tanúsítványt a CA megbízható gyökértanúsítvány-tárolójába:
Mindezen intézkedések után minden további ponttal egyetértünk. A rendszer most konfigurálva van.
Hozzunk létre egy cert.tmp fájlt a következő tartalommal:
Ezt követően létrehozunk egy kulcspárt, és létrehozunk egy alkalmazást a tanúsítványhoz. Ehhez nyissa meg a powershell-t, és írja be a következő parancsot:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Küldje el a létrehozott client.req alkalmazást a CA-nak, és várja meg, amíg megérkezik a client.pem tanúsítvány. Tokenbe írható és hozzáadható a Windows tanúsítványtárolóhoz a következő paranccsal:
certreq.exe -accept .client.pem
Érdemes megjegyezni, hogy hasonló műveletek reprodukálhatók az mmc program grafikus felületén, de ez a módszer időigényesebb és kevésbé programozható.
Az Ubuntu kliens beállítása
JEGYZET
A kliens beállítása Linuxon jelenleg meglehetősen időigényes, mert... forrásból külön programokat kell készíteni. Igyekszünk biztosítani, hogy a közeljövőben minden változás bekerüljön a hivatalos adattárakba.
Az IPSec szintű kapcsolat biztosításához a szerverhez a strongswan csomagot és az xl2tp démont használjuk. Az intelligens kártyákkal való hálózathoz való csatlakozás egyszerűsítése érdekében az l2tp-ipsec-vpn csomagot fogjuk használni, amely grafikus héjat biztosít az egyszerűsített kapcsolatbeállításhoz.
Kezdjük lépésről lépésre összeállítani az elemeket, de előtte telepítjük az összes szükséges csomagot a VPN közvetlen működéséhez:
sudo apt-get install xl2tpd strongswan libp11-3
Szoftver telepítése tokenekkel való munkához
Telepítse a legújabb librtpkcs11ecp.so könyvtárat innen hely, továbbá könyvtárak az intelligens kártyákkal való munkavégzéshez:
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install
Az L2tpIpsecVpn kliens telepítése
Jelenleg a klienst is forráskódból kell lefordítani. Ez a következő parancsok sorozatával történik:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make install
Az L2tpIpsecVpn kliens beállítása
Indítsa el a telepített klienst:
Indítás után meg kell nyílnia az L2tpIpsecVPN kisalkalmazásnak. Kattintson a jobb gombbal rá, és konfigurálja a kapcsolatot:
A tokenekkel való munkához mindenekelőtt az OpenSSL motor opensc motorjához és a PKCS#11 könyvtárhoz vezető utat jelezzük. Ehhez nyissa meg a "Beállítások" lapot az openssl paraméterek konfigurálásához:
.
Zárjuk be az OpenSSL beállítások ablakot, és folytassuk a hálózat beállítását. Adjunk hozzá új hálózatot a beállítások panelen a Hozzáadás... gombra kattintva, és írjuk be a hálózat nevét:
Ezt követően ez a hálózat elérhetővé válik a beállítások panelen. Kattintson duplán a jobb gombbal az új hálózatra a beállításához. Az első lapon meg kell adnia az IPsec-beállításokat. Állítsuk be a szerver címét és a nyilvános kulcsot:
Ezután lépjen a PPP beállítások fülre, és ott adja meg azt a felhasználónevet, amellyel a hálózathoz szeretnénk hozzáférni:
Ezután nyissa meg a Tulajdonságok lapot, és adja meg a kulcs, az ügyféltanúsítvány és a CA elérési útját:
Zárjuk be ezt a lapot, és végezzük el a végső beállításokat; ehhez nyissa meg az „IP-beállítások” lapot, és jelölje be a „DNS-kiszolgáló címének automatikus megszerzése” opció melletti négyzetet:
Ez az opció lehetővé teszi, hogy a kliens személyes IP-címet kapjon a hálózaton belül a szervertől.
Az összes beállítás után zárja be az összes lapot, és indítsa újra a klienst:
Hálózati kapcsolat
A beállítások után csatlakozhat a hálózathoz. Ehhez nyissa meg az applet lapot, és válassza ki a hálózatot, amelyhez csatlakozni kívánunk:
A kapcsolat létrehozása során az ügyfél a Rutoken PIN kód megadását kéri:
Ha egy értesítés jelenik meg az állapotsorban, hogy a kapcsolat sikeresen létrejött, az azt jelenti, hogy a beállítás sikeres volt:
Ellenkező esetben érdemes kitalálni, hogy miért nem jött létre a kapcsolat. Ehhez nézze meg a programnaplót az appletben a "Kapcsolódási információk" parancs kiválasztásával:
A Windows kliens beállítása
A kliens beállítása Windowson sokkal egyszerűbb, mint Linuxon, mert... Minden szükséges szoftver már be van építve a rendszerbe.
Rendszer telepítés
Az összes szükséges illesztőprogramot telepítjük a Rutokens-szel való munkához úgy, hogy letöltjük őket innen nak,-nek. webhely.
Gyökértanúsítvány importálása hitelesítéshez
Töltse le a kiszolgáló gyökértanúsítványát, és telepítse a rendszerre. Ehhez nyissa meg, és a megnyíló ablakban válassza a „Tanúsítvány telepítése” lehetőséget:
A megnyíló ablakban válassza ki a tanúsítvány telepítését a helyi felhasználó számára. Ha azt szeretné, hogy a tanúsítvány a számítógép összes felhasználója számára elérhető legyen, válassza a tanúsítvány telepítését a helyi számítógépre:
Telepítsük a tanúsítványt a CA megbízható gyökértanúsítvány-tárolójába:
Mindezen intézkedések után minden további ponttal egyetértünk. A rendszer most konfigurálva van.
VPN-kapcsolat beállítása
VPN-kapcsolat beállításához lépjen a vezérlőpultra, és válassza ki az új kapcsolat létrehozásának lehetőségét.
A felugró ablakban válassza ki a kapcsolat létrehozását a munkahelyhez való csatlakozáshoz:
A következő ablakban válasszon VPN-kapcsolatot:
és adja meg a VPN-kapcsolat adatait, és adja meg az intelligens kártya használatának lehetőségét is:
A beállítás még nem fejeződött be. Csak meg kell adnia az IPsec-protokoll megosztott kulcsát; ehhez lépjen a „Hálózati kapcsolat beállításai” fülre, majd lépjen a „Kapcsolat tulajdonságai” fülre:
A megnyíló ablakban lépjen a „Biztonság” fülre, adja meg az „L2TP/IPsec Network” hálózattípust, és válassza a „Speciális beállítások” lehetőséget:
A megnyíló ablakban adja meg a megosztott IPsec-kulcsot:
Подключение
A beállítás befejezése után megpróbálhat csatlakozni a hálózathoz:
A csatlakozási folyamat során meg kell adnunk a token PIN kódot:
Biztonságos VPN-hálózatot hoztunk létre, és gondoskodtunk arról, hogy ez ne legyen nehéz.
Köszönetnyilvánítás
Ezúton is szeretném megköszönni kollégáinknak, Vaszilij Shokovnak és Alekszandr Szmirnovnak azt a közös munkát, amelyet a Linux kliensek VPN-kapcsolatainak létrehozása érdekében végeztek.