Phước

Phước

2023-09-27 14:45:57

Hướng dẫn cài đặt OpenVPN trên CentOS 7

Một Mạng Riêng Ảo (VPN - Virtual Private Network) mã hóa tất cả lưu lượng mạng, che giấu người dùng và bảo vệ họ khỏi các mạng không đáng tin cậy. Nó có thể cung cấp một kết nối an toàn đến mạng của một công ty, vượt qua các hạn chế địa lý và cho phép bạn duyệt web bằng các mạng Wi-Fi công cộng trong khi giữ cho dữ liệu của bạn được bảo mật.

OpenVPN là một giải pháp Mạng Riêng Ảo (VPN) hoàn chỉnh, mã nguồn mở dựa trên Giao thức Lớp Ảo Bảo Mật (SSL - Secure Socket Layer).

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt OpenVPN trên server CentOS 7 và kết nối vào OpenVPN từ một client.

Yêu cầu:

  • Một server chạy CentOS 7;
  • Một account user có quyền root;
  • Truy cập vào cửa sổ dòng lệnh/terminal;
  • Máy client mà từ đó bạn sẽ kết nối với máy chủ OpenVPN.

Bước 1: Cài đặt OpenVPN

1. Cập nhật repositories vả packages CentOS bằng cách sau:

yum update -y

2. Bạn không thể tải gói OpenVPN từ kho lưu trữ mặc định của CentOS. Tuy nhiên, OpenVPN có sẵn trong kho lưu trữ Extra Packages for Enterprise Linux (EPEL). Để bật kho lưu trữ EPEL, hãy chạy lệnh sau:

yum install epel-release -y

3. Cập nhật repositories một lần nữa:

yum update -y

4. Cài đặt OpenVPN:

yum install -y openvpn

Bước 2: Cài đặt Easy RSA

Bước tiếp theo là xây dựng một Cơ sở Hạ tầng Khóa Công khai (PKI - Public Key Infrastructure). Để làm điều này, bạn cần cài đặt EasyRSA, một tiện ích dòng lệnh giúp tạo và quản lý một Đơn vị Cấp phát Chứng chỉ (CA - Certificate Authority) cho PKI.

Easy RSA giúp bạn thiết lập một Đơn vị Cấp phát Chứng chỉ (CA) nội bộ và tạo các cặp khóa SSL để bảo vệ các kết nối VPN.

1. Để tải gói Easy RSA, sử dụng lệnh wget. Nếu bạn chưa có wget trên hệ thống CentOS của bạn, hãy cài đặt nó bằng cách chạy lệnh sau:

yum install -y wget

2. Tính đến thời điểm viết bài này, phiên bản mới nhất của Easy RSA là 3.1.1, chúng ta sẽ tải về phiên bản này. Để sử dụng một phiên bản khác, hãy kiểm tra trang phát hành của Easy RSA trên GitHub:

wget https://github.com/OpenVPN/easy-rsa/archive/v3.1.1.tar.gz

3. Tiếp theo, giải nén folder:

tar -xf v3.1.1.tar.gz

4. Tạo và di chuyển sang thư mục openvpn:

cd /etc/openvpn/

5. Sau đó tạo thư mục con easy-rsa trong đường dẫn /etc/openvpn:

mkdir /etc/openvpn/easy-rsa

6. Di chuyển thư mục đã giải nén vào /etc/openvpn/easy-rsa:

mv /root/easy-rsa-3.1.1 /etc/openvpn/easy-rsa

Để kiểm tra xem bạn đã di chuyển mọi thứ từ thư mục easy-rsa-3.1.1 thành công hay chưa, hãy di chuyển vào thư mục easy-rsa bằng lệnh cd /etc/openvpn/easy-rsa và liệt kê nội dung bằng lệnh ls. Bạn nên thấy một danh sách các tệp và thư mục, như trong hình ảnh dưới đây.

[root@test-vpn easy-rsa]# ls
build      COPYING.md  doc       easy-rsa-3.1.1  Licensing   README.md             release-keys  wop-test.sh
ChangeLog  distro      easyrsa3  KNOWN_ISSUES    op-test.sh  README.quickstart.md  wop-test.bat

Bước 3: Cấu hình OpenVPN

Sau khi bạn đã cài đặt OpenVPN và Easy RSA, bạn có thể tiếp tục cấu hình máy chủ OpenVPN. Hướng dẫn trong phần này sẽ giúp bạn thiết lập cấu hình cơ bản. Bạn có thể điều chỉnh nó theo nhu cầu của mình. Trước khi chạy bất kỳ lệnh nào, đảm bảo quay lại thư mục gốc. Để làm điều này, gõ cd trong cửa sổ terminal và nhấn Enter.

1. Bước đầu tiên là sao chép tệp server.conf mẫu từ thư mục tài liệu của OpenVPN:

cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn

2. Sau đó, mở tệp cấu hình đã sao chép bằng trình soạn thảo văn bản bạn chọn:

vim etc/openvpn/server.conf

Lệnh mở tệp cấu hình OpenVPN mẫu. Các nhận xét trong tệp bắt đầu bằng hashtag # hoặc dấu chấm phẩy ;.

#################################################
# Sample OpenVPN 2.0 config file for            #
# multi-client server.                          #
#                                               #
# This file is for the server side              #
# of a many-clients <-> one-server              #
# OpenVPN configuration.                        #
#                                               #
# OpenVPN also supports                         #
# single-machine <-> single-machine             #
# configurations (See the Examples page         #
# on the web site for more info).               #
#                                               #
# This config should work on Windows            #
# or Linux/BSD systems.  Remember on            #
# Windows to quote pathnames and use            #
# double backslashes, e.g.:                     #
# "C:\\Program Files\\OpenVPN\\config\\foo.key" #
#                                               #
# Comments are preceded with '#' or ';'         #
#################################################

# Which local IP address should OpenVPN
# listen on? (optional)
;local a.b.c.d

# Which TCP/UDP port should OpenVPN listen on?
# If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one.  You will need to
# open up this port on your firewall.
port 1194

3. Để thiết lập cấu hình cơ bản, bạn cần bỏ ghi chú các dòng sau bằng cách xóa dấu chấm phẩy.

  • topology subnet (đặt OpenVPN để hoạt động như một mạng con)
  • push "redirect-gateway def1 bypass-dhcp" (hướng dẫn máy khách chuyển hướng lưu lượng qua máy chủ OpenVPN)
  • push "dhcp-option DNS 208.67.222.222" (sử dụng máy chủ DNS OpenDNS để kết nối với OpenVPN)
  • push "dhcp-option DNS 208.67.220.220" (sử dụng máy chủ DNS OpenDNS để kết nối với OpenVPN)
  • user nobody (chạy OpenVPN mà không cần đặc quyền)
  • group nobody (chạy OpenVPN mà không cần đặc quyền)

Sau đó, tạo một khóa mã hóa tĩnh để bật xác thực TLS. Để làm điều này, tìm dòng tls-auth ta.key 0 và chú thích nó bằng cách thêm ; phía trước nó. Sau đó, thêm một dòng mới phía dưới nó:

tls-crypt myvpn.tlsauth

5. Lưu lại và thoát file config

6. Cuối cùng, tạo khóa mã hóa tĩnh được chỉ định trong tệp bằng lệnh sau:

openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth

Bước 4: Tạo Keys and Certificates

1. Tạo một tệp cấu hình vars bằng tệp vars.example đã lưu trong thư mục /easy-rsa/easyrsa3. Di chuyển vào thư mục đã đề cập bằng cách sử dụng lệnh sau:

cd /etc/openvpn/easy-rsa/easyrsa3

2. Bạn có thể liệt kê nội dung bằng lệnh ls để kiểm tra xem bạn có tệp vars.example không.

[root@test-vpn easyrsa3]# ls
easyrsa  openssl-easyrsa.cnf  pki  vars.example  x509-types

3. Copy file vars.example thành file vars

cp vars.example vars

4. Dùng vim mở file vars:

vim vars

5. Tìm các dòng được liệt kê dưới đây.

#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "left Certificate Co"
#set_var EASYRSA_REQ_EMAIL "me@example.net"
#set_var EASYRSA_REQ_OU "My Organizational Unit"

6. Hãy bỏ comment (loại bỏ ký tự #) trên các dòng và thay thế các giá trị mặc định

7. Lưu và đóng file.

8. Xóa những key trước đó và khởi tạo 1 certificate authority mới:

./easyrsa clean-all

9. Bây giờ, bạn có thể chuyển sang build certificate authority bằng tập lệnh build-ca. Chạy lệnh:

./easyrsa build-ca

Lưu ý: Ở đây bạn sẽ được nhắc nhở nhập Key Passphrase và Common name cho certificate authority.

10. Tạo 1 key và certificate cho server

./easyrsa build-server-full server

11. Kế tiếp khởi tạo 1 file key exchange bằng thuật toán Diffie-Hellman;

./easyrsa gen-dh

12. Khởi tạo 1 certificate cho một client bằng command sau:

./easyrsa build-client-full clientvpn

13. Khi bạn đã tạo khóa và chứng chỉ, hãy sao chép chúng từ pki vào thư mục openvpn. Để làm như vậy, hãy điều hướng đến thư mục pki bằng cách chạy:

cd /etc/openvpn/easy-rsa/easyrsa3/pki

Bạn cũng cần copy 4 files sau:

  • ca.crt
  • dh.pem
  • ca.key
  • server.key

2 files đầu tiên  (ca.crt và dh.pem) được lưu trong thư mục pki; 2 files còn lại ca.key và server.key được lưu trong thư mục pki/private

Hãy copy ca.crtdh.pem vào thư mục openvpn:

cp ca.crt dh.pem /etc/openvpn

Sau đó, di chuyển vào thư mục con private, copy ca.keyserver.key:

cd private
cp ca.key server.key/etc/openvpn

Bước 5: Cấu hình Firewall

Đây là server chúng ta thực hiện test nên sẽ bỏ qua các rule iptables như bên dưới:

[root@test-vpn openvpn]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chúng ta cần routing với network với bảng NAT thêm 1 rule POSTROUTING với source là dãy IP default của OpenVPN là 10.8.0.0/24 (bạn có thể thay đổi với file config của OpenVPN), output sẽ đi qua card mạng ra ngoài Internet và chúng ta dùng MASQUERADE. Câu lệnh iptables hoàn chỉnh cho việc routing như sau:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Chuyển sang định tuyến tất cả lưu lượng truy cập web từ client đến địa chỉ IP của server bằng cách bật chuyển tiếp IP. Mở tệp sysctl.conf:

vi /etc/sysctl.conf

Thêm dòng sau đây vào file:

net.ipv4.ip_forward = 1

Cuối cùng restart service network

systemctl restart network.service

Bước 6: Start OpenVPN

Chúng ta start service bằng command sau:

systemctl -f start openvpn@server.service

Sau đó, enable nó bằng command sau:

systemctl -f enable openvpn@server.service

Xác nhận service đã hoạt động:

systemctl status openvpn@server.service

 

Hướng dẫn cài đặt OpenVPN trên CentOS 7
0 Likes0 Comments