OpenVPN là một ứng dụng mã nguồn mở cho phép bạn tạo một mạng riêng an toàn qua Internet công cộng. OpenVPN triển khai một mạng riêng ảo (VPN) để tạo kết nối an toàn. OpenVPN sử dụng thư viện OpenSSL để cung cấp mã hóa và cung cấp một số cơ chế xác thực, chẳng hạn như khóa chia sẻ trước, dựa trên chứng chỉ và xác thực tên người dùng/mật khẩu.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình OpenVPN từng bước trên FreeBSD 12.0. Chúng tôi sẽ tạo máy chủ VPN với hệ thống FreeBSD và triển khai xác thực OpenVPN dựa trên chứng chỉ.
Điều kiện tiên quyết
Đối với hướng dẫn này, bạn sẽ cần FreeBSD 12.0 mới nhất với RAM tối thiểu 512 MB và 1 CPU. Và bạn sẽ cần quyền root và tường lửa pf.
Những gì chúng ta sẽ làm:
Sau khi cài đặt hoàn tất, hãy thêm dịch vụ OpenVPN vào hệ thống khởi động và định nghĩa giao diện đường hầm OpenVPN 'tun' bằng lệnh sysrc bên dưới.
Bây giờ gói OpenVPN đã được cài đặt trên hệ thống FreeBSD 12.0.
Tạo thư mục openvpn mới '/usr/local/etc/openvpn/' và sao chép thư mục 'easy-rsa' vào đó.
Bây giờ hãy chuyển đến thư mục '/usr/local/etc/openvpn/easy-rsa/' và chỉnh sửa tệp 'vars' bằng trình soạn thảo vim.
Thay đổi thông tin chi tiết theo ý bạn và dán vào đó.
Lưu và đóng.
Bây giờ, hãy biến tệp 'vars' thành tệp thực thi.
Và chúng ta đã sẵn sàng để tạo chứng chỉ VPN.
Đi tới thư mục '/usr/local/etc/openvpn/easy-rsa/' và khởi tạo thư mục Cơ sở hạ tầng khóa công khai (PKI) bằng lệnh 'easyrsa.real' như bên dưới.
- Tạo CA
Bây giờ hãy tạo chứng chỉ CA và khóa.
Và bạn sẽ được yêu cầu nhập mật khẩu của khóa CA. Nhập mật khẩu của bạn và chứng chỉ CA cùng khóa đã được tạo.
Tiếp theo, chúng ta sẽ tạo và ký chứng chỉ máy chủ cùng khóa bằng CA mới của mình.
- Tạo và ký chứng chỉ máy chủ
Tạo chứng chỉ máy chủ VPN và khóa bằng lệnh sau.
Sau đó, ký chứng chỉ máy chủ bằng khóa CA.
Nhập cụm mật khẩu cho khóa CA và chứng chỉ máy chủ cùng khóa đã được tạo.
Xác minh chứng chỉ máy chủ và khóa bằng lệnh sau.
Và đảm bảo bạn không gặp lỗi nào.
- Tạo và ký chứng chỉ máy khách
Sau khi tạo chứng chỉ cho máy chủ, chúng tôi sẽ tạo chứng chỉ mới cho máy khách và ký bằng khóa CA.
Tạo chứng chỉ và khóa mới 'client01' bằng lệnh sau.
Sau đó ký chứng chỉ bằng khóa CA.
Nhập cụm mật khẩu cho khóa CA và chứng chỉ máy khách và khóa đã được tạo.
Xác minh chứng chỉ máy khách và khóa bằng lệnh openssl như bên dưới.
Và bạn sẽ nhận được kết quả như sau bên dưới.
Chứng chỉ và khóa của máy khách đã được tạo mà không có bất kỳ lỗi nào.
- Tạo chứng chỉ DH-PARAM và CRL
Cần có chứng chỉ DH-PARAM để tăng cường bảo mật. Và CRL (Danh sách thu hồi chứng chỉ) sẽ được sử dụng để liệt kê tất cả các chứng chỉ máy khách mà bạn muốn xóa khỏi việc truy cập máy chủ VPN.
Tạo chứng chỉ CRL và DH-PARAM mới bằng lệnh sau.
Sau khi hoàn tất, tất cả các chứng chỉ cơ bản cần thiết cho máy chủ VPN của chúng tôi đã được tạo.
- Sao chép tất cả các chứng chỉ
Tiếp theo, chúng ta cần sao chép tất cả các chứng chỉ vào thư mục OpenVPN. Tạo một thư mục mới 'server' và 'client' bên trong thư mục OpenVPN.
Sao chép chứng chỉ CA, chứng chỉ máy chủ và khóa vào thư mục 'server'.
Sao chép chứng chỉ CA, chứng chỉ client01 và khóa vào thư mục 'client'.
Sao chép chứng chỉ DH-PARAM và CRL vào thư mục 'máy chủ'.
Và bây giờ chúng ta đã sẵn sàng để cấu hình máy chủ OpenVPN.
Thay đổi cấu hình theo nhu cầu và dán vào đó.
Lưu và đóng.
Bây giờ hãy khởi động dịch vụ OpenVPN và kiểm tra trạng thái của nó.
Bạn sẽ nhận được thông báo dịch vụ OpenVPN đang hoạt động trên PID '14490'.
Kiểm tra cổng OpenVPN bằng lệnh sockstat bên dưới.
Và bạn sẽ nhận được kết quả như bên dưới.
Dịch vụ OpenVPN đang chạy trên cổng UDP mặc định '1194'.
Trước khi thực hiện bất kỳ bước nào khác, hãy đảm bảo rằng tường lửa pf được định cấu hình trên hệ thống. Hoặc bạn có thể sử dụng liên kết bên dưới để cấu hình nó.
Cách thiết lập tường lửa pf trên FreeBSD 12.0
Bây giờ hãy vào thư mục '/usr/local/etc' và chỉnh sửa tệp cấu hình pf 'pf.conf' bằng trình soạn thảo vim.
Xác định giao diện OpenVPN và địa chỉ IP cục bộ.
Lắp ráp lại tất cả các gói tin bị phân mảnh trên giao diện bên ngoài trước khi lọc chúng.
Bật nat từ địa chỉ IP OpenVPN đến giao diện bên ngoài.
Bây giờ hãy chuyển tất cả các kết nối đến giao thức UDP trên cổng OpenVPN '1194' và chuyển tất cả các kết nối trên giao diện OpenVPN 'tun0'.
Lưu và đóng.
Bây giờ hãy kiểm tra cấu hình tường lửa pf và đảm bảo không có lỗi, sau đó tải lại các quy tắc pf.
Kết quả là cấu hình tường lửa pf đã hoàn tất.
Bạn có thể kiểm tra các quy tắc tường lửa pf bằng lệnh sau.
Và bạn sẽ thấy kết quả như bên dưới.
Sửa tệp '/etc/sysctl.conf' bằng trình soạn thảo vim.
Dán cấu hình sau.
Lưu và đóng.
Bây giờ hãy kiểm tra tệp cấu hình sysctl bằng lệnh sau.
Tiếp theo, bật hệ thống FreeBSD làm cổng bằng cách thêm cấu hình vào '/etc/rc.conf' bằng lệnh sau.
Sau đó khởi động lại máy chủ.
Bây giờ chuyển tiếp cổng trên hệ thống FreeBSD đã được bật.
Đi tới thư mục '/usr/local/etc/openvpn/client' và tạo cấu hình mới 'client01.ovpn'.
Thay đổi địa chỉ IP từ xa và các chi tiết khác bằng địa chỉ của riêng bạn và dán vào đó.
Lưu và đóng.
Bây giờ hãy tải xuống tất cả các chứng chỉ, khóa và cấu hình bên trong thư mục '/usr/local/etc/openvpn/client' vào máy tính cục bộ của bạn.
Sau khi tải xuống các chứng chỉ và cấu hình, hãy đến thư mục tải xuống và kết nối với máy chủ openvpn bằng lệnh như bên dưới.
Sau khi kết nối hoàn tất, hãy mở tab thiết bị đầu cuối mới và kiểm tra giao diện 'tun0'.
Và bạn sẽ nhận được địa chỉ IP nội bộ từ máy chủ OpenVPN.
Tiếp theo, chúng ta sẽ kiểm tra để ping máy chủ OpenVPN bằng địa chỉ IP nội bộ của nó.
Và bạn sẽ nhận được câu trả lời ICMP từ máy chủ.
Sau đó, hãy kiểm tra kết nối internet bằng lệnh curl bên dưới.
Bây giờ bạn sẽ thấy địa chỉ IP bên ngoài của máy chủ.
Kết quả là quá trình cài đặt và cấu hình máy chủ OpenVPN trên FreeBSD 12.0 đã hoàn tất thành công.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình OpenVPN từng bước trên FreeBSD 12.0. Chúng tôi sẽ tạo máy chủ VPN với hệ thống FreeBSD và triển khai xác thực OpenVPN dựa trên chứng chỉ.
Điều kiện tiên quyết
Đối với hướng dẫn này, bạn sẽ cần FreeBSD 12.0 mới nhất với RAM tối thiểu 512 MB và 1 CPU. Và bạn sẽ cần quyền root và tường lửa pf.
Những gì chúng ta sẽ làm:
- Cài đặt OpenVPN trên FreeBSD 12.0
- Thiết lập biến cho chứng chỉ
- Tạo chứng chỉ
- Cấu hình OpenVPN
- Thiết lập tường lửa PF
- Bật chuyển tiếp cổng trên FreeBSD
- Kiểm tra
Bước 1 - Cài đặt OpenVPN
Đầu tiên, chúng ta sẽ cập nhật kho lưu trữ gói nhị phân và cài đặt các gói OpenVPN vào hệ thống FreeBSD bằng lệnh pkg bên dưới.
Mã:
pkg update
pkg install openvpn
Mã:
sysrc openvpn_enable="YES"
sysrc openvpn_if="tun"
Bước 2 - Thiết lập biến cho chứng chỉ
Trong bước này, chúng ta sẽ thiết lập các biến 'easy-rsa' để tạo chứng chỉ OpenVPN.Tạo thư mục openvpn mới '/usr/local/etc/openvpn/' và sao chép thư mục 'easy-rsa' vào đó.
Mã:
mkdir -p /usr/local/etc/openvpn/
cp -R /usr/local/share/easy-rsa /usr/local/etc/openvpn/
Mã:
cd /usr/local/etc/openvpn/easy-rsa/
vim vars
Mã:
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "Frankfurt"
set_var EASYRSA_REQ_CITY "Frankfurt"
set_var EASYRSA_REQ_ORG "hakase-labs CƠ QUAN CHỨNG NHẬN"
set_var EASYRSA_REQ_EMAIL "[emailprotected]"
set_var EASYRSA_REQ_OU "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7500
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_NS_SUPPORT "không"
set_var EASYRSA_NS_COMMENT "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST "sha256"
Bây giờ, hãy biến tệp 'vars' thành tệp thực thi.
Mã:
chmod +x vars
Bước 3 - Tạo chứng chỉ
Trong bước này, chúng ta sẽ tạo một số chứng chỉ cho máy chủ OpenVPN. Chúng tôi sẽ tạo CA, chứng chỉ máy khách và máy chủ, DH-PARAM và chứng chỉ CRL (Danh sách thu hồi chứng chỉ).Đi tới thư mục '/usr/local/etc/openvpn/easy-rsa/' và khởi tạo thư mục Cơ sở hạ tầng khóa công khai (PKI) bằng lệnh 'easyrsa.real' như bên dưới.
Mã:
cd /usr/local/etc/openvpn/easy-rsa/
./easyrsa.real init-pki
Bây giờ hãy tạo chứng chỉ CA và khóa.
Mã:
./easyrsa.real build-ca
Tiếp theo, chúng ta sẽ tạo và ký chứng chỉ máy chủ cùng khóa bằng CA mới của mình.
- Tạo và ký chứng chỉ máy chủ
Tạo chứng chỉ máy chủ VPN và khóa bằng lệnh sau.
Mã:
./easyrsa.real gen-req openvpn-bsd nopass
Sau đó, ký chứng chỉ máy chủ bằng khóa CA.
Mã:
./easyrsa.real sign-req server openvpn-bsd
Xác minh chứng chỉ máy chủ và khóa bằng lệnh sau.
Mã:
openssl verify -CAfile pki/ca.crt pki/issued/openvpn-bsd.crt
- Tạo và ký chứng chỉ máy khách
Sau khi tạo chứng chỉ cho máy chủ, chúng tôi sẽ tạo chứng chỉ mới cho máy khách và ký bằng khóa CA.
Tạo chứng chỉ và khóa mới 'client01' bằng lệnh sau.
Mã:
./easyrsa.real gen-req client01 nopass
Sau đó ký chứng chỉ bằng khóa CA.
Mã:
./easyrsa.real sign-req client client01
Xác minh chứng chỉ máy khách và khóa bằng lệnh openssl như bên dưới.
Mã:
openssl verify -CAfile pki/ca.crt pki/issued/client01.crt
Chứng chỉ và khóa của máy khách đã được tạo mà không có bất kỳ lỗi nào.
- Tạo chứng chỉ DH-PARAM và CRL
Cần có chứng chỉ DH-PARAM để tăng cường bảo mật. Và CRL (Danh sách thu hồi chứng chỉ) sẽ được sử dụng để liệt kê tất cả các chứng chỉ máy khách mà bạn muốn xóa khỏi việc truy cập máy chủ VPN.
Tạo chứng chỉ CRL và DH-PARAM mới bằng lệnh sau.
Mã:
./easyrsa.real gen-crl
./easyrsa.real gen-dh
- Sao chép tất cả các chứng chỉ
Tiếp theo, chúng ta cần sao chép tất cả các chứng chỉ vào thư mục OpenVPN. Tạo một thư mục mới 'server' và 'client' bên trong thư mục OpenVPN.
Mã:
mkdir -p /usr/local/etc/openvpn/{server,client}
Mã:
cp pki/ca.crt /usr/local/etc/openvpn/server/
cp pki/issued/openvpn-bsd.crt /usr/local/etc/openvpn/server/
cp pki/private/openvpn-bsd.key /usr/local/etc/openvpn/server/
Mã:
cp pki/ca.crt /usr/local/etc/openvpn/client/
cp pki/issued/client01.crt /usr/local/etc/openvpn/client/
cp pki/private/client01.key /usr/local/etc/openvpn/client/
Mã:
cp pki/dh.pem /usr/local/etc/openvpn/server/
cp pki/crl.pem /usr/local/etc/openvpn/server/
Bước 4 - Cấu hình OpenVPN
Đi tới thư mục '/usr/local/etc/openvpn' và tạo cấu hình openvpn mới có tên là 'openvpn.conf' bằng trình chỉnh sửa.
Mã:
cd /usr/local/etc/openvpn/
vim openvpn.conf
Mã:
# Cổng OpenVPN, Giao thức và Tunport 1194proto udpdev tun# Chứng chỉ máy chủ OpenVPN - CA, khóa máy chủ và chứng chỉca /usr/local/etc/openvpn/server/ca.crtcert /usr/local/etc/openvpn/server/openvpn-bsd.crtkey /usr/local/etc/openvpn/server/openvpn-bsd.key#Khóa DH và CRLdh /usr/local/etc/openvpn/server/dh.pemcrl-verify /usr/local/etc/openvpn/server/crl.pem# Cấu hình mạng - Mạng nội bộ# Chuyển hướng tất cả kết nối qua máy chủ OpenVPNserver 10.5.5.0 255.255.255.0push "redirect-gateway def1"# Sử dụng DNS từ https://dns.watchpush "dhcp-option DNS 84.200.69.80"push "dhcp-option DNS 84.200.70.40"#Cho phép nhiều máy khách kết nối với cùng một khóa chứng chỉduplicate-cn# Bảo mật TLScipher AES-256-CBCtls-version-min 1.2tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256auth SHA512auth-nocache# Cấu hình kháckeepalive 20 60explicit-exit-notify 1persist-keypersist-tuncomp-lzo yesdaemonuser nobodygroup nobody# Nhật ký OpenVPNlog-append /var/log/openvpn.logverb 3
Bây giờ hãy khởi động dịch vụ OpenVPN và kiểm tra trạng thái của nó.
Mã:
service openvpn start
service openvpn status
Kiểm tra cổng OpenVPN bằng lệnh sockstat bên dưới.
Mã:
sockstat -l4
Dịch vụ OpenVPN đang chạy trên cổng UDP mặc định '1194'.
Bước 5 - Thiết lập Tường lửa pf
Trong bước này, chúng ta sẽ thiết lập tường lửa pf cho máy chủ VPN. Chúng ta sẽ tạo quy tắc nat cho giao diện OpenVPN 'tun0' và cho phép mọi kết nối được chuyển hướng đến giao diện mạng bên ngoài 'vtnet0'.Trước khi thực hiện bất kỳ bước nào khác, hãy đảm bảo rằng tường lửa pf được định cấu hình trên hệ thống. Hoặc bạn có thể sử dụng liên kết bên dưới để cấu hình nó.
Cách thiết lập tường lửa pf trên FreeBSD 12.0
Bây giờ hãy vào thư mục '/usr/local/etc' và chỉnh sửa tệp cấu hình pf 'pf.conf' bằng trình soạn thảo vim.
Mã:
cd /usr/local/etc/
vim pf.conf
Mã:
# vpn interface
vpn_if="tun0"
vpn_net = "10.5.5.0/24"
Mã:
# lắp ráp lại tất cả các gói tin bị phân mảnh trước khi lọc chúng
scrub in on $ext_if all fragment reassemble
Mã:
# định tuyến lưu lượng từ giao diện VPN ra internet
nat on ! $vpn_if from $vpn_net to any -> $ext_ip
Mã:
# Cho phép kết nối đến máy chủ VPN
chuyển vào $ext_if proto udp từ bất kỳ ($ext_if) cổng 1194 giữ trạng thái
# Chuyển tất cả các kết nối trên giao diện VPN
chuyển vào $vpn_if từ bất kỳ đến bất kỳ
Bây giờ hãy kiểm tra cấu hình tường lửa pf và đảm bảo không có lỗi, sau đó tải lại các quy tắc pf.
Mã:
service pf check
service pf reload
Bạn có thể kiểm tra các quy tắc tường lửa pf bằng lệnh sau.
Mã:
pfctl -sr
pfctl -sn
Bước 6 - Thiết lập và Bật Chuyển tiếp Cổng
Trong bước này, chúng ta sẽ bật chuyển tiếp cổng trên hệ thống FreeBSD.Sửa tệp '/etc/sysctl.conf' bằng trình soạn thảo vim.
Mã:
vim /etc/sysctl.conf
Mã:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
Bây giờ hãy kiểm tra tệp cấu hình sysctl bằng lệnh sau.
Mã:
sysctl -f /etc/sysctl.conf
Mã:
sysrc gateway_enable="YES"
Mã:
khởi động lại
Bây giờ chuyển tiếp cổng trên hệ thống FreeBSD đã được bật.
Bước 7 - Thiết lập máy khách
Trong bước này, chúng ta sẽ tạo cấu hình mới '.ovpn' cho máy khách.Đi tới thư mục '/usr/local/etc/openvpn/client' và tạo cấu hình mới 'client01.ovpn'.
Mã:
cd /usr/local/etc/openvpn/client/
vim client01.ovpn
Mã:
clientdev tunproto udpremote xxx.xxx.xxx.xxx 1194ca ca.crtcert client01.crtkey client01.keycipher AES-256-CBCauth SHA512auth-nocachetls-version-min 1.2tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256resolv-retry infinitecompress lzonobindpersist-keypersist-tunmute-replay-warningsverb 3
Bây giờ hãy tải xuống tất cả các chứng chỉ, khóa và cấu hình bên trong thư mục '/usr/local/etc/openvpn/client' vào máy tính cục bộ của bạn.
Bước 8 - Kiểm tra
Trong bước này, chúng ta sẽ kết nối với máy chủ VPN bằng cấu hình 'client01.ovpn' từ máy tính cục bộ.Sau khi tải xuống các chứng chỉ và cấu hình, hãy đến thư mục tải xuống và kết nối với máy chủ openvpn bằng lệnh như bên dưới.
Mã:
openvpn --config client01.ovpn
Mã:
ifconfig tun0
Tiếp theo, chúng ta sẽ kiểm tra để ping máy chủ OpenVPN bằng địa chỉ IP nội bộ của nó.
Mã:
ping -c3 10.5.5.1
Sau đó, hãy kiểm tra kết nối internet bằng lệnh curl bên dưới.
Mã:
curl ipinfo.io
Kết quả là quá trình cài đặt và cấu hình máy chủ OpenVPN trên FreeBSD 12.0 đã hoàn tất thành công.