Introducing ZYNOO General Purpose & CPU Optimized Servers   Learn More >

Tường lửa Ubuntu: Cách thiết lập UFW trên VPS

Cấu hình tường lửa Ubuntu bằng UFW (Uncomplicated Firewall) giúp bảo vệ VPS của bạn bằng cách cho phép các kết nối cần thiết và chặn lưu lượng truy cập đến không cần thiết. Quá trình thiết lập chỉ cần vài lệnh, nhưng thứ tự thực hiện rất quan trọng: hãy cho phép SSH trước khi bật tường lửa, nếu không bạn có thể mất quyền truy cập từ xa.

Hướng dẫn này trình bày cách cài đặt UFW, cấu hình các chính sách mặc định an toàn, mở cổng cho website, kích hoạt tường lửa và quản lý các quy tắc sau đó.

Những điểm chính

  • UFW cung cấp cách đơn giản để quản lý tường lửa Ubuntu qua dòng lệnh.
  • Cho phép cổng SSH bạn thực sự sử dụng trước khi bật UFW trên VPS từ xa.
  • Mặc định từ chối lưu lượng truy cập đến không được yêu cầu, sau đó chỉ mở những cổng mà các dịch vụ của bạn cần.
  • Kiểm tra quyền truy cập bằng một kết nối thứ hai và xem lại các quy tắc mỗi khi bạn thêm hoặc gỡ ứng dụng.

UFW trên Ubuntu là gì?

UFW là công cụ cấu hình tường lửa, dùng để quản lý các quy tắc cho hệ thống lọc gói tin của nhân Linux. Thay vì tự viết các quy tắc cấp thấp, bạn có thể cho phép hoặc từ chối kết nối bằng những lệnh như ufw allow và ufw delete.

Với một VPS lưu trữ website thông thường, bạn sẽ cho phép SSH để quản trị và mở cổng 80, 443 cho khách truy cập. Nhìn chung, không nên để các cổng cơ sở dữ liệu và ứng dụng nội bộ có thể truy cập từ internet công cộng.

Trước khi cấu hình tường lửa Ubuntu

Bạn cần một VPS Ubuntu có quyền sudo và kết nối SSH đang hoạt động. Nếu chưa quen với việc quản trị từ xa, hãy xem bài viết các lệnh SSH dành cho người mới bắt đầu của ZYNOO.

Hãy giữ phiên SSH hiện tại đang mở. Kiểm tra xem bạn có sử dụng được bảng điều khiển web hoặc bảng điều khiển khôi phục của nhà cung cấp VPS hay không. Tường lửa mạng ở cấp nhà cung cấp hoạt động độc lập với UFW và cũng có thể cần các quy tắc phù hợp.

Các hướng dẫn này giả định rằng UFW chưa được cấu hình hoặc đang ở trạng thái không hoạt động. Nếu UFW đã hoạt động, hãy kiểm tra các quy tắc và yêu cầu của dịch vụ trước khi thay đổi chính sách mặc định.

Cấu hình tường lửa cho VPS Ubuntu bằng UFW

Bước 1: Kiểm tra và cài đặt UFW

Kiểm tra xem UFW đã có sẵn chưa:

sudo ufw status

Status: inactive nghĩa là UFW đã được cài đặt nhưng chưa áp dụng các quy tắc. Nếu hệ thống không tìm thấy lệnh, hãy cài đặt UFW:

sudo apt update
sudo apt install ufw

Đừng bật tường lửa ngay.

Bước 2: Cho phép SSH trước khi bật UFW

Xác định cổng TCP mà SSH đang lắng nghe:

sudo ss -ltnp

So sánh kết quả với cổng mà ứng dụng SSH của bạn sử dụng. Cổng 22 thường được dùng, nhưng VPS có thể được cấu hình để dùng cổng khác.

Nếu SSH dùng cổng 22, hãy chạy:

sudo ufw allow 22/tcp

Nếu SSH thực sự dùng một cổng tùy chỉnh như 2222, hãy cho phép cổng đó thay thế:

sudo ufw allow 2222/tcp

Cổng 2222 chỉ là ví dụ, không phải cổng bổ sung mà ai cũng cần mở. Hãy kiểm tra các quy tắc đang chờ áp dụng:

sudo ufw show added

Bước 3: Thiết lập các quy tắc mặc định và kiểm tra IPv6

Áp dụng chính sách mặc định từ chối các kết nối đến, đồng thời cho phép VPS khởi tạo kết nối đi:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Nếu VPS của bạn có kết nối IPv6 công cộng, hãy xác nhận UFW xử lý IPv6:

grep '^IPV6=' /etc/default/ufw

Giá trị cần có là IPV6=yes. Nếu bạn đang sử dụng IPv6 nhưng giá trị này được đặt thành no, hãy chỉnh sửa /etc/default/ufw để bật tính năng xử lý IPv6 trước khi kích hoạt tường lửa.

Bước 4: Mở các cổng mà website của bạn cần

Nếu VPS lưu trữ một website công khai, hãy cho phép HTTP và HTTPS trước khi kích hoạt UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Các cổng thường dùng cho VPS Ubuntu là:

Dịch vụCổngGiao thức
SSH22 (hoặc cổng tùy chỉnh của bạn)TCP
HTTP80TCP
HTTPS443TCP

Đối với ứng dụng công khai chạy trên một cổng TCP khác, cú pháp cho phép cổng của UFW là:

sudo ufw allow 8080/tcp

Chỉ chạy lệnh trong ví dụ đó nếu dịch vụ của bạn cần được truy cập từ bên ngoài qua cổng 8080. Đối với dịch vụ UDP, hãy chỉ định /udp thay vào đó, chẳng hạn sudo ufw allow 51820/udp cho một điểm cuối WireGuard được cấu hình trên cổng đó.

Bạn cũng có thể kiểm tra các hồ sơ ứng dụng hiện có:

sudo ufw app list

Nếu thấy Nginx Full trong danh sách, hãy kiểm tra các cổng của hồ sơ này bằng sudo ufw app info 'Nginx Full'. Lệnh sudo ufw allow 'Nginx Full' có thể thay thế hai quy tắc mở cổng cho website ở trên; bạn không cần áp dụng cả hai cách. Các ứng dụng nằm sau proxy ngược Nginx cục bộ thường không nên để cổng backend của chúng có thể truy cập công khai.

Bước 5: Bật UFW và kiểm tra tường lửa

Sau khi đã cho phép SSH và mọi cổng dịch vụ cần thiết, hãy bật UFW:

sudo ufw enable

Hệ thống có thể cảnh báo rằng thao tác này có thể ảnh hưởng đến SSH. Chỉ tiếp tục sau khi xác nhận quy tắc SSH và khả năng truy cập qua bảng điều khiển khôi phục. Kiểm tra các quy tắc đang có hiệu lực:

sudo ufw status verbose

Bạn sẽ thấy Status: active, các chính sách mặc định và những cổng đã được cho phép. UFW cũng sẽ tự bật khi hệ thống khởi động.

Trước khi đóng phiên SSH ban đầu, hãy kết nối lại từ một cửa sổ dòng lệnh thứ hai. Trên máy tính của bạn, dùng ssh -p 22 username@server-ip, thay tên người dùng, địa chỉ và cổng khi cần. Nếu đã mở cổng 80 và 443, hãy kiểm tra khả năng truy cập website từ bên ngoài. Chỉ có quy tắc ALLOW không đủ để chứng minh dịch vụ có thể được truy cập.

Bước 6: Quản lý, giới hạn và xóa các quy tắc UFW

Để liệt kê các quy tắc tường lửa kèm số thứ tự:

sudo ufw status numbered

Để xóa một quy tắc cho phép đã lỗi thời, chẳng hạn quy tắc cho cổng TCP 8080:

sudo ufw delete allow 8080/tcp

Bạn cũng có thể xóa theo số thứ tự quy tắc (sudo ufw delete 3), nhưng hãy kiểm tra danh sách hiện tại trước: số thứ tự có thể thay đổi và thao tác này có thể chỉ xóa một quy tắc trong cặp quy tắc IPv4/IPv6 tương ứng.

Tùy chọn: Giới hạn truy cập SSH theo địa chỉ IP của bạn

Nếu địa chỉ IP bạn dùng để quản trị ổn định, bạn có thể giới hạn truy cập SSH chỉ cho địa chỉ đó. Ví dụ:

sudo ufw allow from 203.0.113.10 to any port 22 proto tcp

Thay địa chỉ IP ví dụ bằng địa chỉ IP công cộng thực tế của bạn. Kiểm tra một lần đăng nhập mới từ địa chỉ đó, rồi xóa quy tắc cho phép tất cả bằng sudo ufw delete allow 22/tcp. Nếu giữ quy tắc cho phép tất cả, mọi người vẫn có thể truy cập. Trong suốt quá trình này, hãy giữ phiên SSH ban đầu và bảng điều khiển khôi phục ở trạng thái có thể sử dụng.

