目前
WIN
SERVER是比較流行的服務器操作系統之一
但是要想安全的配置微軟的這個操作系統
卻不是一件容易的事
本文試圖對win
SERVER的安全配置進行初步的探討
一
定制自己的WIN
SERVER
. 版本的選擇
WIN
有各種語言的版本
對於我們來說
可以選擇英文版或簡體中文版
我強烈建議
在語言不成為障礙的情況下
請一定使用英文版
要知道
微軟的產品是以Bug & Patch而著稱的
中文版的Bug遠遠多於英文版
而補丁一般還會遲至少半個月(也就是說一般微軟公布了漏洞後你的機子還會有半個月處於無保護狀況)
. 組件的定制
win
在默認情況下會安裝一些常用的組件
但是正是這個默認安裝是極度危險的(米特尼科說過
他可以進入任何一台默認安裝的服務器
我雖然不敢這麼說
不過如果你的主機是WIN
SERVER的默認安裝
我可以告訴你
你死定了)你應該確切的知道你需要哪些服務
而且僅僅安裝你確實需要的服務
根據安全原則
最少的服務+最小的權限=最大的安全
典型的WEB服務器需要的最小組件選擇是
只安裝IIS的Com Files
IIS Snap
In
WWW Server組件
如果你確實需要安裝其他組件
請慎重
特別是
Indexing Service
FrontPage
Server Extensions
Internet Service Manager (HTML)這幾個危險服務
. 管理應用程序的選擇
選擇一個好的遠程管理軟件是非常重要的事
這不僅僅是安全方面的要求
也是應用方面的需要
Win
的Terminal Service是基於RDP(遠程桌面協議)的遠程控制軟件
他的速度快
操作方便
比較適合用來進行常規操作
但是
Terminal Service也有其不足之處
由於它使用的是虛擬桌面
再加上微軟編程的不嚴謹
當你使用Terminal Service進行安裝軟件或重起服務器等與真實桌面交互的操作時
往往會出現哭笑不得的現象
例如
使用Terminal Service重起微軟的認證服務器(Compaq
IBM等)可能會直接關機
所以
為了安全起見
我建議你再配備一個遠程控制軟件作為輔助
和Terminal Service互補
象PcAnyWhere就是一個不錯的選擇
二
正確安裝WIN
SERVER
.分區和邏輯盤的分配
有一些朋友為了省事
將硬盤僅僅分為一個邏輯盤
所有的軟件都裝在C驅上
這是很不好的
建議最少建立兩個分區
一個系統分區
一個應用程序分區
這是因為
微軟的IIS經常會有洩漏源碼/溢出的漏洞
如果把系統和IIS放在同一個驅動器會導致系統文件的洩漏甚至入侵者遠程獲取ADMIN
推薦的安全配置是建立三個邏輯驅動器
第一個大於
G
用來裝系統和重要的日志文件
第二個放IIS
第三個放FTP
這樣無論IIS或FTP出了安全漏洞都不會直接影響到系統目錄和系統文件
要知道
IIS和FTP是對外服務的
比較容易出問題
而把IIS和FTP分開主要是為了防止入侵者上傳程序並從IIS中運行
(這個可能會導致程序開發人員和編輯的苦惱
管他呢
反正你是管理員)
.安裝順序的選擇
不要覺得
順序有什麼重要?只要安裝好了
怎麼裝都可以的
錯!win
在安裝中有幾個順序是一定要注意的
首先
何時接入網絡
Win
在安裝時有一個漏洞
在你輸入Administrator密碼後
系統就建立了ADMIN$的共享
但是並沒有用你剛剛輸入的密碼來保護它
這種情況一直持續到你再次啟動後
在此期間
任何人都可以通過ADMIN$進入你的機器
同時
只要安裝一完成
各種服務就會自動運行
而這時的服務器是滿身漏洞
非常容易進入的
因此
在完全安裝並配置好win
SERVER之前
一定不要把主機接入網絡
其次
補丁的安裝
補丁的安裝應該在所有應用程序安裝完之後
因為補丁程序往往要替換/修改某些系統文件
如果先安裝補丁再安裝應用程序有可能導致補丁不能起到應有的效果
例如
IIS的HotFix就要求每次更改IIS的配置都需要安裝(變不變態?)
三
安全配置WIN
SERVER 即使正確的安裝了WIN
SERVER
系統還是有很多的漏洞
還需要進一步進行細致地配置
.端口
端口是計算機和外部網絡相連的邏輯接口
也是計算機的第一道屏障
端口配置正確與否直接影響到主機的安全
一般來說
僅打開你需要使用的端口會比較安全
配置的方法是在網卡屬性
TCP/IP
高級
選項
TCP/IP篩選中啟用TCP/IP篩選
不過對於win
的端口過濾來說
有一個不好的特性
只能規定開哪些端口
不能規定關閉哪些端口
這樣對於需要開大量端口的用戶就比較痛苦
.IIS
IIS是微軟的組件中漏洞最多的一個
平均兩三個月就要出一個漏洞
而微軟的IIS默認安裝又實在不敢恭維
所以IIS的配置是我們的重點
現在大家跟著我一起來
首先
把C盤那個什麼Inetpub目錄徹底刪掉
在D盤建一個Inetpub(要是你不放心用默認目錄名也可以改一個名字
但是自己要記得)在IIS管理器中將主目錄指向D:\Inetpub
其次
那個IIS安裝時默認的什麼scripts等虛擬目錄一概刪除(罪惡之源呀
忘了%c
%
c
/winnt/system
/cmd
exe了?我們雖然已經把Inetpub從系統盤挪出來了
但是還是小心為上)
如果你需要什麼權限的目錄可以自己慢慢建
需要什麼權限開什麼
(特別注意寫權限和執行程序的權限
沒有絕對的必要千萬不要給)
第三
應用程序配置
在IIS管理器中刪除必須之外的任何無用映射
必須指的是ASP
ASA和其他你確實需要用到的文件類型
例如你用到stml等(使用server side include)
實際上
%的主機有了上面兩個映射就夠了
其余的映射幾乎每個都有一個淒慘的故事
htw
htr
idq
ida……想知道這些故事?去查以前的漏洞列表吧
什麼?找不到在哪裡刪?在IIS管理器中右擊主機
>屬性
>WWW服務 編輯
>主目錄 配置
>應用程序映射
然後就開始一個個刪吧(裡面沒有全選的
嘿嘿)
接著在剛剛那個窗口的應用程序調試書簽內將腳本錯誤消息改為發送文本(除非你想ASP出錯的時候用戶知道你的程序/網絡/數據庫結構)錯誤文本寫什麼?隨便你喜歡
自己看著辦
點擊確定退出時別忘了讓虛擬站點繼承你設定的屬性
為了對付日益增多的cgi漏洞掃描器
還有一個小技巧可以參考
在IIS中將HTTP
Object Not Found出錯頁面通過URL重定向到一個定制HTM文件
可以讓目前絕大多數CGI漏洞掃描器失靈
其實原因很簡單
大多數CGI掃描器在編寫時為了方便
都是通過查看返回頁面的HTTP代碼來判斷漏洞是否存在的
例如
著名的IDQ漏洞一般都是通過取
idq來檢驗
如果返回HTTP
就認為是有這個漏洞
反之如果返回HTTP
就認為沒有
如果你通過URL將HTTP
出錯信息重定向到文件
那麼所有的掃描無論存不存在漏洞都會返回HTTP
%的CGI掃描器會認為你什麼漏洞都有
結果反而掩蓋了你真正的漏洞
讓入侵者茫然無處下手(武俠小說中常說全身漏洞反而無懈可擊
難道說的就是這個境界?)不過從個人角度來說
我還是認為扎扎實實做好安全設置比這樣的小技巧重要的多
最後
為了保險起見
你可以使用IIS的備份功能
將剛剛的設定全部備份下來
這樣就可以隨時恢復IIS的安全配置
還有
如果你怕IIS負荷過高導致服務器滿負荷死機
也可以在性能中打開CPU限制
例如將IIS的最大CPU使用率限制在
%
.賬號安全
Win
的賬號安全是另一個重點
首先
Win
的默認安裝允許任何用戶通過空用戶得到系統所有賬號/共享列表
這個本來是為了方便局域網用戶共享文件的
但是一個遠程用戶也可以得到你的用戶列表並使用暴力法破解用戶密碼
很多朋友都知道可以通過更改注冊表Local_Machine\System\CurrentControlSet\Control\LSA
RestrictAnonymous =
來禁止
空連接
實際上win
的本地安全策略(如果是域服務器就是在域服務器安全和域安全策略中)就有這樣的選項RestrictAnonymous(匿名連接的額外限制)
這個選項有三個值
None
Rely on default permissions(無
取決於默認的權限)
Do not allow enumeration of SAM accounts and shares(不允許枚舉SAM帳號和共享)
No access without explicit anonymous permissions(沒有顯式匿名權限就不允許訪問)
這個值是系統默認的
什麼限制都沒有
遠程用戶可以知道你機器上所有的賬號
組信息
共享目錄
網絡傳輸列表(NetServerTransportEnum等等
對服務器來說這樣的設置非常危險
這個值是只允許非NULL用戶存取SAM賬號信息和共享信息
這個值是在win
中才支持的
需要注意的是
如果你一旦使用了這個值
你的共享估計就全部完蛋了
所以我推薦你還是設為
比較好
好了
入侵者現在沒有辦法拿到我們的用戶列表
我們的賬戶安全了……慢著
至少還有一個賬戶是可以跑密碼的
這就是系統內建的administrator
怎麼辦?我改改改
在計算機管理
>用戶賬號中右擊administrator然後改名
改成什麼隨便你
只要能記得就行了
不對不對
我都已經改了用戶名了
怎麼還是有人跑我管理員的密碼?幸好我的密碼夠長
但是這也不是辦法呀?嗯
那肯定是在本地或者Terminal Service的登錄界面看到的
好吧
我們再來把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon項中的Don
t Display Last User Name串數據改成
這樣系統不會自動顯示上次的登錄用戶名
將服務器注冊表HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon項中的Don
t Display Last User Name串數據修改為
隱藏上次登陸控制台的用戶名
(哇
世界清靜了)
From:http://tw.wingwit.com/Article/Security/201312/30101.html