Hướng Dẫn Cơ Bản Về UFW Trên Ubuntu

Tìm hiểu cơ bản về UFW trên Ubuntu. Hướng dẫn chi tiết cách bật/tắt, mở/đóng port, và cấu hình tường lửa UFW chuẩn nhất.

Hướng Dẫn Cơ Bản Về UFW Trên Ubuntu

UFW là một công cụ quản lý tường lửa cực kỳ phổ biến và thân thiện với người dùng trên các hệ điều hành Linux, đặc biệt là Ubuntu. Bản chất UFW là một frontend (giao diện thao tác) giúp đơn giản hóa việc cấu hình cho nftables hoặc iptables ở phía sau.

Bài viết này sẽ hướng dẫn bạn những thao tác cơ bản nhất để làm chủ UFW, từ cách bật/tắt tường lửa, mở cổng (port), cho đến việc thiết lập các quy tắc nâng cao.

1. UFW Hoạt Động Ra Sao?

Trên Ubuntu 24.04 (và các bản phân phối mới), backend mặc định của UFW là nftables. Bạn có thể kiểm tra xem hệ thống đang dùng backend nào bằng lệnh:

root@dlp:~# update-alternatives --config iptables

Output tham khảo:

There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        auto mode
  1            /usr/sbin/iptables-legacy   10        manual mode
  2            /usr/sbin/iptables-nft      20        manual mode

Press <enter> to keep the current choice[*], or type selection number:

2. Kiểm Tra Trạng Thái Và Kích Hoạt UFW

Mặc dù service của UFW thường được chạy tự động cùng hệ thống, nhưng mặc định tường lửa UFW sẽ ở trạng thái vô hiệu hóa (inactive). Để sử dụng, bạn cần phải tự tay bật nó lên.

Đầu tiên, kiểm tra xem service của UFW có đang chạy hay không:

systemctl status ufw

Xem trạng thái hiện tại của tường lửa UFW:

ufw status
# Output: Status: inactive (Đang tắt)

Kích hoạt (Bật) UFW:

ufw enable
# Output: Firewall is active and enabled on system startup

Vô hiệu hóa (Tắt) UFW:

ufw disable
# Output: Firewall stopped and disabled on system startup

3. Quản Lý Rule (Quy Tắc): Mở/Đóng Port Cơ Bản

Theo mặc định, UFW sẽ từ chối (deny) tất cả các kết nối đi vào (incoming) và cho phép (allow) tất cả các kết nối đi ra (outgoing). Bạn có thể kiểm tra chi tiết bằng lệnh:

ufw status verbose

Output sẽ cho thấy: Default: deny (incoming), allow (outgoing), disabled (routed)

Do đó, bạn sẽ cần mở (allow) các port hoặc dịch vụ cần thiết để hệ thống hoạt động. Khi bạn gọi tên một dịch vụ (như ssh, http), UFW sẽ tự động tham chiếu port trong tệp /etc/services.

Một số ví dụ mở port phổ biến:

Cho phép kết nối SSH (Port 22):

ufw allow ssh

Cho phép kết nối Web HTTP (Port 80):

ufw allow http

Cho phép kết nối tới Port 2049 sử dụng giao thức TCP:

ufw allow 2049/tcp

Kiểm tra lại kết quả cấu hình:

ufw status verbose

4. Cách Xóa Quy Tắc (Delete Rules) Và Đặt Lại (Reset) UFW

Nếu bạn lỡ tay cấu hình sai hoặc không cần mở một port nào đó nữa, bạn có thể xóa quy tắc đó đi.

Cách 1: Xóa bằng cách gọi tên quy tắc đã tạo

# Xóa quy tắc cho phép SSH
ufw delete allow ssh

# Xóa quy tắc cho phép Port 80/tcp
ufw delete allow 80/tcp

Cách 2: Xóa theo số thứ tự (Khuyên dùng) Bạn có thể liệt kê các quy tắc kèm theo số thứ tự (rule number) để dễ dàng xóa chính xác:

ufw status numbered

Output tham khảo:

     To                         Action      From
     --                         ------      ----
[ 1] 2049/tcp                   ALLOW IN    Anywhere
[ 2] 2049/tcp (v6)              ALLOW IN    Anywhere (v6)

Để xóa quy tắc số 2:

ufw delete 2

Reset lại UFW (Xóa mọi thứ): Nếu bạn muốn xóa sạch mọi quy tắc đã cấu hình và đưa UFW về trạng thái mặc định ban đầu:

ufw reset

5. Quy Tắc Nâng Cao: Chỉ Định IP Nguồn Và Đích

Đôi khi, bạn không muốn mở port cho cả thế giới, mà chỉ muốn cấp quyền cho một địa chỉ IP cụ thể nào đó. UFW hoàn toàn hỗ trợ bạn làm điều này với cú pháp trực quan.

Cho phép kết nối SSH chỉ từ IP 10.0.0.213:

ufw allow from 10.0.0.213 to any port ssh

Cho phép kết nối tới Web (Port 80/tcp) trên máy chủ hiện tại (IP 10.0.0.30) chỉ từ IP 10.0.0.213:

ufw allow from 10.0.0.213 to 10.0.0.30 port 80 proto tcp

Giới hạn kết nối để chống Brute-Force (Limit): Bạn có thể sử dụng limit để giới hạn số lần kết nối. Ví dụ, nếu ai đó thử đăng nhập SSH quá 6 lần trong vòng 30 giây, kết nối của họ sẽ bị từ chối:

ufw limit from 10.0.0.221 to any port ssh

6. Cấu Hình ICMP (Ping) Trên UFW

Mặc dù các kết nối đi vào (incoming) bị từ chối theo mặc định, nhưng các kết nối liên quan đến ICMP (như lệnh Ping) lại được UFW cho phép ở cấu hình mặc định.

Để thay đổi thiết lập này, bạn không dùng lệnh ufw thông thường mà cần chỉnh sửa trực tiếp tệp tin cấu hình:

vi /etc/ufw/before.rules

Cách chặn Ping (Từ chối ICMP): Tìm đến đoạn có cấu hình ICMP và thêm dấu # (comment) vào đầu các dòng để vô hiệu hóa:

# ok icmp codes for INPUT
# -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
# -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
# -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
# -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

Cách chỉ cho phép Ping từ một mạng lưới nhất định: Nếu bạn chỉ muốn cho phép mạng 10.0.0.0/24 có thể Ping đến máy chủ, hãy thêm dòng sau:

-A ufw-before-input -p icmp --icmp-type echo-request -s 10.0.0.0/24 -j ACCEPT

Sau khi chỉnh sửa xong, hãy lưu file lại và tải lại (reload) cấu hình của UFW:

ufw reload

Trên đây là những kiến thức cơ bản nhất để bạn bắt đầu sử dụng UFW trên môi trường Linux/Ubuntu. Nắm vững tường lửa UFW sẽ giúp máy chủ của bạn an toàn hơn rất nhiều trước các nguy cơ tấn công từ mạng bên ngoài. Chúc bạn thao tác thành công!

Bình luận

Bài viết liên quan