技術文章 · 網站與程式開發

網站上線只是開始:維運、備份與更新的長期功課

網站維運要明確定義備份、RPO/RTO、更新測試、弱點修補、憑證與網域續約、監控告警及實際還原責任。

作者 Steve Chen · 發布  · 更新  · 約 8 分鐘閱讀

網站與程式開發 — 廷皓技術專欄插圖

網站維運要明確定義備份、RPO/RTO、更新測試、弱點修補、憑證與網域續約、監控告警及實際還原責任。

漏洞公開後多久被利用沒有固定時鐘;風險取決於漏洞是否已被實際利用、設備是否對外、權限與可用緩解措施。維運上應追蹤原廠公告與 CISA KEV 等一手清單,先處理正在被利用且暴露度高的項目,再依測試與回復方案更新。

備份:能還原的才叫備份,複製一份不算

速度、轉換率與維護成本的改善幅度會受網站內容、流量來源、裝置與技術架構影響。先量目前的 Core Web Vitals、錯誤率與轉換漏斗,變更後用同一期間及相同口徑比較,不拿未附樣本與日期的比例當保證。

從 3-2-1 到 3-2-1-1-0

備份的底線原則叫 3-2-1:保留三份資料、存在兩種不同媒介、其中一份放異地。這條規則的邏輯很單純——不讓「單一一次事故」有辦法一次毀掉你所有的副本。硬碟壞了還有第二份,機房淹水還有異地那份。

但這幾年勒索軟體太猖獗,光靠 3-2-1 已經不夠,於是業界把它升級成 3-2-1-1-0:多出來的那個「1」,是一份離線或不可竄改(immutable)的副本;最後那個「0」,是「零個未經驗證的還原」。為什麼要多這兩項?因為勒索軟體現在很聰明,它入侵之後第一件事往往不是加密你的正式站,而是先去翻你的備份,把能連上網、能被管理員刪掉的副本全部一起加密或清空。等你想還原,才發現備份跟正式站一起陪葬。一份「就算管理員帳號被盜也刪不掉、改不了」的離線副本,就是專門用來擋這一招的。

為什麼「主機商有備份」不能當作你的備份

很多人一聽到主機商附備份就放心了,這裡有個常見誤會要拆穿。主機商那套備份,設計目的通常是整機災難復原——他們整台伺服器掛了,用來把機器整台救回來,保障的是他們的服務可用性,不保證能把你「單一一個網站」還原到「你指定的某個時間點」。更麻煩的是,如果你要還原是因為被入侵、被竄改,你要的是「三天前那個乾淨版本」,而不是「昨晚剛被掛馬的最新版本」;沒有版本保留、沒有時間點可選的備份,救不了這種狀況。再加上,萬一你的主機帳號本身被盜,放在同一個帳號底下的備份也會跟著陪葬。這就是為什麼「異地」跟「離線」這兩個字這麼關鍵。

RPO 與 RTO:先想清楚你賠得起多少

要把備份策略訂得剛剛好,得先回答兩個工程上的問題,這也是專業維運跟隨便備一備之間的分水嶺:

  • RPO(可容忍的資料遺失量):萬一出事,你最多能接受丟掉多久的資料?如果你的網站每天都有大量訂單、留言、會員註冊,RPO 抓一小時,就代表備份至少要每小時跑一次;如果是幾乎不更新的形象官網,RPO 抓一天綽綽有餘。
  • RTO(可容忍的停機時間):從出事到把網站救回來,你最多能停多久?一個電商停四小時,流失的可能是整個檔期的營收;一個內部公告頁停一天也沒人在意。

把這兩個數字想清楚,備份要跑多頻繁、要留幾個版本、要不要即時異地同步,答案自然就出來了。工程上的做法是分層——核心資料庫這種一丟就要命的,給它最短的 RPO 跟接近即時的還原能力;週邊的靜態檔案可以容忍久一點,但這個「久一點」要寫下來、驗證過,而不是憑感覺假設它沒事。

沒測過的備份,等於沒有備份

這句話我們講過很多次,因為真的太重要了。備份檔案靜靜躺在那裡,看起來好端端的,不代表它救得回來——可能是備份腳本中途斷過、可能是資料庫匯出時漏了某張表、也可能是加密後金鑰對不上。這些問題平常完全看不出來,只有在你「真的去還原一次」的時候才會現形。前面說「將近一半的還原會失敗」,多半就敗在這裡。

所以專業的做法,是把「還原演練」排進固定行程,而不是等真的出事才第一次嘗試。合理的節奏大概是:每個月做一次檔案層級的還原、每季做一次完整網站還原到隔離環境、每年做一次整體切換演練,而且每次都記下「實際花了多久還原」。這個實測數字,才是你真正的 RTO,遠比紙上估計可靠。3-2-1-1-0 裡那個「0」,講白了就是要求你「上一輪演練沒有任何一筆還原是失敗的」。

更新:這是一場只有五小時的攻防賽跑

