Strongswan là một triển khai IPSec đa nền tảng 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 7.
Cài đặt kho lưu trữ EPEL và cài đặt gói strongswan bằng lệnh yum bên dưới.
Chờ gói strongswan được cài đặt.
Trong bước này, chúng ta sẽ cài đặt công cụ letsencrypt 'certbot' và tạo chứng chỉ cho tên miền máy chủ 'ikev2.hakase-labs.io'.
Cài đặt công cụ letsencrypt 'certbot'.
Sau khi cài đặt certbot, chúng ta cần mở 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.
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.
Chạy lệnh certbot bên dưới.
Chứng chỉ Letsencrypt cho tên miền vpn 'ikev2.hakase-labs.io' đã được tạo và nằm tại thư mục '/etc/letsencrypt/live'.
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/'.
Tất cả các chứng chỉ letsencrypt cho VPN Strongswan có tên 'ikev2.hakase-labs.io' đã được tạo và sao chép vào thư mục '/etc/strongswan/ipsec.d'.
Tạo một 'ipsec.conf' mới bằng vimeditor.
Và dán cấu hình sau.
Lưu và thoát.
Chi tiết cấu hình:
Chỉnh sửa tệp 'ipsec.secrets'.
Dán cấu hình bên dưới.
Lưu và thoát.
Cấu hình chi tiết:
Cấu hình IPSec strongswan đã hoàn tất. Khởi động dịch vụ strongswan và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Thêm 'AH' và 'ESP' cho các giao thức xác thực và mã hóa vào firewalld.
Thêm các cổng UDP ipsec và dịch vụ.
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.
Chế độ NAT trên firewalld đã được bật, hãy kiểm tra bằng lệnh bên dưới.
Kết quả như sau.
Sử dụng trình soạn thảo vim để chỉnh sửa tệp '/etc/sysctl.conf'.
Dán cấu hình sau vào đó.
Lưu và thoát, bây giờ hãy tải lại bằng lệnh sysctl bên dưới.
Chuyển tiếp cổng đã được bật. Bây giờ hãy khởi động lại dịch vụ strongswan.
Nhấp vào nút '+' để tạo kết nối VPN mới.
- Trên 'Địa chỉ máy chủ' và 'ID từ xa', 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.
- 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 7.
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 7.
Điều kiện tiên quyết
- Máy chủ CentOS 7
- Quyền root
Chúng ta sẽ làm gì?
- Cài đặt Strongswan trên CentOS 7
- 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 7
Trong bước đầu tiên này, chúng ta 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.Cài đặt kho lưu trữ EPEL và cài đặt gói strongswan bằng lệnh yum bên dưới.
Mã:
yum -y install epel-release
yum -y install strongswan
Bước 2 - Tạo chứng chỉ SSL bằng Let's encrypt
Chúng tôi sẽ tạo máy chủ VPN IKEv2 bằng tên miền 'ikev2.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 công cụ letsencrypt 'certbot' và tạo chứng chỉ cho tên miền máy chủ 'ikev2.hakase-labs.io'.
Cài đặt công cụ letsencrypt 'certbot'.
Mã:
yum -y install certbot
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.
Chạy lệnh certbot bên dưới.
Mã:
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [emailprotected] -d ikev2.hakase-labs.io
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/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
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
Mã:
vim ipsec.conf
Mã:
#cấu hình toàn cục IPsec#chron loggerconfig setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no#xác định kết nối ipsec mớiconn hakase-vpn auto=add compress=no type=tunnel keyexchange=ikev2 Ví dụ: aes128-sha1-modp1024, aes128-sha1-modp1536, aes128-sha1-modp2048, aes128-sha256-ecp256, aes128-sha256-modp1024, aes128-sha256-modp1536, aes128-sha256-modp2048, aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024, aes256-sha1-modp1024, aes256-sha256-modp1024, aes256-sha256-modp1024, aes256-sha256-modp1024, aes256-sha256-modp1024 p1536, aes256-sha256-modp2048, aes256-sha256-modp4096, aes256-sha384-ecp384, aes256-sha384-modp1024, aes256-sha384-modp1536, aes256-sha384-modp2048, aes256-sha384-modp4096, aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024, 3des-sha1-modp1024! đặc biệt=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sh a1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha2 56-ecp256, aes128-sha256-modp1024, aes128-sha256-modp1536, aes128-sha256-modp2048, aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024, aes 128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,a es256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha3 84,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1! fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no 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
Chi tiết cấu hình:
- Tạo kết nối đường hầm VPN IPSec mới có tên 'hakase-vpn'.
- Chỉ định bộ mã hóa IKEv2 và ESP để xác thực.
- Cấu hình máy chủ 'trái' sử dụng tên miền 'ikev2.hakase-labs.io' và sử dụng chứng chỉ letsencrypt 'fullchain.pem' nằm tại thư mục '/etc/strongswan/ipsec.d/certs'.
- Thiết lập máy khách/máy từ xa 'đúng' với phương thức xác thực EAP 'eap-mschapv2', gán phạm vi địa chỉ IP ảo '10.15.1.0/24' cho tất cả máy khách được kết nối và sử dụng DNS công khai Cloudflare và google.
Chỉnh sửa tệp 'ipsec.secrets'.
Mã:
vim ipsec.secrets
Mã:
: RSA "privkey.pem"hakase : EAP "hakase321@"tensai : EAP "tensai321@"
Cấu hình chi tiết:
- Chỉ định khóa riêng của máy chủ RSA bằng chứng chỉ letsencrypt 'privkey.pem' nằm trong thư mục '/etc/strongswan/ipsec.d/private'.
- Xác định thông tin xác thực người dùng EAP theo định dạng 'user : EAP "password"'.
Cấu hình IPSec strongswan đã hoàn tất. Khởi động dịch vụ strongswan và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start strongswan
systemctl enable strongswan
Bước 4 - Kích hoạt NAT trong Firewalld
Trong bước này, chúng tôi sẽ kích hoạt NAT masquerading và thêm Giao thức xác thực (AH) và Tải trọng bảo mật đóng gói (ESP) của giao thức IPSec trên Firewalld bằng cách sử dụ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'
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"
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
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'.Sử dụng trình soạn thảo vim để chỉnh sửa tệp '/etc/sysctl.conf'.
Mã:
vim /etc/sysctl.conf
Mã:
net.ipv4.ip_forward = 1net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0
Mã:
sysctl -p
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', 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 7.