ProHoster > Blog > Amministrazione > Configurazione di l'autentificazione in a rete L2TP cù Rutoken EDS 2.0 è Rutoken PKI
Configurazione di l'autentificazione in a rete L2TP cù Rutoken EDS 2.0 è Rutoken PKI
I prublemi
Recentemente, assai ùn sapianu micca ciò chì era di travaglià da casa. A pandemia hà cambiatu dramaticamente a situazione in u mondu; ognunu hà cuminciatu à adattà à e circustanze attuali, vale à dì à u fattu chì hè diventatu simplicemente inseguru per lascià a casa. È parechji avianu da urganizà rapidamente u travagliu da casa per i so impiegati.
Tuttavia, a mancanza di un accostu cumpetente à sceglie suluzioni per u travagliu remoto pò purtà à perdite irreversibili. I password di l'utilizatori ponu esse arrubati, è questu permetterà à un attaccu di cunnetta incontrollably à a reta è e risorse IT di l'impresa.
Hè per quessa chì a necessità di creà rete VPN corporativa affidabile hè avà aumentata. Vi dicu affidabile, sicuru и простой in usu di una reta VPN.
Funziona secondu u schema IPsec / L2TP, chì usa chjavi non recuperabili è certificati almacenati in tokens per autentificà i clienti, è ancu trasmette dati nantu à a reta in forma criptata.
Un servitore cù CentOS 7 (indirizzu: centos.vpn.server.ad) è un cliente cù Ubuntu 20.04, è ancu un cliente cù Windows 10, sò stati utilizati cum'è manifestazioni di cunfigurazione.
Descrizione di u Sistema
A VPN hà da travaglià secondu u schema IPSec + L2TP + PPP. Protocolu Protocolu puntu à puntu (PPP) opera à a strata di ligame di dati di u mudellu OSI è furnisce l'autentificazione di l'utilizatori è a criptografia di e dati trasmessi. I so dati sò incapsulati in i dati di u protocolu L2TP, chì in realtà assicura a creazione di una cunnessione in a reta VPN, ma ùn furnisce micca autentificazione è criptografia.
I dati L2TP sò incapsulati in IPSec, chì furnisce ancu l'autentificazione è a criptografia, ma à u cuntrariu di PPP, l'autentificazione è a criptografia si trovanu à u livellu di u dispositivu, micca à u livellu di l'utilizatori.
Sta funzione permette à voi à autentificà utilizatori solu da certi dispusitivi. Utilizemu u protocolu IPSec cum'è hè è permette l'autentificazione di l'utilizatori da qualsiasi dispositivu.
L'autentificazione di l'utilizatori cù e carte intelligenti serà realizatu à u livellu di u protocolu PPP utilizendu u protocolu EAP-TLS.
L'infurmazione più dettagliata nantu à u funziunamentu di stu circuitu pò esse truvata in stu articulu.
Perchè stu schema risponde à tutti i trè esigenze di una bona rete VPN?
L'affidabilità di stu schema hè stata pruvata da u tempu. Hè stata utilizata per implementà e rete VPN dapoi u 2000.
L'autentificazione sicura di l'utilizatori hè furnita da u protocolu PPP. Implementazione standard di u protocolu PPP sviluppatu da Paul Mackerras ùn furnisce micca un livellu di sicurità abbastanza, perchè Per l'autentificazione, in u megliu casu, l'autentificazione cù un login è una password hè utilizata. Tutti sapemu chì una password di login pò esse spiata, guessed o arrubbata. Tuttavia, per un bellu pezzu avà u sviluppatore Jan Just Keijser в a so implementazione Stu protokollu hà currettu stu prublema è aghjunghjenu a capacità di utilizà protokolli basati nantu à a criptografia asimmetrica, cum'è EAP-TLS, per l'autentificazione. Inoltre, hà aghjustatu a capacità di utilizà smart cards per l'autentificazione, chì hà fattu u sistema più sicuru.
Attualmente, negoziazioni attive sò in corso per unisce sti dui prughjetti è pudete esse sicuru chì prima o dopu questu succederà in ogni modu. Per esempiu, una versione patched di PPP hè stata in i repositori Fedora per un bellu pezzu, utilizendu protokolli sicuri per l'autentificazione.
Finu à pocu tempu, sta reta puderia esse aduprata solu da l'utilizatori di Windows, ma i nostri culleghi di l'Università Statale di Mosca Vasily Shokov è Alexander Smirnov truvaru vechju prughjettu di u cliente L2TP per Linux è hà mudificatu. Inseme, avemu riparatu assai bugs è difetti in u travagliu di u cliente, simplificatu a stallazione è a cunfigurazione di u sistema, ancu quandu custruiscenu da a fonte. I più significati di elli sò:
Fixed i prublemi di cumpatibilità di u vechju cliente cù l'interfaccia di novi versioni di openssl è qt.
Eliminatu pppd da passà u token PIN per un schedariu tempurale.
Fixed u lanciu incorrectu di u prugramma di dumanda di password attraversu l'interfaccia grafica. Questu hè statu fattu installendu l'ambiente currettu per u serviziu xl2tpd.
A custruzzione di u daemon L2tpIpsecVpn hè avà realizatu inseme cù a custruzzione di u cliente stessu, chì simplifica u prucessu di creazione è cunfigurazione.
Per facilità di sviluppu, u sistema Azure Pipelines hè cunnessu per pruvà a correttezza di a custruzione.
Aggiunta a capacità di furzà u downgrade u livellu di sicurezza in u cuntestu di openssl. Questu hè utile per supportà currettamente i novi sistemi operativi induve u nivellu di sicurità standard hè stabilitu à 2, cù e rete VPN chì utilizanu certificati chì ùn cumplenu micca i requisiti di sicurezza di stu livellu. Questa opzione serà utile per travaglià cù e vecchie rete VPN esistenti.
Stu cliente supporta l'usu di carte intelligenti per l'autentificazione, è oculta ancu quant'è pussibule tutte e difficultà è e difficultà di stallà stu schema sottu Linux, facendu a cunfigurazione di u cliente u più simplice è veloce pussibule.
Di sicuru, per una cunnessione còmuda trà PPP è a GUI di u cliente, ùn era micca pussibule senza editi supplementari à ognunu di i prughjetti, ma in ogni modu sò stati minimizati è ridotti à u minimu:
Arregulatu errore in l'ordine di carica di a cunfigurazione è inizializza u cuntestu openssl. Stu errore ùn ci hà micca permessu di carricà nunda da u schedariu di cunfigurazione /etc/ppp/openssl.cnf lucale eccettu l'infurmazioni nantu à i motori openssl per travaglià cù carte intelligenti, chì era un inconveniente seriu si, per esempiu, in più di l'infurmazioni nantu à i motori, avemu vulsutu stabilisce qualcosa d'altru. Per esempiu, riparà u livellu di sicurità quandu stabilisce una cunnessione.
Avà pudete inizià a stallazione.
Sintonizazione di u servitore
Stallà tutti i pacchetti necessarii.
Installazione di strongswan (IPsec)
Prima di tuttu, cunfiguremu u firewall per l'operazione ipsec
Dopu a stallazione, avete bisognu di cunfigurà strongswan (una di l'implementazioni IPSec). Per fà questu, edità u schedariu /etc/strongswan/ipsec.conf :
Avemu ancu stabilisce una password di login cumuni. A password sparta deve esse cunnisciuta da tutti i participanti di a rete per l'autentificazione. Stu metudu hè ovviamente inaffidabile, perchè sta password pò esse facilmente cunnisciuta da e persone à quale ùn vulemu micca furnisce l'accessu à a reta.
Tuttavia, ancu stu fattu ùn affettarà a sicurità di a reta, perchè A criptografia di basa di dati è l'autentificazione di l'utilizatori sò realizati da u protocolu PPP. Ma in ghjustizia, vale a pena nutà chì strongswan sustene tecnulugii più sicuri per l'autentificazione, per esempiu, utilizendu chjavi privati. Strongswan hà ancu a capacità di furnisce l'autentificazione cù e carte intelligenti, ma finu à avà sò supportati solu una gamma limitata di dispositivi è per quessa l'autentificazione cù i tokens Rutoken è e carte intelligenti hè sempre difficiule. Fighjemu una password generale via u schedariu /etc/strongswan/ipsec.secrets:
Cunfiguremu via u schedariu /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
Emettemu u certificatu root è u certificatu di u servitore:
#директория с сертификатами пользователей, УЦ и сервера
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
Cusì, avemu finitu cù a configurazione di basa di u servitore. U restu di a cunfigurazione di u servitore implica l'aghjunghje novi clienti.
Aghjunghjendu un novu cliente
Per aghjunghje un novu cliente à a reta, duvete aghjunghje u so certificatu à a lista di quelli di fiducia per stu cliente.
Se un utilizatore vole diventà un membru di una rete VPN, crea una coppia di chjave è una applicazione di certificatu per questu cliente. Se l'utilizatore hè fiduciale, allora sta applicazione pò esse firmata, è u certificatu risultatu pò esse scrittu à u cartulare di i certificati:
DA
Per evità a cunfusione, hè megliu chì: u nome cumuni, u nome di u schedariu di certificatu è u nome d'utilizatore sia unicu.
Hè ancu vale a pena di verificà chì u nome di l'utilizatore chì aghjustemu ùn appare micca in ogni locu in altri schedarii di autentificazione, altrimenti ci saranu prublemi cù a manera chì l'utilizatore hè autentificatu.
U listessu certificatu deve esse mandatu à l'utilizatore.
Generazione di una coppia di chjave è certificatu
Per autentificazione successu, u cliente deve:
generà una coppia di chjave;
avè un certificatu di root CA;
avè un certificatu per a vostra coppia di chjave firmata da a CA root.
per u cliente in Linux
Prima, generemu una coppia di chjave nantu à u token è crea una applicazione per u certificatu:
Mandate l'applicazione client.req chì appare à u CA. Quandu avete ricevutu un certificatu per a vostra coppia di chjave, scrivite in un token cù u listessu id cum'è a chjave:
per i clienti Windows è Linux (metudu più universale)
Stu metudu hè più universale, perchè permette di generà una chjave è un certificatu chì serà ricunnisciutu bè da l'utilizatori di Windows è Linux, ma hè bisognu di una macchina Windows per realizà a prucedura di generazione di chjave.
Prima di generà richieste è impurtà certificati, duvete aghjunghje u certificatu radicale di a rete VPN à a lista di quelli di fiducia. Per fà questu, apre è in a finestra chì apre, selezziunate l'opzione "Installa certificatu":
In a finestra chì si apre, selezziunate installà un certificatu per l'utilizatore locale:
Stallà u certificatu in u magazzinu di certificati root di fiducia di a CA:
Dopu tutte queste azzioni, simu d'accordu cù tutti i punti più. U sistema hè avà cunfiguratu.
Creemu un schedariu cert.tmp cù u cuntenutu seguente:
Dopu questu, genereremu una coppia di chjave è creeremu una applicazione per u certificatu. Per fà questu, apre u Powershell è entre in u cumandimu seguente:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Mandate l'applicazione creata client.req à a vostra CA è aspettate chì u certificatu client.pem sia ricevutu. Pò esse scrittu à un token è aghjuntu à u magazzinu di certificati Windows usendu u cumandimu seguente:
certreq.exe -accept .client.pem
Hè da nutà chì l'azzioni simili ponu esse riprodutte cù l'interfaccia gràfica di u prugramma mmc, ma stu metudu hè più tempu è menu programmable.
Configurazione di u cliente Ubuntu
DA
L'installazione di un cliente in Linux hè attualmente abbastanza tempu, perchè ... richiede di custruisce prugrammi separati da a fonte. Pruvaremu di assicurà chì tutti i cambiamenti sò inclusi in i repositori ufficiali in un futuru vicinu.
Per assicurà a cunnessione à u livellu IPSec à u servitore, u pacchettu strongswan è u daemon xl2tp sò usati. Per simplificà a cunnessione à a rete cù e carte intelligenti, useremu u pacchettu l2tp-ipsec-vpn, chì furnisce una cunchiglia gràfica per a cunfigurazione di cunnessione simplificata.
Cuminciamu à assemblà l'elementi passu à passu, ma prima di stallà tutti i pacchetti necessarii per a VPN per travaglià direttamente:
sudo apt-get install xl2tpd strongswan libp11-3
Installazione di software per travaglià cù tokens
Installa l'ultima libreria librtpkcs11ecp.so da situ, ancu biblioteche per travaglià cù carte intelligenti:
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
Installazione di u cliente L2tpIpsecVpn
À u mumentu, u cliente deve ancu esse compilatu da u codice fonte. Questu hè fattu cù a seguente sequenza di cumandamenti:
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
Configurazione di u cliente L2tpIpsecVpn
Lanciate u cliente installatu:
Dopu à u lanciu, l'applet L2tpIpsecVPN deve esse apertu. Cliccate cù u dirittu è cunfigurà a cunnessione:
Per travaglià cù tokens, prima di tuttu, indichemu a strada di u mutore opensc di OpenSSL è a biblioteca PKCS#11. Per fà questu, apre a tabulazione "Preferenze" per cunfigurà i paràmetri openssl:
.
Chiudemu a finestra di paràmetri OpenSSL è andemu à a stallazione di a reta. Aghjunghjite una nova rete clicchendu nantu à u buttone Add... in u pannellu di paràmetri è inserite u nome di a rete:
Dopu questu, sta rete diventerà dispunibule in u pannellu di paràmetri. Cliccate doppiu cliccà nantu à a nova reta per cunfigurà. In a prima tabulazione avete bisognu di fà i paràmetri IPsec. Fighjemu l'indirizzu di u servitore è a chjave publica:
Dopu questu, andate à a tabulazione di paràmetri PPP è indicate quì u nome d'utilizatore sottu quale vulemu accede à a reta:
Dopu questu, apre a tabulazione Proprietà è specifica u percorsu à a chjave, u certificatu di cliente è CA:
Chiudemu sta tabulazione è eseguite i paràmetri finali; per fà questu, apre a tabulazione "Configurazione IP" è verificate a casella accantu à l'opzione "Ottieni l'indirizzu di u servitore DNS automaticamente":
Questa opzione permetterà à u cliente di riceve un indirizzu IP persunale in a reta da u servitore.
Dopu tutti i paràmetri, chjude tutte e tabulazioni è riavvia u cliente:
Cunnessione à a rete
Dopu à i paràmetri, pudete cunnette à a reta. Per fà questu, apre a tabulazione applet è selezziunate a reta à quale vulemu cunnette:
Durante u prucessu di stabilimentu di cunnessione, u cliente ci dumandarà di inserisce u codice PIN Rutoken:
Se una notificazione appare in a barra di statutu chì a cunnessione hè stata stabilita bè, significa chì a stallazione hè stata successu:
Altrimenti, vale a pena capisce perchè a cunnessione ùn hè micca stata stabilita. Per fà questu, duvete guardà u logu di u prugramma selezziunate u cumandimu "Informazioni di cunnessione" in l'applet:
Configurazione di u cliente Windows
Configurazione di un cliente in Windows hè assai più faciule ch'è in Linux, perchè ... Tuttu u software necessariu hè digià custruitu in u sistema.
Configurazione di u Sistema
Stallaremu tutti i drivers necessarii per travaglià cù Rutokens scarichenduli da di. situ.
Importazione di un certificatu root per l'autentificazione
Scaricate u certificatu root di u servitore è installate in u sistema. Per fà questu, apre è in a finestra chì apre, selezziunate l'opzione "Installa certificatu":
In a finestra chì apre, selezziunate installà un certificatu per l'utilizatore locale. Se vulete chì u certificatu sia dispunibule per tutti l'utilizatori nantu à l'urdinatore, allora duvete sceglie di installà u certificatu in l'urdinatore lucale:
Stallà u certificatu in u magazzinu di certificati root di fiducia di a CA:
Dopu tutte queste azzioni, simu d'accordu cù tutti i punti più. U sistema hè avà cunfiguratu.
Configurazione di una cunnessione VPN
Per stabilisce una cunnessione VPN, andate à u pannellu di cuntrollu è selezziunate l'opzione per creà una nova cunnessione.
In a finestra pop-up, selezziunate l'opzione per creà una cunnessione per cunnette à u vostru locu di travagliu:
In a finestra dopu, selezziunate una cunnessione VPN:
è inserite i dettagli di a cunnessione VPN, è ancu specificate l'opzione per utilizà una smart card:
A cunfigurazione ùn hè ancu cumpleta. Il ne reste plus qu'à préciser la clé partagée pour le protocole IPsec; pour cela, aller à l'onglet "Configuration de la connexion à la réseau" et ensuite à l'onglet "Propriétés pour cette connexion" :
In a finestra chì apre, andate à a tabulazione "Sicurezza", specificate "L2TP / IPsec Network" cum'è u tipu di rete è selezziunate "Configurazione Avanzata":
In a finestra chì si apre, specificate a chjave IPsec sparta:
Подключение
Dopu avè finitu a cunfigurazione, pudete pruvà à cunnette à a reta:
Durante u prucessu di cunnessione, ci sarà dumandatu à entre u codice PIN token:
Avemu stabilitu una rete VPN sicura è assicurati chì ùn hè micca difficiule.
Ringraziamenti
Vogliu ringrazià una volta à i nostri culleghi Vasily Shokov è Alexander Smirnov per u travagliu chì anu fattu inseme per simplificà a creazione di cunnessione VPN per i clienti Linux.