Hướng dẫn cách cài đặt và cấu hình OpenVPN trên CentOS 7

Hướng dãn cách cài đặt và cấu hình OpenVPN - ứng dụng open source phổ biến, dùng để triển khai Virtual Private Network, trên CentOS 7.

Chuẩn bị:

  • CenOS 7 Server.
  • Quyền truy cập root access.
  • Domain hoặc subdomain phân giải ra Server của bạn để sử dụng Certificates.

Do OpenVPN không có sẵn trong Repository mặc định của CentOS 7. Vì vậy chúng ta cần phải cài đặt Enterprise Linux (EPEL) repository. Sử dụng lệnh sau để cài đặt EPEL repository.

yum install epel-release

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

Đầu tiên, chúng ta cần tiến hành cài đặt OpenVPN bằng cách sử dụng dòng lệnh :

yum install openvpn –y

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

Để tạo các cặp khóa SSL thực hiện mã hóa bảo mật cho VPN. Nhập vào lệnh sau :

yum install easy-rsa –y

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

Tiến hành copy file mẫu sampleserver.conf để thực hiện cấu hình :

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

Mở và chỉnh sửa file :

vi /etc/openvpn/server.conf

Bỏ comment tất cả các dòng có trong file.

Chúng ta cần thay đổi tên tệp dh thành dh2048.pem. Bởi vì độ dài mã hóa Diffie-Hellman mặc định cho Easy RSA sẽ là 2048 byte. Bước sau đó chúng ta sẽ tiến hành tạo key.

dh dh2048.pem

Tiếp theo, bỏ comment dòng push “redirect-gateway def1 bypass-dhcp”, dòng này có ý nghĩa thông báo cho các máy client chuyển hướng traffic về thông qua OpenVPN.

push "redirect-gateway def1 bypass-dhcp"

Tiếp theo, chúng ta cần cung cấp thông tin DNS Server cho máy client, vì DNS Server của ISP sẽ không thể sử dụng. Ở đây, chúng ta sử dụng DNS Server của Google là 8.8.8.8 và 8.8.4.4 .

Để thực hiện, uncomment dòng push “dhcp-option DNS “ và update lại DNS :

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"

Đổi User và Group sang Nobody.

user nobody

group nobody

Save và đóng file cấu hình OpenVPN.

Bước 4: Generating Keys và Certificates

Bây giờ chúng ta sẽ tiến hành tạo key và certificate. Easy RSA sẽ cài đặt một vài Script để tạo ra key và certificate.

Tạo thư mục chứa key, nhập vào dòng lệnh :
mkdir -p /etc/openvpn/easy-rsa/keys
Copy generation script của key và certificate vào directory.
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
Tiếp theo, chỉnh sửa những giá trị mặc định có trong Script, để người dùng không phải mất thời gian nhập lại mỗi lần. Mở file bằng lệnh vi :
vi /etc/openvpn/easy-rsa/vars
Thay đổi những giá trị bắt đầu bằng KEY_. Cập nhật các giá trị sau đây để chính xác cho hệ thống của bạn. Một số giá trị quan trọng cần được thay đổi cẩn thận, đó là :

KEY_NAME: có thể nhập vào tên máy chủ tại đây.

KEY_CN: nhập vào domain hoặc subdomain phân giải ra địa chỉ IP Server của bạn.

Kết quả trả về dưới đây là một ví dụ:

. . .

# These are the default values for fields

# which will be placed in the certificate.

# Don't leave any of these fields blank.

export KEY_COUNTRY="US"

export KEY_PROVINCE="NY"

export KEY_CITY="New York"

export KEY_ORG="anninhmang"

export KEY_EMAIL="jijojamestj@gmail.com"

export KEY_OU="Community"

# X509 Subject Field

export KEY_NAME="server"

. . .

export KEY_CN=openvpn.anninhmang.com

. . .
Cấu hình OpenSSL có thể không load lên được do không phát hiện được phiên bản. Để tránh vấn đề này chúng ta hãy bỏ số của phiên bản trong tên file của OpenSSL :
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Tiếp theo, tiến hành tạo key và Certificates. Di chuyển đến thư mục của easy-rsa :
cd /etc/openvpn/easy-rsa
source ./vars

Sau đó, tiến hành xóa toàn bộ key và certificate có trong folder này, để có thể tạo chứng chỉ Certificate của chúng ta:

./clean-all

Khi build các chứng chỉ này, người dùng sẽ được yêu cầu nhập các thông tin vào var file. Như đã trình bày ở trên, chúng ta đã sửa giá trị mặc định của file var này, vì thế không cần phải nhập vào nữa. Người dùng chỉ đơn giản bấm Enter mỗi lần.

./build-ca

Tiếp theo, chúng ta sẽ tạo ra key và certificate cho server. Bấm Enter cho mỗi câu hỏi giống ở bước trên.

./build-key-server server

Bây giờ chúng ta sẽ tạo tập tin trao đổi khóa Diffie-Hellman. Lệnh này sẽ mất một khoảng thời gian để hoàn thành:

./build-dh

Vậy là, chúng ta đã hoàn thành quá trình tạo key và Certificate cho server. Copy tất cả chúng vào thư mục OpenVPN :

cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Để chứng thực các client cũng cần phải có certificate. Những key và certificate này sẽ được share cho các máy client, nhưng cách tốt nhất là tạo riêng từng khóa và chứng chỉ cho mỗi client mà chúng ta muốn thực hiện kết nối.

Đảm bảo rằng mỗi khóa này đều có tên mô tả riêng, ở đây do chỉ có 1 máy client nên người viết sẽ gọi luôn là client:

cd /etc/openvpn/easy-rsa
./build-key client
That's it for keys and certificates.

Bước 5: Routing

Cài đặt iptable và disable firewalld bằng dòng lệnh :

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables –flush

Tiếp theo, add một rule vào iptables, để cho phép định tuyến tới subnet của OpenVPN, và save rule này lại.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

Tiếp tục, enable IP Forwarding trong sysctl. Mở sysctl.conf trong vi editor :

vi /etc/sysctl.conf

Thêm dòng này vào đầu file :

net.ipv4.ip_forward = 1

Để IP forwarding có hiệu lực, chúng ta cần restart lại network service. Nhập vào dòng lệnh :

systemctl restart network.service

Bước 6: Khởi chạy OpenVPN

Như vậy là chúng ta đã hoàn thành cài đặt và bắt đầu có thể tiến hành khởi chạy OpenVPN. Sử dụng dòng lệnh :

systemctl -f enable openvpn@server.service

Khởi chạy OpenVPN :

systemctl start openvpn@server.service

Như vậy là chúng ta đã hoàn thành xong phần cài đặt và cấu hình OpenVPN ở server. Tiếp theo thực hiện kết nối máy client vào server :

Bước 7: Cấu hình Client

Để kết nối, chúng ta cần một bản copy của ca certificate từ phía server, cùng với client key và certificate.

Xác định vị trí chứa những file này trong server. Ở đây chúng ta đã đặt tên là “ Client “ là tên mô tả của client key.

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key

Copy những file này vào máy client. Để thực hiện, chúng ta dùng SFTP hoặc lên server mở file này lên, copy nội dung của file này vào một file mới ở máy client và chọn save.

Chúng ta sẽ tạo một file tên client.ovpn. Đây là file cấu hình cho OpenVPN Client, thông báo cho máy client cách kết nối vào FTP Server.

Bạn sẽ cần thay đổi dòng đầu tiên thành tên mà chúng ta đã gán cho client trong key và certificate. Ở trường hợp này, tên là client.

Bạn cũng cần update lại địa chỉ IP từ your_server_ip thành địa chỉ IP chính xác của Server. Port 1994 có thể giữ nguyên.

Đảm bảo đường dẫn đến key và certificate là chính xác.

client

dev tun

proto udp

remote your_server_ip 1194

resolv-retry infinite

nobind

persist-key

persist-tun

comp-lzo

verb 3

ca /path/to/ca.crt

cert /path/to/client.crt

key /path/to/client.key

Như vậy là file này đã có thể dùng được cho bất kì máy Client nào sử dụng OpenVPN để kết nối vào server.

Nguồn: An Ninh Mạng