Trong bài viết này, tôi sẽ chia sẻ với mọi người những kiến thức cơ bản về tường lửa trên Linux, tập trung vào hai công cụ phổ biến là firewalld
và iptables
theo cách dễ hiểu nhất. Tôi biết rằng với những người mới bắt đầu, việc làm quen với chúng có thể sẽ hơi choáng ngợp.

Đầu tiên, tôi muốn mọi người hiểu rằng tường lửa hoạt động như một người bảo vệ cho hệ thống của bạn. Nó kiểm soát các kết nối mạng đi vào và đi ra, sau đó quyết định cho phép hay chặn dựa trên các quy tắc mà chúng ta đặt ra.
Trên Linux, có hai công cụ mà tôi nghĩ mọi người nên biết là firewalld
và iptables
.
firewalld
là công cụ mặc định trên các hệ điều hành mới như CentOS 7+ hay Fedora. Nó có một khái niệm rất hay là “zone” (vùng), mỗi vùng đại diện cho một mức độ tin cậy khác nhau. Để kiểm tra trạng thái của firewalld
, mọi người có thể dùng lệnh sudo systemctl status firewalld
. Khi tôi muốn cho phép một dịch vụ web chạy qua, tôi thường dùng lệnh sudo firewall-cmd --zone=public --add-service=http --permanent
, và sau đó cần sudo firewall-cmd --reload
để áp dụng thay đổi. Tôi nhấn mạnh rằng cờ --permanent
là rất quan trọng để quy tắc không bị mất khi hệ thống khởi động lại.
Công cụ thứ hai, iptables
, có thể coi là một “lão làng” trong lĩnh vực này. Nó mạnh mẽ hơn, cho phép kiểm soát chi tiết hơn nhưng cú pháp cũng phức tạp hơn. iptables
hoạt động với các “chain” (chuỗi) chính là INPUT
(kết nối vào), OUTPUT
(kết nối ra), và FORWARD
(kết nối đi qua). Một lệnh ví dụ tôi hay dùng để cho phép kết nối SSH là sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
. Một điểm mọi người cần lưu ý với iptables
là các quy tắc sẽ biến mất sau mỗi lần reboot, vì vậy cần phải có cơ chế để lưu lại, ví dụ như iptables-save
.
Theo kinh nghiệm của tôi, có những sự cố khá phổ biến khi làm việc với tường lửa. Lỗi kinh điển nhất là Permission denied
khi SSH, thường là do public key chưa được thêm hoặc quyền truy cập file/thư mục bị sai. Một lỗi khác là “timeout” khi kết nối, có thể do tường lửa đang chặn cổng bạn cần. Lệnh ssh -v
thường rất hữu ích để tôi tìm ra vấn đề. Trường hợp tệ nhất có lẽ là việc đặt sai quy tắc và tự khóa mình ở ngoài, không thể truy cập vào máy chủ được nữa.
Để hệ thống của mọi người an toàn hơn, tôi gợi ý một vài nguyên tắc nên tuân theo: mặc định chặn tất cả và chỉ cho phép những gì cần thiết; sử dụng các công cụ như Fail2Ban
để chống lại các cuộc tấn-công dò mật khẩu; và không bao giờ cho phép tài khoản root đăng nhập trực tiếp qua SSH.
Vậy nên chọn công cụ nào? Lời khuyên của tôi là: nếu mọi người cần sự đơn giản và đang dùng các hệ điều hành mới, firewalld
là một lựa chọn rất tốt. Nếu mọi người cần sự kiểm soát tuyệt đối và không ngại phức tạp, iptables
vẫn là một công cụ cực kỳ giá trị.
Tôi hy vọng qua bài viết này, mọi người đã có cái nhìn tổng quan hơn về cách hoạt động của tường lửa trên Linux. Việc cấu hình đúng tường lửa là một trong những bước đầu tiên và quan trọng nhất để bảo vệ bất kỳ hệ thống nào.