Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Problematiche

Fino a poco tempo fa, molti non sapevano cosa significasse lavorare da casa. La pandemia ha cambiato bruscamente la situazione nel mondo; tutti hanno dovuto adattarsi alle circostanze, in particolare al fatto che uscire di casa è diventato semplicemente pericoloso. Molti hanno dovuto organizzare rapidamente il lavoro da casa per i propri dipendenti.

Tuttavia, la mancanza di un approccio adeguato nella scelta delle soluzioni per il lavoro remoto può portare a perdite irreversibili. Le password degli utenti possono essere rubate, consentendo agli intrusi di connettersi senza controllo alla rete e alle risorse IT dell'azienda.

È proprio per questo motivo che è cresciuta la necessità di creare reti VPN aziendali affidabili. Vi parlerò di una affidabile, sicura e semplice rete VPN da utilizzare.

Funziona secondo lo schema IPsec/L2TP, che utilizza chiavi e certificati non estraibili per l'autenticazione dei client, memorizzati nei token, e trasmette i dati attraverso la rete in forma crittografata.

Per i banchi di prova sono stati utilizzati un server con CentOS 7 (indirizzo: centos.vpn.server.ad) e un client con Ubuntu 20.04, oltre a un client con Windows 10.

Descrizione del sistema

La VPN funzionerà secondo lo schema IPSec + L2TP + PPP. Il protocollo Protocollo Point-to-Point (PPP) opera a livello di collegamento del modello OSI e fornisce autenticazione dell'utente e crittografia dei dati trasmessi. I suoi dati vengono incapsulati nei dati del protocollo L2TP, il quale crea effettivamente la connessione nella rete VPN, ma non fornisce autenticazione e crittografia.

I dati L2TP vengono incapsulati nel protocollo IPSec, che fornisce anch'esso autenticazione e crittografia, ma a differenza del protocollo PPP, l'autenticazione e la crittografia avvengono a livello di dispositivi, e non a livello di utenti.

Questa caratteristica consente di garantire l'autenticazione degli utenti solo da determinati dispositivi. Noi utilizzeremo il protocollo IPSec in tal senso e permetteremo di autenticare gli utenti da qualsiasi dispositivo.

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

L'autenticazione dell'utente tramite smart card avverrà a livello del protocollo PPP utilizzando il protocollo EAP-TLS.

Puoi trovare ulteriori informazioni sul funzionamento di questo schema in questo articolo.

Perché questo schema soddisfa tutti e tre i requisiti di una buona rete VPN

  1. L'affidabilità di questo schema è stata testata nel tempo. È utilizzato per l'implementazione di reti VPN dal 2000.
  2. Il protocollo PPP garantisce un'autenticazione sicura dell'utente. La realizzazione standard del protocollo PPP sviluppata da Paul Mackerras non offre un livello di sicurezza sufficiente, poiché per l'autenticazione si basa, nella migliore delle ipotesi, su username e password. Tutti sappiamo che username e password possono essere osservati, indovinati o rubati. Tuttavia, il suo sviluppatore Jan Just Keijser in nella sua implementazione di questo protocollo ha corretto questo aspetto e ha aggiunto la possibilità di utilizzare protocolli basati su crittografia asimmetrica per l'autenticazione, come EAP-TLS. Inoltre, ha introdotto la possibilità di utilizzare smart card per l'autenticazione, rendendo così questo sistema più sicuro.
    Attualmente sono in corso attive trattative per la fusione di questi due progetti e si può essere certi che, prima o poi, questo avverrà. Ad esempio, nei repository di Fedora esiste già da tempo una versione patchata di PPP, che utilizza protocolli sicuri per l'autenticazione.
  3. Fino a poco tempo fa, questa rete poteva essere utilizzata solo dagli utenti di Windows, ma i nostri colleghi dell'MGU, Vasily Shokov e Alexander Smirnov, hanno trovato un vecchio progetto di client L2TP per Linux e lo hanno sviluppato ulteriormente. Grazie agli sforzi congiunti, abbiamo risolto numerosi bug e imperfezioni nel funzionamento del client, semplificando l'installazione e la configurazione del sistema, anche durante la compilazione dai sorgenti. Le modifiche più significative includono:
    • Risolti i problemi di compatibilità del vecchio client con l'interfaccia delle nuove versioni di openssl e qt.
    • Rimossa la trasmissione del codice PIN pppd del token tramite file temporaneo.
    • Corretto l'avvio errato del programma di richiesta della password tramite interfaccia grafica, grazie all'installazione di un ambiente corretto per il servizio xl2tpd.
    • La costruzione del demone L2tpIpsecVpn ora avviene insieme alla costruzione del client stesso, semplificando il processo di assemblaggio e configurazione.
    • Per facilitare lo sviluppo, è stato integrato Azure Pipelines per testare la correttezza della costruzione.
    • È stata aggiunta la possibilità di ridurre forzatamente il livello di sicurezza nel contesto di openssl. Questo è utile per supportare correttamente i nuovi sistemi operativi, dove il livello di sicurezza standard è impostato su 2, con reti VPN che utilizzano certificati non conformi ai requisiti di sicurezza di questo livello. Questa opzione sarà utile per lavorare con reti VPN esistenti e obsolete.

La versione corretta può essere trovata nel seguente repository.

Questo client supporta l'uso di smart card per l'autenticazione e nasconde il più possibile tutte le difficoltà e i problemi legati alla configurazione di questo schema su Linux, rendendo la configurazione del client il più semplice e rapida possibile.

Certo, per garantire una comunicazione fluida tra PPP e il client GUI, sono stati necessari ulteriori aggiustamenti per ciascun progetto, ma sono stati comunque ridotti al minimo:

Ora si può procedere con la configurazione.

Configurazione del server

Installa tutti i pacchetti necessari.

Installazione di strongswan (IPsec)

Per prima cosa, configuriamo il firewall per il funzionamento di ipsec

sudo firewall-cmd --permanent --add-port=1701/{tcp,udp}
sudo firewall-cmd --permanent --add-service=ipsec
sudo firewall-cmd --reload

Poi procederemo con l'installazione

sudo yum install epel-release ipsec-tools dnf
sudo dnf install strongswan

Dopo l'installazione, è necessario impostare la configurazione per strongswan (una delle implementazioni IPSec). Per fare questo, modifichiamo il file /etc/strongswan/ipsec.conf :

configurazione setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey 

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=%any
    leftprotoport=udp/1701
    right=%any
    rightprotoport=udp/%any
    ike=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024
    esp=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024

Imposteremo anche una password comune per l'accesso. La password comune deve essere conosciuta da tutti i membri della rete per l'autenticazione. Questo metodo è intrinsecamente poco sicuro, poiché la password può facilmente diventare nota a persone a cui non vogliamo fornire l'accesso alla rete.
Tuttavia, questo fatto non influirà sulla sicurezza della rete, poiché la crittografia dei dati e l'autenticazione degli utenti sono gestite dal protocollo PPP. È giusto notare che strongswan supporta tecnologie di autenticazione più sicure, ad esempio utilizzando chiavi private. Inoltre, strongswan offre la possibilità di garantire l'autenticazione tramite smart card, ma al momento supporta solo un numero limitato di dispositivi, rendendo quindi difficile l'autenticazione tramite token e smart card Rutoken. Impostiamo una password generale tramite file. /etc/strongswan/ipsec.secrets:

# ipsec.secrets - strongSwan IPsec secrets file
%any %any : PSK "SECRET_PASSPHRASE"

Ripartiamo strongswan:

sudo systemctl enable strongswan
sudo systemctl restart strongswan

Installazione di xl2tp

sudo dnf install xl2tpd

Configuriamolo tramite file. /etc/xl2tpd/xl2tpd.conf:

[global]
force userspace = yes
listen-addr = 0.0.0.0
ipsec saref = yes

[lns default]
exclusive = no
; definisce l'indirizzo statico del server nella rete virtuale
local ip = 100.10.10.1
; imposta il raggio degli indirizzi virtuali
ip range = 100.10.10.1-100.10.10.254
assign ip = yes
refuse pap = yes
require authentication = yes
; questa opzione può essere disabilitata dopo una configurazione di rete riuscita
ppp debug = yes
length bit = yes
pppoptfile = /etc/ppp/options.xl2tpd
; indica l'indirizzo del server nella rete
name = centos.vpn.server.ad

Ripartiamo il servizio:

sudo systemctl enable xl2tpd
sudo systemctl restart xl2tpd

Configurazione PPP

È consigliabile installare l'ultima versione di pppd. Per fare ciò, eseguiamo la seguente serie di comandi:

sudo yum install git make gcc openssl-devel
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install

Inserisci nel file /etc/ppp/options.xl2tpd quanto segue (se ci sono già dei valori, possono essere rimossi):

ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 1.1.1.1

noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000

Annotiamo il certificato root e il certificato del server:

#директория с сертификатами пользователей, УЦ и сервера
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

In questo modo, abbiamo completato la configurazione principale del server. Il resto della configurazione del server riguarda l'aggiunta di nuovi clienti.

Aggiunta di un nuovo cliente

Per aggiungere un nuovo cliente alla rete, è necessario registrare il suo certificato nell'elenco di fiducia per questo cliente.

Se un utente desidera diventare membro della rete VPN, deve creare una coppia di chiavi e una richiesta di certificato per questo cliente. Se l'utente è fidato, la richiesta può essere firmata e il certificato risultante deve essere registrato nella directory dei certificati:

sudo openssl x509 -req -in client.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/client.pem -CAcreateserial

Aggiungiamo una riga nel file /etc/ppp/eaptls-server per associare il nome del cliente e il suo certificato:

"client" * /etc/ppp/certs/client.pem /etc/ppp/certs/server.pem /etc/ppp/certs/ca.pem /etc/ppp/keys/server.pem *

NOTA
Per evitare confusione, è meglio che: il Common Name, il nome del file del certificato e il nome utente siano unici.

È anche importante verificare che in altri file di autenticazione non compaia da nessuna parte il nome dell'utente che stiamo aggiungendo, altrimenti si riscontreranno problemi con il metodo di autenticazione.

Questo stesso certificato deve essere restituito all'utente.

Generazione della coppia di chiavi e certificato

Per una corretta autenticazione, il cliente deve:

  1. generare una coppia di chiavi;
  2. disporre di un certificato radice dell'Autorità di Certificazione;
  3. avere un certificato per la propria coppia di chiavi, firmato dall'Autorità di Certificazione radice.

per il cliente su Linux

Per prima cosa, generiamo una coppia di chiavi sul token e creiamo una richiesta di certificato:

#идентификатор ключа (параметр --id) можно заменить на любой другой.
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45

openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:librtpkcs11ecp.so
...
OpenSSL> req -engine pkcs11 -new -key 45 -keyform engine -out client.req -subj "/C=RU/CN=client"

Invia la richiesta client.req all'Autorità di Certificazione. Dopo aver ricevuto il certificato per la tua coppia di chiavi, registralo sul token con lo stesso id del chiave:

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w ./client.pem --id 45

per i clienti Windows e Linux (metodo più universale)

Questo metodo è più universale, poiché consente di generare una chiave e un certificato che saranno riconosciuti con successo dagli utenti Windows e Linux, ma richiede una macchina Windows per eseguire la procedura di generazione delle chiavi.

Prima di generare richieste e importare certificati, è necessario aggiungere il certificato radice della rete VPN all'elenco dei certificati attendibili. Per fare questo, apriamo il certificato e nella finestra che si apre selezioniamo l'opzione "Installa certificato":

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra aperta, selezioniamo l'installazione del certificato per l'utente locale:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Installeremo il certificato nel deposito dei certificati radice affidabili dell'Autorità di Certificazione:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo tutte queste operazioni, accettiamo tutti i successivi punti. Ora il sistema è configurato.

Creeremo un file cert.tmp con il seguente contenuto:

[NewRequest]
Subject = "CN=client"
KeyLength = 2048
KeySpec = "AT_KEYEXCHANGE" 
ProviderName = "Microsoft Base Smart Card Crypto Provider"
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE"
KeyUsageProperty = "NCRYPT_ALLOW_DECRYPT_FLAG"
RequestType = PKCS10
SMIME = FALSE

Dopo di ciò, genereremo un paio di chiavi e creeremo una richiesta di certificato. Per fare questo, apriamo powershell e immettiamo il seguente comando:

certreq.exe -new -pin $PIN .cert.tmp .client.req

Invia la richiesta creata client.req al tuo CA e attendi di ricevere il certificato client.pem. Può essere registrato su un token e aggiunto al repository certificati di Windows utilizzando il seguente comando:

certreq.exe -accept .client.pem

Va notato che azioni simili possono essere eseguite tramite l'interfaccia grafica del programma mmc, ma questo metodo è più dispendioso in termini di tempo e meno programmabile.

Configurazione del client Ubuntu

NOTA
Attualmente, la configurazione del client su Linux richiede un tempo considerevole, poiché è necessario compilare singoli programmi dai sorgenti. Ci impegneremo a garantire che tutte le modifiche vengano incluse nei repository ufficiali al più presto.

Per garantire la connessione a livello IPSec al server, viene utilizzato il pacchetto strongswan e il demone xl2tp. Per semplificare la connessione alla rete tramite smart card, utilizzeremo il pacchetto l2tp-ipsec-vpn, che fornisce un'interfaccia grafica per semplificare la configurazione della connessione.

Iniziamo a montare gli elementi passo dopo passo, ma prima installeremo tutti i pacchetti necessari per il corretto funzionamento del VPN:

sudo apt-get install xl2tpd strongswan libp11-3

Installazione del software per lavorare con i token

Installa l'ultima versione della libreria librtpkcs11ecp.so con sito, insieme alle librerie per lavorare con le smart card:

sudo apt-get install pcscd pcsc-tools opensc libengine-pkcs11-openssl

Collega il Rutoken e verifica che venga riconosciuto dal sistema:

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O -l

Installazione del ppp patchato

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 del client L2tpIpsecVpn

Attualmente anche il client deve essere compilato dai sorgenti. Questo si fa con la seguente sequenza di comandi:

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 del client L2tpIpsecVpn

Avviamo il client installato:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo l'avvio dovrebbe aprirsi l'applet L2tpIpsecVPN. Clicca con il tasto destro su di essa e configura la connessione:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Per lavorare con i token, in primo luogo, specifichiamo il percorso del motore opensc di OpenSSL e della libreria PKCS#11. Per fare ciò, apri la scheda "Preferenze" per configurare i parametri di openssl:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI.

Chiudi la finestra delle impostazioni di OpenSSL e procedi alla configurazione della rete. Aggiungi una nuova rete cliccando sul tasto Aggiungi… nel pannello delle impostazioni e inserisci il nome della rete:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo di ciò, questa rete sarà disponibile nel pannello delle impostazioni. Faremo doppio clic con il tasto destro del mouse sulla nuova rete per configurarla. Nella prima scheda, dobbiamo eseguire le impostazioni IPsec. Imposteremo l'indirizzo del server e la chiave condivisa:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo di ciò, passiamo alla scheda delle impostazioni PPP e qui indicheremo il nome utente con cui desideriamo accedere alla rete:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo di ciò, apriremo la scheda Proprietà e specificheremo il percorso della chiave, del certificato del client e dell'CA:
Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Chiuderemo questa scheda e faremo l'ultima configurazione, per questo apriremo la scheda "Impostazioni IP" e metteremo il segno di spunta accanto all'opzione "Ottieni automaticamente l'indirizzo del server DNS":

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI
Questa opzione consentirà al client di ricevere un indirizzo IP privato dal server all'interno della rete.

Dopo tutte le impostazioni, chiuderemo tutte le schede e riavvieremo il client:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Connessione alla rete

Dopo aver configurato, possiamo connetterci alla rete. Per fare ciò, apriremo la scheda dell'applet e selezioneremo la rete a cui vogliamo connetterci:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Durante l'installazione della connessione, il client chiederà di inserire il PIN del RUTOKEN:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Se nella barra di stato appare una notifica che indica che la connessione è stata stabilita con successo, significa che la configurazione è stata eseguita correttamente:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

In caso contrario, è importante capire perché la connessione non è stata stabilita. Per fare ciò, controlla il log del programma selezionando nel pannello l'opzione "Informazioni sulla connessione":

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Configurazione del client Windows

La configurazione del client in Windows è molto più semplice rispetto a Linux, poiché tutto il software necessario è già integrato nel sistema.

Configurazione del sistema

Installeremo tutti i driver necessari per lavorare con i Rutoken scaricandoli da sito ufficiale.

Importazione del certificato radice per l'autenticazione

Scaricheremo il certificato radice del server e lo installeremo nel sistema. Per fare ciò, apriamolo e nell finestra che si apre selezioniamo l'opzione "Installa certificato":

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra che si apre, selezioneremo l'installazione del certificato per l'utente locale. Se desideri che il certificato sia accessibile a tutti gli utenti del computer, dovresti scegliere di installare il certificato sul computer locale:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Installeremo il certificato nel deposito dei certificati radice affidabili dell'Autorità di Certificazione:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Dopo tutte queste operazioni, accettiamo tutti i successivi punti. Ora il sistema è configurato.

Configurazione della connessione VPN

Per configurare la connessione VPN, vai al pannello di controllo e seleziona l'opzione per creare una nuova connessione.

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra a comparsa, seleziona l'opzione per creare una connessione per collegarti al tuo posto di lavoro:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra successiva, seleziona la connessione tramite VPN:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

inserisci i dati della connessione VPN e specifica l'opzione per utilizzare la smart card:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

La configurazione non è ancora completa. Dobbiamo inserire la chiave condivisa per il protocollo IPsec, quindi passiamo alla scheda “Impostazioni connessioni di rete” e poi alla scheda “Proprietà per questa connessione”:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra che si apre, andiamo alla scheda "Sicurezza", impostiamo come tipo di rete "Rete L2TP/IPsec" e selezioniamo "Ulteriori opzioni":

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Nella finestra che appare, inseriamo la chiave condivisa IPsec:
Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Connessione

Una volta completata la configurazione, possiamo provare a connetterci alla rete:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Durante la connessione ci verrà chiesto di inserire il PIN del token:

Configurazione dell'autenticazione nella rete L2TP con Rutoken EDS 2.0 e Rutoken PKI

Abbiamo configurato una rete VPN sicura e verificato che non è difficile.

Ringraziamenti

Vogliamo ringraziare di nuovo i nostri colleghi Vasily Shokov e Alexander Smirnov per il lavoro svolto insieme per semplificare la creazione di connessioni VPN per i clienti Linux.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster