ProHoster > Blog > Administrácia > Nastavenie autentifikácie v sieti L2TP pomocou Rutoken EDS 2.0 a Rutoken PKI
Nastavenie autentifikácie v sieti L2TP pomocou Rutoken EDS 2.0 a Rutoken PKI
Problémy
Len nedávno mnohí nevedeli, aké to je pracovať z domu. Pandémia dramaticky zmenila situáciu vo svete, každý sa začal prispôsobovať súčasným okolnostiam, konkrétne tomu, že je jednoducho nebezpečné vychádzať z domu. A mnohí museli svojim zamestnancom rýchlo zorganizovať prácu z domu.
Nedostatok kompetentného prístupu k výberu riešení pre prácu na diaľku však môže viesť k nezvratným stratám. Používateľské heslá môžu byť odcudzené, čo umožní útočníkovi nekontrolovateľne sa pripojiť k sieti a IT zdrojom podniku.
To je dôvod, prečo teraz vzrástla potreba vytvárania spoľahlivých podnikových sietí VPN. Poviem vám o spoľahlivý, trezor и prostý pri používaní siete VPN.
Funguje podľa schémy IPsec/L2TP, ktorá využíva na autentifikáciu klientov nezískateľné kľúče a certifikáty uložené na tokenoch a tiež prenáša dáta cez sieť v zašifrovanej podobe.
Ako demonštračné stojany na konfiguráciu bol použitý server s CentOS 7 (adresa: centos.vpn.server.ad) a klient s Ubuntu 20.04, ako aj klient s Windows 10.
Popis systému
VPN bude fungovať podľa schémy IPSec + L2TP + PPP. Protokol Point-to-Point protokol (PPP) funguje na vrstve dátového spojenia modelu OSI a poskytuje autentifikáciu používateľa a šifrovanie prenášaných údajov. Jeho dáta sú zapuzdrené v dátach protokolu L2TP, ktorý vlastne zabezpečuje vytvorenie spojenia vo VPN sieti, ale neposkytuje autentifikáciu a šifrovanie.
Dáta L2TP sú zapuzdrené v protokole IPSec, ktorý tiež poskytuje autentifikáciu a šifrovanie, ale na rozdiel od PPP sa autentifikácia a šifrovanie vyskytuje na úrovni zariadenia, nie na úrovni používateľa.
Táto funkcia vám umožňuje overiť používateľov iba z určitých zariadení. Použijeme protokol IPSec tak, ako je, a umožníme autentifikáciu používateľa z akéhokoľvek zariadenia.
Autentifikácia používateľa pomocou čipových kariet bude vykonaná na úrovni protokolu PPP pomocou protokolu EAP-TLS.
Podrobnejšie informácie o fungovaní tohto okruhu nájdete v v tomto článku.
Prečo táto schéma spĺňa všetky tri požiadavky dobrej siete VPN?
Spoľahlivosť tejto schémy bola testovaná časom. Od roku 2000 sa používa na nasadenie sietí VPN.
Bezpečnú autentifikáciu používateľa zabezpečuje protokol PPP. Štandardná implementácia protokolu PPP vyvinutého Paulom Mackerrasom neposkytuje dostatočnú úroveň bezpečnosti, pretože Na autentifikáciu sa v najlepšom prípade používa autentifikácia pomocou prihlasovacieho mena a hesla. Všetci vieme, že prihlasovacie heslo môže byť spozorované, uhádnuté alebo ukradnuté. Avšak, na dlhú dobu teraz developer Ján Just Keijser в jeho realizácii Tento protokol opravil tento problém a pridal možnosť používať na autentifikáciu protokoly založené na asymetrickom šifrovaní, ako napríklad EAP-TLS. Okrem toho pridal možnosť používať čipové karty na autentifikáciu, vďaka čomu bol systém bezpečnejší.
V súčasnosti prebiehajú aktívne rokovania o zlúčení týchto dvoch projektov a môžete si byť istí, že skôr či neskôr k tomu aj tak dôjde. Napríklad opravená verzia PPP je v repozitároch Fedory už dlho a používa na autentifikáciu zabezpečené protokoly.
Až donedávna mohli túto sieť používať iba používatelia systému Windows, ale naši kolegovia z Moskovskej štátnej univerzity Vasilij Shokov a Alexander Smirnov zistili starý projekt klienta L2TP pre Linux a upravili ho. Spoločne sme opravili veľa chýb a nedostatkov v práci klienta, zjednodušili inštaláciu a konfiguráciu systému aj pri budovaní zo zdroja. Najvýznamnejšie z nich sú:
Opravené problémy s kompatibilitou starého klienta s rozhraním nových verzií openssl a qt.
Odstránené pppd z odovzdávania PIN tokenu cez dočasný súbor.
Opravené nesprávne spustenie programu na vyžiadanie hesla cez grafické rozhranie. Dosiahlo sa to inštaláciou správneho prostredia pre službu xl2tpd.
Zostavenie démona L2tpIpsecVpn sa teraz vykonáva spolu so zostavením samotného klienta, čo zjednodušuje proces zostavovania a konfigurácie.
Pre jednoduchosť vývoja je pripojený systém Azure Pipelines na testovanie správnosti zostavy.
Pridaná možnosť vynútiť si downgrade úroveň bezpečnosti v kontexte openssl. Je to užitočné pre správnu podporu nových operačných systémov, kde je štandardná úroveň zabezpečenia nastavená na 2, so sieťami VPN, ktoré používajú certifikáty, ktoré nespĺňajú bezpečnostné požiadavky tejto úrovne. Táto možnosť bude užitočná pri práci s existujúcimi starými sieťami VPN.
Tento klient podporuje používanie čipových kariet na autentifikáciu a taktiež v maximálnej možnej miere skrýva všetky úskalia a úskalia nastavenia tejto schémy pod Linuxom, vďaka čomu je nastavenie klienta čo najjednoduchšie a najrýchlejšie.
Samozrejme, pre pohodlné prepojenie medzi PPP a klientským GUI to nebolo možné bez dodatočných úprav každého z projektov, no napriek tomu boli minimalizované a zredukované na minimum:
Opravené chyba v poradí načítania konfigurácie a inicializácie kontextu openssl. Táto chyba nám neumožnila načítať nič z lokálneho konfiguračného súboru /etc/ppp/openssl.cnf okrem informácií o openssl motoroch pre prácu s čipovými kartami, čo bolo vážnou nepríjemnosťou, ak sa napríklad okrem informácií o motoroch napr. chceli sme nastaviť niečo iné. Opravte napríklad úroveň zabezpečenia pri vytváraní spojenia.
Nastavíme aj spoločné prihlasovacie heslo. Zdieľané heslo musí byť známe všetkým účastníkom siete na overenie. Táto metóda je zjavne nespoľahlivá, pretože toto heslo sa môže ľahko dostať do povedomia jednotlivcov, ktorým nechceme poskytnúť prístup do siete.
Ani táto skutočnosť však neovplyvní bezpečnosť siete, pretože Základné šifrovanie údajov a autentifikácia používateľa sa vykonáva protokolom PPP. Spravodlivo však stojí za zmienku, že strongswan podporuje bezpečnejšie technológie na autentifikáciu, napríklad pomocou súkromných kľúčov. Strongswan má tiež schopnosť poskytovať autentifikáciu pomocou čipových kariet, ale zatiaľ je podporovaný len obmedzený rozsah zariadení, a preto je autentifikácia pomocou tokenov a čipových kariet Rutoken stále náročná. Nastavíme všeobecné heslo cez súbor /etc/strongswan/ipsec.secrets:
Poďme to nakonfigurovať cez súbor /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
Vydávame koreňový certifikát a certifikát servera:
#директория с сертификатами пользователей, УЦ и сервера
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
Tým sme skončili so základným nastavením servera. Zvyšok konfigurácie servera zahŕňa pridávanie nových klientov.
Pridanie nového klienta
Ak chcete do siete pridať nového klienta, musíte pridať jeho certifikát do zoznamu dôveryhodných pre tohto klienta.
Ak sa chce používateľ stať členom siete VPN, vytvorí pre tohto klienta pár kľúčov a aplikáciu certifikátu. Ak je používateľ dôveryhodný, potom môže byť táto aplikácia podpísaná a výsledný certifikát môže byť zapísaný do adresára certifikátov:
Poznámka
Aby sa predišlo nejasnostiam, je lepšie, aby: Bežný názov, názov súboru certifikátu a meno používateľa boli jedinečné.
Oplatí sa tiež skontrolovať, či sa meno používateľa, ktorého pridávame, nikde v iných autentifikačných súboroch nevyskytuje, inak nastanú problémy so spôsobom autentifikácie používateľa.
Rovnaký certifikát musí byť zaslaný späť používateľovi.
Generovanie páru kľúčov a certifikátu
Pre úspešné overenie musí klient:
vygenerovať pár kľúčov;
mať koreňový certifikát CA;
mať certifikát pre váš pár kľúčov podpísaný koreňovou CA.
pre klienta v systéme Linux
Najprv vygenerujme pár kľúčov na tokene a vytvorte aplikáciu pre certifikát:
pre klientov Windows a Linux (univerzálnejší spôsob)
Táto metóda je univerzálnejšia, pretože vám umožňuje vygenerovať kľúč a certifikát, ktorý bude úspešne rozpoznaný používateľmi Windows a Linux, ale na vykonanie procedúry generovania kľúča je potrebný počítač so systémom Windows.
Pred generovaním žiadostí a importovaním certifikátov musíte pridať koreňový certifikát siete VPN do zoznamu dôveryhodných certifikátov. Ak to chcete urobiť, otvorte ho a v okne, ktoré sa otvorí, vyberte možnosť „Inštalovať certifikát“:
V okne, ktoré sa otvorí, vyberte inštaláciu certifikátu pre lokálneho používateľa:
Nainštalujeme certifikát do dôveryhodného úložiska koreňových certifikátov certifikačnej autority:
Po všetkých týchto úkonoch súhlasíme so všetkými ďalšími bodmi. Systém je teraz nakonfigurovaný.
Potom vygenerujeme pár kľúčov a vytvoríme aplikáciu pre certifikát. Ak to chcete urobiť, otvorte powershell a zadajte nasledujúci príkaz:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Pošlite vytvorenú aplikáciu client.req vašej CA a počkajte na prijatie certifikátu client.pem. Dá sa zapísať do tokenu a pridať do skladu certifikátov Windows pomocou nasledujúceho príkazu:
certreq.exe -accept .client.pem
Stojí za zmienku, že podobné akcie je možné reprodukovať pomocou grafického rozhrania programu mmc, ale táto metóda je časovo náročnejšia a menej programovateľná.
Nastavenie klienta Ubuntu
Poznámka
Nastavenie klienta na Linuxe je momentálne dosť zdĺhavé, pretože... vyžaduje vytvorenie samostatných programov zo zdroja. Pokúsime sa zabezpečiť, aby všetky zmeny boli v blízkej budúcnosti zahrnuté do oficiálnych repozitárov.
Na zabezpečenie pripojenia na úrovni IPSec k serveru sa používa balík strongswan a démon xl2tp. Pre zjednodušenie pripojenia k sieti pomocou čipových kariet použijeme balík l2tp-ipsec-vpn, ktorý poskytuje grafický shell pre zjednodušené nastavenie pripojenia.
Začnime s montážou prvkov krok za krokom, ale ešte predtým nainštalujeme všetky potrebné balíčky, aby VPN fungovala priamo:
sudo apt-get install xl2tpd strongswan libp11-3
Inštalácia softvéru na prácu s tokenmi
Nainštalujte najnovšiu knižnicu librtpkcs11ecp.so z site, tiež knižnice pre prácu s čipovými kartami:
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
Inštalácia klienta L2tpIpsecVpn
Momentálne je potrebné klienta skompilovať aj zo zdrojového kódu. To sa vykonáva pomocou nasledujúcej postupnosti príkazov:
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
Nastavenie klienta L2tpIpsecVpn
Spustite nainštalovaného klienta:
Po spustení by sa mal otvoriť aplet L2tpIpsecVPN. Kliknite naň pravým tlačidlom myši a nakonfigurujte pripojenie:
Pre prácu s tokenmi v prvom rade uvádzame cestu k opensc jadru OpenSSL jadra a knižnici PKCS#11. Ak to chcete urobiť, otvorte kartu „Predvoľby“ a nakonfigurujte parametre openssl:
.
Zatvorme okno nastavení OpenSSL a prejdime k nastaveniu siete. Pridáme novú sieť kliknutím na tlačidlo Pridať... na paneli nastavení a zadaním názvu siete:
Potom bude táto sieť dostupná na paneli nastavení. Na konfiguráciu novej siete dvakrát kliknite pravým tlačidlom myši. Na prvej karte musíte vykonať nastavenia IPsec. Nastavíme adresu servera a verejný kľúč:
Potom prejdite na kartu Nastavenia PPP a uveďte tam meno používateľa, pod ktorým chceme pristupovať k sieti:
Potom otvorte kartu Vlastnosti a zadajte cestu ku kľúču, klientskemu certifikátu a CA:
Zatvorme túto kartu a vykonajte konečné nastavenia; Ak to chcete urobiť, otvorte kartu „Nastavenia IP“ a začiarknite políčko vedľa možnosti „Získať adresu servera DNS automaticky“:
Táto možnosť umožní klientovi získať zo servera osobnú IP adresu v rámci siete.
Po všetkých nastaveniach zatvorte všetky karty a reštartujte klienta:
Sieťové pripojenie
Po nastavení sa môžete pripojiť k sieti. Ak to chcete urobiť, otvorte kartu apletu a vyberte sieť, ku ktorej sa chceme pripojiť:
Počas procesu vytvárania pripojenia nás klient požiada o zadanie Rutoken PIN kódu:
Ak sa v stavovom riadku zobrazí upozornenie, že pripojenie bolo úspešne nadviazané, znamená to, že nastavenie bolo úspešné:
V opačnom prípade stojí za to zistiť, prečo sa spojenie nevytvorilo. Ak to chcete urobiť, mali by ste sa pozrieť do denníka programu výberom príkazu „Informácie o pripojení“ v aplete:
Nastavenie klienta Windows
Nastavenie klienta v systéme Windows je oveľa jednoduchšie ako v systéme Linux, pretože... Všetok potrebný softvér je už zabudovaný v systéme.
Nastavenie systému
Všetky potrebné ovládače pre prácu s Rutokens nainštalujeme ich stiahnutím z z stránky.
Import koreňového certifikátu na overenie
Stiahnite si koreňový certifikát servera a nainštalujte ho do systému. Ak to chcete urobiť, otvorte ho a v okne, ktoré sa otvorí, vyberte možnosť „Inštalovať certifikát“:
V okne, ktoré sa otvorí, vyberte inštaláciu certifikátu pre lokálneho používateľa. Ak chcete, aby bol certifikát dostupný pre všetkých používateľov počítača, mali by ste zvoliť inštaláciu certifikátu na lokálnom počítači:
Nainštalujeme certifikát do dôveryhodného úložiska koreňových certifikátov certifikačnej autority:
Po všetkých týchto úkonoch súhlasíme so všetkými ďalšími bodmi. Systém je teraz nakonfigurovaný.
Nastavenie pripojenia VPN
Ak chcete nastaviť pripojenie VPN, prejdite na ovládací panel a vyberte možnosť vytvorenia nového pripojenia.
V kontextovom okne vyberte možnosť vytvorenia pripojenia na pripojenie k vášmu pracovisku:
V ďalšom okne vyberte pripojenie VPN:
a zadajte podrobnosti o pripojení VPN a tiež zadajte možnosť použitia čipovej karty:
Nastavenie ešte nie je dokončené. Zostáva len zadať zdieľaný kľúč pre protokol IPsec; Ak to chcete urobiť, prejdite na kartu „Nastavenia sieťového pripojenia“ a potom na kartu „Vlastnosti pre toto pripojenie“:
V okne, ktoré sa otvorí, prejdite na kartu „Zabezpečenie“, ako typ siete zadajte „Sieť L2TP/IPsec“ a vyberte „Rozšírené nastavenia“:
V okne, ktoré sa otvorí, zadajte zdieľaný kľúč IPsec:
prípojka
Po dokončení nastavenia sa môžete pokúsiť pripojiť k sieti:
Počas procesu pripojenia budeme vyzvaní na zadanie tokenového PIN kódu:
Nastavili sme zabezpečenú sieť VPN a ubezpečili sme sa, že to nie je ťažké.
Poďakovanie
Ešte raz by som sa chcel poďakovať našim kolegom Vasilijovi Shokovovi a Alexandrovi Smirnovovi za prácu, ktorú spoločne odviedli pri zjednodušení vytvárania VPN pripojení pre linuxových klientov.