FirewallD là gì? Dùng làm gì? So với Iptables & Lệnh thường dùng

Trong quá trình quản trị VPS hoặc server Linux, không ít người gặp tình huống dịch vụ đã chạy nhưng vẫn không thể truy cập từ bên ngoài, dù port tưởng chừng đã được mở. Nguyên nhân phổ biến thường đến từ cấu hình firewall ở tầng hệ điều hành, trong đó FirewallD là thành phần đóng vai trò then chốt trên nhiều bản phân phối Linux hiện nay như CentOS, Rocky Linux hay AlmaLinux.

Vậy FirewallD là gì, công cụ này dùng để làm gì và hoạt động như thế nào trong việc kiểm soát lưu lượng mạng? Bài viết dưới đây sẽ giúp bạn hiểu rõ khái niệm FirewallD, cơ chế hoạt động, cách mở port đúng cách cũng như những lưu ý quan trọng để cấu hình firewall Linux an toàn, hạn chế rủi ro mất kết nối server.

FirewallD là gì?

FirewallD (Dynamic Firewall Daemon) là một công cụ quản lý tường lửa động được tích hợp mặc định trên các bản phân phối Linux hiện đại như CentOS 7, RHEL 7, Fedora và các phiên bản mới hơn.

Về bản chất kỹ thuật, FirewallD không phải là một tường lửa độc lập hoàn toàn. Nó đóng vai trò là một lớp giao diện quản lý (frontend controller) giúp người dùng tương tác với hệ thống lọc gói tin Netfilter trong nhân (kernel) của Linux, trên các bản mới, firewalld sử dụng nftables làm backend mặc định. Trước đây, người dùng thường tương tác với Netfilter thông qua iptables, nhưng iptables có nhược điểm là cú pháp phức tạp và cơ chế tĩnh.

FirewallD là gì

FirewallD hoạt động như một lớp quản lý firewall động. Trên các hệ điều hành Linux hiện đại (RHEL 8+, Rocky Linux 9, AlmaLinux), FirewallD sử dụng nftables làm backend mặc định thay vì iptables truyền thống, giúp tăng hiệu năng và khả năng mở rộng, trong khi vẫn giữ được cú pháp quản lý đơn giản thông qua firewall-cmd.

Tường lửa FirewallD ra đời để giải quyết các vấn đề đó bằng cách cung cấp giao diện dòng lệnh (CLI) firewall-cmd trực quan hơn và hỗ trợ thay đổi cấu hình ngay lập tức mà không làm ngắt kết nối hiện tại.

FirewallD dùng để làm gì?

Trong môi trường quản trị hệ thống, việc hiểu rõ tường lửa FirewallD dùng để làm gì giúp kỹ sư hệ thống xác định đúng phạm vi ứng dụng của công cụ.

1. Vai trò trong bảo mật hệ thống

Chức năng chính của FirewallD là kiểm soát luồng truy cập mạng (traffic control). Nó hoạt động như một “người gác cổng”, chỉ cho phép những kết nối được cấp quyền đi vào server và chặn tất cả các kết nối lạ. Điều này giúp:

  • Ngăn chặn các truy cập trái phép vào các cổng (port) nhạy cảm.
  • Giảm thiểu rủi ro từ các cuộc tấn công dò quét cổng (port scan).
  • Hạn chế tấn công brute-force vào dịch vụ SSH hoặc Database.

FirewallD dùng để làm gì

2. Trường hợp sử dụng phổ biến

FirewallD thường được kích hoạt và cấu hình trong các trường hợp sau:

  • VPS chạy Web Server: Chỉ mở port 80 (HTTP), 443 (HTTPS) cho công chúng và port 22 (SSH) cho quản trị viên.
  • Database Server: Chỉ cho phép kết nối từ IP của Web Server (Internal Network) và chặn toàn bộ truy cập từ Internet.
  • Môi trường Cloud: Dù các nhà cung cấp như AWS, Google Cloud hay InterData đều có Security Group (tường lửa lớp network), việc cấu hình thêm FirewallD (tường lửa lớp OS) tạo nên lớp bảo mật kép vững chắc.

Các khái niệm cốt lõi trong FirewallD

Để làm chủ được Firewall Linux này, bạn cần nắm vững hai khái niệm nền tảng: Zone và chế độ cấu hình (Configuration Mode).

1. Zone (Vùng tin cậy)

Đây là tính năng tạo nên sự linh hoạt của công cụ FirewallD. Zone xác định mức độ tin cậy của các kết nối mạng. Mỗi card mạng (interface) hoặc kết nối sẽ được gán vào một Zone cụ thể.

Dưới đây là danh sách các Zone mặc định theo thứ tự từ “ít tin cậy nhất” đến “tin cậy nhất”:

  • drop: Mức độ bảo mật cao nhất (Paranoiac). Tất cả các gói tin đến đều bị hủy bỏ (drop) mà không có bất kỳ phản hồi nào. Chỉ cho phép các kết nối đi ra.
  • block: Tương tự như drop, nhưng sẽ gửi phản hồi từ chối (ICMP Prohibited) cho người gửi biết rằng kết nối bị chặn.
  • public: (Mặc định) Dành cho mạng công cộng, không an toàn. Chỉ chấp nhận các kết nối được thiết lập cụ thể. Đây là Zone thường dùng nhất trên VPS.
  • external: Dành cho mạng bên ngoài với tính năng giả mạo IP (masquerading) được kích hoạt, thường dùng cho router.
  • dmz: Dành cho các máy tính trong vùng DMZ (Demilitarized Zone), nơi các dịch vụ có thể truy cập công khai nhưng hạn chế quyền truy cập vào mạng nội bộ.
  • work: Dành cho môi trường làm việc, tin tưởng hầu hết các máy tính trong mạng.
  • home: Dành cho mạng gia đình, mức độ tin cậy cao hơn work.
  • internal: Dành cho mạng nội bộ bên trong firewall.
  • trusted: Tin cậy tuyệt đối. Chấp nhận tất cả các kết nối mạng. Lưu ý: Chỉ dùng khi bạn kiểm soát hoàn toàn mạng lưới.

2. Runtime vs Permanent (Tạm thời và Vĩnh viễn)

Sự phân biệt giữa cấu hình RuntimePermanent là nguyên nhân gây ra nhiều lỗi nhất cho người mới bắt đầu.

  • Runtime Configuration (Cấu hình tạm thời):
    • Các thay đổi có hiệu lực ngay lập tức.
    • Sẽ mất đi khi khởi động lại (reboot) server hoặc khởi động lại dịch vụ FirewallD.
    • Mục đích: Dùng để kiểm tra thử (test) các rule mới. Nếu sai, chỉ cần reboot là hệ thống trở lại bình thường, tránh bị khóa khỏi server (lockout).
  • Permanent Configuration (Cấu hình vĩnh viễn):
    • Các thay đổi được ghi vào file cấu hình XML tại /etc/firewalld/zones/.
    • Không có hiệu lực ngay lập tức trừ khi bạn reload lại FirewallD.
    • Sẽ được giữ lại sau khi reboot server.

Lời khuyên từ chuyên gia InterData: Luôn test rule ở chế độ Runtime trước. Sau khi chắc chắn hoạt động đúng, hãy áp dụng tham số –permanent để lưu cấu hình vĩnh viễn.

So sánh FirewallD và Iptables

Nhiều người dùng lâu năm vẫn quen thuộc với Iptables. Vậy tại sao nên chuyển sang FirewallD? Bảng so sánh dưới đây sẽ làm rõ sự khác biệt.

Tiêu chí Iptables FirewallD
File cấu hình /etc/sysconfig/iptables (Dạng text đơn giản) /etc/firewalld/ (Dạng XML)
Cơ chế áp dụng Static: Mỗi lần thay đổi rule, toàn bộ firewall phải flush (xóa) và nạp lại từ đầu. Gây gián đoạn kết nối ngắn. Dynamic: Chỉ áp dụng rule mới thay đổi, không cần nạp lại toàn bộ. Không làm ngắt kết nối hiện tại.
Giao diện quản lý Lệnh dài, phức tạp, khó nhớ. Lệnh firewall-cmd trực quan, dễ hiểu. Có hỗ trợ GUI.
Tư duy quản lý Quản lý theo Chain (Input, Output, Forward). Quản lý theo Zone và Service.
Khả năng tích hợp Khó tích hợp với các phần mềm khác (như Puppet, Ansible). Tích hợp tốt qua D-Bus API.

Với các hệ điều hành mới như CentOS 7/8/9, tường lửa FirewallD là lựa chọn tối ưu nhờ tính linh hoạt và khả năng quản lý động, đặc biệt quan trọng trong môi trường Cloud Server và Virtualization.

So sánh FirewallD và Iptables

Các lệnh FirewallD thường dùng nhất

Đây là phần quan trọng nhất giúp bạn làm chủ công cụ FirewallD. Chúng ta sẽ đi qua các nhóm lệnh từ cơ bản đến nâng cao.

1. Các lệnh quản lý Zone

Trước khi thêm rule, bạn cần biết mình đang đứng ở Zone nào.

Kiểm tra Zone mặc định:

firewall-cmd --get-default-zone
# Kết quả thường là: public

Kiểm tra zone đang được gán cho card mạng (interface):

firewall-cmd --get-active-zones

Liệt kê tất cả các cấu hình hiện tại:

Đây là lệnh hữu ích nhất để xem tổng quan firewall đang mở những port nào.

firewall-cmd --list-all

2. Cách mở Port và Service (Open Port)

Để ứng dụng web hoặc database hoạt động, bạn cần mở cổng tương ứng.

Mở port theo tên dịch vụ (Service):

Cách này đơn giản hơn vì bạn không cần nhớ số port. FirewallD có sẵn danh sách các service chuẩn.

# Mở dịch vụ HTTP (Port 80)
sudo firewall-cmd --zone=public --add-service=http --permanent

# Mở dịch vụ HTTPS (Port 443)
sudo firewall-cmd --zone=public --add-service=https --permanent

Mở port theo số (Port Number):

Dùng khi bạn chạy service ở port không mặc định (ví dụ SSH đổi sang port 2222).

# Mở port 8080 giao thức TCP
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

Lưu ý quan trọng: Tham số –permanent đảm bảo rule được lưu vĩnh viễn. Sau khi thêm rule với tham số này, bạn bắt buộc phải chạy lệnh reload để rule có hiệu lực.

Nạp lại cấu hình (Reload):

sudo firewall-cmd --reload

3. Cách đóng Port/Service (Remove Rules)

Nếu không còn dùng dịch vụ, hãy đóng port để bảo mật. Cú pháp tương tự như mở port, chỉ thay add bằng remove.

# Đóng port 8080
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

# Xóa dịch vụ FTP
sudo firewall-cmd --zone=public --remove-service=ftp --permanent

# Đừng quên reload
sudo firewall-cmd --reload
Các lệnh FirewallD thường dùng nhất
Các lệnh FirewallD thường dùng nhất

4. Chặn IP truy cập (Block IP/Panic Mode)

Trong trường hợp server bị tấn công từ một IP cụ thể, bạn có thể chặn ngay lập tức bằng Rich Rules.

Chặn (Drop) một địa chỉ IP:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' --permanent

Chế độ hoảng loạn (Panic Mode):

Dùng trong trường hợp khẩn cấp khi server bị tấn công dữ dội. Lệnh này sẽ ngắt toàn bộ kết nối mạng đi và đến (kể cả SSH của bạn, nên hãy cẩn trọng nếu đang remote).

# Bật chế độ Panic
sudo firewall-cmd --panic-on
# Tắt chế độ Panic
sudo firewall-cmd --panic-off

Kiểm tra backend FirewallD (iptables hay nftables)

firewall-cmd --get-backend

Gán card mạng vào Zone

# Gán eth0 vào zone public
firewall-cmd --zone=public --add-interface=eth0 --permanent
firewall-cmd --reload

Kiểm tra trạng thái FirewallD

systemctl status firewalld

Bật log các gói bị chặn (debug)

firewall-cmd --set-log-denied=all

Xem danh sách service có sẵn

firewall-cmd --get-services

Các lỗi thường gặp khi dùng FirewallD

Dưới đây là các tình huống thực tế mà đội ngũ kỹ thuật tại InterData thường hỗ trợ khách hàng xử lý.

