米立方MiliFun
← 知識庫

MikroTik 資安防護最佳實踐:工程師不能不知道的七道防線

CVE-2026-7668 的發現再次提醒我們,RouterOS 的安全從來不只是更新版本而已。本文由 MikroTik Certified Trainer 整理七大實務防線,提供可直接執行的指令與顧問建議。

⚠️ 當前警告:CVE-2026-7668(CVSS 7.3 HIGH)已於 2026/05/02 公開,影響 RouterOS 6.49.8 的 SCEP 端點。Exploit PoC 已流出,尚未撤除。若您正在管理學校或企業的 MikroTik 設備,請先確認版本並套用緩解措施,再繼續閱讀本文。

2026 年 5 月,CVE-2026-7668 被公開。這次的漏洞位於 RouterOS 6.49.8 的 SCEP 端點,攻擊者不需要任何認證,只要能連到路由器的 HTTP/HTTPS 服務,就能觸發越界讀取。Exploit PoC 已在研究社群流出,尚未撤除。

這不是第一次,也不會是最後一次。

MikroTik 設備的漏洞歷史相當豐富:2018 年的 CVE-2018-14847(Winbox 任意讀取,CVSS 9.1)讓成千上萬台路由器被入侵;2023 年的 CVE-2023-30799(權限提升)影響高達 90 萬台,讓 TrickBot、Slingshot 等進階網路組織趁機擴張。每一次,只有少數工程師在事發前就已完成防護。

作為 MikroTik Certified Trainer,我常被問:「RouterOS 到底怎麼設定才安全?」本文的答案不是清單,而是一套維護框架——七道以優先順序排列的防線,讓你在資源有限的情況下,仍能做出最高報酬的決策。


01 為什麼 RouterOS 永遠是攻擊者的首選目標

顧問觀點:攻擊者選擇 MikroTik,不是因為它特別弱,而是因為它「數量多且大量暴露在網際網路上」。

MikroTik RouterOS 之所以成為在野行為者的慣常目標,原因不在於程式碼品質,而在於部署模式。全球超過數百萬台 MikroTik 設備暴露在公網,其中大量是學校、中小企業、ISP 的邊緣路由器,而這些環境往往缺乏專責資安人員、缺乏定期稽核,甚至使用出廠預設密碼數年之久。

當 TrickBot 將 MikroTik 路由器用作 C2 代理伺服器(2022 年 Microsoft 公佈),或 Slingshot APT 直接在路由器上植入長期駐留的模組組件,他們選擇的攻擊進入點,往往不是最新的 0-day,而是漏洞加上預設密碼。

這給了我們一個很重要的洞察:大多數成功的 MikroTik 入侵,是因為基礎防護沒做好,而不是因為對手技術太強。

漏洞(代表性) 攻擊類型 風險等級
CVE-2018-14847 Winbox 未授權任意讀取,可竊取帳號密碼 CRITICAL 9.1
CVE-2018-7445 SMB NetBIOS 遠端程式碼執行,無需認證 CRITICAL 9.8
CVE-2023-30799 權限提升 admin→super-admin,獲取 root shell HIGH 7.2
CVE-2026-7668 SCEP 端點越界讀取,無需認證,PoC 已公開 HIGH 7.3

結論是:與其每次漏洞發現後亡羊補牢,不如現在建立一套防護架構,讓下一個 CVE 找不到入口。


02 第一道防線:攻擊面縮小

顧問觀點:CVE-2026-7668 影響的是 SCEP 端點,但它的攻擊前提是 www/www-ssl 服務。如果你一開始就關閉了這個服務,這個漏洞對你毫無影響。攻擊面縮小是所有防護策略中 ROI 最高的一步。

RouterOS 出廠預設開啟了許多服務:Winbox(8291)、www(80)、www-ssl(443)、SSH(22)、Telnet(23)、FTP(21)、API(8728)——除非你有明確需求,否則這些都是潛在的攻擊入口。

# 查看目前所有開啟的服務
/ip service print

# 停用不需要的服務(依實際需求調整)
/ip service
set telnet  disabled=yes
set ftp     disabled=yes
set www     disabled=yes   # 若不用 Web UI 或 SCEP
set www-ssl disabled=yes   # 同上
set api     disabled=yes   # 若不用 RouterOS API
set api-ssl disabled=yes

# 保留真正需要的(例如只保留 SSH + Winbox)
set ssh     disabled=no  port=22
set winbox  disabled=no  port=8291

# 確認結果
/ip service print

實務檢查清單:

  • Telnet 必須關閉:明文傳輸,沒有任何理由在 2026 年使用
  • FTP 必須關閉:RouterOS FTP 有歷史漏洞,且 SCP/SFTP 已足夠用途
  • www/www-ssl 依需求決定:若不使用 Web 管理介面或 SCEP 認證服務,關閉可消除本次 CVE-2026-7668 的攻擊面
  • 修改預設通訊埠:將 Winbox 從 8291 改為非標準埠,可降低自動掃描中招率(這不是安全的根本解法,但會減少噪音)

03 第二道防線:管理介面硬限制

顧問觀點:就算漏洞存在,如果攻擊者連管理介面都到不了,漏洞就無從發揮。IP 白名單是最直接、最有效的訪問管控。

RouterOS 的每個管理服務都支援 allowed-address,讓你指定哪些 IP 或網段才能訪問。這個機制在 OS 層級就阻擋連線,比防火牆的規則更早發生。

# 設定各服務的允許來源(依實際管理網段調整)
/ip service
set ssh     allowed-address=192.168.1.0/24
set winbox  allowed-address=192.168.1.0/24
set www     allowed-address=192.168.1.0/24
set www-ssl allowed-address=192.168.1.0/24

# 驗證設定
/ip service print

停用密碼登入,改用 SSH Public Key

密碼可以被暴力破解、竊聽、洩漏,SSH Public Key 不行。VulnCheck 在分析 CVE-2023-30799 時特別指出:RouterOS 不強制密碼複雜度,許多部署的 admin 密碼形同虛設。

# 在管理工作站產生 Key Pair(若還沒有的話)
# ssh-keygen -t ed25519 -C "admin@yourdomain"

# 將公鑰上傳到 RouterOS
/user ssh-keys import public-key-file=id_ed25519.pub user=admin

# 確認 Key 已匯入
/user ssh-keys print

# 測試 SSH Key 登入後,強化 SSH 加密設定
/ip ssh
set strong-crypto=yes
set host-key-type=ed25519

⚠️ 注意:設定 SSH Key 後,請先確認 Key 登入成功,再移除 admin 密碼,否則可能鎖死自己。建議保留一個緊急管道(如 Console Port)。


04 第三道防線:防火牆 INPUT chain 的正確姿態

顧問觀點:很多工程師只設定了 FORWARD chain(保護後端主機),卻忘記保護路由器本身。INPUT chain 是防護路由器管理面的關鍵,而且必須用「預設不允許,逐條開放」的邏輯來設計。

RouterOS 防火牆的 INPUT chain 處理「進入路由器本身」的封包。正確的設計模式是:先建立白名單(已建立連線、管理來源),最後一條規則丟棄其他所有流量。

/ip firewall filter

# 規則 1:允許已建立/相關連線(狀態追蹤)
add chain=input connection-state=established,related action=accept \
    comment="Allow established/related"

# 規則 2:丟棄 invalid 狀態封包
add chain=input connection-state=invalid action=drop \
    comment="Drop invalid"

# 規則 3:允許 ICMP(ping)──依需求調整
add chain=input protocol=icmp action=accept \
    comment="Allow ICMP"

# 規則 4:允許管理網段訪問所有管理服務
add chain=input src-address=192.168.1.0/24 action=accept \
    comment="Allow management LAN"

# 規則 5:CVE-2026-7668 緩解──封鎖外部對 www/SCEP 的訪問
add chain=input protocol=tcp dst-port=80,443 \
    src-address-list=!trusted_mgmt action=drop \
    comment="CVE-2026-7668: Block external www/SCEP"

# 最後一條:預設丟棄其他所有 INPUT 流量
add chain=input action=drop \
    comment="Default drop INPUT"

⚠️ 常見錯誤:很多教學只示範 FORWARD chain,忽略 INPUT chain 的保護。也有工程師將「預設丟棄」規則放在白名單之前,導致把自己鎖在外面。規則順序就是邏輯,要從上到下讀。


05 第四道防線:帳號與密碼管理

顧問觀點:MikroTik 出廠預設有一個 admin 帳號,密碼為空。這個帳號不應該繼續存在於生產環境。不是「改密碼」,而是「刪帳號、建新帳號」。

RouterOS 的帳號管理看似簡單,但有幾個容易被忽略的細節,在真實事件中造成了大量損失。

# 建立新管理帳號(避免使用 admin 作為名稱)
/user
add name=netadmin group=full password="用最強密碼或空白改用SSH Key" \
    address=192.168.1.0/24 \
    comment="Primary admin account"

# 確認新帳號可以正常登入後,再刪除 admin
/user remove admin

# 建立可讀監控帳號(給 NMS/監控工具使用)
add name=monitor group=read \
    address=192.168.1.0/24 \
    comment="Read-only for monitoring"

# 查看所有帳號
/user print

實務檢查清單:

  • 刪除預設 admin 帳號:攻擊者第一個嘗試的就是 admin,讓它不存在
  • 帳號綁定來源 IP:用 address 欄位限制此帳號只能從特定 IP 段登入
  • 最小權限原則:監控帳號用 read group、自動化資料帳號只給需要的 policy
  • 密碼複雜度 RouterOS 不強制:但你必須自己遵守——使用密碼管理員產生的強密碼加上 SSH Key,安全性大幅提升

06 第五道防線:版本更新策略

顧問觀點:版本更新是最根本的漏洞修復方式,但在學校或網管企業邊緣路由器上,盲目更新可能造成服務中斷。需要策略,不是任性。

