Windows Server 2003 雖屬成熟穩定平台,但面對現代威脅情勢仍需深度加固。本文整合高手實戰經驗,從服務精簡、磁碟權限、空連線封鎖、連接埠鎖定、帳號管理、目錄 ACL、IIS/URLScan、SQL Server 危險擴展預存程序移除、CMD/NET 權限收斂、備份策略、殺毒規則、服務精簡、危險 COM 元件移除、稽核原則等 12 大面向,構建纵深防禦體系。
透過 services.msc 將下列服務設為「已停用」並「停用」啟動類型:
C:\Windows、C:\Program Files\Common Files 必須保留 Users: 讀取/執行/列出資料夾內容,否則 ASP/ASPX 應用程式無法執行。C:\Windows\Temp:授予 Everyone: 修改/讀取/執行/列出/寫入 (應用程式暫存需求)。登錄編輯器:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
DWORD RestrictAnonymous = 1 (限制匿名 SAM/共享列舉) 或 2 (完全拒絕匿名存取)。
| 方向 | 連接埠 | 服務 |
|---|---|---|
| 外部→本機 | 80/TCP | HTTP (IIS) |
| 外部→本機 | 20,21/TCP | FTP (資料/控制) |
| 外部→本機 | PASV 範圍 | FTP 被動模式資料埠 |
| 外部→本機 | 25/TCP | SMTP |
| 外部→本機 | 110/TCP | POP3 |
| 外部→本機 | 3389/TCP | RDP (建議變更) |
| 外部→本機 | 1433/TCP | SQL Server |
| 外部→本機 | 3306/TCP | MySQL |
regedit 搜尋 3389 (十進位),修改兩處:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumberHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumberIP:新連接埠。區域連線→內容→Internet 協定 (TCP/IP)→進階→WINS→「停用 TCP/IP 上的 NetBIOS」。
建立 delshare.bat 放入 %SystemRoot%\System32\GroupPolicy\User\Scripts\Logon:
@echo off net share C$ /delete net share D$ /delete net share E$ /delete net share ADMIN$ /delete
gpedit.msc → 使用者設定 → Windows 設定 → 指令碼 (登入/登出) → 登入 → 新增 delshare.bat。重開機生效。
C:\Inetpub 及預設虛擬目錄:_vti_bin, iissamples, scripts, iishelp, iisadmin, msadc。.shtml, .shtm, .stm 等對應。[DenyExtensions] 區段加入:.cer .cdx .mdb .bat .cmd .com .htw .ida .idq .htr .idc .shtm .shtml .stm .printer使用系統管理員連線 Query Analyzer 執行:
USE master EXEC sp_dropextendedproc 'xp_cmdshell' EXEC sp_dropextendedproc 'xp_dirtree' EXEC sp_dropextendedproc 'xp_enumgroups' EXEC sp_dropextendedproc 'xp_fixeddrives' EXEC sp_dropextendedproc 'xp_loginconfig' EXEC sp_dropextendedproc 'xp_enumerrorlogs' EXEC sp_dropextendedproc 'xp_getfiledetails' EXEC sp_dropextendedproc 'sp_OACreate' EXEC sp_dropextendedproc 'sp_OADestroy' EXEC sp_dropextendedproc 'sp_OAGetErrorInfo' EXEC sp_dropextendedproc 'sp_OAGetProperty' EXEC sp_dropextendedproc 'sp_OAMethod' EXEC sp_dropextendedproc 'sp_OASetProperty' EXEC sp_dropextendedproc 'sp_OAStop' EXEC sp_dropextendedproc 'xp_regaddmultistring' EXEC sp_dropextendedproc 'xp_regdeletekey' EXEC sp_dropextendedproc 'xp_regdeletevalue' EXEC sp_dropextendedproc 'xp_regenumvalues' EXEC sp_dropextendedproc 'xp_regread' EXEC sp_dropextendedproc 'xp_regremovemultistring' EXEC sp_dropextendedproc 'xp_regwrite' DROP PROCEDURE sp_makewebtask GO
徹底切斷 T-SQL 執行 OS 命令、登錄操作、檔案系統存取、COM 物件實例化等高危路徑。
檔案 ACL 修改為僅 特定管理帳號 (如 root) 擁有「完全控制」,移除 Users、Power Users、Everyone。
進階替代:將 cmd.exe 重命名為 _cmd.exe,部署自訂 cmd.exe (Wrapper) 記錄所有命令列參數至稽核日誌。
ntbackup 排程備份「系統狀態」 (含 AD、登錄、COM+、SYSVOL)。reg.exe export 關鍵登錄分支:reg export HKLM\SOFTWARE\ODBC E:\Backup\System\odbc.reg /y移除法 (確認應用不需):
regsvr32 /u C:\WINDOWS\System32\scrrun.dll (FSO)
刪除 HKEY_CLASSES_ROOT 下 WScript.Network, WScript.Shell, Shell.Application 等 ProgID 及其對應 CLSID 分支。
改名法 (保留功能但阻擋自動化腳本):
將 Shell.Application → Shell.Application_ajiang,同步修改 CLSID 字串 (僅允許 0-9, A-F),匯入修改後 .reg,刪除原鍵值。同理處理 WScript.Shell、WScript.Network。
secpol.msc → 本地原則 → 稽核原則 → 啟用「成功/失敗」:
• 稽核原則變更
• 稽核系統事件
• 稽核帳號登入事件
• 稽核帳號管理
配合事件轉送 (Win2003 需第三方代理) 或定期匯出 .evt 分析。
安全加固非一次性動作,而是持續的「基準→部署→監控→演練→改進」循環。將上述 13 策略編碼為基準映像 (Golden Image)、GPO、PowerShell DSC 或 Ansible Playbook,納入變更管理流程,才能在 Win2003 延長支援結束後仍維持可接受風險水位。