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 給工程師的顧問建議:用優先順序思考,而不是完美主義
看到七道防線,你可能第一個反應是「需要花多少時間?」。身為顧問,我理解資源永遠是有限的。所以我給你的建議不是「全部做完」,而是「依優先順序先做對的事」。
如果你今天只能做一件事,按順序執行以下三步驟:
- 確認設備版本與服務暴露狀況:執行
/ip service print和/system resource print,找出是否有 RouterOS 6.49.8 且 www 服務對外開放。 - 套用防火牆的緩解規則:封鎖外部對 www/www-ssl 的訪問,消除 CVE-2026-7668 的即時攻擊面。
- 規劃升級作業:不需要今天就做,但需要今天就排出時間表,並告知主管或相關單位。
長期來看,MikroTik 資安防護的成熟度可以分三個層次:
- 基礎層(立竿見影):攻擊面縮小 + 管理 IP 白名單 + 停用預設 admin + 版本不能落後超過一個主要版本
- 進階層(3 個月應達到):SSH Key 認證 + INPUT chain 保護 + 集中 Syslog + 自動備份
- 成熟層(持續進行):版本稽核自動化 + 異常告警整合 + 定期滲透測試 + 資安演練
如果你正在準備 MTCNA、MTCRE 或 MTCTCE 認證,這七道防線也是實際考試與實作場景的核心主題。理解背後的原理,遠比背誦指令更重要。
歡迎聯絡我們討論 MikroTik 資安評估或認證培訓的需求。
