Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

IIS 日誌安全防護實戰:移動預設路徑、斷開繼承、鎖定 ACL、自動化歸檔與異地備份

編輯:Windows 2003 常見問題解答

前言:日誌是入侵偵測的唯一可信見證,必須防範被竄改、刪除、竊取

IIS 預設將日誌寫入 %SystemRoot%\System32\LogFiles\W3SVC1\ (系統磁碟、預設路徑、Everyone 可讀)。駭客取得 WebShell 後,首要動作即是刪除/清空日誌抹除痕跡,或下載日誌分析目錄結構、參數規律規劃進一步攻擊。本文提供四層防護:路徑遷移、權限收斂、審計留痕、自動化歸檔異地備份。

第一層:遷移日誌目錄至非系統磁碟專用資料夾

  1. 建立專用資料夾:
    D:\IISLogs\W3SVC1\ (D: 為非系統磁碟,獨立於網站內容)。
  2. IIS 管理員 → 網站 → 右鍵目標站點 →「內容」→「網站」頁籤 →「啟用記錄」→「屬性」→「記錄檔目錄」→「瀏覽」→ 選擇 D:\IISLogs\W3SVC1\ → 確定三次。
  3. 多站點逐站重複,建議命名慣例 D:\IISLogs\W3SVC\。
  4. 手動移動舊日誌:將 %SystemRoot%\System32\LogFiles\ 既有檔案剪貼至新位置,保留歷史審計軌跡。

第二層:NTFS ACL 收斂 — 僅保留必要主體

  1. 右鍵 D:\IISLogs\ →「內容」→「安全性」→「進階」。
  2. 取消勾選「包含來自父物件的可繼承權限」→ 彈出視窗選擇「移除」。
  3. 點選「新增」→「進階」→「立即尋找」→ 選擇 Administrators → 確定 → 權限設為 完全控制。
  4. 新增 SYSTEM → 完全控制 (IIS 寫入日誌所需)。
  5. 移除 Users、Everyone、Authenticated Users、IIS_IUSRS 等所有其他主體。
  6. 確定套用,驗證:以非管理員帳號嘗試開啟資料夾 → 應提示「拒絕存取」。

第三層:啟用物件存取審計 — 留下「誰動了日誌」的證據

  1. 本地安全性原則 (或 GPO) → 本地原則 → 審計原則 → 審計物件存取 → 成功/失敗 全勾選。
  2. 回到 D:\IISLogs\ 「安全性」→「進階」→「審計」頁籤 → 新增 → 「Everyone」 → 類型:「所有」 → 勾選「刪除」、「寫入資料/附加資料」、「變更權限」、「取得擁有權」 → 確定。
  3. 驗證:以一般使用者嘗試刪除日誌檔 → 安全性事件日誌 (Event ID 4660/4663) 記錄嘗試者帳號、時間、檔案名、存取遮罩。

第四層:自動化歸檔與異地備份 (PowerShell + 工作排程器)


# Archive-IISLogs.ps1
param(
    [string]$SourceRoot = "D:\IISLogs",
    [string]$DestRoot   = "\\BackupServer\IISLogsArchive",
    [int]   $RetainDays = 90
)

$cutoff = (Get-Date).AddDays(-$RetainDays)
Get-ChildItem $SourceRoot -Recurse -File -Name "*.log" |
Where-Object { $_.LastWriteTime -lt $cutoff } |
ForEach-Object {
    $rel = $_.FullName.Substring($SourceRoot.Length+1)
    $dest = Join-Path $DestRoot $rel
    $destDir = Split-Path $dest -Parent
    if (-not (Test-Path $destDir)) { New-Item -ItemType Directory -Path $destDir -Force | Out-Null }
    Move-Item $_.FullName -Destination $dest -Force
    Write-Host "Archived: $rel"
}
# 清理空目錄
Get-ChildItem $SourceRoot -Recurse -Directory | Where-Object { @(Get-ChildItem $_.FullName -Recurse).Count -eq 0 } | Remove-Item -Force -Recurse

工作排程器 → 建立基本任務 → 每日 02:00 執行:
powershell.exe -ExecutionPolicy Bypass -File C:\Scripts\Archive-IISLogs.ps1

進階:日誌完整性驗證 (哈希鏈)

為防範駭客竊取備份伺服器後竄改歷史日誌,建議在歸檔腳本中對每日日誌檔計算 SHA-256 雜湊,寫入 D:\IISLogs\HashChain\YYYYMMDD.sha256,並將雜湊清單本身簽署 (代碼簽署憑證) 或上傳至不可變物件儲存 (AWS S3 Object Lock / Azure Immutable Blob)。


結語: IIS 日誌安全防護的核心邏輯是 「遷移隔離 + 權限最小 + 審計全覆蓋 + 歸檔異地不可變」。完成四層部署後,即使 Web 伺服器被完全攻陷、WebShell 權限提升至 SYSTEM,攻擊者也無法刪除/竄改已歸檔的歷史日誌,也無法在不留痕跡的情況下讀取即時日誌,為事後鑑識、合規審計保留不可抵賴的鐵證。

Copyright © Windows教程網 All Rights Reserved