🧩 Linux 安全強化實戰:Firewalld、SELinux 與 Fail2Ban 整合指南
在企業級 Linux 環境中,安全防護不應只靠單一機制。 本篇將從 Firewalld、SELinux 與 Fail2Ban 三者的協同運作出發, 帶你一步步建立多層防禦架構,兼顧動態封鎖、權限隔離與服務持續運行。
📘 一、Firewalld:區域化防火牆管理
Firewalld 是 RHEL / CentOS / Rocky 的預設防火牆框架, 以「zone」為核心概念,能針對不同介面或服務設定安全層級。
# 檢查當前 zone 與啟用狀態
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-default-zone
# 新增服務允許
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=ssh --permanent
# 重新載入設定
sudo firewall-cmd --reload
# 自訂 port 範例
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
💡 建議:為不同介面分配專屬 zone(如:外網 public、內網 internal),
並在
/etc/firewalld/zones/ 下持久化自訂 XML 配置。
🔐 二、SELinux:權限隔離與防範內部入侵
SELinux(Security-Enhanced Linux)透過安全上下文控制程序與檔案存取, 有效阻止服務被提權或竄改。雖然許多使用者選擇關閉它,但正確設定能極大化系統防護。
# 查看當前模式
getenforce
# 永久修改為 enforcing
sudo setenforce 1
sudo vi /etc/selinux/config
SELINUX=enforcing
# 查詢被封鎖的操作記錄
sudo ausearch -m avc -ts recent
sudo sealert -a /var/log/audit/audit.log
若應用因 SELinux 封鎖而失效,可利用 audit2allow 自動生成允許規則:
sudo cat /var/log/audit/audit.log | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp
🧱 三、Fail2Ban 整合 Firewalld 動態防護
透過 action 腳本,Fail2Ban 可與 Firewalld 動態整合,達成即時封鎖與自動解封。
# 編輯 jail.local(僅示意)
[sshd]
enabled = true
filter = sshd
action = firewallcmd-ipset
logpath = /var/log/secure
maxretry = 5
bantime = 900
檢查整合狀態:
sudo fail2ban-client status
sudo firewall-cmd --info-ipset=fail2ban-sshd
🔎 說明:
firewallcmd-ipset會建立動態 IP 集合(ipset),並由 Firewalld 接管封鎖。- 封鎖規則不會在 reboot 後遺失,確保持續防護。
⚙️ 四、三者整合架構示意
- Firewalld:靜態防護(預設 zone、服務允許)。
- Fail2Ban:動態封鎖(即時反應異常行為)。
- SELinux:內層強制控管(防止程式越權)。
[外部攻擊] → Firewalld → Fail2Ban(自動封鎖 IP)
↓
SELinux(防止提權)
↓
systemd(穩定運作)
🧭 五、行動清單
✅ 確認 Firewalld zone 與服務配置正確 ✅ 啟用 SELinux 並使用 audit2allow 處理誤封 ✅ 於 Fail2Ban action 中啟用 firewallcmd-ipset ✅ 驗證封鎖 IP 是否同步反映於 ipset ✅ 建立每日封鎖報告(crontab + fail2ban-client)
📘 結語
Linux 的安全性並非來自單一指令,而是多層協同的結果。 透過 Firewalld 管理網路邊界、SELinux 保護內部資源、Fail2Ban 動態封鎖攻擊, 你就能建立兼顧彈性與穩定的伺服器安全防線。
🔗 延伸閱讀
- 🐧 Linux systemd 深入解析與啟動流程管理
- 🔐 Fail2Ban + iptables 防暴力破解實戰(SSH 與常見服務)
- 🐧 Linux Proxy Server 建置教學(Squid 安裝與設定指南)
— WWFandy・Linux 安全強化筆記
沒有留言: