Cách thiết lập IKEv2 VPN bằng Strongswan và Let's Encrypt trên CentOS 8

theanh

Administrator
Nhân viên
Strongswan là một triển khai IPSec đa nền tảng mã nguồn mở. Đây là giải pháp VPN dựa trên IPSec tập trung vào các cơ chế xác thực mạnh. Strongswan cung cấp hỗ trợ cho cả giao thức trao đổi khóa IKEv1 và IKEv2, xác thực dựa trên chứng chỉ X.509 hoặc khóa được chia sẻ trước và xác thực người dùng IKEv2 EAP an toàn.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt máy chủ VPN IPSec bằng Strongswan. Chúng tôi sẽ tạo một máy chủ VPN IKEv2 với xác thực 'EAP-MSCHAPv2' và sử dụng chứng chỉ Letsencrypt trên máy chủ CentOS 8.

Điều kiện tiên quyết
  • Máy chủ CentOS 8
  • Quyền root
Chúng ta sẽ làm gì?
  • Cài đặt Strongswan trên CentOS 8
  • Tạo SSL Letsencrypt
  • Cấu hình Strongswan
  • Bật tường lửa NAT
  • Bật chuyển tiếp cổng
  • Kiểm tra

Bước 1 - Cài đặt Strongswan trên CentOS 8​

Trong bước đầu tiên này, chúng tôi sẽ cài đặt phần mềm triển khai IPsec strongswan và tất cả các gói cần thiết từ kho lưu trữ EPEL.

Trước khi cài đặt gói strongswan, bạn phải thêm kho lưu trữ EPEL vào hệ thống CentOS 8.

Thêm kho lưu trữ EPEL cho máy chủ CentOS 8.
Mã:
sudo dnf install epel-release
Sau đó, cài đặt gói strongswan từ kho lưu trữ EPEL bằng lệnh dnf bên dưới.
Mã:
sudo dnf install strongswan
Chờ gói strongswan được cài đặt.


Bước 2 - Tạo chứng chỉ SSL bằng Let's encrypt​

Đối với hướng dẫn này, chúng ta sẽ tạo máy chủ VPN IKEv2 bằng tên miền 'vpn.hakase-labs.io' và sử dụng chứng chỉ được tạo từ letsencrypt.

Trong bước này, chúng ta sẽ cài đặt thủ công công cụ letsencrypt 'certbot' và tạo chứng chỉ cho tên miền máy chủ 'vpn.hakase-labs.io'.

Tải xuống tệp nhị phân certbot từ GitHub bằng lệnh wget bên dưới.
Mã:
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Sau đó, hãy biến nó thành tệp thực thi bằng cách thay đổi quyền của tệp.
Mã:
chmod +x /usr/local/bin/certbot-auto
Và công cụ certbot để tạo chứng chỉ Letsencrypt đã được đã cài đặt.



Trước khi tạo chứng chỉ Letsencrypt, chúng ta cần mở các cổng HTTP và HTTPS của máy chủ bằng firewall-cmd.

Thêm các dịch vụ HTTP và HTTPS vào danh sách dịch vụ firewalld bằng cách chạy các lệnh firewall-cmd bên dưới.
Mã:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Bây giờ chúng ta có thể tạo các tệp chứng chỉ SSL mới bằng công cụ letsencrypt certbot-auto.



Thay đổi địa chỉ email và tên miền bằng tên miền của riêng bạn và chạy lệnh 'certbot-auto' bên dưới.
Mã:
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [emailprotected] -d vpn.hakase-labs.io
Sau khi hoàn tất, bạn sẽ nhận được kết quả như bên dưới.



Tất cả các chứng chỉ của tên miền của bạn được tạo vào thư mục '/etc/letsencrypt/live/domain.com'.

Tiếp theo, chúng ta cần sao chép các tệp chứng chỉ 'fullchain.pem', 'privkey.pem' và 'chain.pem' vào thư mục '/etc/strongswan/ipsec.d/'.
Mã:
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Tất cả các chứng chỉ letsencrypt cho VPN Strongswan có tên 'vpn.hakase-labs.io' đã được tạo và sao chép vào thư mục '/etc/strongswan/ipsec.d'.
Mã:
cây /etc/strongswan/ipsec.d/

Bước 3 - Cấu hình Strongswan​

Đi tới thư mục '/etc/strongswan' và sao lưu tệp cấu hình 'ipsec.conf' mặc định.
Mã:
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli
Tạo một 'ipsec.conf' mới bằng trình soạn thảo vim.
Mã:
vim ipsec.conf
Và dán cấu hình sau.
Mã:
cài đặt cấu hình
 uniqueids=never # cho phép nhiều kết nối cho mỗi người dùng
 charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"

conn %default
 fragmentation=yes
 closeaction=restart
 rekey=no
 dpdaction=clear
 keyexchange=ikev2
 compress=yes
 dpddelay=35s
 lifetime=3h
 ikelifetime=12h

 ike=aes256gcm16-prfsha512-ecp384!
 esp=aes256gcm16-ecp384!

 left=%any
 [emailprotected]
 leftcert=fullchain.pem
 leftsendcert=always
 leftsubnet=0.0.0.0/0

 right=%any
 rightid=%any
 rightauth=eap-mschapv2
 rightsourceip=10.15.1.0/24
 rightdns=1.1.1.1,8.8.8.8
 rightsendcert=never
 eap_identity=%identity

conn ikev2-pubkey
 auto=add
Lưu và thoát.

Tiếp theo, chúng ta cần chỉnh sửa tệp 'ipsec.secrets' để xác định khóa riêng của máy chủ RSA và thông tin xác thực mật khẩu người dùng EAP.

Chỉnh sửa tệp 'ipsec.secrets'.
Mã:
vim ipsec.secrets
Dán cấu hình bên dưới.
Mã:
: RSA "privkey.pem"
hakase : EAP "hakase321@"
tensai : EAP "tensai321@"
Lưu và thoát.

Và cấu hình IPSec strongswan đã hoàn tất. Thêm dịch vụ strongswan vào thời gian khởi động và sau đó khởi động dịch vụ.
Mã:
systemctl enable strongswan
systemctl start strongswan


Dịch vụ strongswan đang hoạt động trên máy chủ CentOS 8, hãy kiểm tra bằng lệnh sau.
Mã:
systemctl status strongswan
netstat -plntu
Và bạn sẽ thấy kết quả như bên dưới.


Bước 4 - Bật NAT trong Firewalld​

Trong bước này, chúng tôi sẽ bật chế độ ngụy trang NAT và thêm Giao thức xác thực (AH) của IPSec và Tải trọng bảo mật đóng gói (ESP) trên Firewalld bằng cấu hình 'rich-rule'.

Thêm 'AH' và 'ESP' cho các giao thức xác thực và mã hóa vào firewalld.
Mã:
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
Thêm các cổng UDP ipsec và dịch vụ.
Mã:
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
Bây giờ hãy bật chế độ ngụy trang NAT và tải lại các quy tắc cấu hình firewalld.
Mã:
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload


Chế độ NAT trên firewalld đã được bật, hãy kiểm tra bằng lệnh bên dưới.
Mã:
firewall-cmd --list-all
Kết quả như sau.


Bước 5 - Bật Chuyển tiếp cổng​

Để bật chuyển tiếp cổng, chúng ta cần chỉnh sửa tệp 'sysctl.conf'.

Chỉnh sửa tệp '/etc/sysctl.conf' bằng trình soạn thảo vim.
Mã:
vim /etc/sysctl.conf
Dán cấu hình sau vào đó.
Mã:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Lưu và thoát, bây giờ hãy tải lại bằng lệnh sysctl bên dưới.
Mã:
sysctl -p
Chuyển tiếp cổng đã được bật. Bây giờ hãy khởi động lại dịch vụ strongswan.
Mã:
systemctl restart strongswan

Bước 6 - Kiểm tra Strongswan IPSec VPN​

Trong trường hợp này, chúng tôi sẽ thực hiện thử nghiệm trên MacOS X và điện thoại Android.

Trên MacOS​

- Mở 'Tùy chọn hệ thống' và nhấp vào menu 'Mạng'.

Nhấp vào nút '+' để tạo kết nối VPN mới.
  • Giao diện: 'VPN'
  • Loại VPN: 'IKEv2'
  • Tên dịch vụ: 'IKEv2-vpn


- Trên 'Địa chỉ máy chủ' và 'ID từ xa', hãy nhập tên miền VPN 'ikev2.hakase-labs.io'.
- Nhấp vào 'Cài đặt xác thực'.
- Xác thực bằng 'Tên người dùng'.
- Nhập tên người dùng 'tensai' với mật khẩu 'tensai321@'
- Nhấp vào 'OK' và nhấp vào 'Áp dụng'.






Kết nối VPN IKEv2 mới đã được tạo trên máy khách. Bây giờ hãy nhấp vào nút kết nối.






Và máy khách đã được kết nối với máy chủ VPN strongswan và có địa chỉ IP nội bộ/riêng tư là 10.15.1.1.

Trên Android​

- Tải xuống và cài đặt ứng dụng strongswan android gốc từ Google-Play.
- Thêm cấu hình VPN mới
- Nhập tên miền máy chủ 'ikev2.hakase-labs.io' và sử dụng xác thực Tên người dùng và Mật khẩu IKEv2 EAP.

Sau đây là kết quả khi chúng tôi kết nối với máy chủ VPN.





Máy chủ VPN dựa trên IKEv2 IPSec đã được tạo bằng Strongswan và Letsencrypt trên máy chủ CentOS 8.

Tham khảo​

 
Back
Bên trên