1. 程式人生 > >Windows Internet伺服器安全配置

Windows Internet伺服器安全配置


原理篇

我們將從入侵者入侵的各個環節來作出對應措施
一步步的加固windows系統.
加固windows系統.一共歸於幾個方面
1.埠限制
2.設定ACL許可權
3.關閉服務或元件
4.包過濾
5.審計

我們現在開始從入侵者的第一步開始.對應的開始加固已有的windows系統.

1.掃描
這是入侵者在剛開始要做的第一步.比如搜尋有漏洞的服務.
對應措施:埠限制
以下所有規則.都需要選擇映象,否則會導致無法連線
我們需要作的就是開啟服務所需要的埠.而將其他的埠一律遮蔽

2.下載資訊
這裡主要是通過URL SCAN.來過濾一些非法請求
對應措施:過濾相應包
我們通過安全URL SCAN並且設定urlscan.ini中的DenyExtensions欄位
來阻止特定結尾的檔案的執行


3.上傳檔案
入侵者通過這步上傳WEBSHELL,提權軟體,執行cmd指令等等.
對應措施:取消相應服務和功能,設定ACL許可權
如果有條件可以不使用FSO的.
通過 regsvr32 /u c:/windows/system32/scrrun.dll來登出掉相關的DLL.
如果需要使用.
那就為每個站點建立一個user使用者
對每個站點相應的目錄.只給這個使用者讀,寫,執行許可權,給administrators全部許可權
安裝防毒軟體.實時殺除上傳上來的惡意程式碼.
個人推薦MCAFEE或者卡巴斯基
如果使用MCAFEE.對WINDOWS目錄所有新增與修改檔案的行為進行阻止.

4.WebShell
入侵者上傳檔案後.需要利用WebShell來執行可執行程式.或者利用WebShell進行更加方便的檔案操作.
對應措施:取消相應服務和功能
一般WebShell用到以下元件
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
我們在登錄檔中將以上鍵值改名或刪除
同時需要注意按照這些鍵值下的CLSID鍵的內容
從/HKEY_CLASSES_ROOT/CLSID下面對應的鍵值刪除

5.執行SHELL
入侵者獲得shell來執行更多指令
對應措施:設定ACL許可權
windows的命令列控制檯位於/WINDOWS/SYSTEM32/CMD.EXE
我們將此檔案的ACL修改為
某個特定管理員帳戶(比如administrator)擁有全部許可權.
其他使用者.包括system使用者,administrators組等等.一律無許可權訪問此檔案.

6.利用已有使用者或新增使用者
入侵者通過利用修改已有使用者或者新增windows正式使用者.向獲取管理員許可權邁進
對應措施:設定ACL許可權.修改使用者
將除管理員外所有使用者的終端訪問許可權去掉.
限制CMD.EXE的訪問許可權.
限制SQL SERVER內的XP_CMDSHELL

7.登陸圖形終端
入侵者登陸TERMINAL SERVER或者RADMIN等等圖形終端,
獲取許多圖形程式的執行許可權.由於WINDOWS系統下絕大部分應用程式都是GUI的.
所以這步是每個入侵WINDOWS的入侵者都希望獲得的
對應措施:埠限制
入侵者可能利用3389或者其他的木馬之類的獲取對於圖形介面的訪問.
我們在第一步的埠限制中.對所有從內到外的訪問一律遮蔽也就是為了防止反彈木馬.
所以在埠限制中.由本地訪問外部網路的埠越少越好.
如果不是作為MAIL SERVER.可以不用加任何由內向外的埠.
阻斷所有的反彈木馬.

8.擦除腳印
入侵者在獲得了一臺機器的完全管理員許可權後
就是擦除腳印來隱藏自身.
對應措施:審計
首先我們要確定在windows日誌中開啟足夠的審計專案.
如果審計專案不足.入侵者甚至都無需去刪除windows事件.
其次我們可以用自己的cmd.exe以及net.exe來替換系統自帶的.
將執行的指令儲存下來.瞭解入侵者的行動.
對於windows日誌
我們可以通過將日誌傳送到遠端日誌伺服器的方式來保證記錄的完整性.
evtsys工具(https://engineering.purdue.edu/ECN/Resources/Documents)
提供將windows日誌轉換成syslog格式並且傳送到遠端伺服器上的功能.
使用此用具.並且在遠端伺服器上開放syslogd,如果遠端伺服器是windows系統.
推薦使用kiwi syslog deamon.

我們要達到的目的就是
不讓入侵者掃描到主機弱點
即使掃描到了也不能上傳檔案
即使上傳檔案了不能操作其他目錄的檔案
即使操作了其他目錄的檔案也不能執行shell
即使執行了shell也不能新增使用者
即使新增使用者了也不能登陸圖形終端
即使登陸了圖形終端.擁有系統控制權.他的所作所為還是會被記錄下來.

額外措施:
我們可以通過增加一些裝置和措施來進一步加強系統安全性.
1.代理型防火牆.如ISA2004
代理型防火牆可以對進出的包進行內容過濾.
設定對HTTP REQUEST內的request string或者form內容進行過濾
將SELECT.DROP.DELETE.INSERT等都過濾掉.
因為這些關鍵詞在客戶提交的表單或者內容中是不可能出現的.
過濾了以後可以說從根本杜絕了SQL 注入
2.用SNORT建立IDS
用另一臺伺服器建立個SNORT.
對於所有進出伺服器的包都進行分析和記錄
特別是FTP上傳的指令以及HTTP對ASP檔案的請求
可以特別關注一下.

本文提到的部分軟體在提供下載的RAR中包含
包括COM命令列執行記錄
URLSCAN 2.5以及配置好的配置檔案
IPSEC匯出的埠規則
evtsys
一些登錄檔加固的登錄檔項.

實踐篇

下面我用的例子.將是一臺標準的虛擬主機.
系統:windows2003
服務:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]
描述:為了演示,綁定了最多的服務.大家可以根據實際情況做篩減

1.WINDOWS本地安全策略 埠限制
A.對於我們的例子來說.需要開通以下埠
外->本地 80
外->本地 20
外->本地 21
外->本地 PASV所用到的一些埠
外->本地 25
外->本地 110
外->本地 3389
然後按照具體情況.開啟SQL SERVER和MYSQL的埠
外->本地 1433
外->本地 3306
B.接著是開放從內部往外需要開放的埠
按照實際情況,如果無需郵件服務,則不要開啟以下兩條規則
本地->外 53 TCP,UDP
本地->外 25
按照具體情況.如果無需在伺服器上訪問網頁.儘量不要開以下埠
本地->外 80
C.除了明確允許的一律阻止.這個是安全規則的關鍵.
外->本地 所有協議 阻止

2.使用者帳號
a.將administrator改名,例子中改為root
b.取消所有除管理員root外所有使用者屬性中的
遠端控制->啟用遠端控制 以及
終端服務配置檔案->允許登陸到終端伺服器
c.將guest改名為administrator並且修改密碼
d.除了管理員root,IUSER以及IWAM以及ASPNET使用者外.禁用其他一切使用者.包括SQL DEBUG以及TERMINAL USER等等

3.目錄許可權
將所有碟符的許可權,全部改為只有
administrators組  全部許可權
system  全部許可權
將C盤的所有子目錄和子檔案繼承C盤的administrator(組或使用者)和SYSTEM所有許可權的兩個許可權
然後做如下修改
C:/Program Files/Common Files 開放Everyone 預設的讀取及執行 列出檔案目錄 讀取三個許可權
C:/WINDOWS/ 開放Everyone 預設的讀取及執行 列出檔案目錄 讀取三個許可權
C:/WINDOWS/Temp 開放Everyone 修改,讀取及執行,列出檔案目錄,讀取,寫入許可權
現在WebShell就無法在系統目錄內寫入檔案了.
當然也可以使用更嚴格的許可權.
在WINDOWS下分別目錄設定許可權.
可是比較複雜.效果也並不明顯.

