Làm chủ firewalld trên Fedora: Từ quản lý Zone đến tuyệt chiêu Rich Rules

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Tại sao firewalld là lựa chọn hàng đầu thay vì iptables thuần?

Nếu bạn từng “vã mồ hôi” quản trị server Linux đời cũ, chắc hẳn iptables là cái tên gây nhiều ám ảnh. Quản lý iptables giống như việc tự tay xếp từng viên gạch để xây tường thành. Chỉ cần gõ sai một dòng lệnh, bạn có thể tự “nhốt” mình bên ngoài server ngay lập tức.

Trên Fedora, firewalld đóng vai trò là một lớp quản lý (frontend) thông minh. Nó không thay thế hoàn toàn iptables hay nftables mà giúp chúng ta tương tác với chúng dễ dàng hơn. Điểm cộng lớn nhất là khả năng cập nhật quy tắc mà không làm ngắt quãng các kết nối hiện tại. Điều này cực kỳ quan trọng đối với các hệ thống đang chạy dịch vụ web hoặc database liên tục.

Cài đặt và kích hoạt trong 30 giây

Mặc dù Fedora Server thường tích hợp sẵn firewalld, nhưng các bản cài đặt Minimal có thể thiếu nó. Bạn có thể cài đặt nhanh bằng lệnh sau:

sudo dnf install firewalld -y
sudo systemctl enable --now firewalld

Để chắc chắn mọi thứ đã sẵn sàng, hãy kiểm tra trạng thái:

sudo firewall-cmd --state

Nếu thấy dòng running, chúc mừng bạn đã có thể bắt đầu thiết lập hàng rào bảo vệ cho server.

Quản lý theo Zone: Tư duy phân vùng an ninh

Đừng bao giờ để mặc định mọi thứ trong zone public. Đây là sai lầm của 80% người mới bắt đầu. Hãy coi Zone như các lớp bảo vệ của một ngân hàng: sảnh chờ ai cũng vào được, nhưng kho quỹ thì không.

Thực tế, mình thường phân loại như sau:

  • public: Chỉ mở port 80/443 cho người dùng web.
  • internal: Dành cho các kết nối giữa Web Server và Database Server.
  • drop: “Hố đen” cho mọi gói tin lạ, cực kỳ hữu hiệu để chống các công cụ scan port tự động.

Để chuyển một interface mạng (ví dụ eth0) vào vùng an toàn hơn:

sudo firewall-cmd --zone=internal --change-interface=eth0 --permanent
sudo firewall-cmd --reload

Sử dụng Service: Thay đổi cách cấu hình thủ công

Việc nhớ port 8080 hay 9000 là của dịch vụ nào rất mất thời gian. Firewalld cho phép bạn gọi tên dịch vụ trực tiếp, giúp câu lệnh tường minh và dễ quản lý hơn.

Ví dụ, để mở port cho HTTPS vĩnh viễn:

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

Mẹo nhỏ: Nếu bạn vừa cấu hình một loạt quy tắc tạm thời và thấy chúng hoạt động ổn định, hãy dùng lệnh sudo firewall-cmd --runtime-to-permanent để lưu lại toàn bộ mà không cần gõ lại từng dòng với flag --permanent.

Rich Rules: Giải pháp cho các kịch bản khó

Khi các rule cơ bản không còn đủ đáp ứng, Rich Rules sẽ lên tiếng. Đây là công cụ mạnh mẽ nhất để xử lý các yêu cầu phức tạp trên môi trường Production.

1. Giới hạn truy cập SSH theo IP cụ thể

Để chặn đứng các cuộc tấn công Brute-force, mình chỉ cho phép IP tĩnh từ văn phòng (ví dụ 1.2.3.4) truy cập port 22:

sudo firewall-cmd --permanent --add-rich-rule='
  rule family="ipv4" 
  source address="1.2.3.4" 
  port protocol="tcp" port="22" accept'

2. Chặn IP tấn công ngay lập tức

Nếu log hệ thống xuất hiện một IP 203.0.113.5 liên tục gửi request rác, hãy dùng lệnh sau để “tiễn khách” mà không cần phản hồi (reject):

sudo firewall-cmd --permanent --add-rich-rule='
  rule family="ipv4" 
  source address="203.0.113.5" reject'

3. Chống Spam với Rate Limiting

Bạn có thể giới hạn số lượng kết nối mới vào một dịch vụ. Ví dụ, chỉ cho phép tối đa 3 kết nối SSH mỗi phút để tránh làm quá tải tài nguyên:

sudo firewall-cmd --permanent --add-rich-rule='
  rule service name="ssh" 
  limit value="3/m" accept'

Kinh nghiệm xương máu khi cấu hình từ xa

Sau khi thiết lập, hãy luôn kiểm tra lại bằng lệnh sudo firewall-cmd --list-all. Tuy nhiên, rủi ro lớn nhất là bạn tự khóa chính mình ra khỏi server khi đang cấu hình SSH qua mạng.

Trước khi thực hiện các thay đổi “nguy hiểm”, hãy chạy lệnh hẹn giờ này:

sleep 300 && sudo systemctl stop firewalld

Cơ chế rất đơn giản: Nếu bạn mất kết nối, chỉ cần đợi 5 phút. Firewalld sẽ tự tắt và bạn có thể vào lại để sửa sai. Nếu mọi thứ ổn, hãy nhấn Ctrl+C để hủy lệnh sleep.

Tổng kết

Làm chủ firewalld trên Fedora không khó nếu bạn hiểu rõ về Zone và Rich Rules. Sự kết hợp giữa phân vùng an ninh và kiểm soát chi tiết giúp server của bạn vững chắc trước các cuộc tấn công phổ biến. Hãy bắt đầu từ những quy tắc đơn giản nhất và luôn giữ cho file cấu hình của mình gọn gàng.

Share: