安裝&調教 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 之前,先把系統需要的套件一次裝齊。這就像蓋房子前先把水泥、磚塊、鋼筋都運到工地,免得半路才發現缺材料。
|
1 2 3 4 5 6 7 |
# Debian apt update -y apt install -y iptables ipset net-tools dnsutils libwww-perl liblwp-protocol-https-perl libgd-graph-perl # CentOS sudo yum install -y iptables bind-utils e2fsprogs nano perl perl-Time-HiRes \ perl-GDGraph perl-libwww-perl perl-LWP-Protocol-https perl-Crypt-SSLeay \ perl-Net-SSLeay |
這些套件分別負責什麼?簡單說:
- ❶ iptables:真正在底層擋封包的核心工具
- ❷ perl 系列:CSF 本身是用 Perl 寫的,這些是它運作需要的模組
- ❸ bind-utils、e2fsprogs:輔助網路與檔案系統相關功能
裝完之後就可以正式請 CSF 進駐了。
第二步:正式安裝 CSF(把門衛請回家)👷
安裝過程非常直接,以下指令可以直接複製貼上:
|
1 2 3 4 5 6 7 8 |
rm -fr /etc/csf cd /opt rm -f csf.tgz wget -O csf.tgz https://download.configserver.com/csf.tgz # wget http://ns4.edu.ryukyu/apps/csf.tgz tar xzf csf.tgz cd csf sh install.sh |
這段指令在做什麼?用「搬家」來比喻一次:
- ❶ 先把舊的 CSF 設定資料夾清乾淨(避免殘留衝突)
- ❷ 進入
這個乾淨的工作區1/opt
- ❸ 下載最新版的 CSF 壓縮檔
- ❹ 解壓縮後進入資料夾,執行官方安裝腳本
安裝完成後,CSF 會自動把你目前連線的 IP 加入白名單,也會自動把目前正在使用的 port 寫進設定檔。這點超貼心,等於門衛一上任就先記住「主人從哪個門進出」。
第三步:一定要先做的自我測試(門衛上崗前先考照)📋
安裝完畢後一定要先執行一次自我測試,如果正常就可以開啟完整功能,才能真正保障主機安全。特別是 OpenVZ 的 VPS,更要特別注意這一步。
|
1 |
perl /usr/local/csf/bin/csfui.pl |
執行後會出現測試結果畫面,類似下面這樣:
🚨 畫重點!千萬別踩雷:如果測試沒過就直接關閉測試模式,可能會把自己鎖在外面,連 SSH 都進不去。一定要先確認測試結果是「OK」再繼續。
第四步:給 Webmin 加上 CSF 外掛(喜歡圖形介面的人看這裡)🖥️
如果你有安裝 Webmin,可以把 CSF 的圖形管理介面也裝上去,之後就不用一直在 SSH 敲指令。
到 Webmin 左手邊的 Webmin → Webmin Configuration → Webmin Modules,選擇 From local file,然後在空格中輸入:
|
1 |
/usr/local/csf/csfwebmin.tgz |
安裝完成後,左手邊就會出現 System → ConfigServer Security & Firewall,點進去就能用網頁操作大部分功能。
不喜歡一直開 SSH 的人,之後大部分操作都可以在這裡完成,超方便。
第五步:調教 CSF 設定檔(把門衛的工作手冊改好)📝
CSF 的主要設定檔在
|
1 |
/etc/csf/csf.conf |
。官方有完整的 讀我檔案 [6],這裡只挑出最常需要動的幾項,用生活化比喻一次講清楚。
❶ 指定偵測的網路介面(告訴門衛「看哪個門口」)
|
1 |
vi +/"ETH_DEVICE" /etc/csf/csf.conf |
- 一般 Linux 系統:ETH_DEVICE = “eth0”
- OpenVZ 的 VPS:ETH_DEVICE = “venet0”
❷ 指定要開放的 TCP Port(決定哪些門可以進出)
|
1 |
vi +/"TCP_IN" /etc/csf/csf.conf |
範例(請依自己實際需求調整):
|
1 |
TCP_IN = "20,21,22,25,47,53,80,110,113,123,143,161,443,465,587,993,995,1723,1812,1813,2077,2078,2082,2083,2086,2087,2095,2096,3306,10000,15000:16000" |
❸ 指定要開放的 UDP Port
|
1 |
vi +/"UDP_IN" /etc/csf/csf.conf |
|
1 |
UDP_IN = "20,21,22,25,47,53,123" |
❹ 開放主機接受 PING(讓別人可以測試你還活著)
|
1 |
vi +/"ICMP_IN" /etc/csf/csf.conf |
|
1 |
ICMP_IN = "1" |
❺ 指定 SMTP 使用的 Port 與允許的使用者
|
1 |
vi +/"SMTP_PORTS" /etc/csf/csf.conf |
|
1 |
SMTP_PORTS = "25,465,587" |
|
1 |
vi +/"SMTP_ALLOW" /etc/csf/csf.conf |
|
1 2 |
SMTP_ALLOWUSER = "cpanel" SMTP_ALLOWGROUP = "mail,mailman" |
進階防禦設定(平常不用開,被攻擊時才啟動的緊急模式)🚨
以下兩項建議「平時先關掉」,等真的遇到 SYN Flood 或 DDoS 攻擊時再打開,避免誤傷正常流量。
❶ SYNFLOOD 防護(防大量假連線攻擊)
|
1 |
vi +/"SYNFLOOD" /etc/csf/csf.conf |
|
1 2 3 |
SYNFLOOD = "1" SYNFLOOD_RATE = "100/s" SYNFLOOD_BURST = "150" |
意思是:主機每秒收到超過 100 個 SYN 封包就開始擋,突發上限是 150。資源比較小的主機可以把數字再往下調。
❷ PORTFLOOD 防護(防單一 Port 被瘋狂連線)
|
1 |
vi +/"PORTFLOOD" /etc/csf/csf.conf |
|
1 |
PORTFLOOD = "22;tcp;10;60,80;tcp;10;60" |
意思是:
- 如果 300 秒內有超過 10 個同樣的 IP 連到 TCP 22,就擋 60 秒
- 如果 5 秒內有超過 10 個同樣的 IP 連到 TCP 80,也擋 60 秒
❸ 限制特定 Port 的連線數量
|
1 |
vi +/"CONNLIMIT" /etc/csf/csf.conf |
|
1 |
CONNLIMIT = "22;5;443;20" |
意思是:SSH(22)最多允許 5 個連線,HTTPS(443)最多允許 20 個連線。可以有效防止單一 IP 把連線數灌爆。
最後一步:關閉測試模式(讓門衛正式上崗)✅
所有設定都調好、自我測試也通過之後,就可以關閉測試模式,讓 CSF 真正開始發揮作用:
|
1 |
sed -i 's#TESTING = "1"#TESTING = "0"#g' /etc/csf/csf.conf |
關閉後記得重新載入設定,或直接重啟服務。
🚨 畫重點!千萬別踩雷:關閉測試模式前,請再次確認你的 IP 已經在白名單,以及必要的 Port 都有開放。否則可能會把自己鎖在門外。
SSH 常用指令速查表(門衛的遙控器)🎮
平時在 SSH 操作 CSF,其實只要記住幾個常用指令就夠了:
| 用途 | 指令 | 說明 | ||
|---|---|---|---|---|
| 檢查運作狀態 |
|
列出目前規則 | ||
| 快速加入黑名單 |
|
把指定 IP 擋住 | ||
| 快速加入白名單 |
|
把指定 IP 放行 | ||
| 重新讀取設定 |
|
套用最新設定檔 | ||
| 更新 CSF 主程式 |
|
下載並安裝最新版 | ||
| 重新啟動服務 |
|
完整重啟 CSF |
完整指令整理如下(直接複製就能用):
|
1 2 3 4 5 6 7 8 9 10 11 12 |
檢查CSF運作狀態 csf -l 快速新增IP到黑名單 csf -d 8.8.8.8 快速新增IP到白名單 csf -a 8.8.8.8 重新讀取設定檔 csf -r 更新CSF主程式 csf -u 重新啟動CSF服務 service csf restart |
寫在最後:防火牆不是「裝了就好」,而是「調到適合自己」🛡️
CSF 的強大之處在於它不只擋封包,還會主動觀察登入失敗、異常連線,並搭配 LFD 自動處理。但再強的門衛,如果工作手冊寫得太死板,也可能把客人擋在門外,或是讓真正的小偷鑽空隙。
建議你安裝完之後,先用測試模式跑一陣子,觀察日誌有沒有誤擋正常流量,再慢慢把規則調緊。資源比較小的 VPS,更要把 SYNFLOOD 和 PORTFLOOD 的數字調低一點,避免自己先被防禦機制搞掛。
這套流程我用了很多年,從早期的 CentOS 6 一路用到現在,中間經歷過幾次被掃 port、被撞密碼的狀況,都是靠 CSF + LFD 擋下來的。希望這篇完整記錄也能幫到正在換防火牆、或是剛接觸主機安全的人。
門衛請好,房子才安心。
讓 CSF 當你的 24 小時保全吧!



