Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Khanh Bảo
Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Sau khi đã cấu hình xong IP, Port và DNS cho VPS, bước tiếp theo không thể bỏ qua chính là thiết lập tường lửa để kiểm soát chặt chẽ những kết nối nào được phép ra vào máy chủ. Trên Ubuntu, UFW (Uncomplicated Firewall) là công cụ tường lửa phổ biến và dễ sử dụng nhất, giúp ngay cả người mới cũng có thể tự cấu hình bảo mật cơ bản cho VPS của mình mà không cần nắm quá sâu các khái niệm mạng phức tạp.

Tường lửa UFW là gì? Nguyên lý hoạt động

UFW thực chất là một lớp giao diện được xây dựng phía trên hệ thống lọc gói tin Netfilter của nhân Linux, giúp đơn giản hóa việc tạo rule so với việc thao tác trực tiếp bằng iptables vốn khá phức tạp và khó nhớ cú pháp. Đáng chú ý, kể từ Ubuntu 22.04 LTS trở về sau, backend xử lý phía dưới của UFW đã chuyển từ iptables sang nftables – công nghệ lọc gói tin thế hệ mới, hiệu quả hơn nhưng toàn bộ cú pháp lệnh UFW mà người dùng sử dụng vẫn giữ nguyên, không ảnh hưởng đến thao tác hàng ngày.

Về nguyên lý hoạt động, mỗi khi có một kết nối đi đến VPS, UFW sẽ so khớp kết nối đó với danh sách rule đã cấu hình theo thứ tự từ trên xuống. Ngay khi tìm thấy rule đầu tiên khớp, UFW sẽ áp dụng hành động tương ứng (cho phép hoặc chặn) và dừng kiểm tra các rule còn lại. Nếu không có rule nào khớp, hệ thống sẽ áp dụng chính sách mặc định (default policy) đã thiết lập từ trước. Chính vì cơ chế “khớp đầu tiên rồi dừng” này, thứ tự sắp xếp rule đóng vai trò rất quan trọng khi cấu hình nâng cao.

Bật/Tắt và kiểm tra trạng thái UFW

Trước khi bắt đầu cấu hình rule, bạn cần nắm được các lệnh cơ bản để bật, tắt và kiểm tra trạng thái hoạt động của UFW:

Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Phần lớn bản cài Ubuntu đã có sẵn UFW; nếu lệnh “sudo ufw status” báo không tìm thấy, chỉ cần cài đặt nhanh bằng “sudo apt install ufw -y”. Ngoài ra, một chi tiết nhiều người mới hay bỏ sót là hỗ trợ IPv6: hãy mở file “/etc/default/ufw” và đảm bảo dòng “IPV6=yes” đang được bật, để UFW bảo vệ đồng thời cả kết nối IPv4 lẫn IPv6 thay vì chỉ IPv4.

⚠ Lưu ý: Trước khi chạy “sudo ufw enable”, hãy chắc chắn Port SSH bạn đang dùng để kết nối (ví dụ 22 hoặc Port riêng của VPS) đã được thêm vào danh sách allow. Nếu quên bước này, bạn có thể tự khóa mình khỏi VPS ngay lập tức.

Hướng dẫn Mở/Đóng Port dịch vụ (Port 80, 443, 22…)

Cú pháp cơ bản để mở một Port trên UFW như sau:

sudo ufw allow [PORT]/[PROTOCOL]

Dưới đây là các Port phổ biến nhất bạn sẽ cần mở khi triển khai dịch vụ trên VPS:

Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Mở Port thông minh hơn với Application Profiles

Thay vì luôn phải nhớ số Port cụ thể, UFW còn hỗ trợ sẵn các “hồ sơ ứng dụng” (Application Profiles) cho một số dịch vụ phổ biến, giúp cú pháp ngắn gọn và dễ nhớ hơn:

Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

