- 逆向行駛 - https://520.be/ -

[CentOS]安裝&調教ConfigServer Security & Firewall

安裝&調教 ConfigServer Security & Firewall(CSF)🔥🛡️

CSF本體已死,已更新到Aetherinox/csf-firewall 🌐 [1]

從「門戶大開」進化成「有門衛、有監視器、還會自動抓小偷」的主機防火牆完整教學


🟦 🟦 🟦

為什麼我從 APF 換成 CSF?先講真實換機痛點 😱

想像你的 VPS 或獨立主機就像一間房子。以前我一直用同類型的 Advanced Policy Firewall(簡稱 APF)當門衛,結果換成 CentOS 6 之後,發現它跟新系統有點「不合氣」🤓。雖然 APF 官網後來有更新到 9.7 (rev:2),但我覺得它的更新速度有點慢,CentOS 都已經 6.5 了它才跟上,這點我滿介意的。

於是我換成了 WHM/cPanel 主機管理系統上很常見的外掛模組——ConfigServer Security & Firewall [2](簡稱 CSF)。這套防火牆是開放原始碼軟體,更新速度相對快很多,安裝也簡單,還附送一個超實用的 Login Failure Daemon(簡稱 LFD)軟體,專門負責盯著登入失敗的可疑行為。

更讓我開心的是:除了付費的 WHM/cPanel 可用,另一套開放原始碼的主機管理系統 Webmin 也同樣支援 CSF 的外掛模組。我每台主機都有裝 Webmin,所以換上去之後管理超方便。這篇就來完整記錄從安裝到調教的過程,讓完全不懂防火牆的人也能跟著做。

🔥 懶人包結論:CSF 不只是防火牆,還附帶登入失敗偵測(LFD)。安裝簡單、更新快,而且支援 Webmin 圖形介面,適合想要「有門衛又有監視器」的主機管理者。


🟩 🟩 🟩

第一步:先把基礎建材準備好 🧱

安裝 CSF 之前,先把系統需要的套件一次裝齊。這就像蓋房子前先把水泥、磚塊、鋼筋都運到工地,免得半路才發現缺材料。

這些套件分別負責什麼?簡單說:

  • iptables:真正在底層擋封包的核心工具
  • perl 系列:CSF 本身是用 Perl 寫的,這些是它運作需要的模組
  • bind-utils、e2fsprogs:輔助網路與檔案系統相關功能

裝完之後就可以正式請 CSF 進駐了。


🟪 🟪 🟪

第二步:正式安裝 CSF(把門衛請回家)👷

安裝過程非常直接,以下指令可以直接複製貼上:

這段指令在做什麼?用「搬家」來比喻一次:

  • ❶ 先把舊的 CSF 設定資料夾清乾淨(避免殘留衝突)
  • ❷ 進入 這個乾淨的工作區
  • ❸ 下載最新版的 CSF 壓縮檔
  • ❹ 解壓縮後進入資料夾,執行官方安裝腳本

安裝完成後,CSF 會自動把你目前連線的 IP 加入白名單,也會自動把目前正在使用的 port 寫進設定檔。這點超貼心,等於門衛一上任就先記住「主人從哪個門進出」。


🔶 🔶 🔶

第三步:一定要先做的自我測試(門衛上崗前先考照)📋

安裝完畢後一定要先執行一次自我測試,如果正常就可以開啟完整功能,才能真正保障主機安全。特別是 OpenVZ 的 VPS,更要特別注意這一步。

執行後會出現測試結果畫面,類似下面這樣:

csftest [3]

🚨 畫重點!千萬別踩雷:如果測試沒過就直接關閉測試模式,可能會把自己鎖在外面,連 SSH 都進不去。一定要先確認測試結果是「OK」再繼續。


🔷 🔷 🔷

第四步:給 Webmin 加上 CSF 外掛(喜歡圖形介面的人看這裡)🖥️

如果你有安裝 Webmin,可以把 CSF 的圖形管理介面也裝上去,之後就不用一直在 SSH 敲指令。

到 Webmin 左手邊的 Webmin → Webmin Configuration → Webmin Modules,選擇 From local file,然後在空格中輸入:

安裝完成後,左手邊就會出現 System → ConfigServer Security & Firewall,點進去就能用網頁操作大部分功能。

Webmin_with_CSF_01 [4]

Webmin_with_CSF_02 [5]

不喜歡一直開 SSH 的人,之後大部分操作都可以在這裡完成,超方便。


🟩 🟩 🟩

第五步:調教 CSF 設定檔(把門衛的工作手冊改好)📝

CSF 的主要設定檔在

。官方有完整的 讀我檔案 [6],這裡只挑出最常需要動的幾項,用生活化比喻一次講清楚。

❶ 指定偵測的網路介面(告訴門衛「看哪個門口」)

  • 一般 Linux 系統:ETH_DEVICE = “eth0”
  • OpenVZ 的 VPS:ETH_DEVICE = “venet0”

❷ 指定要開放的 TCP Port(決定哪些門可以進出)

範例(請依自己實際需求調整):

❸ 指定要開放的 UDP Port

❹ 開放主機接受 PING(讓別人可以測試你還活著)

❺ 指定 SMTP 使用的 Port 與允許的使用者


🟪 🟪 🟪

進階防禦設定(平常不用開,被攻擊時才啟動的緊急模式)🚨

以下兩項建議「平時先關掉」,等真的遇到 SYN Flood 或 DDoS 攻擊時再打開,避免誤傷正常流量。

❶ SYNFLOOD 防護(防大量假連線攻擊)

意思是:主機每秒收到超過 100 個 SYN 封包就開始擋,突發上限是 150。資源比較小的主機可以把數字再往下調。

❷ PORTFLOOD 防護(防單一 Port 被瘋狂連線)

意思是:

  • 如果 300 秒內有超過 10 個同樣的 IP 連到 TCP 22,就擋 60 秒
  • 如果 5 秒內有超過 10 個同樣的 IP 連到 TCP 80,也擋 60 秒

❸ 限制特定 Port 的連線數量

意思是:SSH(22)最多允許 5 個連線,HTTPS(443)最多允許 20 個連線。可以有效防止單一 IP 把連線數灌爆。


🔶 🔶 🔶

最後一步:關閉測試模式(讓門衛正式上崗)✅

所有設定都調好、自我測試也通過之後,就可以關閉測試模式,讓 CSF 真正開始發揮作用:

關閉後記得重新載入設定,或直接重啟服務。

🚨 畫重點!千萬別踩雷:關閉測試模式前,請再次確認你的 IP 已經在白名單,以及必要的 Port 都有開放。否則可能會把自己鎖在門外。


🔷 🔷 🔷

SSH 常用指令速查表(門衛的遙控器)🎮

平時在 SSH 操作 CSF,其實只要記住幾個常用指令就夠了:

用途 指令 說明
檢查運作狀態 列出目前規則
快速加入黑名單 把指定 IP 擋住
快速加入白名單 把指定 IP 放行
重新讀取設定 套用最新設定檔
更新 CSF 主程式 下載並安裝最新版
重新啟動服務 完整重啟 CSF

完整指令整理如下(直接複製就能用):


🟩 🟩 🟩

寫在最後:防火牆不是「裝了就好」,而是「調到適合自己」🛡️

CSF 的強大之處在於它不只擋封包,還會主動觀察登入失敗、異常連線,並搭配 LFD 自動處理。但再強的門衛,如果工作手冊寫得太死板,也可能把客人擋在門外,或是讓真正的小偷鑽空隙。

建議你安裝完之後,先用測試模式跑一陣子,觀察日誌有沒有誤擋正常流量,再慢慢把規則調緊。資源比較小的 VPS,更要把 SYNFLOOD 和 PORTFLOOD 的數字調低一點,避免自己先被防禦機制搞掛。

這套流程我用了很多年,從早期的 CentOS 6 一路用到現在,中間經歷過幾次被掃 port、被撞密碼的狀況,都是靠 CSF + LFD 擋下來的。希望這篇完整記錄也能幫到正在換防火牆、或是剛接觸主機安全的人。

門衛請好,房子才安心。
讓 CSF 當你的 24 小時保全吧!