Kiến thức Hữu ích 😍

Hướng Dẫn Cài Đặt OpenVPN Trên Ubuntu 20.04 An Toàn & Chi Tiết


Trong kỷ nguyên số, tại sao việc bảo mật dữ liệu trực tuyến lại trở nên quan trọng hơn bao giờ hết? Mỗi ngày, chúng ta thực hiện vô số giao dịch, trao đổi thông tin nhạy cảm qua internet, từ email công việc đến tài khoản ngân hàng. Việc kết nối vào các mạng Wi-Fi công cộng không an toàn tiềm ẩn rất nhiều rủi ro, tạo cơ hội cho tin tặc đánh cắp dữ liệu cá nhân, mật khẩu và thông tin tài chính của bạn. Đây là một mối đe dọa hiện hữu mà không ai trong chúng ta nên xem nhẹ.

Hình minh họa

Để giải quyết vấn đề này, OpenVPN nổi lên như một giải pháp mạng riêng ảo (VPN là gì) hàng đầu. Đây là một công nghệ mã nguồn mở, miễn phí và cực kỳ an toàn, được cộng đồng tin dùng rộng rãi để tạo ra các kết nối được mã hóa mạnh mẽ. OpenVPN giúp bạn che giấu địa chỉ IP thật, bảo vệ toàn bộ dữ liệu truyền đi khỏi những con mắt tò mò. Trong bài viết này, AZWEB sẽ hướng dẫn bạn từng bước chi tiết cách cài đặt và cấu hình một máy chủ OpenVPN trên hệ điều hành Ubuntu 20.04, giúp bạn tự tay xây dựng một pháo đài bảo mật cho riêng mình.

Yêu cầu hệ thống và chuẩn bị trước khi cài đặt trên Ubuntu 20.04

Trước khi bắt đầu hành trình xây dựng máy chủ VPN, việc chuẩn bị kỹ lưỡng là bước đầu tiên và quan trọng nhất. Đảm bảo hệ thống của bạn đáp ứng các yêu cầu cần thiết sẽ giúp quá trình cài đặt diễn ra suôn sẻ và tránh được những lỗi không đáng có. Hãy cùng AZWEB kiểm tra các yếu-tố-cần-thiết ngay sau đây.

Yêu cầu phần cứng và phần mềm tối thiểu

Để cài đặt OpenVPN trên Ubuntu 20.04, bạn không cần một hệ thống quá mạnh mẽ, nhưng cần đảm bảo các thông số tối thiểu. Về phần mềm, bạn cần một máy chủ đang chạy phiên bản Ubuntu 20.04 (Focal Fossa) sạch. Bạn có thể sử dụng các dịch vụ VPS của AZWEB để có một môi trường lý tưởng và ổn định.

Hình minh họa

Về phần cứng, các yêu cầu khá khiêm tốn. Một máy chủ ảo (VPS) với 1 CPU, ít nhất 512MB RAM và khoảng 10GB dung lượng ổ cứng là đã đủ để vận hành một máy chủ OpenVPN cho nhu cầu cá nhân hoặc nhóm nhỏ. Nếu bạn dự định có nhiều người dùng kết nối đồng thời, việc nâng cấp RAM lên 1GB hoặc cao hơn sẽ giúp đảm bảo hiệu suất tốt hơn.

Các bước chuẩn bị cần thiết

Sau khi đảm bảo yêu cầu về hệ thống, chúng ta cần thực hiện một vài bước chuẩn bị. Đầu tiên và quan trọng nhất là cập nhật hệ thống của bạn lên phiên bản mới nhất để vá các lỗ hổng bảo mật và đảm bảo tính tương thích. Hãy mở terminal và chạy lệnh: sudo apt update && sudo apt upgrade -y.

Hình minh họa

Tiếp theo, bạn cần cài đặt một số gói phụ thuộc cần thiết cho quá trình cài đặt và quản lý sau này, bao gồm curl, wget, và ca-certificates. Sử dụng lệnh sau để cài đặt chúng: sudo apt install curl wget ca-certificates -y. Cuối cùng, hãy chắc chắn rằng bạn đang thực hiện các lệnh với quyền root hoặc thông qua sudo, vì các thao tác cài đặt và cấu hình hệ thống đòi hỏi quyền quản trị cao nhất. Với những bước chuẩn bị này, bạn đã sẵn sàng để tiến vào phần cài đặt chính.

Hướng dẫn từng bước cài đặt phần mềm OpenVPN

Khi mọi thứ đã được chuẩn bị sẵn sàng, chúng ta sẽ bắt đầu quá trình cài đặt OpenVPN. Giai đoạn này bao gồm việc cài đặt các gói phần mềm cần thiết và thiết lập một hạ tầng khóa công khai (PKI) để quản lý chứng chỉ bảo mật. Đây là trái tim của hệ thống VPN, đảm bảo rằng chỉ những người dùng được xác thực mới có thể kết nối.

Cài đặt OpenVPN và Easy-RSA

Bắt đầu bằng việc cài đặt hai gói phần mềm chính: openvpneasy-rsa. OpenVPN là phần mềm máy chủ VPN, trong khi Easy-RSA là một bộ công cụ giúp bạn tạo và quản lý các chứng chỉ bảo mật một cách dễ dàng. Mở terminal và chạy lệnh sau để cài đặt cả hai:

sudo apt install openvpn easy-rsa -y

Hình minh họa

Lệnh này sẽ tự động tải về và cài đặt các gói cần thiết từ kho lưu trữ của Ubuntu. Quá trình này thường diễn ra khá nhanh chóng. Sau khi cài đặt hoàn tất, bạn đã có đầy đủ công cụ để bắt đầu xây dựng cơ quan cấp phát chứng chỉ (Certificate Authority là gì) của riêng mình.

Khởi tạo PKI để tạo chứng chỉ bảo mật

Hạ tầng khóa công khai (PKI) là nền tảng để tạo ra các cặp khóa và chứng chỉ, dùng để xác thực cả máy chủ và máy khách. Chúng ta sẽ sử dụng Easy-RSA để thực hiện việc này. Đầu tiên, hãy tạo một thư mục riêng cho Easy-RSA và sao chép các tệp cần thiết vào đó.

mkdir ~/easy-rsa

ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Tiếp theo, di chuyển vào thư mục vừa tạo và khởi tạo PKI. Thao tác này sẽ tạo ra cấu trúc thư mục cần thiết, bao gồm cả thư mục pki chứa các chứng chỉ và khóa của bạn.

Hình minh họa

cd ~/easy-rsa

./easyrsa init-pki

Bước cuối cùng trong phần này là xây dựng Certificate Authority (CA). CA đóng vai trò như một “cơ quan đăng ký” đáng tin cậy, có nhiệm vụ ký và xác nhận tất cả các chứng chỉ cho máy chủ và máy khách trong mạng VPN của bạn. Chạy lệnh sau để tạo CA. Tùy chọn nopass có nghĩa là khóa CA sẽ không được bảo vệ bằng mật khẩu, phù hợp cho các kịch bản tự động hóa, nhưng hãy cân nhắc yếu tố bảo mật.

./easyrsa build-ca nopass

Bạn sẽ được yêu cầu nhập một tên chung (Common Name) cho CA, bạn có thể nhấn Enter để dùng tên mặc định hoặc đặt một tên tùy ý. Giờ đây, bạn đã có một PKI hoàn chỉnh và sẵn sàng để cấp phát chứng chỉ.

Cấu hình chứng chỉ bảo mật và xác thực người dùng

Sau khi đã khởi tạo thành công Hạ tầng khóa công khai (PKI), bước tiếp theo là tạo ra các “giấy tờ tùy thân” kỹ thuật số cho máy chủ và máy khách. Các chứng chỉ này là chìa khóa để xác thực và thiết lập một kênh liên lạc được mã hóa an toàn. Chúng ta sẽ cùng nhau tạo ra từng loại chứng chỉ cần thiết.

Tạo và quản lý chứng chỉ server và client

Đầu tiên, chúng ta cần tạo một cặp khóa và một yêu cầu ký chứng chỉ (CSR) cho máy chủ OpenVPN. Tên server ở đây là tên chung (Common Name) của máy chủ, bạn có thể thay đổi nếu muốn nhưng hãy ghi nhớ nó. Sử dụng lệnh sau trong thư mục ~/easy-rsa:

./easyrsa gen-req server nopass

Sau khi tạo yêu cầu, chúng ta cần dùng CA đã tạo ở bước trước để ký và cấp phát chứng chỉ cho máy chủ. Lệnh này sẽ xác nhận yêu cầu server.req và tạo ra tệp chứng chỉ server.crt trong thư mục pki/issued/.

./easyrsa sign-req server server

Bạn sẽ được yêu cầu xác nhận chi tiết, hãy gõ yes và nhấn Enter. Tương tự, chúng ta cũng cần tạo chứng chỉ cho mỗi người dùng (client) sẽ kết nối vào VPN. Ví dụ, để tạo chứng chỉ cho client có tên là client1:

Hình minh họa

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

Lặp lại quy trình này cho mỗi người dùng bạn muốn cấp quyền truy cập. Cuối cùng, chúng ta cần tạo các tham số Diffie-Hellman (DH). Đây là một phần quan trọng của quá trình trao đổi khóa an toàn, giúp bảo vệ phiên kết nối khỏi bị nghe lén. Quá trình này có thể mất vài phút.

./easyrsa gen-dh

Sau khi hoàn tất, tất cả các tệp chứng chỉ và khóa cần thiết (ca.crt, server.crt, server.key, client1.crt, client1.key, dh.pem) đã được tạo và sẵn sàng để sử dụng.

Cách thiết lập xác thực người dùng bằng chứng chỉ

Cơ chế xác thực cốt lõi của OpenVPN trong cấu hình này dựa hoàn toàn vào hệ thống chứng chỉ mà chúng ta vừa tạo. Khi một máy khách cố gắng kết nối, máy chủ sẽ yêu cầu máy khách trình diện chứng chỉ của mình. Máy chủ sau đó sẽ kiểm tra xem chứng chỉ này có được ký bởi CA đáng tin cậy của nó hay không (chính là ca.crt mà chúng ta đã tạo).

Hình minh họa

Nếu chữ ký hợp lệ, kết nối sẽ được chấp nhận. Ngược lại, nếu chứng chỉ không hợp lệ, bị thu hồi, hoặc không được ký bởi CA, kết nối sẽ bị từ chối ngay lập tức. Cơ chế này đảm bảo rằng chỉ những người dùng sở hữu cặp khóa và chứng chỉ hợp lệ do bạn cấp phát mới có thể truy cập vào mạng riêng ảo. Trong các file cấu hình server.confclient.ovpn sau này, chúng ta sẽ chỉ định đường dẫn đến các tệp ca.crt, cert, và key để kích hoạt cơ chế xác thực này.

Thiết lập cấu hình máy chủ và máy khách OpenVPN

Với tất cả các chứng chỉ và khóa đã được tạo, giờ là lúc chúng ta lắp ráp chúng lại với nhau bằng cách tạo các tệp cấu hình. Tệp cấu hình sẽ chỉ dẫn cho máy chủ OpenVPN cách hoạt động và cung cấp cho máy khách thông tin cần thiết để kết nối. Hãy cùng AZWEB đi vào chi tiết cấu hình cho cả hai phía.

Cấu hình server OpenVPN trên Ubuntu 20.04

Đầu tiên, chúng ta cần sao chép các tệp chứng chỉ và khóa cần thiết vào thư mục cấu hình của OpenVPN là /etc/openvpn/server/. Hãy thực hiện các lệnh sau:

sudo cp ~/easy-rsa/pki/ca.crt /etc/openvpn/server/

sudo cp ~/easy-rsa/pki/issued/server.crt /etc/openvpn/server/

sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/server/

sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/server/

Tiếp theo, tạo một tệp cấu hình mới tên là server.conf trong thư mục /etc/openvpn/server/. Bạn có thể dùng trình soạn thảo văn bản như nano:

Hình minh họa

sudo nano /etc/openvpn/server/server.conf

Dưới đây là một mẫu cấu hình cơ bản mà bạn có thể sao chép và dán vào tệp. Các thông số quan trọng bao gồm cổng lắng nghe (port 1194), giao thức (proto udp), thiết bị mạng ảo (dev tun), đường dẫn đến các tệp chứng chỉ, và dải địa chỉ IP cho mạng VPN (server 10.8.0.0 255.255.255.0). Cấu hình push "redirect-gateway def1 bypass-dhcp" sẽ định tuyến toàn bộ lưu lượng truy cập của client qua máy chủ VPN, tăng cường bảo mật.

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3

Sau khi lưu tệp cấu hình, chúng ta cần kích hoạt IP forwarding để cho phép máy chủ chuyển tiếp gói tin từ client ra internet. Mở tệp sysctl.conf và bỏ ghi chú dòng net.ipv4.ip_forward=1. Cuối cùng, khởi động và kích hoạt dịch vụ OpenVPN:

sudo systemctl start openvpn-server@server

sudo systemctl enable openvpn-server@server

Cấu hình file client OpenVPN

Việc cấu hình cho client đơn giản hơn rất nhiều. Chúng ta cần tạo một tệp cấu hình duy nhất có đuôi .ovpn chứa tất cả thông tin cần thiết. Tệp này sẽ được gửi cho người dùng cuối. Hãy tạo một thư mục để quản lý các tệp client, ví dụ ~/client-configs/files.

Tạo một tệp cấu hình mẫu, ví dụ base.conf, với nội dung sau. Hãy thay your_server_ip bằng địa chỉ IP công khai của máy chủ Ubuntu của bạn.

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3

Bây giờ, hãy tạo một kịch bản để tự động tạo tệp .ovpn hoàn chỉnh cho client. Tệp này sẽ nhúng chứng chỉ CA, chứng chỉ và khóa của client vào bên trong. Bạn có thể tạo một script make_config.sh để thực hiện việc này, kịch bản sẽ đọc tệp base.conf và nối thêm nội dung của các tệp ca.crt, client1.crt, và client1.key. Sau khi chạy script, bạn sẽ có một tệp client1.ovpn hoàn chỉnh. Tệp này có thể được chia sẻ an toàn cho người dùng để họ nhập vào ứng dụng OpenVPN Client trên máy tính hoặc điện thoại và bắt đầu kết nối.

Kiểm tra kết nối VPN và khắc phục sự cố cơ bản

Sau khi đã hoàn tất việc cài đặt và cấu hình, bước tiếp theo là kiểm tra xem máy chủ OpenVPN có đang hoạt động đúng cách hay không và đảm bảo client có thể kết nối thành công. Giai đoạn này cũng bao gồm việc nhận biết và xử lý một số sự cố phổ biến có thể xảy ra. Hãy cùng AZWEB xác minh lại toàn bộ hệ thống.

Các bước kiểm tra trạng thái dịch vụ OpenVPN

Để kiểm tra xem dịch vụ OpenVPN trên máy chủ có đang chạy hay không, bạn có thể sử dụng lệnh systemctl. Lệnh này sẽ cung cấp thông tin chi tiết về trạng thái hiện tại của tiến trình, bao gồm việc nó có đang “active (running)” hay không và hiển thị một vài dòng log gần nhất.

Hình minh họa

sudo systemctl status openvpn-server@server

Nếu dịch vụ đang chạy bình thường, bạn sẽ thấy output màu xanh lá cây với trạng thái “active”. Nếu có lỗi, output sẽ hiển thị thông báo lỗi màu đỏ, giúp bạn xác định vấn đề. Ngoài ra, bạn có thể kiểm tra xem giao diện mạng ảo tun0 đã được tạo hay chưa bằng lệnh ip addr show tun0. Nếu giao diện này tồn tại và có địa chỉ IP trong dải 10.8.0.0, điều đó có nghĩa là máy chủ đã khởi tạo thành công mạng VPN.

Khắc phục lỗi thường gặp khi kết nối VPN

Trong quá trình vận hành, bạn có thể gặp một số lỗi phổ biến. Dưới đây là cách khắc phục một vài trong số chúng:

  • Lỗi Firewall: Đây là nguyên nhân phổ biến nhất khiến client không thể kết nối. Hãy chắc chắn rằng bạn đã cho phép lưu lượng truy cập qua cổng OpenVPN (mặc định là 1194/UDP) trên tường lửa của máy chủ. Nếu dùng UFW, bạn có thể thực hiện bằng lệnh sudo ufw allow 1194/udp. Bạn cũng cần thiết lập quy tắc NAT để cho phép client truy cập internet: sudo ufw route allow in on tun0 out on eth0 (thay eth0 bằng tên card mạng chính của bạn). Tham khảo thêm về Firewall là gì để hiểu rõ cách hoạt động và cấu hình tường lửa.
  • Lỗi chứng chỉ: Nếu client nhận được lỗi liên quan đến xác thực TLS, hãy kiểm tra lại xem tệp cấu hình .ovpn có chứa đúng chứng chỉ CA, chứng chỉ và khóa của client hay không. Đảm bảo rằng chứng chỉ của client đã được ký bởi CA trên máy chủ và chưa hết hạn.
  • Lỗi cấu hình IP: Client kết nối được nhưng không thể truy cập internet? Vấn đề có thể nằm ở thiết lập IP forwarding. Hãy kiểm tra lại tệp /etc/sysctl.conf để đảm bảo dòng net.ipv4.ip_forward=1 đã được kích hoạt. Sau khi thay đổi, hãy chạy sudo sysctl -p để áp dụng cấu hình.

Lưu ý bảo mật khi vận hành mạng VPN

