Skip to content
VDS · Mạng, địa chỉ IP và tên miền

Tường lửa ufw: đóng những gì không cần thiết

Cách cấu hình ufw trong năm phút: cho phép các cổng cần thiết, đóng phần còn lại, giới hạn truy cập theo địa chỉ và tránh tự cắt SSH của mình.

Cập nhật 23 tháng 8, 2026

Trên một máy mới, mọi thứ lắng nghe trên mạng đều đang mở. Có dịch vụ bạn cài đặt có chủ đích, có dịch vụ đi kèm theo gói. Tường lửa giải quyết việc này trong một lần: mọi thứ đều bị chặn trừ những gì bạn liệt kê.

ufw là một lớp bọc đơn giản trên các quy tắc của kernel. Nó đủ dùng trong phần lớn trường hợp; những cấu hình phức tạp hơn được trình bày trong bài viết về nftables.

Cấu hình cơ bản

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status verbose

Thứ tự ở đây rất quan trọng: quy tắc SSH được thêm trước khi bật. Nếu không, ufw enable sẽ cắt kết nối của bạn, và bạn sẽ phải vào lại qua console trong bảng điều khiển /hosting/vds/m/<id> hoặc chế độ cứu hộ.

Console trong bảng điều khiển hoạt động độc lập với mạng, nên bạn không thể tự khóa mình hoàn toàn — nhưng việc đó tốn thời gian.

Các quy tắc thường dùng

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw limit 22/tcp
ufw delete allow 80/tcp
ufw status numbered
ufw delete 3

ufw limit làm chậm bất kỳ ai mở hơn sáu kết nối trong 30 giây — một biện pháp bảo vệ rẻ tiền chống dò mật khẩu. Một công cụ tinh vi hơn cho cùng mục đích là fail2ban.

Quy tắc allow from hữu ích cho những dịch vụ không nên công khai: cơ sở dữ liệu, bảng quản trị, trình xuất metrics.

ufw allow from 203.0.113.5 to any port 5432 proto tcp

Kiểm tra kết quả

ufw status verbose
ss -tulpn

ss cho biết hệ thống đang lắng nghe trên cổng nào, ufw status cho biết những gì được phép đi qua từ bên ngoài. Phần khác biệt giữa hai danh sách chính là những dịch vụ bạn đã đóng lại, và điều đó là bình thường. Ngược lại mới tệ: một cổng mở trong ufw nhưng không có tiến trình nào lắng nghe.

Từ bên ngoài, hãy kiểm tra bằng cổng, không phải bằng ping:

nc -vz <address> 443

Docker và ufw

Nếu máy chạy Docker, hãy lưu ý: việc chuyển tiếp cổng của container được xử lý trong các chuỗi của kernel trước các quy tắc ufw. Một container khởi chạy với -p 5432:5432 sẽ truy cập được từ bên ngoài ngay cả khi ufw status hiển thị deny. Hãy gắn các cổng như vậy vào giao diện cục bộ:

docker run -p 127.0.0.1:5432:5432 postgres

Những lỗi thường gặp

LỗiHậu quảCách khắc phục
ufw enable mà không có quy tắc SSHMất quyền truy cập mạngVào qua console trong bảng điều khiển, ufw allow 22/tcp
Đã đổi cổng SSH nhưng giữ lại quy tắc cũĐiều tương tựĐặt quy tắc trước, rồi mới đổi cổng
Cổng mở nhưng dịch vụ không phản hồiDịch vụ lắng nghe trên 127.0.0.1Đổi địa chỉ bind
Container vẫn truy cập được dù đã denyDocker bỏ qua ufwBind vào 127.0.0.1

Trước khi đóng một cổng, hãy chạy ss -tulpn và chắc chắn rằng bạn hiểu thứ gì đang nằm trên đó. Một cổng giám sát bị đóng sau này sẽ trông như thể "dịch vụ đã sập".