# 🔐 **Tài liệu: Quản lý Firewall hiện đại với `firewalld`** ## I. Giới thiệu ### 1. Truyền thống: `iptables` * Công cụ mạnh mẽ nhưng cấu hình phức tạp. * Khó duy trì khi thay đổi mạng động (IP động, VPN,...). ### 2. Hiện đại: `firewalld` * **Wrapper** cho iptables, hỗ trợ giao diện dòng lệnh (`firewall-cmd`) và GUI (`firewall-config`). * Quản lý theo **zone** giúp phân vùng tin cậy mạng linh hoạt. * Thay đổi cấu hình **real-time**, không cần reload toàn bộ hệ thống. --- ## II. Cài đặt và cấu hình cơ bản ```bash sudo systemctl start firewalld firewall-cmd --state ``` ### Các zone mặc định: | Zone | Mức độ bảo mật | | ------- | -------------------------------------- | | drop | Cực kỳ an toàn – bỏ mọi gói | | block | Từ chối có thông báo | | public | Mặc định – chỉ cho phép dịch vụ cơ bản | | home | Mạng tin cậy, cho nhiều dịch vụ LAN | | trusted | Mở tất cả | ```bash firewall-cmd --get-zones firewall-cmd --get-active-zones ``` ### Thay đổi zone: ```bash firewall-cmd --zone=home --change-interface=eth0 ``` --- ## III. Dịch vụ & Port ### Thêm dịch vụ: ```bash firewall-cmd --zone=public --add-service=http ``` ### Mở port thủ công: ```bash firewall-cmd --zone=public --add-port=5000/tcp ``` ### Làm thay đổi thành **permanent**: ```bash firewall-cmd --runtime-to-permanent ``` --- ## IV. Quản lý nâng cao ### 1. **NAT – Network Address Translation** * Dùng để chia sẻ kết nối mạng hoặc cho port forwarding. #### Bật masquerading: ```bash firewall-cmd --zone=public --add-masquerade ``` #### Port Forwarding: ```bash firewall-cmd --zone=public \ --add-forward-port=port=22:proto=tcp:toport=2222 ``` #### Forward IP: ```bash firewall-cmd --zone=external \ --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.50 ``` --- ### 2. **Rich Rules – Quy tắc nâng cao** * Tùy biến theo địa chỉ IP, logging, ICMP block,… ```bash firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family=ipv4 source address=192.168.1.10 service name=ssh accept' ``` --- ### 3. **Tạo dịch vụ riêng** * Tạo file `.xml` mô tả dịch vụ tại `/etc/firewalld/services/myapp.xml` ```xml <service> <short>MyApp</short> <port protocol="tcp" port="12345"/> </service> ``` ```bash firewall-cmd --permanent --add-service=myapp ``` --- ### 4. **Giao diện đồ họa** ```bash firewall-config ``` https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/