การตั้งค่าการรับรองความถูกต้องในเครือข่าย 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 มาตรการ โปรโตคอลแบบจุดต่อจุด (พรรคพลังประชาชน) ทำงานที่ data link layer ของโมเดล OSI และจัดให้มีการตรวจสอบผู้ใช้และการเข้ารหัสข้อมูลที่ส่ง ข้อมูลของมันถูกห่อหุ้มไว้ในข้อมูลของโปรโตคอล L2TP ซึ่งรับประกันการสร้างการเชื่อมต่อในเครือข่าย VPN จริง ๆ แต่ไม่ได้ให้การรับรองความถูกต้องและการเข้ารหัส

ข้อมูล L2TP ถูกห่อหุ้มไว้ใน IPSec ซึ่งให้การตรวจสอบสิทธิ์และการเข้ารหัสด้วย แต่ต่างจาก PPP ตรงที่การตรวจสอบสิทธิ์และการเข้ารหัสเกิดขึ้นที่ระดับอุปกรณ์ ไม่ใช่ที่ระดับผู้ใช้

คุณสมบัตินี้ช่วยให้คุณตรวจสอบสิทธิ์ผู้ใช้จากอุปกรณ์บางชนิดเท่านั้น เราจะใช้โปรโตคอล IPSec เหมือนเดิมและอนุญาตการตรวจสอบสิทธิ์ผู้ใช้จากอุปกรณ์ใดก็ได้

การตั้งค่าการรับรองความถูกต้องในเครือข่าย L2TP โดยใช้ Rutoken EDS 2.0 และ Rutoken PKI

การตรวจสอบผู้ใช้โดยใช้สมาร์ทการ์ดจะดำเนินการที่ระดับโปรโตคอล PPP โดยใช้โปรโตคอล EAP-TLS

ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานของวงจรนี้สามารถพบได้ใน บทความนี้.

เหตุใดโครงการนี้จึงตรงตามข้อกำหนดทั้งสามประการของเครือข่าย VPN ที่ดี

  1. ความน่าเชื่อถือของโครงการนี้ได้รับการทดสอบตามเวลา มันถูกใช้ในการปรับใช้เครือข่าย VPN ตั้งแต่ปี 2000
  2. การรับรองความถูกต้องของผู้ใช้ที่ปลอดภัยนั้นมาจากโปรโตคอล PPP การใช้งานมาตรฐานของโปรโตคอล PPP ที่พัฒนาโดย Paul Mackerras ไม่ได้ให้ระดับความปลอดภัยที่เพียงพอเพราะว่า สำหรับการตรวจสอบสิทธิ์ ในกรณีที่ดีที่สุด จะใช้การตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบและรหัสผ่าน เราทุกคนรู้ดีว่ารหัสผ่านเข้าสู่ระบบสามารถสอดแนม คาดเดา หรือขโมยได้ อย่างไรก็ตาม เป็นเวลานานแล้วที่ผู้พัฒนา แจน แค่ ไคเซอร์ в การนำไปปฏิบัติ โปรโตคอลนี้แก้ไขปัญหานี้และเพิ่มความสามารถในการใช้โปรโตคอลที่ใช้การเข้ารหัสแบบไม่สมมาตร เช่น EAP-TLS สำหรับการตรวจสอบสิทธิ์ นอกจากนี้ เขายังเพิ่มความสามารถในการใช้สมาร์ทการ์ดในการตรวจสอบสิทธิ์ ซึ่งทำให้ระบบมีความปลอดภัยมากขึ้น
    ขณะนี้การเจรจาที่ดำเนินอยู่กำลังดำเนินการเพื่อรวมสองโครงการนี้ และคุณสามารถมั่นใจได้ว่าจะไม่ช้าก็เร็วสิ่งนี้จะเกิดขึ้นต่อไป ตัวอย่างเช่น PPP เวอร์ชันแพตช์อยู่ในที่เก็บ Fedora มาเป็นเวลานาน โดยใช้โปรโตคอลที่ปลอดภัยสำหรับการตรวจสอบสิทธิ์
  3. จนกระทั่งเมื่อไม่นานมานี้ เครือข่ายนี้สามารถใช้งานได้โดยผู้ใช้ Windows เท่านั้น แต่เพื่อนร่วมงานของเราจาก Moscow State University Vasily Shokov และ Alexander Smirnov พบว่า โครงการไคลเอนต์ L2TP เก่าสำหรับ Linux และแก้ไขมัน เราได้แก้ไขข้อบกพร่องและข้อบกพร่องมากมายในงานของลูกค้าร่วมกัน ทำให้การติดตั้งและการกำหนดค่าระบบง่ายขึ้น แม้ในขณะที่สร้างจากแหล่งที่มาก็ตาม ที่สำคัญที่สุดคือ:
    • แก้ไขปัญหาความเข้ากันได้ของไคลเอนต์เก่าด้วยอินเทอร์เฟซของ openssl และ qt เวอร์ชันใหม่
    • ลบ pppd ออกจากการส่งโทเค็น PIN ผ่านไฟล์ชั่วคราว
    • แก้ไขการเปิดโปรแกรมขอรหัสผ่านไม่ถูกต้องผ่านทางอินเทอร์เฟซแบบกราฟิก ซึ่งทำได้โดยการติดตั้งสภาพแวดล้อมที่ถูกต้องสำหรับบริการ xl2tpd
    • ขณะนี้การสร้าง L2tpIpsecVpn daemon ดำเนินการร่วมกับการสร้างไคลเอ็นต์เอง ซึ่งทำให้กระบวนการสร้างและการกำหนดค่าง่ายขึ้น
    • เพื่อความสะดวกในการพัฒนา ระบบ 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

การตั้งค่า PPP

ขอแนะนำให้ติดตั้ง 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 เมื่อคุณได้รับใบรับรองสำหรับคู่คีย์ของคุณแล้ว ให้เขียนลงในโทเค็นที่มีรหัสเดียวกันกับคีย์:

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

มาติดตั้งใบรับรองในที่เก็บใบรับรองหลักที่เชื่อถือได้ของ 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 daemon เพื่อให้การเชื่อมต่อเครือข่ายง่ายขึ้นโดยใช้สมาร์ทการ์ด เราจะใช้แพ็คเกจ 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

เชื่อมต่อ Rutoken และตรวจสอบว่าระบบได้รับการยอมรับ:

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 Rutoken:

การตั้งค่าการรับรองความถูกต้องในเครือข่าย 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 โดยดาวน์โหลดจาก ของ. เว็บไซต์.

การนำเข้าใบรับรองหลักสำหรับการตรวจสอบสิทธิ์

ดาวน์โหลดใบรับรองหลักของเซิร์ฟเวอร์และติดตั้งลงในระบบ ในการดำเนินการนี้ให้เปิดและในหน้าต่างที่เปิดขึ้นให้เลือกตัวเลือก "ติดตั้งใบรับรอง":

การตั้งค่าการรับรองความถูกต้องในเครือข่าย L2TP โดยใช้ Rutoken EDS 2.0 และ Rutoken PKI

ในหน้าต่างที่เปิดขึ้น ให้เลือกการติดตั้งใบรับรองสำหรับผู้ใช้ภายในเครื่อง หากคุณต้องการให้ใบรับรองพร้อมใช้งานสำหรับผู้ใช้ทุกคนบนคอมพิวเตอร์ คุณควรเลือกติดตั้งใบรับรองบนเครื่องคอมพิวเตอร์:

การตั้งค่าการรับรองความถูกต้องในเครือข่าย L2TP โดยใช้ Rutoken EDS 2.0 และ Rutoken PKI

มาติดตั้งใบรับรองในที่เก็บใบรับรองหลักที่เชื่อถือได้ของ 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" เป็นประเภทเครือข่าย และเลือก "การตั้งค่าขั้นสูง":

การตั้งค่าการรับรองความถูกต้องในเครือข่าย 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 ที่ปลอดภัยและทำให้แน่ใจว่าไม่ใช่เรื่องยาก

บลาโกดาเรนนอสตี

ฉันขอขอบคุณเพื่อนร่วมงานของเรา Vasily Shokov และ Alexander Smirnov อีกครั้งสำหรับงานที่พวกเขาทำร่วมกันเพื่อทำให้การสร้างการเชื่อมต่อ VPN สำหรับไคลเอนต์ Linux ง่ายขึ้น

ที่มา: will.com

เพิ่มความคิดเห็น