Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Прашања

Неодамна, многумина не знаеја како е да се работи од дома. Пандемијата драматично ја промени ситуацијата во светот, сите почнаа да се прилагодуваат на моменталните околности, имено на фактот дека стана едноставно небезбедно да се напушти куќата. И многумина мораа брзо да организираат работа од дома за своите вработени.

Сепак, недостатокот на компетентен пристап за избор на решенија за работа на далечина може да доведе до неповратни загуби. Корисничките лозинки може да бидат украдени, а тоа ќе му овозможи на напаѓачот неконтролирано да се поврзе со мрежата и ИТ ресурсите на претпријатието.

Затоа сега е зголемена потребата за создавање сигурни корпоративни VPN мрежи. Ќе ти кажам за сигурен, безбеден и едноставна при користење на VPN мрежа.

Работи според шемата IPsec/L2TP, која користи клучеви и сертификати што не можат да се вратат зачувани на токени за да ги автентицира клиентите, а исто така пренесува податоци преку мрежата во шифрирана форма.

Сервер со CentOS 7 (адреса: centos.vpn.server.ad) и клиент со Ubuntu 20.04, како и клиент со Windows 10, беа користени како демонстрациски штандови за конфигурација.

Опис на системот

VPN ќе работи според шемата IPSec + L2TP + PPP. Протокол Протокол од точка до точка (ЈПП) работи на слојот за податочна врска на моделот OSI и обезбедува автентикација на корисникот и шифрирање на пренесените податоци. Неговите податоци се инкапсулирани во податоците на протоколот L2TP, кој всушност обезбедува создавање на врска во VPN мрежата, но не обезбедува автентикација и шифрирање.

Податоците L2TP се инкапсулирани во IPSec, кој исто така обезбедува автентикација и шифрирање, но за разлика од PPP, автентикацијата и шифрирањето се случуваат на ниво на уред, а не на ниво на корисник.

Оваа функција ви овозможува да ги автентикувате корисниците само од одредени уреди. Ќе го користиме протоколот IPSec таков каков што е и ќе дозволиме автентикација на корисникот од кој било уред.

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Автентикацијата на корисниците со помош на паметни картички ќе се врши на ниво на протокол PPP со помош на протоколот EAP-TLS.

Подетални информации за работата на ова коло може да се најдат во овој напис.

Зошто оваа шема ги исполнува сите три барања на добра VPN мрежа?

  1. Веродостојноста на оваа шема е тестирана со време. Се користи за распоредување на VPN мрежи од 2000 година.
  2. Безбедна автентикација на корисникот е обезбедена со протоколот PPP. Стандардна имплементација на протоколот PPP развиен од Пол Макеррас не обезбедува доволно ниво на безбедност, бидејќи За автентикација, во најдобар случај, се користи автентикација со користење на најава и лозинка. Сите знаеме дека лозинката за најава може да се шпионира, погоди или украде. Сепак, веќе долго време инвеститорот Јан Џаст Кејсер в неговата имплементација Овој протокол го коригира овој проблем и додаде можност за користење на протоколи базирани на асиметрично шифрирање, како што е EAP-TLS, за автентикација. Покрај тоа, тој додаде можност за користење на паметни картички за автентикација, што го направи системот побезбеден.
    Во моментов, активни преговори се во тек за спојување на овие два проекти и можете да бидете сигурни дека порано или подоцна тоа сепак ќе се случи. На пример, закрпена верзија на PPP е долго време во складиштата на Fedora, користејќи безбедни протоколи за автентикација.
  3. До неодамна, оваа мрежа можеа да ја користат само корисниците на Windows, но нашите колеги од Московскиот државен универзитет Василиј Шоков и Александар Смирнов открија стар проект за клиент L2TP за Linux и го измени. Заедно, поправивме многу грешки и недостатоци во работата на клиентот, ја поедноставивме инсталацијата и конфигурацијата на системот, дури и кога се гради од изворот. Најзначајни од нив се:
    • Поправени проблеми со компатибилноста на стариот клиент со интерфејсот на новите верзии на openssl и qt.
    • Отстранет pppd од пренесување на PIN-кодот на токенот низ привремена датотека.
    • Поправено неправилно стартување на програмата за барање лозинка преку графичкиот интерфејс. Ова беше направено со инсталирање на правилната средина за услугата xl2tpd.
    • Изградбата на демонот L2tpIpsecVpn сега се изведува заедно со изградбата на самиот клиент, што го поедноставува процесот на градење и конфигурација.
    • За олеснување на развојот, системот Azure Pipelines е поврзан за да се тестира исправноста на конструкцијата.
    • Додадена е способност за принудно деградирање безбедносно ниво во контекст на openssl. Ова е корисно за правилна поддршка на нови оперативни системи каде стандардното ниво на безбедност е поставено на 2, со VPN мрежи кои користат сертификати кои не ги исполнуваат безбедносните барања на ова ниво. Оваа опција ќе биде корисна за работа со постоечките стари VPN мрежи.

Поправената верзија може да се најде во ова складиште.

Овој клиент поддржува употреба на паметни картички за автентикација, а исто така ги крие колку што е можно сите тешкотии и тешкотии при поставувањето на оваа шема во Linux, правејќи го поставувањето на клиентот што е можно поедноставно и побрзо.

Се разбира, за удобна врска помеѓу PPP и GUI на клиентот, не беше можно без дополнителни уредувања на секој од проектите, но сепак тие беа минимизирани и сведени на минимум:

Сега можете да започнете со поставување.

Подесување на серверот

Ајде да ги инсталираме сите потребни пакети.

Инсталирање на strongswan (IPsec)

Пред сè, ајде да го конфигурираме заштитниот ѕид за работа со ipsec

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

Потоа да започнеме со инсталацијата

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

По инсталацијата, треба да го конфигурирате strongswan (една од имплементациите на IPSec). За да го направите ова, уредете ја датотеката /etc/strongswan/ipsec.conf :

config 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

Ќе поставиме и заедничка лозинка за најава. Споделената лозинка мора да им биде позната на сите учесници во мрежата за автентикација. Овој метод е очигледно несигурен, бидејќи оваа лозинка може лесно да им стане позната на поединци на кои не сакаме да им обезбедиме пристап до мрежата.
Сепак, дури и овој факт нема да влијае на безбедноста на мрежата, бидејќи Основното шифрирање на податоците и автентикацијата на корисникот се врши со протоколот PPP. Но, во праведност, вреди да се напомене дека strongswan поддржува побезбедни технологии за автентикација, на пример, со користење на приватни клучеви. Strongswan, исто така, има можност да обезбеди автентикација со помош на паметни картички, но досега се поддржани само ограничен опсег на уреди и затоа автентикацијата со користење на Rutoken токени и паметни картички е сè уште тешко. Ајде да поставиме општа лозинка преку датотека /etc/strongswan/ipsec.secrets:

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

Да го рестартираме strongswan:

sudo systemctl enable strongswan
sudo systemctl restart strongswan

Се инсталира xl2tp

sudo dnf install xl2tpd

Ајде да го конфигурираме преку датотека /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 systemctl enable xl2tpd
sudo systemctl restart xl2tpd

Поставување ЈПП

Препорачливо е да ја инсталирате најновата верзија на pppd. За да го направите ова, извршете ја следнава низа на команди:

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

Напиши во датотека /etc/ppp/options.xl2tpd следново (ако има некои вредности таму, можете да ги избришете):

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

Ние издаваме коренски сертификат и сертификат за сервер:

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

Така, завршивме со основното поставување на серверот. Остатокот од конфигурацијата на серверот вклучува додавање нови клиенти.

Додавање нов клиент

За да додадете нов клиент на мрежата, мора да го додадете неговиот сертификат на листата на доверливи за овој клиент.

Ако корисникот сака да стане член на VPN мрежа, тој создава пар клучеви и апликација за сертификат за овој клиент. Ако на корисникот му се верува, тогаш оваа апликација може да се потпише, а добиениот сертификат може да се запише во директориумот со сертификати:

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

Ајде да додадеме линија во датотеката /etc/ppp/eaptls-server за да одговара на името на клиентот и неговиот сертификат:

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

ЗАБЕЛЕШКА
За да се избегне забуна, подобро е: Заедничкото име, името на датотеката на сертификатот и корисничкото име да бидат единствени.

Исто така, вреди да се провери дали името на корисникот што го додаваме не се појавува никаде во другите датотеки за автентикација, во спротивно ќе има проблеми со начинот на кој корисникот се автентицира.

Истиот сертификат мора да се испрати назад до корисникот.

Генерирање на пар клучеви и сертификат

За успешна автентикација, клиентот мора:

  1. генерира пар клучеви;
  2. имаат CA корен сертификат;
  3. имајте сертификат за вашиот пар клучеви потпишан од root CA.

за клиент на Linux

Прво, ајде да генерираме пар клучеви на токенот и да создадеме апликација за сертификатот:

#идентификатор ключа (параметр --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"

Испратете ја апликацијата client.req што се појавува на CA. Откако ќе добиете сертификат за вашиот пар клучеви, напишете го на токен со истиот id како клучот:

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

за клиенти на Windows и Linux (поуниверзален метод)

Овој метод е поуниверзален, бидејќи ви овозможува да генерирате клуч и сертификат што ќе бидат успешно препознаени од корисниците на Windows и Linux, но потребна е машина со Windows за да ја спроведе процедурата за генерирање клучеви.

Пред да генерирате барања и да увезете сертификати, мора да го додадете коренскиот сертификат на VPN мрежата на списокот со доверливи. За да го направите ова, отворете го и во прозорецот што се отвора, изберете ја опцијата „Инсталирај сертификат“:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во прозорецот што се отвора, изберете инсталирање сертификат за локалниот корисник:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Ајде да го инсталираме сертификатот во доверливата продавница за root сертификати на CA:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

По сите овие акции, се согласуваме со сите понатамошни точки. Системот сега е конфигуриран.

Ајде да создадеме датотека cert.tmp со следнава содржина:

[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

После ова, ќе генерираме пар клучеви и ќе создадеме апликација за сертификатот. За да го направите ова, отворете powershell и внесете ја следнава команда:

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

Испратете ја креираната апликација client.req до вашиот CA и почекајте да се прими сертификатот client.pem. Може да се запише во токен и да се додаде во продавницата за сертификати на Windows користејќи ја следнава команда:

certreq.exe -accept .client.pem

Вреди да се напомене дека слични дејства може да се репродуцираат со помош на графичкиот интерфејс на програмата mmc, но овој метод одзема повеќе време и помалку програмабилен.

Поставување на клиентот на Ubuntu

ЗАБЕЛЕШКА
Поставувањето клиент на Linux во моментов одзема доста време, бидејќи ... бара изградба на посебни програми од изворот. Ќе се обидеме да обезбедиме сите промени да бидат вклучени во официјалните складишта во блиска иднина.

За да се обезбеди поврзување на ниво на IPSec со серверот, се користат пакетот strongswan и демонот xl2tp. За да го поедноставиме поврзувањето со мрежата со помош на паметни картички, ќе го користиме пакетот l2tp-ipsec-vpn, кој обезбедува графичка обвивка за поедноставено поставување на врската.

Ајде да започнеме со склопување на елементите чекор по чекор, но пред тоа ќе ги инсталираме сите потребни пакети за директно да работи VPN:

sudo apt-get install xl2tpd strongswan libp11-3

Инсталирање софтвер за работа со токени

Инсталирајте ја најновата библиотека librtpkcs11ecp.so од страница, исто така библиотеки за работа со паметни картички:

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

Поврзете го Рутокен и проверете дали е препознаен од системот:

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

Инсталирање закрпени ppp

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

Инсталирање на клиентот L2tpIpsecVpn

Во моментов, клиентот исто така треба да се компајлира од изворниот код. Ова се прави со користење на следнава низа на команди:

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

Поставување на клиентот L2tpIpsecVpn

Стартувајте го инсталираниот клиент:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

По лансирањето, аплетот L2tpIpsecVPN треба да се отвори. Десен-клик на неа и конфигурирајте ја врската:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

За да работиме со токени, пред сè, ја означуваме патеката до моторот opensc на моторот OpenSSL и библиотеката PKCS#11. За да го направите ова, отворете го табулаторот „Преференци“ за да ги конфигурирате параметрите на openssl:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI.

Ајде да го затвориме прозорецот за поставки на OpenSSL и да продолжиме со поставувањето на мрежата. Ајде да додадеме нова мрежа со кликнување на копчето Додај... во панелот за поставки и внесете го името на мрежата:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

После ова, оваа мрежа ќе стане достапна во панелот за поставки. Кликнете двапати со десното копче на новата мрежа за да ја конфигурирате. На првото јазиче треба да направите поставки за IPsec. Ајде да ги поставиме адресата на серверот и јавниот клуч:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

После ова, одете во табулаторот за поставки за PPP и таму означете го корисничкото име под кое сакаме да пристапиме до мрежата:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

После ова, отворете го табот Својства и наведете ја патеката до клучот, сертификатот на клиентот и CA:
Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Ајде да го затвориме ова јазиче и да ги извршиме конечните поставки; за да го направите ова, отворете го табулаторот „IP поставки“ и штиклирајте го полето до опцијата „Автоматски добијте ја адресата на серверот DNS“:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI
Оваа опција ќе му овозможи на клиентот да добие лична IP адреса во мрежата од серверот.

По сите поставки, затворете ги сите јазичиња и рестартирајте го клиентот:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Мрежна врска

По поставките, можете да се поврзете на мрежата. За да го направите ова, отворете го јазичето аплет и изберете ја мрежата на која сакаме да се поврземе:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

За време на процесот на воспоставување врска, клиентот ќе побара од нас да го внесеме PIN-кодот на Рутокен:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Ако во статусната лента се појави известување дека врската е успешно воспоставена, тоа значи дека поставувањето е успешно:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во спротивно, вреди да се открие зошто врската не е воспоставена. За да го направите ова, треба да го погледнете дневникот на програмата со избирање на командата „Информации за поврзување“ во аплетот:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Поставување на клиентот на Windows

Поставувањето клиент на Windows е многу полесно отколку на Linux, бидејќи ... Целиот неопходен софтвер е веќе вграден во системот.

Системско поставување

Ќе ги инсталираме сите потребни драјвери за работа со Rutokens со преземање од нив на. сајт.

Увезување root сертификат за автентикација

Преземете го коренскиот сертификат на серверот и инсталирајте го на системот. За да го направите ова, отворете го и во прозорецот што се отвора, изберете ја опцијата „Инсталирај сертификат“:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во прозорецот што се отвора, изберете инсталирање сертификат за локалниот корисник. Ако сакате сертификатот да биде достапен за сите корисници на компјутерот, тогаш треба да изберете да го инсталирате сертификатот на локалниот компјутер:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Ајде да го инсталираме сертификатот во доверливата продавница за root сертификати на CA:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

По сите овие акции, се согласуваме со сите понатамошни точки. Системот сега е конфигуриран.

Поставување VPN конекција

За да поставите VPN конекција, одете на контролната табла и изберете ја опцијата за создавање нова врска.

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во скокачкиот прозорец, изберете ја опцијата за создавање врска за поврзување со вашето работно место:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во следниот прозорец, изберете VPN конекција:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

и внесете ги деталите за поврзување VPN, а исто така наведете ја опцијата за користење паметна картичка:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Поставувањето сè уште не е завршено. Останува само да го наведете споделениот клуч за протоколот IPsec; за да го направите ова, одете во табулаторот „Поставки за мрежна врска“ и потоа одете во табулаторот „Карактеристики за оваа врска“:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во прозорецот што се отвора, одете во табулаторот „Безбедност“, наведете „L2TP/IPsec Network“ како тип на мрежа и изберете „Напредни поставки“:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Во прозорецот што се отвора, наведете го споделениот IPsec клуч:
Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Поврзување

Откако ќе го завршите поставувањето, можете да се обидете да се поврзете на мрежата:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

За време на процесот на поврзување, од нас ќе се бара да го внесеме PIN-кодот за токен:

Поставување автентикација во мрежата L2TP користејќи Rutoken EDS 2.0 и Rutoken PKI

Поставивме безбедна VPN мрежа и се погриживме да не биде тешко.

Благодарници

Би сакал уште еднаш да им се заблагодарам на нашите колеги Василиј Шоков и Александар Смирнов за работата што ја направија заедно за да го поедностават создавањето на VPN конекции за клиентите на Linux.

Извор: www.habr.com

Додадете коментар