💡 Mẹo: Nên ưu tiên dùng “sudo ufw allow ‘OpenSSH'” thay vì “sudo ufw allow 22”. Lý do là profile này được UFW tự nhận diện theo cấu hình dịch vụ SSH thực tế, nên nếu sau này bạn đổi Port SSH sang một cổng khác, rule vẫn tiếp tục hoạt động đúng mà không cần sửa lại thủ công.

Nếu cần mở một Port đặc thù chưa có profile tương ứng (ví dụ Port cho một ứng dụng game hoặc service riêng), bạn chỉ định trực tiếp số Port kèm giao thức:

sudo ufw allow 25565/tcp

Đóng Port và quản lý rule theo số thứ tự

Để đóng lại một Port đã mở trước đó, bạn thay từ khóa “allow” bằng “deny” hoặc xóa hẳn rule bằng “delete”:

sudo ufw deny 21/tcp
sudo ufw delete allow 21/tcp

Khi danh sách rule đã khá dài, cách quản lý trực quan hơn là xem theo số thứ tự và xóa đúng theo số đó:

sudo ufw status numbered
sudo ufw delete 3

Nếu muốn một rule mới được ưu tiên kiểm tra trước các rule đã có (áp dụng nguyên lý “khớp đầu tiên” đã nói ở trên), thay vì để UFW tự thêm vào cuối danh sách, bạn có thể chỉ định thẳng vị trí bằng “insert”:

sudo ufw insert 1 deny from 203.0.113.100

Một lưu ý quan trọng khi đã bật UFW và cần cập nhật thêm rule mới: nên dùng “sudo ufw reload” thay vì tắt hẳn rồi bật lại bằng disable/enable. Reload sẽ áp dụng rule mới ngay lập tức mà không làm gián đoạn các kết nối đang hoạt động, tránh rủi ro rớt kết nối SSH đang dùng dở.

Hướng dẫn chặn IP hoặc dải IP bất kỳ truy cập VPS

Ngoài việc kiểm soát theo Port, UFW còn cho phép bạn chặn hẳn một địa chỉ IP hoặc cả dải IP cụ thể không cho truy cập vào VPS – rất hữu ích khi phát hiện IP có dấu hiệu tấn công dò quét. Cú pháp thực hiện như sau:

sudo ufw deny from 123.45.67.89

Nếu muốn chặn toàn bộ một dải IP (ví dụ theo subnet /24), bạn có thể dùng:

sudo ufw deny from 123.45.67.0/24

Ngược lại, nếu muốn chỉ cho phép duy nhất một địa chỉ IP cụ thể được truy cập vào một Port nhạy cảm (ví dụ Port SSH), giúp tăng bảo mật đáng kể, bạn dùng cú pháp:

sudo ufw allow from 123.45.67.89 to any port 22

Với các VPS có nhiều card mạng (ví dụ một card cho kết nối internet công cộng, một card cho mạng nội bộ riêng), UFW còn cho phép giới hạn rule chỉ áp dụng trên một giao diện mạng cụ thể, ví dụ chỉ mở Port Database cho card mạng nội bộ:

sudo ufw allow in on eth1 to any port 3306

Giới hạn tốc độ kết nối chống dò quét cơ bản với ufw limit

UFW có sẵn một cơ chế phòng vệ đơn giản trước tấn công dò mật khẩu bằng lệnh “limit”: nếu một địa chỉ IP cố gắng kết nối SSH quá nhiều lần trong thời gian ngắn (mặc định khoảng 6 lần trong 30 giây), UFW sẽ tự động chặn tạm thời IP đó.

sudo ufw limit ssh

💡 Mẹo: Cơ chế “limit” của UFW chỉ mang tính cơ bản. Nếu cần một giải pháp chống Brute-Force toàn diện hơn – có khả năng phân tích log và tự động chặn IP trên nhiều dịch vụ khác nhau – bạn nên kết hợp thêm Fail2ban, công cụ chuyên dụng đã được giới thiệu ở bài viết trước trong series.

Giám sát hoạt động qua Log của UFW

Tường lửa sẽ âm thầm chặn các kết nối trái phép, vì vậy việc bật và đọc log là cách duy nhất để bạn biết VPS đang bị nhắm tới từ đâu. Bật tính năng ghi log bằng lệnh:

sudo ufw logging on

Log của UFW mặc định được lưu tại đường dẫn “/var/log/ufw.log”. Để xem nhanh các kết nối vừa bị chặn theo thời gian thực, hoặc lọc riêng những dòng log liên quan đến việc chặn, bạn có thể dùng:

sudo tail -f /var/log/ufw.log
sudo grep “UFW BLOCK” /var/log/ufw.log

Mỗi dòng log chặn thường chứa các trường quan trọng như SRC (địa chỉ IP nguồn cố gắng kết nối), DST (địa chỉ IP đích, tức VPS của bạn), PROTO (giao thức) và DPT (Port đích bị nhắm tới) – rất hữu ích để xác định VPS đang bị dò quét ở Port nào và từ đâu.

Giới hạn của UFW trong chiến lược bảo mật tổng thể

Một điều quan trọng cần hiểu rõ: UFW chỉ hoạt động ở tầng mạng, kiểm soát dựa trên địa chỉ IP và Port. Nó không thể bảo vệ VPS khỏi các lỗ hổng ở tầng ứng dụng như SQL Injection, Cross-Site Scripting, hay việc tải lên file độc hại thông qua website. Tương tự, UFW cũng không thể bù đắp cho một mật khẩu yếu hoặc phần mềm đã lỗi thời chưa được cập nhật bản vá.

Vì vậy, hãy xem UFW là một lớp phòng thủ quan trọng nhưng không phải duy nhất. Một chiến lược bảo mật VPS toàn diện luôn cần kết hợp nhiều lớp: tường lửa (UFW), công cụ chống dò mật khẩu (Fail2ban), xác thực bằng SSH Key thay vì mật khẩu, và thói quen cập nhật hệ thống thường xuyên.

Tổng hợp lệnh UFW thường dùng

Hướng Dẫn Cấu Hình Tường Lửa UFW Trên VPS Ubuntu Chi Tiết

Câu hỏi thường gặp về UFW

UFW có phải là tường lửa duy nhất cần dùng trên VPS không?

UFW là lớp tường lửa cơ bản quan trọng nhất, nhưng nên kết hợp thêm Fail2ban để tự động chặn IP có hành vi tấn công dò mật khẩu, tạo thành nhiều lớp bảo vệ bổ trợ cho nhau.

Nếu nhà cung cấp VPS đã có tường lửa riêng thì có cần bật UFW không?

Vẫn nên bật. Tường lửa từ nhà cung cấp (thường gọi là Cloud Firewall) là lớp bảo vệ vòng ngoài, còn UFW là tường lửa chạy ngay trên VPS của bạn. Kết hợp cả hai tạo ra mô hình phòng thủ theo chiều sâu, an toàn hơn nhiều so với chỉ dùng một lớp duy nhất.

Dùng “ufw allow OpenSSH” khác gì so với “ufw allow 22”?

Cả hai đều mở đúng Port 22 cho SSH, nhưng “allow OpenSSH” sử dụng Application Profile nên sẽ tự động cập nhật nếu sau này bạn đổi Port SSH sang số khác, trong khi rule theo số Port cố định sẽ không còn chính xác nữa.

Bật UFW có làm chậm VPS không?

Không đáng kể. UFW được tích hợp sâu vào nhân Linux nên xử lý rất hiệu quả, hầu như không ảnh hưởng đến hiệu năng trong các tác vụ sử dụng thông thường.

Việc cấu hình UFW đúng cách từ chính sách mặc định, Application Profiles, đến giới hạn tốc độ kết nối và theo dõi log sẽ giúp VPS Ubuntu của bạn giảm thiểu đáng kể nguy cơ bị truy cập trái phép, đồng thời vẫn đảm bảo mọi dịch vụ cần thiết hoạt động trơn tru. Đây là nền tảng quan trọng trước khi bạn tiếp tục nâng cao bảo mật với Fail2ban ở bài viết tiếp theo.