網上流傳的很多關于windows server 2003系統的安全配置,但是仔細分析下發現很多都不全面,并且很多仍然配置的不夠合理,并且有很大的安全隐患,今天我決定仔細做下極端BT的2003伺服器的安全配置,讓更多的網管朋友高枕無憂。
我們配置的伺服器需要提供支援的元件如下:(ASP、ASPX、CGI、PHP、FSO、JMAIL、MySql、SMTP、POP3、FTP、3389終端服務、遠端桌面Web連接配接管理服務等),這裡前提是已經安裝好了系統,IIS,包括FTP伺服器,郵件伺服器等,這些具體配置方法的就不再重複了,現在我們着重主要闡述下關于安全方面的配置。
關于正常的如安全的安裝系統,設定和管理帳戶,關閉多餘的服務,稽核政策,修改終端管理端口, 以及配置MS-SQL,删除危險的存儲過程,用最低權限的public帳戶連接配接等等,都不說了
先說關于系統的NTFS磁盤權限設定,大家可能看得都多了,但是2003伺服器有些細節地方需要注意的,我看很多文章都沒寫完全。
C槽隻給administrators 和system權限,其他的權限不給,其他的盤也可以這樣設定,這裡給的system權限也不一定需要給,隻是由于某些第三方應用程式是以服務形式啟動的,需要加上這個使用者,否則造成啟動不了。
Windows目錄要加上給users的預設權限,否則ASP和ASPX等應用程式就無法運作。以前有朋友單獨設定Instsrv和temp等目錄權限,其實沒有這個必要的。
另外在c:/Documents and Settings/這裡相當重要,後面的目錄裡的權限根本不會繼承從前的設定,如果僅僅隻是設定了C槽給administrators權限,而在All Users/Application Data目錄下會 出現everyone使用者有完全控制權限,這樣入侵這可以跳轉到這個目錄,寫入腳本或隻檔案,再結合其他漏洞來提升權限;譬如利用serv-u的本地溢出提升權限,或系統遺漏有更新檔,資料庫的弱點,甚至社會工程學等等N多方法,從前不是有牛人發飑說:"隻要給我一個webshell,我就能拿到system",這也的确是有可能的。在用做web/ftp伺服器的系統裡,建議是将這些目錄都設定的鎖死。其他每個盤的目錄都按照這樣設定,沒個盤都隻給adinistrators權限。
另外,還将:net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,這些檔案都設定隻允許administrators通路。
把不必要的服務都禁止掉,盡管這些不一定能被攻擊者利用得上,但是按照安全規則和标準上來說,多餘的東西就沒必要開啟,減少一份隐患。
在"網絡連接配接"裡,把不需要的協定和服務都删掉,這裡隻安裝了基本的Internet協定(TCP/IP),由于要控制帶寬流量服務,額外安裝了Qos資料包計劃程式。在進階tcp/ip設定裡--"NetBIOS"設定"禁用tcp/IP上的NetBIOS(S)"。在進階選項裡,使用"Internet連接配接防火牆",這是windows 2003 自帶的防火牆,在2000系統裡沒有的功能,雖然沒什麼功能,但可以屏蔽端口,這樣已經基本達到了一個IPSec的功能。
這裡我們按照所需要的服務開放響應的端口。在2003系統裡,不推薦用TCP/IP篩選裡的端口過濾功能,譬如在使用FTP伺服器的時候,如果僅僅隻開放21端口,由于FTP協定的特殊性,在進行FTP傳輸的時候,由于FTP 特有的Port模式和Passive模式,在進行資料傳輸的時候,需要動态的打開高端口,是以在使用TCP/IP過濾的情況下,經常會出現連接配接上後無法列出目錄和資料傳輸的問題。是以在2003系統上增加的windows連接配接防火牆能很好的解決這個問題,是以都不推薦使用網卡的TCP/IP過濾功能。
SERV-U FTP 伺服器的設定:
一般來說,不推薦使用srev-u做ftp伺服器,主要是漏洞出現的太頻繁了,但是也正是因為其操作簡單,功能強大,過于流行,關注的人也多,才被發掘出bug來,換做其他的ftp伺服器軟體也一樣不見得安全到哪兒去。
當然,這裡也有款功能跟serv-u同樣強大,比較安全的ftp軟體:Ability FTP Server
設定也很簡單,不過我們這裡還是要迎合大衆胃口,說說關于serv-u的安全設定。
首先,6.0比從前5.x版本的多了個修改本地LocalAdministrtaor的密碼功能,其實在5.x版本裡可以用ultraedit-32等編輯器修改serv-u程式體進行修改密碼端口,6.0修補了這個隐患,單獨拿出來友善了大家。不過修改了管理密碼的serv-u是一樣有安全隐患的,兩個月前臭要飯的就寫了新的采用本地sniff方法擷取serv-u的管理密碼的exploit,正在網上火賣着,不過這種sniff的方法,同樣是在獲得webshell的條件後還得有個能在目錄裡有"執行"的權限,并且需要管理者再次登陸運作serv-u administrator的時候才能成功。是以我們的管理者要盡量避上以上幾點因素,也是可以防護的。
另外serv-u的幾點正常安全需要設定下:
選中"Block "FTP_bounce"attack and FXP"。什麼是FXP呢?通常,當使用FTP協定進行檔案傳輸時,用戶端首先向FTP伺服器發出一個"PORT"指令,該指令中包含此使用者的IP位址和将被用來進行資料傳輸的端口号,伺服器收到後,利用指令所提供的使用者位址資訊建立與使用者的連接配接。大多數情況下,上述過程不會出現任何問題,但當用戶端是一名惡意使用者時,可能會通過在PORT指令中加入特定的位址資訊,使FTP伺服器與其它非用戶端的機器建立連接配接。雖然這名惡意使用者可能本身無權直接通路某一特定機器,但是如果FTP伺服器有權通路該機器的話,那麼惡意使用者就可以通過FTP伺服器作為中介,仍然能夠最終實作與目标伺服器的連接配接。這就是FXP,也稱跨伺服器攻擊。選中後就可以防止發生此種情況。
另外在"Block anti time-out schemes"也可以選中。其次,在"Advanced"頁籤中,檢查 "Enable security"是否被選中,如果沒有,選擇它們。
IIS的安全:
删掉c:/inetpub目錄,删除iis不必要的映射
首先是每一個web站點使用單獨的IIS使用者,譬如這裡,建立立了一個名為www.315safe.com ,權限為guest的。
在IIS裡的站點屬性裡"目錄安全性"---"身份驗證和通路控制"裡設定匿名通路使用下列Windows 使用者帳戶"的使用者名密碼都使用www.315safe.com 這個使用者的資訊.在這個站點相對應的web目錄檔案,預設的隻給IIS使用者的讀取和寫入權限(後面有更BT的設定要介紹)。
在"應用程式配置"裡,我們給必要的幾種腳本執行權限:ASP.ASPX,PHP,
ASP,ASPX預設都提供映射支援了的,對于PHP,需要新添加響應的映射腳本,然後在web服務擴充将ASP,ASPX都設定為允許,對于php以及CGI的支援,需要建立web服務擴充,在擴充名(X):下輸入 php ,再在要求的檔案(E):裡添加位址 C:/php/sapi/php4isapi.dll ,并勾選設定狀态為允許(S)。然後點選确定,這樣IIS就支援PHP了。支援CGI同樣也是如此。
要支援ASPX,還需要給web根目錄給上users使用者的預設權限,才能使ASPX能執行。
另外在應用程式配置裡,設定調試為向用戶端發送自定義的文本資訊,這樣能對于有ASP注入漏洞的站點,可以不回報程式報錯的資訊,能夠避免一定程度的攻擊。
在自定義HTTP錯誤選項裡,有必要定義下譬如404,500等錯誤,不過有有時候為了調試程式,好知道程式出錯在什麼地方,建議隻設定404就可以了。
IIS6.0由于運作機制的不同,出現了應用程式池的概念。一般建議10個左右的站點共用一個應用程式池,應用程式池對于一般站點可以采用預設設定,
可以在每天淩晨的時候回收一下工作程序。
建立立一個站,采用預設向導,在設定中注意以下在應用程式設定裡:執行權限為預設的純腳本,應用程式池使用獨立的名為:315safe的程式池。
名為315safe的應用程式池可以适當設定下"記憶體回收":這裡的最大虛拟記憶體為:1000M,最大使用的實體記憶體為256M,這樣的設定幾乎是沒限制這個站點的性能的。
在應用程式池裡有個"辨別"選項,可以選擇應用程式池的安全性帳戶,預設才用網絡服務這個帳戶,大家就不要動它,能盡量以最低權限去運作大,隐患也就更小些。在一個站點的某些目錄裡,譬如這個"uploadfile"目錄,不需要在裡面運作asp程式或其他腳本的,就去掉這個目錄的執行腳本程式權限,在"應用程式設定"的"執行權限"這裡,預設的是"純腳本",我們改成"無",這樣就隻能使用靜态頁面了。依次類推,大凡是不需要asp運作的目錄,譬如資料庫目錄,圖檔目錄等等裡都可以這樣做,這樣主要是能避免在站點應用程式腳本出現bug的時候,譬如出現從前流行的upfile漏洞,而能夠在一定程度上對漏洞有扼制的作用。
在預設情況下,我們一般給每個站點的web目錄的權限為IIS使用者的讀取和寫入,如圖:
但是我們現在為了将SQL注入,上傳漏洞全部都趕走,我們可以采取手動的方式進行細節性的政策設定。
1. 給web根目錄的IIS使用者隻給讀權限。如圖:
然後我們對響應的uploadfiles/或其他需要存在上傳檔案的目錄額外給寫的權限,并且在IIS裡給這個目錄無腳本運作權限,這樣即使網站程式出現漏洞,入侵者也無法将asp木馬寫進目錄裡去,呵呵, 不過沒這麼簡單就防止住了攻擊,還有很多工作要完成。如果是MS-SQL資料庫的,就這樣也就OK了,但是Access的資料庫的話,其資料庫所在的目錄,或資料庫檔案也得給寫權限,然後資料庫檔案沒必要改成.asp的。這樣的後果大家也都知道了把,一旦你的資料庫路徑被暴露了,這個資料庫就是一個大木馬,夠可怕的。其實完全還是規矩點隻用mdb字尾,這個目錄在IIS裡不給執行腳本權限。然後在IIS裡加設定一個映射規律,如圖:
這裡用任意一個dll檔案來解析.mdb字尾名的映射,隻要不用asp.dll來解析就可以了,這樣别人即使獲得了資料庫路徑也無法下載下傳。這個方法可以說是防止資料庫被下載下傳的終極解決辦法了。
系統日志有以下的錯誤資訊:
錯誤: 應用程式池 'DefaultAppPool' 的模闆永久性緩存初始化失敗,這是由下列錯誤所導緻: 無法建立應用程式池的磁盤緩存子目錄。資料可能包含額外的錯誤代碼。
Windows Server 2003 無法建立應用程式池的磁盤緩存子目錄的解決辦法
處理方式:給下列三個目錄授予IIS_WPG及Service使用者的讀寫權限:
• systemroot/Help/IISHelp/Common
• systemroot/System32/Inetsrv/ASP Compiled Templates
• systemroot/IIS Temporary Compressed Files
步驟:打開“開始→運作”,輸入“regedit”,打開系統資料庫,進入以下路徑:
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/Wds/rdpwd/Tds/tcp],看見PortNamber值了嗎?其預設值是3389,修改成所希望的端口即可,例如3398。
再打開[HKEY_LOCAL_MACHINE/
SYSTEM/CurrentContro1Set/Control/Tenninal Server/WinStations/RDP/Tcp],将PortNumber的值(預設是3389)修改成端口3398。
關閉防毒軟體的所有的實時監控,腳本監控。
在Dos指令行狀态下分别輸入下列指令并按回車(Enter)鍵:
regsvr32 jscript.dll (指令功能:修複Java動态連結庫)
regsvr32 vbscript.dll (指令功能:修複VB動态連結庫)
C:/Program Files/Common Files給予everyone 讀的權限
今天開機就出問題了。我的DC用了二十分鐘才進來。在事件檢視器裡全是錯誤。
Windows 不能在 //wh.com/sysvol/wh.com/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/Machine/registry.pol 通路系統資料庫資訊。(指定的網絡名不再可用。 )。
暈,不能通路共享目錄。這是怎麼回事?
找不到 MS DTC 日志檔案。在确認所有由 MS DTC 協調的資料總管不具有“不确定”狀态的事務之後,請運作 msdtc -resetlog 建立日志檔案。
MS DTC 事務管理器啟動失敗。LogInit 傳回錯誤 0x5。
MS DTC 跟蹤結構: 重新整理現有跟蹤資料的嘗試失敗。内部資訊: msdtc_trace : File: d:/srvrtm/com/complus/dtc/dtc/trace/src/tracelib.cpp, Line: 1690, QueryTrace Failed, hr=0x80071069
無法啟動 MS DTC 事務管理器。
看來就是這MS DTC方面的問題,可這是MS DTC是什麼東西啊。
我的預設共享沒有關。
總感覺是VMWARE虛拟出來的網卡的問題。
還有userenv 錯誤是Documents and Settings沒有權限