單一執行檔、零外部依賴。一行指令,五分鐘完成。
這是最短的一條路,而且不需要先知道自己該裝哪一個包——腳本會自己判斷:有 apt 就裝 deb、有 dnf/yum/zypper 就裝 rpm,兩者都沒有才用 tar.gz。
# 以 root 執行;裝好服務並啟動它
curl -fsSL https://svrguard.ofuyuan.com/install.sh | sudo sh
過程不會問任何問題——log 路徑自動偵測,服務裝好就啟動。
選你的平台,下面只會顯示這個平台的東西。
sudo apt-get install -y ./svrguard_latest_amd64.deb
裝出來的東西和上面那行指令完全一樣,執行檔在 /usr/bin/svrguard。用 apt-get 而不是 dpkg -i:前者會一併解決 ca-certificates 相依,後者會把套件留在未設定狀態。
Ubuntu 20.04/22.04/24.04 與 Debian 用的是同一個檔——我們不按發行版版本分包,支援條件寫在下面的「系統需求」裡。
sudo dnf install -y ./svrguard_latest_x86_64.rpm
# 沒有 dnf 的系統:yum install -y ./…rpm 或 zypper install --allow-unsigned-rpm ./…rpm
執行檔在 /usr/bin/svrguard,與一行安裝的結果相同。
tar -xzf svrguard_latest_linux_amd64.tar.gz sudo sh svrguard/install.sh
⚠️ 這一條與其他兩條不一樣:它裝在 /opt/svrguard,不經過套件管理器,因此不會自動處理相依套件。
它也是唯一會逐題詢問的路徑——想自己指定 log 路徑與設定,就走這一條。
⛔ 不要用上面那行 curl … | sudo sh:它在 NAS 上會拒絕執行。DSM 把已安裝的版本記在套件自己的 INFO 裡,繞過套件中心放進去的執行檔會跟它對不上,而中間每一步都會成功。
在 DSM 的「控制台 → 資訊中心」看 CPU 是哪一種,下載對應的套件:
.spk。DSM 會提醒這是未經 Synology 認證的發行者——「設定 → 信任等級」需允許「任何發行者」才能繼續。⚠️ DSM 6 的套件在這裡裝不起來,DSM 會直接拒絕——兩個世代是不同的套件,不是同一個包的變體。
⛔ 不要用上面那行 curl … | sudo sh:它在 NAS 上會拒絕執行,理由與 DSM 7 相同——版本真相在套件的 INFO 裡。
在 DSM 的「控制台 → 資訊中心」看 CPU 是哪一種,下載對應的套件:
.spk;「設定 → 信任等級」需允許「任何發行者」。⚠️ DSM 7 的套件在這裡裝不起來,反過來也一樣。
| 項目 | 需求 |
|---|---|
| 架構 | x86_64。⛔ ARM 的一般 Linux 主機目前不發行(樹莓派、ARM 雲主機);ARM 只有 Synology NAS 有套件 |
| 核心 | kernel 3.13+。nftables 原生封鎖實測最老支援到 kernel 4.4,更舊的系統自動退用 ipset/iptables |
| 日誌 | Apache access/error log(nginx 需指定 log 目錄);SSH 暴力破解偵測需能讀 /var/log/auth.log |
| 要先裝什麼 | 不需要。nftables 由 SvrGuard 直接走核心的 netlink 介面 |
| 項目 | 需求 |
|---|---|
| DSM | DSM 6 與 DSM 7 皆可(實測 DSM 6.2.4、7.2.2、7.3)。兩個世代是不同的套件 |
| 機型 | x86_64/armv7/arm64,每個世代各一份 |
| 要先裝什麼 | 不需要 SSH,也不需要 iptables 或 ipset——封鎖規則寫進 DSM 內建的防火牆 |
偵測與封鎖不需要訂閱、也不需要綁定帳號,安裝完成就開始執行。依主機曝險程度,通常幾小時內就會出現第一筆自動封鎖。
svrguard blockcheck 會逐筆比對資料庫與核心,把沒有真的生效的那幾筆指出來——這是最可靠的一項。
⭐ 它的第一行就寫著這台用的是哪一個後端(Backend : …),而且會把該後端自己的檢視指令印給你。所以底下這張表是參考,你不需要先猜自己屬於哪一種。
想自己直接問核心的話,三種後端的問法不一樣:
| 後端 | 怎麼看 |
|---|---|
| nftables | nft list table ip svrguard(規則在 input 這條 chain) |
| ipset | ipset list -n | grep svrguard 先問集合叫什麼,再 ipset list <那個名字>。還要看有沒有規則在用它: iptables -S INPUT | grep match-set |
| iptables | iptables -S SVRGUARD_BLOCK(chain 名是大寫) |
| Synology DSM 7 | ⚠️ 上面三種在這裡都讀不到——那台沒有 ipset 指令,封鎖是透過一支特權小程式寫進核心的。請用 svrguard blockcheck。 |
⚠️ ipset 的集合名不只一個,會隨型別與 IPv4/IPv6 變(svrguard_block、svrguard_block_ip…)——所以先 grep 問名字,不要直接猜一個。
⚠️ ipset 那一列兩件事都要成立才算在擋:集合裡有位址,而且有一條規則引用那個集合。只有其中一件,等於沒擋。
Pro:OTA 自動更新——新版本發布後 agent 自己完成升級,不需要你做任何事。兩者的差別見價格頁。
curl -fsSL https://svrguard.ofuyuan.com/upgrade.sh | sudo sh
它會自己判斷這台是用哪一種方式裝的(deb/rpm/tar.gz),照那一種的正確做法升級。已經是最新版就什麼都不做,所以放進 cron 每天跑也不會重裝。
設定與資料都會保留,而且它最後會確認新版真的起來了——沒起來就說出來,tar.gz 的情況還會把舊的那顆放回去。
⚠️ 不要重跑 install.sh 來更新。那是安裝用的,它偵測到已經裝過就會拒絕並指回這裡。
這條路的驗證只有 HTTPS——/dl 的安裝包沒有公布雜湊。OTA(Pro)走的是簽章通道,那是兩者的一個實際差別。
下載新的安裝包,用和第一次安裝完全相同的指令裝上去:
sudo apt-get install -y ./svrguard_latest_amd64.deb
# RHEL 系:sudo dnf install -y ./svrguard_latest_x86_64.rpm
套件的安裝程序會停掉舊的、保留你的設定與資料庫、換掉執行檔、再啟動並確認它真的在跑。
⚠️ 不要重跑 install.sh。它會再做一次服務註冊,而服務已經註冊過了——那一步會失敗,並且是在執行檔已經被換掉之後。手動請照這四步:
INI=/etc/svrguard/svrguard.ini # 若這個檔不存在,改用 /opt/svrguard/svrguard.ini sudo /opt/svrguard/svrguard service -config "$INI" stop tar -xzf svrguard_latest_linux_amd64.tar.gz sudo cp svrguard/svrguard /opt/svrguard/svrguard sudo /opt/svrguard/svrguard service -config "$INI" start /opt/svrguard/svrguard version # 應該是新版 sudo /opt/svrguard/svrguard service -config "$INI" status # 必須看到它在跑
最後兩行不能省。換檔案本身幾乎不會失敗,會失敗的是啟動——而一個停著的 agent 看起來與正常的沒有差別:防火牆規則留在核心裡繼續擋,只是再也沒有東西在偵測新的攻擊。
設定與資料不會被動到:這四步只換 /opt/svrguard/svrguard 這一個檔。
Pro:OTA 自動更新,套件自己處理——更新走簽章通道並保留上一版,抓不到回退目標時寧可不更新,也不會把你留在壞版本上。
沒有訂閱的主機不會收到供應,所以它會停在目前的版本,直到你自己更新。請用 SSH 從指令列做,不要用套件中心:套件中心的「手動安裝」會把已安裝的套件當成新安裝,要求你先解除安裝,而解除安裝會連同套件一起解除這台主機與 Hub 的綁定。
ARCH=armv7 # 或 arm64/x86_64,看你裝的是哪一個 GEN=-dsm7 # DSM 7 用 -dsm7;DSM 6 這一格留空 BASE=https://svrguard.ofuyuan.com/update/agent/synology curl -fsSL "$BASE/latest-$ARCH$GEN.json" # 從這裡讀出 url 與 sha256 curl -fsSL -o /tmp/svrguard.spk "$BASE/<manifest 裡的 url>" sha256sum /tmp/svrguard.spk # 必須等於 manifest 的 sha256 /usr/syno/bin/synopkg install /tmp/svrguard.spk /usr/syno/bin/synopkg start SvrGuard /usr/syno/bin/synopkg status SvrGuard # 必須看到 is started
版本與雜湊請從 manifest 讀,不要相信檔名:上面 /dl 的連結永遠是同一個名字,不管後面放的是哪一版。
最後兩行不能省。synopkg install 會回 0 而服務是停的。其他每一項看起來都正常——版本是新的、主機仍然綁定著、防火牆規則留在核心裡繼續擋——唯一改變的是再也沒有東西在偵測新的攻擊,而且沒有任何地方會說。離開前請用 status 確認。