4.IIS
在IIS 6下.應用程式擴充套件內的檔案型別對應ISAPI的型別已經去掉了IDQ,PRINT等等危險的指令碼型別,
在IIS 5下我們需要把除了ASP以及ASA以外所有型別刪除.
安裝URLSCAN
在[DenyExtensions]中
一般加入以下內容
.cer
.cdx
.mdb
.bat
.cmd
.com
.htw  
.ida  
.idq  
.htr  
.idc  
.shtm
.shtml
.stm  
.printer
這樣入侵者就無法下載.mdb資料庫.這種方法比外面一些在檔案頭加入特殊字元的方法更加徹底.
因為即便檔案頭加入特殊字元.還是可以通過編碼構造出來的

5.WEB目錄許可權
作為虛擬主機.會有許多獨立客戶
比較保險的做法就是為每個客戶,建立一個windows使用者
然後在IIS的響應的站點項內
把IIS執行的匿名使用者.繫結成這個使用者
並且把他指向的目錄
許可權變更為
administrators  全部許可權
system  全部許可權
單獨建立的使用者(或者IUSER)  選擇高階->開啟除 完全控制,遍歷資料夾/執行程式,取得所有權 3個外的其他許可權.

如果伺服器上站點不多.並且有論壇
我們可以把每個論壇的上傳目錄
去掉此使用者的執行許可權.
只有讀寫許可權
這樣入侵者即便繞過論壇檔案型別檢測上傳了webshell
也是無法執行的.

6.MS SQL SERVER2000
使用系統帳戶登陸查詢分析器
執行以下指令碼
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
刪除所有危險的擴充套件.

7.修改CMD.EXE以及NET.EXE許可權
將兩個檔案的許可權.修改到特定管理員才能訪問,比如本例中.我們如下修改
cmd.exe   root使用者   所有許可權
net.exe   root使用者   所有權現
這樣就能防止非法訪問.
還可以使用例子中提供的comlog程式
將com.exe改名_com.exe,然後替換com檔案.這樣可以記錄所有執行的命令列指令

8.備份
使用ntbackup軟體.備份系統狀態.
使用reg.exe 備份系統關鍵資料
如reg export HKLM/SOFTWARE/ODBC e:/backup/system/odbc.reg /y
來備份系統的ODBC

9.防毒
這裡介紹MCAFEE 8i 中文企業版
因為這個版本對於國內的許多惡意程式碼和木馬都能夠及時的更新.
比如已經能夠檢測到海陽頂端2006
而且能夠殺除IMAIL等SMTP軟體使用的佇列中MIME編碼的病毒檔案
而很多人喜歡安裝諾頓企業版.而諾頓企業版,對於WEBSHELL.基本都是沒有反應的.
而且無法對於MIME編碼的檔案進行防毒.
在MCAFEE中.
我們還能夠加入規則.阻止在windows目錄建立和修改EXE.DLL檔案等
我們在軟體中加入對WEB目錄的防毒計劃.
每天執行一次
並且開啟實時監控.

10.關閉無用的服務
我們一般關閉如下服務
Computer Browser
Help and Support
Messenger
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
如果伺服器不用作域控,我們也可以禁用
Workstation

11.取消危險元件
如果伺服器不需要FSO
regsvr32 /u c:/windows/system32/scrrun.dll
登出元件
使用regedit
將/HKEY_CLASSES_ROOT下的
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
鍵值改名或刪除
將這些鍵值下CLSID中包含的字串
如{72C24DD5-D70A-438B-8A42-98424B88AFB8}
到/HKEY_CLASSES_ROOT/CLSID下找到以這些字串命名的鍵值
全部刪除

12.審計
本地安全策略->本地策略->稽核策略
開啟以下內容
稽核策略更改    成功,失敗
稽核系統事件    成功,失敗
稽核帳戶登陸事件    成功,失敗
稽核帳戶管理    成功,失敗