Cách cài đặt OpenVPN Server và Client với Easy-RSA 3 trên CentOS 7

theanh

Administrator
Nhân viên
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ạ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ư dựa trên chứng chỉ, khóa được chia sẻ trước 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 CentOS 7.6. Và chúng ta sẽ triển khai xác thực OpenVPN dựa trên chứng chỉ.

Điều kiện tiên quyết​

  • CentOS 7.6
  • Quyền root

Chúng ta sẽ làm gì?​

  1. Cài đặt OpenVPN và Easy-RSA
  2. Cấu hình Easy-RSA 3 Vars
  3. Xây dựng khóa OpenVPN
  4. Cấu hình máy chủ OpenVPN
  5. Cấu hình Firewalld và bật chuyển tiếp cổng
  6. Thiết lập máy khách
  7. Kiểm tra

Bước 1 - Cài đặt OpenVPN và Easy-RSA​

Trong hướng dẫn này, chúng ta sẽ sử dụng phiên bản mới nhất của máy chủ centos (7.5) và chúng ta sẽ sử dụng OpenVPN 2.4 với easy-rsa 3. Trước khi cài đặt OpenVPN và Các gói easy-rsa, hãy đảm bảo kho lưu trữ 'epel' được cài đặt trên hệ thống. Nếu bạn không có, hãy cài đặt kho lưu trữ epel bằng lệnh yum bên dưới.
Mã:
yum install epel-release -y
Bây giờ hãy cài đặt OpenVPN 2.4 với easy-rsa 3 trên hệ thống.
Mã:
yum install openvpn easy-rsa -y
Khi quá trình cài đặt hoàn tất, hãy kiểm tra phiên bản openvpn và easy-rsa.
Mã:
openvpn --version
ls -lah /usr/share/easy-rsa/


OpenVPN 2.4 với easy-rsa 3 đã được cài đặt.

Bước 2 - Cấu hình Easy-RSA 3​

Trong bước này, chúng ta sẽ cấu hình easy-rsa 3 bằng cách tạo tệp 'vars' mới. Tệp 'vars' chứa các thiết lập Easy-RSA 3.

Đi đến thư mục '/etc/openvpn/' và sao chép tập lệnh 'easy-rsa'.
Mã:
cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/
Bây giờ hãy đi đến thư mục 'easy-rsa/3/' và tạo tệp vars mới bằng vim.
Mã:
cd /etc/openvpn/easy-rsa/3/
vim vars
Dán cấu hình vars easy-rsa 3 bên dưới.
Mã:
set_var EASYRSA "$PWD"set_var EASYRSA_PKI "$EASYRSA/pki"set_var EASYRSA_DN "cn_only"set_var EASYRSA_REQ_COUNTRY "NHẬN DẠNG"set_var EASYRSA_REQ_PROVINCE "Jakarta"set_var EASYRSA_REQ_CITY "Jakarta"set_var EASYRSA_REQ_ORG "CƠ QUAN CHỨNG NHẬN hakase-labs"set_var EASYRSA_REQ_EMAIL "[emailprotected]"set_var EASYRSA_REQ_OU "HAKASE-LABS EASY CA"set_var EASYRSA_KEY_SIZE 2048set_var EASYRSA_ALGO rsaset_var EASYRSA_CA_EXPIRE 7500set_var EASYRSA_CERT_EXPIRE 365set_var EASYRSA_NS_SUPPORT "không"set_var EASYRSA_NS_COMMENT "CƠ QUAN CHỨNG NHẬN HAKASE-LABS"set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"set_var EASYRSA_DIGEST "sha256"
Lưu và thoát.

Lưu ý:
  • Thay đổi giá trị của các biến theo nhu cầu.
  • Tăng 'EASYRSA_KEY_SIZE' để bảo mật tốt hơn.
  • Thay đổi 'EASYRSA_CA_EXPIRE' và 'EASYRSA_CERT_EXPIRE'.
Bây giờ hãy thực thi tệp 'vars' bằng cách thay đổi quyền của tệp.
Mã:
chmod +x vars
Tệp vars cho cài đặt Easy-RSA 3 đã được tạo.


Bước 3 - Xây dựng Khóa OpenVPN​

Trong bước này, chúng ta sẽ xây dựng các khóa OpenVPN dựa trên tệp easy-rsa 3 'vars' mà chúng ta đã tạo. Chúng ta sẽ xây dựng khóa CA, khóa Máy chủ và Khóa Máy khách, tệp DH và CRL PEM.

Chúng ta sẽ xây dựng tất cả các khóa đó bằng dòng lệnh 'easyrsa'. Đi đến thư mục '/etc/openvpn/easy-rsa/3'.
Mã:
cd /etc/openvpn/easy-rsa/3/

Khởi tạo và xây dựng CA​

Trước khi xây dựng bất kỳ khóa nào, chúng ta cần khởi tạo thư mục PKI và xây dựng khóa CA.

Khởi tạo thư mục PKI và xây dựng khóa CA bằng lệnh bên dưới.
Mã:
./easyrsa init-pki
./easyrsa build-ca
Bây giờ hãy nhập mật khẩu cho khóa CA của bạn và bạn sẽ nhận được các tệp 'ca.crt' và 'ca.key' trong thư mục 'pki'.


Xây dựng khóa máy chủ​

Bây giờ chúng ta muốn xây dựng khóa máy chủ và chúng ta sẽ xây dựng khóa máy chủ có tên 'hakase-server'.

Xây dựng khóa máy chủ 'hakase-server' bằng lệnh bên dưới.
Mã:
./easyrsa gen-req hakase-server nopass



Lưu ý:
  • nopass = tùy chọn để vô hiệu hóa mật khẩu cho khóa 'hakase-server'.
Và ký khóa 'hakase-server' bằng chứng chỉ CA của chúng tôi.
Mã:
./easyrsa sign-req server hakase-server
Bạn sẽ được yêu cầu nhập mật khẩu 'CA', hãy nhập mật khẩu và nhấn Enter. Và bạn sẽ nhận được tệp chứng chỉ 'hakase-server.crt' trong thư mục 'pki/issued/'.



Xác minh tệp chứng chỉ bằng lệnh OpenSSL và đảm bảo không có lỗi.
Mã:
openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt
Tất cả các khóa chứng chỉ máy chủ đã được tạo. Khóa riêng của máy chủ nằm ở 'pki/private/hakase-server.key', còn chứng chỉ máy chủ nằm ở 'pki/issued/hakase-server.crt'.

Xây dựng khóa máy khách​

Bây giờ chúng ta cần xây dựng khóa cho máy khách. Chúng tôi sẽ tạo khóa máy khách mới có tên là 'client01'.

Tạo khóa 'client01' bằng lệnh bên dưới.
Mã:
./easyrsa gen-req client01 nopass


Bây giờ hãy ký khóa 'client01' bằng chứng chỉ CA của chúng tôi như bên dưới.
Mã:
./easyrsa sign-req client client01
Nhập 'yes' để xác nhận yêu cầu chứng chỉ máy khách, sau đó nhập mật khẩu CA.



Chứng chỉ máy khách có tên 'client01' đã được tạo, hãy xác minh chứng chỉ máy khách bằng lệnh openssl.
Mã:
openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Xây dựng Diffie-Hellman Khóa​

Hành động này sẽ mất nhiều thời gian, tùy thuộc vào độ dài khóa mà chúng ta đã chọn và entropy khả dụng trên máy chủ. Chúng ta sẽ sử dụng khóa có độ dài mà chúng ta xác định trên tệp 'vars'.

Tạo khóa Diffie-Hellman bằng lệnh bên dưới.
Mã:
./easyrsa gen-dh
Khóa DH đã được tạo, nằm tại thư mục 'pki'.


Tùy chọn: Tạo khóa CRL​

Khóa CRL (Danh sách thu hồi chứng chỉ) sẽ được sử dụng để thu hồi khóa máy khách. Nếu bạn có nhiều chứng chỉ máy khách trên máy chủ vpn của mình và bạn muốn thu hồi một số khóa, bạn chỉ cần thu hồi bằng lệnh easy-rsa.

Nếu bạn muốn thu hồi một số khóa, hãy chạy lệnh như bên dưới.
Mã:
./easyrsa recall someone
Sau đó tạo khóa CRL.
Mã:
./easyrsa gen-crl
Tệp PEM CRL đã được tạo trong thư mục 'pki' - sau đây là ví dụ trên máy chủ của tôi.


Sao chép tệp chứng chỉ​

Tất cả các chứng chỉ đã được tạo, bây giờ hãy sao chép các tệp chứng chỉ và tệp PEM.

Sao chép khóa máy chủ và chứng chỉ.
Mã:
cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/
Sao chép Khóa và Chứng chỉ client01.
Mã:
cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/
Sao chép Khóa DH và CRL.
Mã:
cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Bước 4 - Cấu hình OpenVPN​

Trong bước này, chúng ta sẽ tạo cấu hình mới 'server.conf' cho máy chủ openvpn.

