
主機層與存取控制的防護設定
把入口減到最少
防護的基本邏輯是:每一個對外開放的服務、每一個帳號、每一個可寫入的目錄,都是潛在的入口。
能關的就關,能限制的就限制。
一、存取管道的控制
檔案傳輸
- 使用加密的傳輸方式——傳統的未加密傳輸協定會讓帳號密碼在網路上明文傳送
- 不用的帳號要刪除——尤其是離職員工與已結束合作的廠商
- 限制連線來源——若可行,只允許特定位址連線
遠端管理
- 盡量使用金鑰而非密碼登入
- 不要開放最高權限帳號直接遠端登入
- 非必要不對外開放管理連接埠
資料庫
- 不要對外開放連線——除非確實需要
- 使用專屬帳號,只給必要的權限
- 不要用預設的帳號名稱
二、檔案權限
權限設定的原則是「剛好夠用」:
- 程式檔案不應該可被網站程式寫入——除非更新時需要
- 上傳目錄不應該可執行程式——這是很重要的一項,能阻止上傳的惡意檔案被執行
- 設定檔要限制讀取權限——裡面通常有資料庫密碼
- 不要為了「方便」而把權限全開
「上傳目錄不可執行」這一項,能擋掉相當比例的檔案上傳類攻擊,建議發包時直接列入需求。
三、隱藏不必要的資訊
攻擊的第一步通常是探測——確認你用什麼系統、什麼版本,再去找對應的漏洞。
- 不要對外顯示系統與版本資訊
- 錯誤訊息不要顯示技術細節——資料庫錯誤的原文可能洩漏結構
- 關閉目錄瀏覽——避免整個目錄的檔案清單被看見
- 備份檔不要放在網站可存取的位置
最後一項是很常見的疏忽。 把資料庫備份檔放在網站目錄下,等於公開了整份資料。
四、登入的保護
- 限制連續失敗次數——連續錯誤數次後暫時鎖定,能有效阻擋自動化嘗試
- 後台路徑不使用最常見的預設值——這不是真正的安全機制,但能減少自動化掃描
- 管理者開啟兩步驟驗證
- 考慮限制後台的連線來源
帳號層面的完整說明見後台帳號與權限怎麼規劃。
五、應用層防火牆
它會檢查進入網站的請求,攔截符合已知攻擊特徵的內容。
它能做什麼
- 阻擋常見的攻擊嘗試
- 在漏洞尚未修補前提供緩衝
- 過濾異常的請求量
它不能做什麼
- 不能取代更新——它是輔助,不是替代方案
- 可能誤擋正常的操作
- 對帳號被盜用這類「合法登入」無效
部分 CDN 服務含有這類功能,取捨見要不要用 Cloudflare 這類第三方 DNS 與 CDN。
六、備份:最後一道防線
所有防護都可能失效,備份是唯一能保證復原的機制。四個條件:
- 不存在同一台主機——主機被入侵時備份也會受影響
- 包含資料庫——只備份檔案還原出來的是空殼
- 保留多個時間點——入侵可能數週後才被發現,最新的備份可能已被污染
- 測試過能還原——沒有實際測試過的備份不算備份
第三項對防駭特別重要。 如果只保留一份最新備份,發現被入侵時可能已經無乾淨版本可用。
完整說明見操作紀錄、備份與資料救回。
七、共用主機的考量
虛擬主機上其他網站被入侵可能波及你。降低風險的方式:
- 選擇有做站台隔離的主機商
- 流量或重要性較高時,考慮獨立的環境
- 確認主機商的安全防護與回應機制
主機類型的選擇見主機規格與網站速度的關係。
依網站類型的建議程度
| 類型 | 建議做到 |
|---|---|
| 純展示型網站 | 保持更新、強密碼、定期備份 |
| 有後台與表單 | 加上登入保護、檔案權限、隱藏版本資訊 |
| 有會員或交易 | 再加上應用層防火牆、存取限制、監控 |
不必一次做到最完整。 先把更新、密碼、備份三件事做好,那已經擋掉大部分的風險。
攻擊手法與防護技術持續演變,本文說明的是原則與流程。實際的技術設定與工具選擇,建議依網站架構與主機環境評估,必要時尋求專業協助。