第二環是更新,也是最多人抱著僥倖心態跳過的一環。不管是 CMS 核心、外掛、佈景,還是客製程式依賴的各種套件,開發者都會不斷修補被發現的資安漏洞。問題在於,這些漏洞被修補的同時,內容也會被公開——修補紀錄、漏洞編號(CVE)、甚至概念驗證的攻擊程式碼,全都攤在陽光下。對駭客來說,這等於官方幫他們畫好了地圖:哪個版本有洞、洞在哪、怎麼打,一清二楚。這也是 OWASP 十大風險長年把「易受攻擊與過時的元件」列進去的原因。

數字會說話:破口幾乎都在外掛

  • 這些漏洞裡,大約九成一出在外掛,出在 CMS 核心本身的只有個位數。也就是說,核心通常很穩,真正的破口幾乎都是你當初為了某個功能隨手裝上去的那些外掛。
  • 被入侵的網站裡,估計超過一半的漏洞源自「早就有修補版、但站主一直沒更新」的過時外掛。這不是無藥可醫,是有藥不吃。

換算下來,每天大約有上萬個這類網站被入侵。更棘手的是,還有將近一半的漏洞在被揭露的當下,開發者根本還沒推出修補——這種時候,能不能靠監控及早發現異常、能不能第一時間把有問題的外掛先停用,就成了唯一的防線。

那乾脆全部設成自動更新,不就好了?

講到這你可能會想:既然不更新這麼危險,那我把全部東西設成自動更新,一有新版就裝,不是最省事?這就掉進另一個極端的誤區了。更新本身是有風險的——新版外掛可能跟你的佈景衝突、可能改了某個函式讓客製功能整個失效、也可能兩個外掛各自更新後彼此打架。真讓自動更新在正式站上無腦全開,你等於把「網站哪天早上自己爆掉」的機率交給運氣。

正確的流程是有紀律的:先在測試環境(staging)把更新裝上去、把主要功能點過一遍,確認沒問題,再套到正式站;而且套用之前一定先做一次備份,萬一還是出事,能立刻退回上一個好版本。這套流程聽起來繁瑣,卻正是「更新後一切照舊」跟「更新後整站白畫面」之間的差別。實務上比較聰明的折衷,是把「純修補資安漏洞的小版本」設成盡快自動套用,把「可能動到功能的大改版」留給人工在測試環境驗證後再上——安全性優先搶時間,穩定性優先留驗證。

監控:讓你比客戶早一步知道出事

備份是出事後的後悔藥,更新是出事前的預防針,那監控就是你的警報器。網站當機、憑證過期、被掛馬、被塞垃圾內容——這些事情如果是等客戶打電話、或等搜尋引擎把你標成「危險網站」你才知道,傷害早就造成了,而且那時候通常連客人帶排名都已經流失一輪。基本的線上監控,就是要在這些事發生的當下主動通知你,讓你搶在客戶前面把火滅掉。

三種一定要盯的訊號

  • 可用性(Uptime):從外部固定去戳你的網站,看它有沒有正常回應。專業監控大多每 30 秒到 5 分鐘檢查一次;間隔越短,越能第一時間抓到當機,但也要拿捏,對流量不大的小型網站,太密集的檢查其實是多餘的負擔。重點是——當機通知要主動送到你手機,而不是你哪天想到才去看一眼。
  • 檔案完整性:持續比對網站檔案有沒有被偷偷新增或竄改。開頭那個被植入賭博廣告的案例,如果有檔案完整性監控,系統會在惡意檔案被寫進去的當下就示警,而不是等賭博彈窗都跳到客人臉上了,老闆才後知後覺。

到底該投多少維運?給採購與老闆的判斷準則

維運不是越貴越好,該投多少,取決於「這個網站對你營運有多重要」。這裡給一個很簡單的判斷框架:先問自己一句——如果這個網站現在整個消失、而且救不回來,我的生意會怎樣?

  • 如果答案是「訂單直接停擺、每小時都在燒錢」,那它就是核心資產,備份頻率、還原演練、即時監控一個都不能省,RPO 跟 RTO 都要壓到最短。
  • 如果答案是「有點麻煩,但重做一個也還好」,那可以務實一點,重點放在每日備份加基本監控,不必上到即時異地同步那種等級。

最後幫大家把最常見、也最致命的幾個誤區收在一起,看看你中了幾個:以為「主機商有備份」就等於自己有備份;備份從來沒真的做過還原測試;因為「怕更新會壞」乾脆長期不敢動;把自動更新在正式站全開、卻連個測試環境都沒有;以及完全沒有任何監控,全靠客戶通報。這五個坑,我們在高雄、台南、屏東的客戶現場,反覆看過太多遍。

網站上線的那一刻,不是專案的結束,而是另一段長期功課的開始。廷皓科技為高雄、台南、屏東的客戶提供完整的網站維運方案,把上面講的自動備份、還原驗證、安全更新、憑證與線上監控整套做起來,讓你不必整天提心吊膽,也不必等到某天早上網站爆開才手忙腳亂。想讓你的網站長期穩定運作、真的出事時救得回來,歡迎和我們聊聊。

聯絡廷皓討論 看更多文章