1. Mở port nhưng không truy cập được

  • Nguyên nhân: Có thể bạn đã thêm rule với –permanent nhưng quên chạy lệnh –reload.
  • Khắc phục: Chạy firewall-cmd –reload và kiểm tra lại bằng firewall-cmd –list-all.
  • Nguyên nhân khác: Dịch vụ bên trong chưa chạy (ví dụ nginx chưa start) hoặc dịch vụ đó chỉ lắng nghe trên localhost (127.0.0.1) thay vì 0.0.0.0.

2. Sai Zone đang sử dụng

  • Tình huống: Bạn cấu hình mở port ở zone home, nhưng card mạng eth0 lại đang được gán vào zone public.
  • Khắc phục: Kiểm tra kỹ firewall-cmd –get-active-zones để biết card mạng đang nằm ở zone nào và cấu hình trên đúng zone đó.

3. Firewalld xung đột với Iptables service

  • Tình huống: Trên cùng một server không nên chạy song song iptables-services và firewalld.
  • Khắc phục:Hãy tắt iptables và ip6tables service để tránh xung đột rule.
    systemctl stop iptables
    systemctl mask iptables

Có nên tắt FirewallD không?

Câu trả lời ngắn gọn là: Không nên, trừ trường hợp bất khả kháng.

Tường lửa là lớp bảo vệ đầu tiên của hệ điều hành. Việc tắt (disable) FirewallD đồng nghĩa với việc bạn mở toang mọi cánh cửa vào server. Bất kỳ dịch vụ nào đang chạy (Database, Redis, Memcached…) nếu không có cấu hình bảo mật riêng đều có thể bị truy cập trái phép từ Internet.

Khi nào có thể tắt tạm thời?

  • Khi bạn cần debug lỗi kết nối để xác định xem nguyên nhân có phải do firewall hay không.
  • Khi bạn sử dụng một giải pháp firewall khác thay thế (ví dụ: Config Server Firewall – CSF).

Nếu bạn quyết định tắt để test, hãy bật lại ngay sau khi xong việc:

sudo systemctl stop firewalld

Các câu hỏi thường gặp (FAQs)

1. FirewallD có thay thế hoàn toàn iptables không?

FirewallD là giao diện quản lý hiện đại thay thế cho việc sử dụng lệnh iptables trực tiếp. Tuy nhiên, ở tầng thấp nhất (kernel), nó vẫn sử dụng netfilter (hoặc nftables trên các bản mới) giống như iptables. Vì vậy, nói đúng hơn là FirewallD thay thế cách quản lý cũ của iptables service.

2. Khởi động lại VPS có mất cấu hình FirewallD không?

Nếu bạn sử dụng tham số –permanent khi thêm rule, cấu hình sẽ không mất khi khởi động lại VPS. Nếu bạn không dùng tham số này, cấu hình sẽ mất.

3. Tôi nên dùng FirewallD hay Iptables cho người mới bắt đầu?

Bạn nên dùng FirewallD. Cú pháp của nó dễ hiểu, logic hơn và ít rủi ro làm “chết” kết nối SSH hơn so với iptables thuần.

4. Làm sao để biết FirewallD đang chặn kết nối nào?

Bạn có thể bật tính năng log các gói tin bị từ chối (dropped packets) để kiểm tra:

firewall-cmd --set-log-denied=all

Sau đó kiểm tra file log hệ thống (thường là /var/log/messages hoặc dùng lệnh dmesg).

Kết luận

FirewallD là một công cụ mạnh mẽ và thiết yếu đối với bất kỳ ai quản trị hệ thống Linux, đặc biệt là trên nền tảng CentOS/RHEL. Việc hiểu rõ FirewallD là gì và nắm vững các lệnh quản lý Zone, Service, Port sẽ giúp bạn xây dựng một hàng rào bảo mật vững chắc cho VPS/Server của mình.

Hãy nhớ nguyên tắc vàng: “Luôn kiểm tra active zone và đừng quên reload sau khi cấu hình permanent”.

Nếu bạn đang tìm kiếm các giải pháp VPS Linux an toàn, ổn định và được hỗ trợ kỹ thuật chuyên sâu về bảo mật, hãy tham khảo các gói dịch vụ tại InterData. Chúng tôi luôn sẵn sàng đồng hành cùng sự an toàn dữ liệu của bạn.