Vào thư mục '/etc/openvpn/' và tạo tệp cấu hình mới 'server.conf' bằng vim.
Mã:
cd /etc/openvpn/
vim server.conf
Dán cấu hình máy chủ OpenVPN sau vào đó.
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 /etc/openvpn/server/ca.crtcert /etc/openvpn/server/hakase-server.crtkey /etc/openvpn/server/hakase-server.key#Khóa DH và CRLdh /etc/openvpn/server/dh.pemcrl-verify /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.10.1.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 60persist-keypersist-tuncomp-lzo yesdaemonuser nobodygroup nobody# Nhật ký OpenVPNlog-append /var/log/openvpn.logverb 3
Lưu và thoát.

Cấu hình cho OpenVPN đã được tạo.

Bước 5 - Bật Port-Forwarding và Cấu hình Routing Firewalld​

Trong bước này, chúng ta sẽ kích hoạt mô-đun hạt nhân chuyển tiếp cổng và cấu hình định tuyến 'Firewalld' cho OpenVPN.

Kích hoạt mô-đun hạt nhân chuyển tiếp cổng bằng cách chạy các lệnh sau.
Mã:
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
Tiếp theo, cấu hình định tuyến bằng Firewalld cho OpenVPN.

Thêm dịch vụ 'openvpn' vào dịch vụ danh sách firewalld và thêm giao diện 'tun0' vào vùng tin cậy firewalld.
Mã:
firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0
Bật 'MASQUERADE' trên vùng 'tin cậy' firewalld.
Mã:
firewall-cmd --permanent --zone=trusted --add-masquerade
Bật NAT cho địa chỉ IP nội bộ OpenVPN '10.10.1.0/24' thành địa chỉ IP bên ngoài 'SERVERIP'.
Mã:
SERVERIP=$(ip route get 84.200.69.80 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.10.1.0/24 -o $SERVERIP -j MASQUERADE
Và tải lại firewalld.
Mã:
firewall-cmd --reload
Chuyển tiếp cổng và định tuyến Firewalld đã hoàn tất, bây giờ hãy khởi động dịch vụ openvpn và cho phép nó tự động khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start openvpn@server
systemctl enable openvpn@server


Kiểm tra bằng các lệnh bên dưới.
Mã:
netstat -plntu
systemctl status openvpn@server
Máy chủ OpenVPN đang hoạt động trên cổng giao thức udp '1194'.


Bước 6 - Thiết lập máy khách OpenVPN​

Vào thư mục '/etc/openvpn/client' và tạo tệp cấu hình máy khách openvpn mới 'client01.ovpn' bằng vim.
Mã:
cd /etc/openvpn/client
vim client01.ovpn
Dán cấu hình máy khách OpenVPN sau vào đó.
Mã:
clientdev tunproto udpremote 139.xx.xx.xx 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 infinite
compress lzo
nobindpersist-keypersist-tunmute-replay-warningsverb 3
Lưu và thoát.

Bây giờ hãy nén thư mục '/etc/openvpn/client' thành tệp 'zip' hoặc 'tar.gz' và tải xuống tệp đã nén bằng scp từ máy cục bộ của bạn máy tính.

Nén thư mục '/etc/openvpn/client' vào tệp 'client01.tar.gz'.
Mã:
cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Mã:
scp [emailprotected]:/etc/openvpn/client01.tar.gz .

Bước 7 - Kiểm tra OpenVPN​

Kiểm tra trên Máy khách.

- Trên Linux​

Cài đặt gói OpenVPN và nếu bạn muốn cấu hình GUI, hãy cài đặt OpenVPN network-manager.
Mã:
sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y
Nếu bạn muốn kết nối bằng shell terminal, hãy chạy lệnh OpenVPN bên dưới.
Mã:
openvpn --config client01.ovpn
Khi bạn đã kết nối với OpenVPN, hãy mở tab terminal mới và kiểm tra kết nối bằng lệnh curl.
Mã:
curl ifconfig.io
Và bạn sẽ nhận được địa chỉ IP của máy chủ OpenVPN.

Trên Mac OS​

Tải xuống Tunnelblick và cài đặt.

Giải nén tệp 'client01.tar.gz' và đổi tên thư mục 'client' thành 'client01.tblk'.
Mã:
tar -xzvf client01.tar.gz
mv client client01.tblk
Nhấp đúp vào 'client01.tblk' và Tunnelblick sẽ tự động phát hiện cấu hình OpenVPN rồi nhập.

Bây giờ hãy kết nối thông qua Tunnelblick trên thanh trên cùng.

Trên Windows​

Tải xuống máy khách openvpn cho windows và nhập cấu hình.

Tham khảo​

https://openvpn.net/
 
Back
Bên trên