Tùy chọn: Giới hạn tần suất kết nối SSH

Ngoài ra, nếu bạn cần truy cập SSH từ các địa chỉ IP thay đổi, hãy thay quy tắc cho phép tất cả bằng quy tắc giới hạn tần suất kết nối:

sudo ufw limit 22/tcp
sudo ufw delete allow 22/tcp
sudo ufw status numbered

Chỉ thực hiện sau khi xác nhận kết nối SSH đang hoạt động và bạn có thể truy cập qua bảng điều khiển khôi phục; nếu SSH không dùng cổng 22, hãy thay bằng cổng thực tế. Sau đó, hãy thử đăng nhập thêm một lần nữa. Đây là giải pháp thay thế cho việc chỉ cho phép một địa chỉ IP, không phải giải pháp cần kết hợp với cách đó. Giới hạn tần suất kết nối không thay thế cho xác thực bằng khóa SSH.

Bước 7: Kiểm tra nhật ký và khắc phục sự cố truy cập

Bật ghi nhật ký cơ bản khi bạn cần tìm hiểu về lưu lượng truy cập bị chặn:

sudo ufw logging on
sudo ufw status verbose

Tùy theo cấu hình ghi nhật ký, nhật ký UFW có thể nằm trong nhật ký hệ thống hoặc tại /var/log/ufw.log.

Nếu không thể truy cập SSH, hãy dùng bảng điều khiển khôi phục của nhà cung cấp để kiểm tra các quy tắc đang có hiệu lực. Như một biện pháp khẩn cấp tạm thời, sudo ufw disable sẽ ngừng áp dụng các quy tắc; sau đó, hãy sửa quy tắc SSH và bật lại UFW.

Nếu website không tải được, hãy kiểm tra các dịch vụ đang lắng nghe bằng sudo ss -ltnp, các quy tắc UFW và tường lửa của nhà cung cấp nếu có. Việc mở cổng không tự khởi động dịch vụ sử dụng cổng đó.

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

Tường lửa Ubuntu có tự động khởi động sau khi VPS khởi động lại không?

Có. Sau khi bạn chạy sudo ufw enable, UFW sẽ tự bật trong những lần khởi động tiếp theo. Hãy kiểm tra cấu hình bằng sudo ufw status verbose.

Tôi có cần khởi động lại Ubuntu sau khi thay đổi các quy tắc UFW không?

Không. Các quy tắc được thêm hoặc xóa qua UFW có hiệu lực mà không cần khởi động lại VPS. Bạn có thể kiểm tra cấu hình hiện tại ngay lập tức.

Tường lửa UFW có bảo vệ các container Docker không?

Không hẳn. Các cổng được công bố qua Docker có thể vượt qua các quy tắc đầu vào thông thường của UFW vì Docker tự cấu hình các quy tắc mạng của mình. Hãy xem tài liệu về tường lửa của Docker trước khi dựa vào UFW để giới hạn quyền truy cập container.

Kết luận

Để thiết lập tường lửa Ubuntu an toàn bằng UFW, trước tiên hãy cho phép SSH, áp dụng chính sách mặc định từ chối các kết nối đến và chỉ mở những cổng mà ứng dụng của bạn cần. Sau khi bật UFW, hãy kiểm tra quyền truy cập bằng một kết nối riêng và xóa các quy tắc không còn cần thiết khi cấu hình VPS thay đổi.

UFW kiểm soát truy cập mạng, chứ không ngăn chặn hành vi lạm dụng ở cấp ứng dụng. Đối với các website Nginx công khai, giới hạn tần suất yêu cầu là một biện pháp bảo vệ bổ sung hữu ích.

Table of Content

Giới hạn tần suất yêu cầu của Nginx là tính năng tích hợp giúp kiểm

Proxy ngược Nginx nhận yêu cầu từ khách truy cập trang web rồi chuyển tiếp

Lỗi 502 Bad Gateway trong Nginx thường có nghĩa là Nginx không nhận được phản

Build your next project with ZYNOO

From your first website to demanding applications, choose the resources and control you need.

Shared Hosting

Start your blog or business website with cPanel, LiteSpeed and CloudLinux.

VPS Hosting

Grow your websites and applications with NVMe storage, KVM virtualization and full root access.

Dedicated Servers

Power demanding projects with your own physical server, dedicated resources and control over your environment.

Lên đầu trang