中小企業或町工廠在推進資安對策時,常會遇到一些常見的煩惱。
「像大型企業那樣的 SOC 或 SIEM 做不起來,但勒索軟體又很可怕」
「如果 NAS 上共享的圖面和接單資料停掉,真的就無法工作了」
「沒有專職資工人員。不過,能自己做的部分還是想自己建起來」
本文以約 20 人規模的町工廠為前提,依照 IPA《中小企業資訊安全對策指南 第 4.0 版》的思路,整理出一套現實上可運作、就算壞掉也能恢復的資安架構。
前提是「不要把全部都交給廠商」。Firewall 和網路線路等,因為設備選型與維護的關係可以委託廠商,但 NAS、備份、Linux、日誌、台帳、復原測試,則要能由自己理解並操作。
重點不是堆砌昂貴產品。
也就是把這些看似樸素、但很有效的配置,小規模地建立起來並納入日常運作。
本文以以下這類公司為前提。
項目前提規模約 20 人產業町工廠/製造業是否有專職資工沒有。由兼任負責人自行建置與運作終端現場、行政、CAD/CAM 以 Windows 為主開發有 Linux/macOS、Git、Docker設計使用 macOS檔案共享有 NAS遠端部分遠距工作,使用 VPNSaaSMicrosoft 365、Google Workspace、會計、考勤等重視的風險勒索軟體、NAS 加密、老舊 VPN 侵害
重要的不是把作業系統全部統一。Windows、macOS、Linux 混在一起也沒關係。
反而更重要的是,比起 OS 統一,更要統一身分識別(ID)。
誰、用哪台裝置、存取哪些共享資源、擁有哪些權限。這些如果沒整理好,就算導入再多產品,運作也會崩掉。
20 人規模的町工廠,優先順序建議這樣考慮:
優先度對策理由SMFA防止 VPN、SaaS、Git、管理者帳號遭盜用S備份勒索事件發生時,能不能恢復決定了營運是否能持續S VPN 更新老舊 VPN 設備很容易成為入口AVLAN 分離就算被入侵,也不要讓它擴散到整個內網AEDR偵測端點受侵害並加以封鎖B資產管理找出老舊端點、未管理裝置、離職者帳號B日誌監控先從 VPN、Firewall、NAS、驗證日誌開始C高階 SIEM20 人規模一開始就上昂貴 SIEM 通常太重
一開始就仿效大型企業的資安架構,通常不是好主意。
比起昂貴的 SIEM,先做MFA 和備份更重要。
在勒索軟體對策上,比起偵測,更先建立「阻擋」「隔離」「復原」會更有效。
本文的目標不是一開始就打造完美的零信任環境。
先以達成下列狀態為目標。
項目達成目標驗證在 VPN、SaaS、Git、管理者帳號加入 MFA網路用 VLAN 區隔行政、製造、開發、訪客 Wi-Fi、攝影機、NASNAS僅限共享用途,取消 Everyone 的完整權限備份使用 Linux + restic 建立 pull 型備份外部保存USB HDD 輪替或雲端保存日誌查看 Firewall、VPN、NAS、Linux 備份伺服器的日誌台帳用表格管理端點、使用者、共享權限、備份對象復原每半年一次,實際把檔案還原一次
自己建置時,一開始不要做得太複雜,成功率會比較高。
建議順序如下:
之所以這樣安排,是因為如果在還沒有備份與復原測試的情況下就先動網路,遇到問題時就可能無法回復。
整體架構大致如下。
用 ASCII 表示如下:
Internet
|
[Firewall / UTM]
FortiGate / OPNsense
|
+-------------+-------------+
| |
[VPN/ZTNA] [Guest Wi-Fi]
MFA必須 / 裝置控管 僅可上網
|
+----------+----------+----------------+----------------+
| | | |
[VLAN10 行政] [VLAN20 製造] [VLAN30 開發] [VLAN50 攝影機]
Windows PC CAD/CAM/設備 Linux/macOS NVR/Camera
| | | |
+----------+----------+----------------+----------------+
|
[VLAN60 Server/NAS]
共享 NAS / 驗證 / 日誌
|
read-only / pull
|
[控え蔵 Backup]
Linux + restic
|
offline / cloud / external
|
逃がし蔵 外部退避
重點是,不要把內網當成一整塊。
不是「同一家公司裡所以理所當然全部都互通」,而是把行政、製造、開發、NAS、攝影機、訪客 Wi-Fi視為風險等級不同的區域。
最低限度,建議分成以下 6 類。
VLAN對象角色存取控制VLAN10行政系會計、接單、郵件、SaaSNAS 僅允許行政共享資料夾。原則上不可連到製造設備VLAN20製造設備系CAD/CAM 終端、加工機、舊 Windows網際網路限制。僅允許必要的 NAS 資料夾VLAN30開發系Linux/macOS、Git、Docker僅限開發共享。原則上不可連到行政與製造VLAN40訪客 Wi-Fi訪客裝置、個人裝置僅可上網。完全隔離內網VLAN50監視攝影機攝影機、NVR僅允許 NVR 管理端點。原則上不可上網VLAN60伺服器/NASNAS、驗證、日誌、備份整合僅允許管理端點與必要通訊
特別需要注意的是開發 LAN。
開發 LAN 裡面常有 Git 的認證資訊、SSH 金鑰、Docker、測試容器,有時甚至有接近正式環境的設定檔。若因為方便就讓開發 LAN 可以廣泛存取 NAS 管理介面或製造設備,遭入侵時橫向擴散會一下子變得很容易。
開發 LAN 不應被當成方便的管理 LAN,而應視為高風險區域。
在町工廠裡,NAS 常常變成業務的核心。
把這些檔案集中到 NAS 本身很自然;但不能把 NAS 當成備份。
NAS 是共享基礎設施。
不是備份。
如果感染勒索軟體的 PC 仍可對 SMB 共享寫入,那麼 NAS 上的共享資料夾也可能被加密。即使 NAS 有快照,也可能因設定、保留版本、權限、容量、管理者帳號狀態等因素而無法復原。
所以要把共享系統與復原系統分開。
為了方便在公司內部說明,為備份架構取個名字。
名稱意義實體まもり蔵整體備份系統備份設計全體みんな蔵共享 NASSynology / QNAP / TrueNAS 等控え蔵restic 備份Linux + restic逃がし蔵外部退避USB HDD、異地據點、相容 S3 的雲端等
若要向經營者說明,可以這樣比喻:
勒索軟體會加密工作架。
所以,不能把備份放在跟工作架擁有相同權限的位置。
重點在於備份的方向。
不是讓 NAS 寫到備份目的地,而是改成由備份伺服器端去讀 NAS。
NAS(みんな蔵)
↓ read-only mount
Linux備份伺服器(控え蔵)
↓ restic repository
外部退避(逃がし蔵)
理由很單純。
當 NAS 被入侵時,如果是 NAS 可寫入備份目的地的架構,備份目的地也可能一起被刪除或加密。
若讓控え蔵端以唯讀方式去讀 NAS,就比較不容易被 NAS 端反過來破壞備份系統。
用 Linux + restic 以簡單方式開始,運作可以像這樣。
# 對以唯讀方式掛載的 NAS 進行備份
restic -r /backup/restic-repo backup /mnt/minna-gura
# 世代管理
restic forget \
--keep-daily 14 \
--keep-weekly 8 \
--keep-monthly 12 \
--prune
# 檢查備份健康狀態
restic check
# 復原測試
restic restore latest --target /restore-test
世代保留的範例可依公司的資料量調整。
例如,一開始可用這樣的思路就足夠了。
世代保留範例日次 14 代週次 8 代月次 12 代外部退避每週 1 次或每月 1 次
重要的不是「有沒有備份」。
而是能不能還原。
半年至少要實際還原一次。
接下來是自行建置時的最小架構。
預想設備如下。
用途範例共享 NAS既有的 Synology / QNAP / TrueNAS 等控え蔵小型電腦、迷你電腦、二手伺服器、Linux 裝置作業系統Debian / Ubuntu Server LTS備份restic外部退避USB HDD 2 顆輪替,或相容 S3 的雲端控え蔵不需要高效能。不過因為有備份容量與加密處理,建議至少 8GB 記憶體、SSD 開機,以及備份用 HDD 或外部儲存裝置。
在 NAS 端建立一個專用的唯讀備份使用者。
例如:
使用者名稱: backup-reader
權限: 對備份對象共享資料夾唯讀
禁止: NAS 管理者權限、寫入權限、刪除權限
重點是,不要拿平常的管理者帳號來做備份。
以下是讀取 SMB 共享的範例。
sudo apt update
sudo apt install -y cifs-utils restic
sudo mkdir -p /mnt/minna-gura
sudo mkdir -p /etc/samba/credentials
sudo chmod 700 /etc/samba/credentials
儲存驗證資訊。
sudo editor /etc/samba/credentials/minna-gura
username=backup-reader
password=這裡填入 NAS 專用密碼
限制權限。
sudo chmod 600 /etc/samba/credentials/minna-gura
在 /etc/fstab 中加入唯讀掛載設定。
//192.168.60.10/share /mnt/minna-gura cifs credentials=/etc/samba/credentials/minna-gura,iocharset=utf8,ro,noserverino,vers=3.0 0 0
掛載。
sudo mount /mnt/minna-gura
mount | grep minna-gura
確認是 ro。
以下是存到本機磁碟的範例。
sudo useradd --system --create-home --shell /usr/sbin/nologin backup
sudo mkdir -p /backup/restic-repo
sudo chown -R backup:backup /backup
以專用使用者初始化。
sudo -u backup restic -r /backup/restic-repo init
建立 restic 密碼檔。
sudo mkdir -p /etc/restic
sudo editor /etc/restic/minna-gura.pass
sudo chown root:backup /etc/restic/minna-gura.pass
sudo chmod 640 /etc/restic/minna-gura.pass
restic 密碼也要嚴格保管在紙本或密碼管理工具中。
一旦遺失這個密碼,就無法復原。
例如建立 /usr/local/sbin/backup-minna-gura.sh。
#!/usr/bin/env bash
set -euo pipefail
export RESTIC_REPOSITORY=/backup/restic-repo
export RESTIC_PASSWORD_FILE=/etc/restic/minna-gura.pass
restic backup /mnt/minna-gura \
--tag minna-gura \
--exclude '*/@eaDir/*' \
--exclude '*/#recycle/*'
restic forget \
--keep-daily 14 \
--keep-weekly 8 \
--keep-monthly 12 \
--prune
restic check
加入執行權限。
sudo chmod 700 /usr/local/sbin/backup-minna-gura.sh
如果會用 cron 也可以;但若熟悉 Linux,systemd timer 會更容易追蹤日誌。
/etc/systemd/system/minna-gura-backup.service
[Unit]
Description=Backup minna-gura NAS share with restic
[Service]
Type=oneshot
User=backup
Group=backup
ExecStart=/usr/local/sbin/backup-minna-gura.sh
/etc/systemd/system/minna-gura-backup.timer
[Unit]
Description=Run minna-gura backup daily
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=timers.target
啟用。
sudo systemctl daemon-reload
sudo systemctl enable --now minna-gura-backup.timer
systemctl list-timers | grep minna-gura
查看日誌如下。
journalctl -u minna-gura-backup.service -n 100 --no-pager
備份完後,務必小規模實際還原一次。
sudo mkdir -p /restore-test
sudo -u backup restic -r /backup/restic-repo snapshots
sudo -u backup restic -r /backup/restic-repo restore latest --target /restore-test
把還原的檔案實際打開。
確認到這裡,才算是真正的備份。
備份常提到 3-2-1 規則。
元素內容3保留 3 份資料2分成 2 種媒體1其中 1 份放在外部或離線位置
換成町工廠的說法就是:
另外,如果可以,也可導入 immutable 的概念。
immutable 是讓資料在一定期間內較不容易被刪除或竄改的概念。可以利用像 S3 Object Lock 這類雲端功能,也可以用 USB HDD 輪替並在完成後實體拔除。
20 人規模一開始不必做太複雜的雲端架構。
但同一組認證資訊可以刪掉全部備份的設計,應該避免。
OSS 很強,但如果無法實際運作就沒有意義。
以下把 OSS、有償產品、以及中小企業可行的現實解法分開整理。
類別OSS有償中小企業現實解法FirewallOPNsense, pfSense CEFortiGate, SophosFortiGate 小型機較實際VPN/ZTNAWireGuard, HeadscaleCloudflare Zero Trust, FortiClient既有 VPN 更新 + MFAMFAprivacyIDEADuo, Okta, Microsoft Entra IDMicrosoft/Google/Duo 的 MFAID 管理KeycloakEntra ID, Okta, Google WorkspaceSaaS 為主則用 Entra ID / GoogleMDMFleet, MunkiIntune, Jamf, MosyleWindows 用 Intune,Mac 用 Mosyle/JamfEDRWazuh agentDefender for Business, CrowdStrikeDefender for BusinessSIEMWazuh, OpenSearchMicrosoft Sentinel, Splunk一開始用 Wazuh 就夠了日誌監控Wazuh, syslog-ngFortiAnalyzer從 Firewall/VPN/NAS/驗證日誌開始備份restic, Borg, KopiaAcronis, VeeamLinux + restic + 外部退避Secrets 管理Vault, SOPS1Password, Bitwarden Enterprise先用 1Password / BitwardenNASTrueNASSynology, QNAPSynology + 另一套備份VLAN/Wi-FiOpenWrtUniFi, Aruba, FortinetUniFi 或與 FortiGate 整合容器安全Trivy, GrypeSnyk, AquaCI 與定期掃描用 Trivy資產管理Snipe-IT, GLPILANSCOPE, SKYSEALANSCOP E或 Snipe-IT
若使用 OSS,Linux 伺服器的組態管理非常重要。
手動設定的伺服器,只要負責的人不在,立刻就會變成黑盒子。若用 Ansible 等工具讓設定可重現,資安品質與維護性都會提升。
在 Linux OSS 環境中,組態管理品質就是資安品質。
把現場常見事故列出來後,會發現模式其實很固定。
事故發生方式對策老舊 VPN 遭入侵脆弱的 VPN 設備或外洩帳號被入侵VPN 更新、MFA、停止將管理介面對外公開NAS 被加密感染 PC 具備可寫入 SMB 共享的權限最小化、世代管理、獨立備份從開發 LAN 橫向擴散SSH 金鑰、Docker、測試伺服器成為跳板開發 VLAN 分離、金鑰管理、限制管理通訊SMB 共享事故保留了 Everyone 完整權限的共享資料夾改為群組權限、每月清查老舊 CAD 端點無法更新的 Windows 成為感染入口製造 VLAN 隔離、限制網際網路 SSH 金鑰管理失控用個人電腦的金鑰連到正式環境或 NAS用 1Password/Vault、輪替金鑰備份未驗證雖然有備份,但無法還原每半年進行復原測試
其中最可怕的,是 NAS 加密與備份未驗證。
「以為有備份」是最危險的。
不要只看備份成功日誌就安心,務必要實際還原。
在沒有專職資工的公司,不可能每天花好幾個小時看日誌。所以要按頻率把工作拆小。
頻率工作日次確認備份成功、檢查 EDR 的重大告警、確認 VPN 失敗日誌週次檢查 Windows Update 狀態、NAS 容量、備份世代、無效帳號月次更新資產台帳、清查共享權限、確認 Firewall/VPN 更新、執行 Trivy 掃描半年實施復原測試、檢查 VPN/管理者權限、進行緊急聯絡演練、確認老舊端點是否隔離
重點是,不要把工作放在「人的記憶」裡。
要落到檢查清單、台帳、程序書。
即使是自己建置,也要照這種單位拆開,之後才容易回頭檢查設定。
自己建置時,應把作業切小,一項一項確認。
restic check 可通過DIY 建置也常有失誤。
NG理由用 NAS 管理者 ID 做備份NAS 遭入侵時,備份目的地也更容易被破壞讓 NAS 可寫入備份目的地勒索軟體可能連備份一起加密不做復原測試實際需要時可能無法還原不分 VLAN 全部放同一個 LAN 一旦感染容易橫向擴散把開發 PC 當成管理跳板SSH 金鑰與 Docker 可能讓災情擴大只靠個人手工設定 Linux 負責人不在時無法重現把 restic 密碼只存一台電腦上電腦故障就無法復原
自己建置時,比起技術本身,「能不能還原的流程」和「能不能重現的設定」更重要。
20 人規模的町工廠,不需要華而不實、全套頂級的資安產品組合。
最先需要的是以下三件事:
NAS 是共享基礎設施,不是備份。
Backup 的本質不是「有沒有備份」,而是「能不能還原」。
另外,如果使用 Linux 和 OSS,就要透過 Ansible 等工具把組態管理做好。無法重現設定的環境,也無法重現資安。
最後,即使是自己做,也不需要把所有事情都自己扛下來。
自行建置的範圍,建議從 Linux 備份、NAS 權限、復原測試、台帳管理開始。Firewall 設備、VPN 設備、配線、無線 AP、VLAN 設計的初期導入,必要時請廠商協助確認會更安全。
不過,即使交由廠商處理,備份內容與復原流程也一定要由公司自己理解。勒索軟體事件發生當下真正需要的,不是產品名稱,而是能夠復原的流程。