Việc cài đặt thành công một máy chủ OpenVPN chỉ là bước khởi đầu. Để đảm bảo hệ thống của bạn luôn an toàn và hoạt động hiệu quả trong dài hạn, việc tuân thủ các nguyên tắc bảo mật là vô cùng quan trọng. Một hệ thống được cấu hình tốt kết hợp với các biện pháp bảo mật chủ động sẽ tạo ra một lá chắn vững chắc bảo vệ dữ liệu của bạn. Dưới đây là những khuyến nghị từ AZWEB để bạn vận hành mạng VPN một cách an toàn nhất.

Hình minh họa

Đầu tiên, hãy luôn giữ cho phần mềm OpenVPN và hệ điều hành Ubuntu của bạn được cập nhật thường xuyên. Các bản cập nhật thường chứa các bản vá cho những lỗ hổng bảo mật mới được phát hiện. Sử dụng lệnh sudo apt update && sudo apt upgrade định kỳ để đảm bảo hệ thống luôn ở trạng thái tốt nhất. Việc này giúp giảm thiểu rủi ro bị tấn công qua các lỗ hổng đã được biết đến.

Thứ hai, để tăng cường lớp bảo mật xác thực, hãy cân nhắc tích hợp xác thực đa yếu tố (MFA). Mặc dù cấu hình mặc định sử dụng chứng chỉ đã rất an toàn, việc thêm một yếu tố xác thực thứ hai như mật khẩu dùng một lần (Mã OTP là gì) sẽ khiến việc truy cập trái phép gần như là không thể. Các plugin như openvpn-auth-pam kết hợp với Google Authenticator có thể giúp bạn triển khai tính năng này, tương tự như phương pháp xác thực hai yếu tố (2fa là gì).

Tiếp theo, hãy quản lý quyền truy cập của người dùng một cách chặt chẽ. Chỉ cấp chứng chỉ cho những người dùng thực sự cần truy cập vào mạng VPN. Khi một nhân viên nghỉ việc hoặc một người dùng không còn nhu cầu sử dụng, hãy thu hồi chứng chỉ của họ ngay lập tức bằng công cụ Easy-RSA (./easyrsa revoke client_name). Việc này đảm bảo tài khoản cũ không thể bị lạm dụng để truy cập vào hệ thống.

Cuối cùng, hãy đảm bảo rằng bạn đang sử dụng các thuật toán mã hóa mạnh mẽ. Cấu hình mẫu mà chúng tôi cung cấp đã sử dụng AES-256-GCM, một tiêu chuẩn mã hóa hiện đại và rất an toàn. Tránh sử dụng các thuật toán cũ và yếu hơn như DES hoặc MD5. Mã hóa dữ liệu mạnh mẽ từ đầu cuối là yếu tố cốt lõi đảm bảo rằng ngay cả khi dữ liệu bị chặn trên đường truyền, kẻ tấn công cũng không thể đọc được nội dung. Bạn có thể tham khảo thêm về SSL là gìTLS là gì để hiểu sâu hơn về các giao thức bảo mật truyền tải dữ liệu.

Kết luận

Qua bài hướng dẫn chi tiết này, chúng ta đã cùng nhau hoàn thành một hành trình quan trọng: từ việc chuẩn bị một máy chủ Ubuntu 20.04 cho đến khi cài đặt, cấu hình và vận hành thành công một máy chủ OpenVPN hoàn chỉnh. Bạn đã học được cách thiết lập hạ tầng khóa công khai (PKI), tạo và quản lý các chứng chỉ bảo mật, cấu hình chi tiết cho cả máy chủ và máy khách, cũng như cách kiểm tra và khắc phục các sự cố cơ bản. Việc tự tay xây dựng một mạng riêng ảo không chỉ giúp bạn nắm vững công nghệ mà còn mang lại khả năng kiểm soát tuyệt đối đối với an toàn dữ liệu của mình.

AZWEB khuyến khích bạn áp dụng những kiến thức này để bảo vệ các kết nối mạng của cá nhân và tổ chức. Trong một thế giới ngày càng phụ thuộc vào internet, việc chủ động bảo vệ thông tin là một kỹ năng thiết yếu. Đừng ngần ngại khám phá sâu hơn, tham khảo thêm các tài liệu nâng cao và tham gia vào các cộng đồng hỗ trợ OpenVPN để không ngừng nâng cao kiến thức của mình. Việc làm chủ công nghệ VPN sẽ mở ra nhiều cơ hội để bạn xây dựng các giải pháp mạng an toàn và hiệu quả hơn trong tương lai.

Đánh giá