ProHoster > Blog > Uprava > Nastavitev avtentikacije v omrežju L2TP z uporabo Rutoken EDS 2.0 in Rutoken PKI
Nastavitev avtentikacije v omrežju L2TP z uporabo Rutoken EDS 2.0 in Rutoken PKI
Problematično
Še pred kratkim mnogi niso vedeli, kako je delati od doma. Pandemija je močno spremenila razmere v svetu, vsi so se začeli prilagajati trenutnim okoliščinam, in sicer temu, da je postalo preprosto nevarno zapustiti hišo. In mnogi so morali na hitro organizirati delo od doma za svoje zaposlene.
Vendar pa lahko pomanjkanje kompetentnega pristopa k izbiri rešitev za delo na daljavo povzroči nepopravljive izgube. Uporabniška gesla so lahko ukradena, kar bo napadalcu omogočilo nenadzorovano povezavo z omrežjem in IT viri podjetja.
Zato se je potreba po ustvarjanju zanesljivih korporativnih omrežij VPN povečala. Povedal ti bom o zanesljiv, varno и preprost pri uporabi omrežja VPN.
Deluje po shemi IPsec/L2TP, ki za avtentikacijo odjemalcev uporablja nepovratne ključe in certifikate, shranjene na žetonih, poleg tega pa prenaša podatke po omrežju v šifrirani obliki.
Kot predstavitvena stojala za konfiguracijo so bili uporabljeni strežnik s CentOS 7 (naslov: centos.vpn.server.ad) in odjemalec z Ubuntu 20.04 ter odjemalec z Windows 10.
Opis sistema
VPN bo deloval po shemi IPSec + L2TP + PPP. Protokol Protokol od točke do točke (PPP) deluje na ravni podatkovne povezave modela OSI in zagotavlja avtentikacijo uporabnika in šifriranje prenesenih podatkov. Njegovi podatki so enkapsulirani v podatke protokola L2TP, ki dejansko zagotavlja vzpostavitev povezave v omrežju VPN, ne zagotavlja pa avtentikacije in šifriranja.
Podatki L2TP so enkapsulirani v IPSec, ki zagotavlja tudi avtentikacijo in šifriranje, vendar se za razliko od PPP avtentikacija in šifriranje izvajata na ravni naprave, ne na ravni uporabnika.
Ta funkcija vam omogoča preverjanje pristnosti uporabnikov samo iz določenih naprav. Uporabili bomo protokol IPSec, kot je, in omogočili avtentikacijo uporabnika iz katere koli naprave.
Avtentikacija uporabnika s pametnimi karticami bo izvedena na ravni protokola PPP z uporabo protokola EAP-TLS.
Podrobnejše informacije o delovanju tega vezja najdete v ta članek.
Zakaj ta shema izpolnjuje vse tri zahteve za dobro omrežje VPN?
Zanesljivost te sheme je preizkušen s časom. Od leta 2000 se uporablja za postavitev omrežij VPN.
Varno avtentikacijo uporabnika zagotavlja protokol PPP. Standardna izvedba protokola PPP, ki jo je razvil Paul Mackerras ne zagotavlja zadostne stopnje varnosti, saj Za avtentikacijo se v najboljšem primeru uporablja avtentikacija s prijavo in geslom. Vsi vemo, da je geslo za prijavo mogoče vohuniti, uganiti ali ukrasti. Vendar že dolgo časa razvijalec Jan Just Keijser в njegovo izvajanje Ta protokol je popravil to težavo in dodal možnost uporabe protokolov, ki temeljijo na asimetričnem šifriranju, kot je EAP-TLS, za preverjanje pristnosti. Poleg tega je dodal možnost uporabe pametnih kartic za avtentikacijo, s čimer je bil sistem bolj varen.
Trenutno potekajo aktivna pogajanja za združitev teh dveh projektov in lahko ste prepričani, da se bo to prej ali slej vendarle zgodilo. Na primer, popravljena različica PPP je že dolgo v repozitorijih Fedora in uporablja varne protokole za preverjanje pristnosti.
Do nedavnega so to omrežje lahko uporabljali samo uporabniki operacijskega sistema Windows, vendar sta naša kolega z Moskovske državne univerze Vasilij Šokov in Aleksander Smirnov ugotovila, stari projekt odjemalca L2TP za Linux in ga spremenil. Skupaj smo odpravili številne napake in pomanjkljivosti pri delu naročnika, poenostavili namestitev in konfiguracijo sistema, tudi pri gradnji iz kode. Najpomembnejši med njimi so:
Odpravljene težave z združljivostjo starega odjemalca z vmesnikom novih različic openssl in qt.
Pppd je onemogočil posredovanje žetona PIN prek začasne datoteke.
Odpravljen nepravilen zagon programa za zahtevo po geslu prek grafičnega vmesnika. To je bilo storjeno z namestitvijo pravilnega okolja za storitev xl2tpd.
Gradnja demona L2tpIpsecVpn se zdaj izvaja skupaj z gradnjo samega odjemalca, kar poenostavlja postopek gradnje in konfiguracije.
Za lažji razvoj je povezan sistem Azure Pipelines za testiranje pravilnosti gradnje.
Dodana možnost prisilnega znižanja varnostna raven v kontekstu openssl. To je uporabno za pravilno podporo novim operacijskim sistemom, kjer je standardna raven varnosti nastavljena na 2, z omrežji VPN, ki uporabljajo potrdila, ki ne izpolnjujejo varnostnih zahtev te ravni. Ta možnost bo uporabna za delo z obstoječimi starimi omrežji VPN.
Ta odjemalec podpira uporabo pametnih kartic za avtentikacijo, prav tako pa v največji možni meri skrije vse tegobe in tegobe nastavitve te sheme pod Linuxom, zaradi česar je nastavitev odjemalca čim preprostejša in hitrejša.
Za priročno povezavo med PPP in GUI-jem odjemalca seveda ni šlo brez dodatnih urejanj vsakega od projektov, vendar so bile kljub temu minimizirane in zmanjšane na minimum:
Popravljeno napaka v vrstnem redu nalaganja konfiguracije in inicializacije konteksta openssl. Ta napaka nam ni omogočila nalaganja ničesar iz lokalne konfiguracijske datoteke /etc/ppp/openssl.cnf razen informacij o motorjih openssl za delo s pametnimi karticami, kar je bila resna nevšečnost, če je npr. poleg informacij o motorjih želeli smo postaviti nekaj drugega. Na primer, popravite raven varnosti pri vzpostavljanju povezave.
Postavili bomo tudi skupno geslo za prijavo. Skupno geslo mora biti za preverjanje pristnosti znano vsem udeležencem omrežja. Ta metoda je očitno nezanesljiva, ker to geslo zlahka postane znano posameznikom, ki jim ne želimo omogočiti dostopa do omrežja.
Vendar tudi to dejstvo ne bo vplivalo na varnost omrežja, saj Osnovno šifriranje podatkov in avtentikacijo uporabnika izvaja protokol PPP. Toda pošteno povedano, velja omeniti, da strongswan podpira varnejše tehnologije za preverjanje pristnosti, na primer z uporabo zasebnih ključev. Strongswan ima tudi možnost zagotavljanja avtentikacije s pametnimi karticami, vendar je zaenkrat podprt le omejen obseg naprav, zato je avtentikacija z žetoni Rutoken in pametnimi karticami še vedno težavna. Nastavimo splošno geslo prek datoteke /etc/strongswan/ipsec.secrets:
Konfigurirajmo ga prek datoteke /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
#директория с сертификатами пользователей, УЦ и сервера
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
Tako smo končali z osnovno nastavitvijo strežnika. Preostala konfiguracija strežnika vključuje dodajanje novih odjemalcev.
Dodajanje novega odjemalca
Če želite v omrežje dodati novega odjemalca, morate njegovo potrdilo dodati na seznam zaupanja vrednih za tega odjemalca.
Če želi uporabnik postati član omrežja VPN, ustvari par ključev in aplikacijo za potrdilo za tega odjemalca. Če je uporabnik zaupanja vreden, je to aplikacijo mogoče podpisati in nastalo potrdilo zapisati v imenik potrdil:
OPOMBE
Da bi se izognili zmedi, je bolje, da so: splošno ime, ime datoteke potrdila in uporabniško ime edinstveni.
Prav tako je vredno preveriti, da se ime uporabnika, ki ga dodajamo, ne pojavi nikjer v drugih datotekah za preverjanje pristnosti, sicer bodo težave z načinom preverjanja pristnosti uporabnika.
Isto potrdilo je treba poslati nazaj uporabniku.
Generiranje para ključev in certifikata
Za uspešno avtentikacijo mora stranka:
ustvarite par ključev;
imeti korensko potrdilo CA;
imeti potrdilo za vaš par ključev, ki ga je podpisal korenski CA.
za odjemalca v sistemu Linux
Najprej ustvarimo par ključev na žetonu in ustvarimo aplikacijo za potrdilo:
za odjemalce Windows in Linux (bolj univerzalna metoda)
Ta metoda je bolj univerzalna, ker vam omogoča ustvarjanje ključa in potrdila, ki ga bodo uspešno prepoznali uporabniki operacijskega sistema Windows in Linux, vendar za izvedbo postopka generiranja ključa potrebuje stroj Windows.
Pred generiranjem zahtev in uvozom potrdil morate dodati korensko potrdilo omrežja VPN na seznam zaupanja vrednih. To storite tako, da ga odprete in v oknu, ki se odpre, izberete možnost »Namesti potrdilo«:
V oknu, ki se odpre, izberite namestitev potrdila za lokalnega uporabnika:
Namestimo potrdilo v overjeno shrambo korenskih potrdil CA:
Po vseh teh dejanjih se strinjamo z vsemi nadaljnjimi točkami. Sistem je zdaj konfiguriran.
Po tem bomo izdelali par ključev in izdelali aplikacijo za potrdilo. Če želite to narediti, odprite powershell in vnesite naslednji ukaz:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Pošljite ustvarjeno aplikacijo client.req vaši CA in počakajte, da prejmete potrdilo client.pem. Lahko ga zapišete v žeton in dodate v shrambo potrdil Windows z naslednjim ukazom:
certreq.exe -accept .client.pem
Omeniti velja, da je podobna dejanja mogoče reproducirati z grafičnim vmesnikom programa mmc, vendar je ta metoda zamudnejša in manj programabilna.
Nastavitev odjemalca Ubuntu
OPOMBE
Nastavitev odjemalca na Linuxu je trenutno precej zamudna, ker... zahteva gradnjo ločenih programov iz vira. Poskušali bomo zagotoviti, da bodo vse spremembe v bližnji prihodnosti vključene v uradne repozitorije.
Za zagotovitev povezave na ravni IPSec s strežnikom se uporablja paket strongswan in demon xl2tp. Za poenostavitev povezovanja v omrežje s pomočjo pametnih kartic bomo uporabili paket l2tp-ipsec-vpn, ki nudi grafično lupino za poenostavljeno nastavitev povezave.
Začnimo sestavljati elemente korak za korakom, vendar bomo pred tem namestili vse potrebne pakete za neposredno delovanje VPN-ja:
sudo apt-get install xl2tpd strongswan libp11-3
Namestitev programske opreme za delo z žetoni
Namestite najnovejšo knjižnico librtpkcs11ecp.so iz strani, tudi knjižnice za delo s pametnimi karticami:
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
Namestitev odjemalca L2tpIpsecVpn
Trenutno je treba tudi odjemalca prevesti iz izvorne kode. To se naredi z naslednjim zaporedjem ukazov:
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
Nastavitev odjemalca L2tpIpsecVpn
Zaženite nameščenega odjemalca:
Po zagonu bi se moral odpreti programček L2tpIpsecVPN. Z desno miškino tipko kliknite in konfigurirajte povezavo:
Za delo z žetoni najprej navedemo pot do mehanizma opensc motorja OpenSSL in knjižnice PKCS#11. Če želite to narediti, odprite zavihek "Nastavitve", da konfigurirate parametre openssl:
.
Zaprimo okno z nastavitvami OpenSSL in preidimo na nastavitev omrežja. Dodajmo novo omrežje tako, da na plošči z nastavitvami kliknemo gumb Dodaj... in vnesemo ime omrežja:
Po tem bo to omrežje na voljo na plošči z nastavitvami. Dvokliknite novo omrežje z desno tipko miške, da ga konfigurirate. Na prvem zavihku morate narediti nastavitve IPsec. Nastavimo naslov strežnika in javni ključ:
Po tem pojdite na zavihek z nastavitvami PPP in tam navedite uporabniško ime, pod katerim želimo dostopati do omrežja:
Po tem odprite zavihek Lastnosti in določite pot do ključa, potrdila odjemalca in CA:
Zapremo ta zavihek in izvedemo končne nastavitve; za to odprite zavihek »Nastavitve IP« in potrdite polje poleg možnosti »Samodejno pridobi naslov strežnika DNS«:
Ta možnost bo odjemalcu omogočila, da od strežnika prejme osebni naslov IP znotraj omrežja.
Po vseh nastavitvah zaprite vse zavihke in znova zaženite odjemalca:
Omrežna povezava
Po nastavitvah se lahko povežete z omrežjem. Če želite to narediti, odprite zavihek programčka in izberite omrežje, na katerega se želimo povezati:
Med postopkom vzpostavljanja povezave bo odjemalec od nas zahteval, da vnesemo PIN kodo Rutoken:
Če se v vrstici stanja prikaže obvestilo, da je bila povezava uspešno vzpostavljena, to pomeni, da je bila nastavitev uspešna:
V nasprotnem primeru je vredno ugotoviti, zakaj povezava ni bila vzpostavljena. Če želite to narediti, si oglejte dnevnik programa tako, da v programčku izberete ukaz »Podatki o povezavi«:
Nastavitev odjemalca Windows
Nastavitev odjemalca v sistemu Windows je veliko lažja kot v sistemu Linux, ker... Vsa potrebna programska oprema je že vgrajena v sistem.
Nastavitev sistema
Namestili bomo vse potrebne gonilnike za delo z Rutokens, tako da jih prenesemo s od. mesto.
Uvoz korenskega potrdila za preverjanje pristnosti
Prenesite korensko potrdilo strežnika in ga namestite v sistem. To storite tako, da ga odprete in v oknu, ki se odpre, izberete možnost »Namesti potrdilo«:
V oknu, ki se odpre, izberite namestitev potrdila za lokalnega uporabnika. Če želite, da je potrdilo na voljo vsem uporabnikom na računalniku, izberite namestitev potrdila na lokalni računalnik:
Namestimo potrdilo v overjeno shrambo korenskih potrdil CA:
Po vseh teh dejanjih se strinjamo z vsemi nadaljnjimi točkami. Sistem je zdaj konfiguriran.
Nastavitev povezave VPN
Če želite nastaviti povezavo VPN, pojdite na nadzorno ploščo in izberite možnost za ustvarjanje nove povezave.
V pojavnem oknu izberite možnost za ustvarjanje povezave za povezavo z vašim delovnim mestom:
V naslednjem oknu izberite povezavo VPN:
in vnesite podrobnosti povezave VPN ter določite tudi možnost uporabe pametne kartice:
Nastavitev še ni končana. Vse kar ostane je, da določite skupni ključ za protokol IPsec; za to pojdite na zavihek »Nastavitve omrežne povezave« in nato pojdite na zavihek »Lastnosti za to povezavo«:
V oknu, ki se odpre, pojdite na zavihek »Varnost«, kot vrsto omrežja določite »Omrežje L2TP/IPsec« in izberite »Napredne nastavitve«:
V oknu, ki se odpre, določite skupni ključ IPsec:
Подключение
Po končani nastavitvi se lahko poskusite povezati z omrežjem:
Med postopkom povezave bomo morali vnesti kodo PIN žetona:
Vzpostavili smo varno omrežje VPN in poskrbeli, da ni težko.
Zahvala
Še enkrat bi se rad zahvalil kolegoma Vasiliju Šokovu in Aleksandru Smirnovu za delo, ki sta ga opravila skupaj, da bi poenostavili ustvarjanje povezav VPN za odjemalce Linuxa.