Hướng dẫn cấu hình UFW Ubuntu: Làm chủ tường lửa VPS (2025)
Việc cấu hình UFW Ubuntu là lớp phòng thủ đầu tiên và quan trọng nhất, giúp bảo vệ VPS của bạn khỏi vô số truy cập trái phép từ Internet. Nếu không có tường lửa này, máy chủ của bạn chẳng khác nào một ngôi nhà không cửa giữa nơi công cộng, bất kỳ ai cũng có thể dòm ngó.
Đây là bài viết chuyên sâu về Lớp phòng thủ thứ 2, một phần trong hướng dẫn toàn diện Bảo mật VPS từ A-Z: 10 lớp phòng thủ thiết yếu (cập nhật 2025) của chúng tôi. Bài viết này sẽ đi sâu vào mọi khía cạnh để bạn làm chủ công cụ mạnh mẽ này, từ tư duy cấu hình đúng đắn cho đến các kỹ thuật quản lý chuyên nghiệp.
Nền tảng về UFW
Để sử dụng một công cụ hiệu quả, trước tiên chúng ta cần hiểu rõ bản chất và cách nó hoạt động.
UFW là gì và tại sao nó là lựa chọn hàng đầu?
UFW (Uncomplicated Firewall) là một giao diện quản lý tường lửa được tích hợp sẵn trên Ubuntu, giúp đơn giản hóa việc cấu hình các quy tắc bảo mật mạng trên VPS. Vai trò chính của nó là cung cấp một giao diện thân thiện để tương tác với hệ thống tường lửa Netfilter của nhân Linux.
Theo truyền thống, việc này được thực hiện thông qua iptables. Tuy nhiên, trên các phiên bản Ubuntu mới như 22.04 LTS trở lên, UFW đã chuyển sang sử dụng nftables làm backend mặc định. nftables là công nghệ tường lửa hiện đại, mạnh mẽ và hiệu quả hơn. Bạn có thể xem bài so sánh chi tiết giữa iptables, nftables, firewalld và UFW để hiểu rõ hơn về các công cụ này.
Lưu ý quan trọng: Dù backend thay đổi, các lệnh UFW mà bạn sử dụng vẫn hoàn toàn giữ nguyên. Điều này cho thấy sự tích hợp liền mạch và cam kết cập nhật của công cụ, giúp người dùng tận hưởng công nghệ mới mà không cần thay đổi thói quen làm việc.
Luồng hoạt động của UFW: Policies, rules, và thứ tự ưu tiên
Hiểu cách UFW quyết định cho phép hay chặn một kết nối là chìa khóa để cấu hình chính xác. Luồng xử lý của nó rất logic:
- Kiểm tra quy tắc (Rules): Khi một kết nối mạng đi đến VPS, UFW sẽ duyệt qua danh sách các quy tắc (rules) bạn đã tạo, từ trên xuống dưới (từ quy tắc số 1 trở đi).
- Khớp quy tắc đầu tiên: Nếu kết nối đó khớp với một quy tắc nào đó, UFW sẽ ngay lập tức áp dụng hành động của quy tắc đó (ví dụ:
ALLOW
hoặcDENY
) và dừng việc kiểm tra. - Áp dụng chính sách mặc định (Default Policies): Nếu kết nối không khớp với bất kỳ quy tắc nào trong danh sách, UFW sẽ áp dụng chính sách mặc định mà bạn đã thiết lập (ví dụ:
deny incoming
).
Điều này có nghĩa là thứ tự của các quy tắc là cực kỳ quan trọng.
Cài đặt & kiểm tra ban đầu
Trên hầu hết các phiên bản Ubuntu, UFW đã được cài đặt sẵn. Bạn có thể kiểm tra nhanh bằng lệnh:
sudo ufw status

Giao diện dòng lệnh hiển thị kết quả ‘Status: inactive’ sau khi chạy lệnh ‘sudo ufw status’ trên Ubuntu.
Nếu kết quả là Status: inactive
, UFW đã sẵn sàng. Nếu không, hãy cài đặt nó:
sudo apt update
sudo apt install ufw
Thực hành tốt: Kiểm tra thiết lập IPv6
Hãy đảm bảo UFW cũng quản lý cả kết nối IPv6, giao thức Internet thế hệ mới. Mở file cấu hình chính:
sudo nano /etc/default/ufw
Và chắc chắn rằng bạn thấy dòng IPV6=yes
. Đây là bước thiết lập nền tảng để bảo vệ toàn diện.

Chỉnh sửa file cấu hình /etc/default/ufw để bật hỗ trợ IPv6 với giá trị IPV6=yes.
Hướng dẫn cấu hình UFW Ubuntu cho người mới bắt đầu
Đây là các bước cơ bản nhưng quan trọng nhất để dựng lên lớp phòng thủ đầu tiên.
Bước 1: Thiết lập chính sách mặc định
Chúng ta sẽ bắt đầu với “Nguyên tắc đặc quyền tối thiểu” cho mạng: Chặn tất cả, chỉ cho phép những gì cần thiết.
# Chặn mọi kết nối đến
sudo ufw default deny incoming
# Cho phép mọi kết nối đi ra
sudo ufw default allow outgoing
Đây là cấu hình an toàn nhất. Nó đảm bảo không có kết nối nào từ bên ngoài có thể vào được VPS của bạn trừ khi bạn cho phép một cách tường minh.
Bước 2: Mở các cổng phổ biến một cách an toàn
Bây giờ, chúng ta sẽ “đục” một vài lỗ cần thiết trên bức tường lửa. Cảnh báo: Luôn cho phép SSH TRƯỚC KHI bật tường lửa, nếu không bạn sẽ tự khóa mình khỏi VPS.
# Cho phép kết nối SSH
sudo ufw allow 'OpenSSH'
Mẹo: UFW nhận diện được các dịch vụ phổ biến. Dùng tên ‘OpenSSH’ sẽ an toàn hơn là dùng số port 22, vì nó sẽ hoạt động ngay cả khi bạn đã đổi port SSH mặc định. Nếu bạn chạy web server, hãy cho phép lưu lượng HTTP và HTTPS:
sudo ufw allow 'Nginx Full'
'Nginx Full'
là một Application Profile cho phép cả hai cổng 80 (HTTP) và 443 (HTTPS).

Mở cổng tường lửa UFW bằng tên dịch vụ với lệnh ‘sudo ufw allow “Apache Full”‘ và ‘OpenSSH’.
Mở một port tùy chỉnh Trong trường hợp bạn cần chạy một dịch vụ ở một port không phổ biến, ví dụ như một server game Minecraft ở port 25565
, bạn có thể chỉ định rõ số port và giao thức (TCP hoặc UDP):
sudo ufw allow 25565/tcp
Việc này cho phép các kết nối sử dụng giao thức TCP đi qua port 25565
.
Bước 3: Kích hoạt & kiểm tra trạng thái
Khi đã sẵn sàng, hãy kích hoạt UFW:
sudo ufw enable

Kích hoạt tường lửa UFW bằng lệnh ‘sudo ufw enable’ và kiểm tra lại với ‘sudo ufw status’ cho thấy trạng thái ‘active’.
Nhấn y
để xác nhận. Cuối cùng, kiểm tra lại cấu hình của bạn:
sudo ufw status verbose

Kết quả của lệnh ‘sudo ufw status verbose’ liệt kê các quy tắc đang hoạt động cho cổng 80, 443 và 22.
Quản lý quy tắc như một chuyên gia
Việc thêm quy tắc chỉ là bước khởi đầu. Quản lý chúng một cách hiệu quả mới thể hiện sự chuyên nghiệp.
Liệt kê và đọc hiểu quy tắc
Để xem danh sách các quy tắc kèm theo số thứ tự, hãy dùng lệnh:
sudo ufw status numbered

Sử dụng lệnh ‘sudo ufw status numbered’ để liệt kê tất cả quy tắc tường lửa UFW kèm theo số thứ tự.
Xóa quy tắc: 2 phương pháp hiệu quả
- Xóa theo số thứ tự: Nhanh và đơn giản.
# Xóa quy tắc ở dòng số 3 sudo ufw delete 3
Minh họa lệnh ‘sudo ufw delete 1’ để xóa một quy tắc tường lửa UFW theo số thứ tự của nó.
- Xóa theo cú pháp quy tắc: Hữu ích cho việc viết script tự động.
# Xóa quy tắc cho phép http sudo ufw delete allow http
Chèn quy tắc vào vị trí cụ thể (insert
)
Như đã nói, thứ tự quy tắc rất quan trọng. Lệnh ufw allow
sẽ thêm quy tắc vào cuối danh sách. Nếu bạn muốn một quy tắc được ưu tiên kiểm tra trước, hãy dùng insert
để chèn nó vào một vị trí cụ thể.
# Chèn một quy tắc chặn một IP cụ thể lên đầu danh sách sudo ufw insert 1 deny from 203.0.113.100
reload
vs disable/enable
: Quản lý an toàn không gián đoạn
Khi tường lửa đang chạy, nếu bạn muốn áp dụng các thay đổi mới, hãy dùng reload
.
sudo ufw reload
Lệnh này sẽ tải lại các quy tắc mà không làm gián đoạn các kết nối đang hoạt động. Nó an toàn hơn nhiều so với việc dùng disable
rồi enable
lại, tránh được tình trạng VPS mất kết nối đột ngột.
Các kỹ thuật UFW Nâng cao
Làm chủ Application Profiles
Tự tạo hồ sơ cho ứng dụng của bạn để quản lý dễ dàng hơn. Ví dụ, tạo hồ sơ cho máy chủ game Valheim:
# Tạo file hồ sơ
sudo nano /etc/ufw/applications.d/valheim
# Thêm nội dung sau vào file:
[Valheim] title=Valheim Game Server
description=Allow traffic for Valheim dedicated server
ports=2456,2457,2458/udp
Giờ đây, bạn có thể cho phép dịch vụ này bằng tên: sudo ufw allow 'Valheim'
Quy tắc theo nguồn/đích
Giới hạn truy cập từ các nguồn cụ thể để tăng cường bảo mật.
# Chỉ cho phép SSH từ địa chỉ IP văn phòng
sudo ufw allow from 192.0.2.5 to any port 22
# Chỉ cho phép SSH từ một dải mạng (subnet)
sudo ufw allow from 192.168.1.0/24 to any port 22
Quy tắc theo card mạng
Trong môi trường có nhiều card mạng (ví dụ: eth0
cho public, eth1
cho private), bạn có thể chỉ định quy tắc trên một giao diện mạng cụ thể.
# Chỉ cho phép truy cập cơ sở dữ liệu trên card mạng private
sudo ufw allow in on eth1 to any port 3306
Giới hạn kết nối (limit
)
Đây là lớp phòng thủ đầu tiên chống lại các cuộc tấn công dò mật khẩu (brute-force).
sudo ufw limit ssh

Áp dụng lệnh ‘sudo ufw limit ssh’ để giới hạn số lượng kết nối SSH, giúp chống lại tấn công brute-force.
Lệnh này sẽ chặn một địa chỉ IP nếu nó cố gắng kết nối SSH quá 6 lần trong 30 giây. Mẹo chuyên gia
- Tính năng
limit
của UFW là cơ bản. Để chống Brute-force tinh vi hơn, các công cụ chuyên dụng như Fail2Ban sẽ hiệu quả hơn vì chúng có thể phân tích log và tự động chặn IP tấn công trên nhiều dịch vụ. Đây chính là Lớp phòng thủ thứ 6 trong chuỗi hướng dẫn của chúng tôi.
- Để tùy chỉnh ngưỡng giới hạn (ví dụ: 10 kết nối trong 60 giây), bạn cần chỉnh sửa file
/etc/ufw/user.rules
. Đây là một thao tác nâng cao và cần cẩn trọng.
Logging và giám sát
Tường lửa của bạn sẽ âm thầm chặn các truy cập trái phép. Việc đọc log giúp bạn biết điều gì đang xảy ra. Đây là một phần quan trọng trong các phương pháp giám sát VPS.
Bật và cấu hình mức độ log
# Bật logging ở mức độ mặc định (low)
sudo ufw logging on
Giải phẫu một dòng log [UFW BLOCK]
File log thường nằm tại /var/log/ufw.log
. Một dòng log bị chặn có thể trông như sau:
Jul 07 09:30:01 my-vps kernel: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=203.0.113.100 DST=198.51.100.5 LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=54321 PROTO=TCP SPT=55555 DPT=22 WINDOW=1024
- [UFW BLOCK]: Hành động là chặn.
- IN=eth0: Kết nối đến qua card mạng eth0.
- SRC=203.0.113.100: Địa chỉ IP nguồn (kẻ tấn công).
- DST=198.51.100.5: Địa chỉ IP đích (VPS của bạn).
- PROTO=TCP: Giao thức là TCP.
- DPT=22: Cổng đích bị nhắm tới (SSH).
Mẹo phân tích log nhanh
# Xem log trong thời gian thực
sudo tail -f /var/log/ufw.log
# Chỉ lọc các kết nối bị chặn
sudo grep "[UFW BLOCK]" /var/log/ufw.log
Tương tự, để tìm những kết nối bị giới hạn bởi Rate Limiting, bạn có thể dùng:
grep "[UFW LIMIT]" /var/log/ufw.log
UFW trong bối cảnh bảo mật rộng hơn
Cảnh báo quan trọng: UFW không phải là tất cả. Nó chỉ là một lớp trong chiến lược bảo mật nhiều lớp của bạn. Hiểu rõ giới hạn của UFW là điều tối quan trọng.
- UFW là tường lửa mạng. Nó kiểm soát các kết nối dựa trên IP và Port.
- UFW không thể bảo vệ bạn khỏi các lỗ hổng ứng dụng web như SQL Injection, Cross-Site Scripting (XSS), hay các file độc hại được tải lên.
- UFW không thể bảo vệ bạn khỏi các mật khẩu yếu (thay vì SSH Key) hay các phần mềm lỗi thời trên VPS, những nguyên nhân chính khiến VPS bị hack.
Tường lửa chỉ là một lớp trong chiến lược bảo mật nhiều lớp của bạn.
Mở rộng kiến thức
Lưu ý quan trọng: UFW trên CentOS/AlmaLinux
Nếu bạn đang sử dụng một VPS chạy CentOS hoặc AlmaLinux, cần lưu ý rằng công cụ tường lửa mặc định của chúng là firewalld
, không phải UFW.
Bạn vẫn có thể cài đặt UFW, nhưng trước tiên bạn phải vô hiệu hóa firewalld
để tránh xung đột.
sudo systemctl disable --now firewalld
sudo dnf install epel-release -y
sudo dnf install ufw -y
Tuy nhiên, khuyến nghị chung là bạn nên sử dụng công cụ mặc định của hệ điều hành. Lệnh mở port HTTP trong firewalld
sẽ là:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
Reset UFW về trạng thái ban đầu
Nếu bạn cấu hình sai và muốn làm lại từ đầu, có một lệnh cứu cánh giúp xóa sạch mọi quy tắc bạn đã tạo.
sudo ufw reset
Hãy thận trọng khi sử dụng lệnh này, vì nó sẽ đưa tường lửa về trạng thái vô hiệu hóa và không có quy tắc nào.
Tổng hợp & checklist an toàn
Lệnh | Chức năng |
ufw status |
Kiểm tra trạng thái hoạt động của UFW. |
ufw enable/disable |
Bật hoặc tắt tường lửa. |
ufw reload |
Tải lại quy tắc mà không gián đoạn kết nối. |
ufw default |
Thiết lập chính sách mặc định (deny/allow incoming/outgoing). |
ufw allow/deny |
Tạo quy tắc cho phép hoặc chặn. |
ufw limit |
Tạo quy tắc giới hạn kết nối. |
ufw delete |
Xóa một quy tắc. |
ufw insert |
Chèn một quy tắc vào vị trí cụ thể. |
ufw reset |
Xóa tất cả quy tắc và vô hiệu hóa UFW. |
Những lưu ý quan trọng nhất khi cấu hình UFW là gì?
Để đảm bảo an toàn và tránh các lỗi phổ biến, hãy luôn ghi nhớ các điểm sau:
- Luôn thiết lập
default deny incoming
làm chính sách mặc định. - Luôn cho phép SSH (
ufw allow 'OpenSSH'
) trước khi chạyufw enable
. - Chỉ mở những port thực sự cần thiết cho ứng dụng của bạn. Để kiểm tra, bạn có thể dùng các công cụ để kiểm tra các port đang mở trong VPS Linux.
- Thường xuyên kiểm tra log (
/var/log/ufw.log
) để phát hiện các hành vi bất thường. - Sử dụng
reload
thay vìdisable/enable
khi cập nhật quy tắc trên hệ thống đang chạy. - Hiểu rõ UFW chỉ là một phần của chiến lược bảo mật tổng thể.
Câu hỏi thường gặp (FAQ)
1. 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 và rất hiệu quả. Với các tác vụ thông thường, bạn sẽ không nhận thấy bất kỳ sự khác biệt nào về hiệu suất.
2. Làm sao để chỉ cho phép một địa chỉ IP cụ thể truy cập SSH?
Dùng lệnh sudo ufw allow from [your_ip_address] to any port 22
, thay [your_ip_address]
bằng địa chỉ IP tĩnh của bạn. Đây là một trong những cách hiệu quả nhất để ẩn mình khỏi các cuộc tấn công tự động.
3. Tôi có cần UFW nếu nhà cung cấp VPS đã có tường lửa?
Có, bạn rất nên dùng. Tường lửa của nhà cung cấp (Cloud Firewall) là lớp bảo vệ vòng ngoài. UFW là tường lửa trên chính máy chủ của bạn (Host-based Firewall), tạo thành một lớp bảo vệ thứ hai. Việc kết hợp cả hai sẽ tạo ra một hệ thống phòng thủ theo chiều sâu, an toàn hơn rất nhiều.
4. ufw allow 'OpenSSH'
và ufw allow 22
khác gì nhau?
Cả hai lệnh đều mở port 22 (mặc định cho SSH). Tuy nhiên, dùng ufw allow 'OpenSSH'
được khuyến khích hơn. Lý do là nó sử dụng “hồ sơ ứng dụng”. Nếu sau này bạn đổi port SSH sang một cổng khác (ví dụ: 2222), UFW sẽ tự động cập nhật theo, trong khi quy tắc allow 22
sẽ không còn đúng nữa.
Hướng đi tiếp theo
Khi đã làm chủ UFW, bạn có thể nâng cao kỹ năng của mình hơn nữa:
- Kết hợp với Fail2Ban: Tự động hóa việc phân tích log và chặn các IP có hành vi tấn công brute-force hoặc quét port.
- Dùng
nmap
để tự kiểm tra: Cài đặtnmap
trên một máy khác và quét các port đang mở trên VPS của bạn để xác minh cấu hình tường lửa từ góc nhìn của kẻ tấn công. - Tìm hiểu
iptables
: Đọc các quy tắciptables
mà UFW tạo ra (trong/etc/ufw/user.rules
) để hiểu sâu hơn về cơ chế bên dưới.
Kết luận
Việc cấu hình ufw ubuntu không chỉ là một thao tác kỹ thuật, đó là một tuyên bố về tư duy bảo mật chủ động. Bằng cách áp dụng các nguyên tắc và kỹ thuật trong bài viết này, bạn không chỉ dựng lên một bức tường lửa, mà còn xây dựng một pháo đài vững chắc cho các dự án của mình trên không gian mạng.
Hy vọng rằng qua hướng dẫn chi tiết này, bạn đã hoàn toàn tự tin trong việc làm chủ UFW. Hãy bắt đầu bảo vệ VPS của mình đúng cách ngay hôm nay!
Tài liệu tham khảo
- Ubuntu Community Help Wiki – UFW: Đây là tài liệu chính thức và đầy đủ nhất về UFW từ cộng đồng Ubuntu.
- Tài liệu chính thức của firewalld: Dành cho những ai muốn tìm hiểu sâu hơn về tường lửa mặc định trên CentOS/AlmaLinux.