MikroTik RouterOS 有兩條發行線:Stable(功能更新較頻繁)和 Long-term(較保守,適合生產環境)。CVE-2026-7668 影響的是 Stable 6.49.8,建議升級至 RouterOS 7.x(目前最新穩定的 7.23.1,發佈於 2026/06/02)。

# Step 1:確認當前版本
/system resource print

# Step 2:備份(升級前必做)
/system backup save name=pre-upgrade-backup
/export file=pre-upgrade-config
/file print where name~"pre-upgrade"

# Step 3:檢查可用版本
/system package update check-for-updates

# Step 4:(可選)設定 channel 為 stable
/system package update
set channel=stable

# Step 5:下載並安裝(設備將自動重新開機)
/system package update download
/system package update install

# Step 6:升級後驗證版本與核心功能
/system resource print
/ip route print
/ip firewall filter print

對於管理多台設備的網管中心,建議採用滾波段升級:先在接入層邊緣設備測試,確認相容性後再升級核心路由器(CCR 系列),並在完整的非主要維護視窗執行。


07 第六道防線:日誌、監控與異常偵測

顧問觀點:你無法防禦你看不到的在野攻擊。日誌不是事後責任歸咎用的,是即時偵測的依據。

RouterOS 的日誌系統功能完整,但預設配置往往只將日誌存在記憶體中,重開機後消失。正確的做法是將日誌輸出到外部 Syslog 伺服器。

# 設定 Syslog 遠端輸出(將日誌集中到管理伺服器)
/system logging action
add name=remote-syslog target=remote \
    remote=192.168.1.200 remote-port=514 \
    src-address=0.0.0.0 bsd-syslog=yes

# 設定記錄哪些 topics
/system logging
add topics=firewall   action=remote-syslog
add topics=system     action=remote-syslog
add topics=web        action=remote-syslog   # SCEP/HTTP 請求監控
add topics=ssh,error  action=remote-syslog

# 啟用防火牆日誌(在關鍵規則加 log=yes)
/ip firewall filter
set [find comment~"Default drop INPUT"] \
    log=yes log-prefix="DROP-INPUT:"

# 即時查看可疑 SCEP 請求
/log print where topics~"web" and message~"scep"

若你的環境已有 n8n 或其他自動化工具,可以建立定期排程任務,每日檢查 RouterOS 版本、登入失敗次數、防火牆 drop 計數,並在異常時透過 Telegram/LINE 發送告警。


08 第七道防線:設定稽核與備份機制

顧問觀點:資安事件的第一步不是防禦而是恢復服務。沒有可信賴的備份,所有防護都是建在沙土上的。

# 建立自動備份腳本
/system script
add name="daily-backup" source={
    /system backup save name=("backup-" . [:pick [/system clock get date] 0 10])
    /export file=("config-" . [:pick [/system clock get date] 0 10])
    /log info message="Daily backup completed"
}

# 設定每天凌晨 2:00 執行
/system scheduler
add name="run-daily-backup" start-time=02:00:00 \
    interval=1d on-event="daily-backup" \
    comment="Auto backup every day"

實務檢查清單:

  • 備份包含兩種格式.backup(二進位,完整還原用)+ /export(文字,版本差異稽核用)
  • 備份離線存放:備份存在路由器本機只是第一步,應定期同步至 NAS 或雲端存儲
  • 定期測試還原:沒有測試過的備份,不算備份——每季至少在測試設備驗證一次還原流程

09 給工程師的顧問建議:用優先順序思考,而不是完美主義

看到七道防線,你可能第一個反應是「需要花多少時間?」。身為顧問,我理解資源永遠是有限的。所以我給你的建議不是「全部做完」,而是「依優先順序先做對的事」。

如果你今天只能做一件事,按順序執行以下三步驟:

  1. 確認設備版本與服務暴露狀況:執行 /ip service print/system resource print,找出是否有 RouterOS 6.49.8 且 www 服務對外開放。
  2. 套用防火牆的緩解規則:封鎖外部對 www/www-ssl 的訪問,消除 CVE-2026-7668 的即時攻擊面。
  3. 規劃升級作業:不需要今天就做,但需要今天就排出時間表,並告知主管或相關單位。

長期來看,MikroTik 資安防護的成熟度可以分三個層次:

  • 基礎層(立竿見影):攻擊面縮小 + 管理 IP 白名單 + 停用預設 admin + 版本不能落後超過一個主要版本
  • 進階層(3 個月應達到):SSH Key 認證 + INPUT chain 保護 + 集中 Syslog + 自動備份
  • 成熟層(持續進行):版本稽核自動化 + 異常告警整合 + 定期滲透測試 + 資安演練

如果你正在準備 MTCNA、MTCRE 或 MTCTCE 認證,這七道防線也是實際考試與實作場景的核心主題。理解背後的原理,遠比背誦指令更重要。

歡迎聯絡我們討論 MikroTik 資安評估或認證培訓的需求。

LINE 諮詢