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.
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
Hướng dẫn mở rộng phân vùng LVM trên server Linux Ubuntu
Bài viết hướng dẫn chi tiết các bước mở rộng phân vùng LVM trên server Linux Ubuntu khi ổ cứng vật lý vẫn còn dung lượng trống.
Hướng dẫn toàn tập về AWS Identity and Access Management (IAM)
Tìm hiểu từ A-Z về AWS IAM, các thành phần như User, Group, Role, Policy và cách quản lý quyền truy cập trên AWS an toàn, chuẩn xác.
Hướng Dẫn Cài Đặt SonarQube Trên Ubuntu 22.04 Từ A-Z
Bài viết hướng dẫn chi tiết từng bước cách cài đặt SonarQube trên Ubuntu 22.04, bao gồm cài đặt PostgreSQL 15, Java 17 và cấu hình hệ thống tối ưu nhất.