網上流傳的很多關於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來解析就可以了,這樣別人即使獲得了數據庫路徑也無法下載。這個方法可以說是防止數據庫被下載的終極解決辦法了。