配置安全的windows2003伺服器

科技小先鋒發表於2017-11-09
一、先關閉不需要的埠
   只開了3389 21 80 1433 3306
   修改3389埠:
   Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerWinStationsRDP-Tcp]
  ”PortNumber”=dword:00002683
           [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerwds
dpwd ds cp]
    “PortNumber”=dword:00002683
二、關閉不需要的服務 開啟相應的稽核策略
Computer Browser 維護網路上計算機的最新列表以及提供這個列表
Task scheduler 允許程式在指定時間執行
Routing and Remote Access 在區域網以及廣域網環境中為企業提供路由服務
Removable storage 管理可移動媒體、驅動程式和庫
Remote Registry Service 允許遠端登錄檔操作
Print Spooler 將檔案載入到記憶體中以便以後列印。要用印表機的朋友不能禁用這項
IPSEC Policy Agent 管理IP安全策略以及啟動ISAKMP/OakleyIKE)和IP安全驅動程式
Distributed Link Tracking Client 當檔案在網路域的NTFS卷中移動時傳送通知
Com+ Event System 提供事件的自動釋出到訂閱COM元件
Alerter 通知選定的使用者和計算機管理警報
Error Reporting Service 收集、儲存和向 Microsoft 報告異常應用程式
Messenger 傳輸客戶端和伺服器之間的 NET SEND 和 警報器服務訊息
Telnet 允許遠端使用者登入到此計算機並執行程式
在”網路連線”裡,把不需要的協議和服務都刪掉,這裡只安裝了基本的Internet協議(TCP/IP),由於要控制頻寬流量服務,額外安裝了Qos資料包計劃程式。在高階tcp/ip設定裡–“NetBIOS”設定”禁用tcp/IP上的NetBIOS(S)”。在高階選項裡,使用”Internet連線防火牆”,這是windows 2003 自帶的防火牆,在2000系統裡沒有的功能,雖然沒什麼功能,但可以遮蔽埠,這樣已經基本達到了一個IPSec的功能。
三、許可權設定
C盤只給administrators 和system許可權,其他的許可權不給,其他的盤也可以這樣設定,這裡給的system許可權也不一定需要給,只是由於某些第三方應用程式是以服務形式啟動的,需要加上這個使用者,否則造成啟動不了。
      先給C:Windows目錄加上IIS_WPG使用者組的預設許可權
      然後再去分別給個別目錄加 先去C:Program FilesCommon Files上Guests預設許可權
     然後再去 C:WINNTTemp 加上Guests的讀寫兩個許可權 其他的去小
     然後就是C:WINDOWSsystem32目錄裡的了
     最後還要C:WINNTsystem32inetsrv目錄要加上Guests預設許可權 
      這下就好了 我用ASP馬試了一下 許可權加好了 沒問題
    要是想開WEB的話 就給WEB所在目錄加上 administrator(組或使用者)和SYSTEM所有許可權和新建立的 Guest組使用者 這個使用者只給 讀寫許可權就可以了.
     若要配置執行.Net程式則還要設定:
     C:WINDOWSMicrosoft.Net IIS_WPG 預設的讀取及執行 列出檔案目錄 讀取三個許可權
    網站程式目錄 IIS_WPG 預設的讀取及執行 列出檔案目錄 讀取三個許可權
    如果.Net程式使用Access資料庫則還要配置:
    網站程式目錄 ASPNET 預設的讀取及執行 列出檔案目錄 讀取和修改四個許可權
    注意:所有目錄除後加上的許可權外本身還有administrator(組或使用者)和SYSTEM所有許可權
   Windows目錄要加上給users的預設許可權,否則ASP和ASPX等應用程式就無法執行。以前有朋友單獨設定Instsrv和temp等目錄許可權,其實沒有這個必要的。
另外在c:/Documents and Settings/這裡相當重要,後面的目錄裡的許可權根本不會繼承從前的設定,如果僅僅只是設定了C盤給administrators許可權,而在All UsersApplication Data目錄下會 出現everyone使用者有完全控制許可權,這樣入侵這可以跳轉到這個目錄,寫入指令碼或只檔案,再結合其他漏洞來提升許可權;譬如利用serv-u的本地溢位提升許可權,或系統遺漏有補丁,資料庫的弱點,甚至社會工程學等等N多方法,從前不是有牛人發颮說:“只要給我一個webshell,我就能拿到system”,這也的確是有可能的。在用做webftp伺服器的系統裡,建議是將這些目錄都設定的鎖死。其他每個盤的目錄都按照這樣設定,沒個盤都只給adinistrators許可權。
  另外,還將:net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,format.com這些檔案都設定只允許administrators訪問。
   把不必要的服務都禁止掉,儘管這些不一定能被攻擊者利用得上,但是按照安全規則和標準上來說,多餘的東西就沒必要開啟,減少一份隱患。
   在“網路連線”裡,把不需要的協議和服務都刪掉,這裡只安裝了基本的Internet協議(TCP/IP),由於要控制頻寬流量服務,額外安裝了Qos資料包計劃程式。在高階tcp/ip設定裡–“NetBIOS”設定“禁用tcp/IP上的NetBIOS(S)”。在高階選項裡,使用“Internet連線防火牆”,這是windows 2003 自帶的防火牆,在2000系統裡沒有的功能,雖然沒什麼功能,但可以遮蔽埠,這樣已經基本達到了一個IPSec的功能。
IIS的安全:
      刪掉c:/inetpub目錄,刪除iis不必要的對映
     首先是每一個web站點使用單獨的IIS使用者,譬如這裡,新建立了一個名為[url]http://www.315safe.com/[/url] ,許可權為guest的。
在IIS裡的站點屬性裡“目錄安全性”—“身份驗證和訪問控制“裡設定匿名訪問使用下列Windows 使用者帳戶”的使用者名稱密碼都使用[url]http://www.315safe.com/[/url] 這個使用者的資訊.在這個站點相對應的web目錄檔案,預設的只給IIS使用者的讀取和寫入許可權(後面有更BT的設定要介紹)。
    在“應用程式配置”裡,我們給必要的幾種指令碼執行許可權:ASP.ASPX,PHP,
ASP,ASPX預設都提供對映支援了的,對於PHP,需要新新增響應的對映指令碼,然後在web服務擴充套件將ASP,ASPX都設定為允許,對於php以及CGI的支援,需要新建web服務擴充套件,在副檔名(X):下輸入 php ,再在要求的檔案(E):裡新增地址 C:phpsapiphp4isapi.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來解析就可以了,這樣別人即使獲得了資料庫路徑也無法下載。這個方法可以說是防止資料庫被下載的終極解決辦法了。
    改名或解除安裝不安全元件
    比如,FSO和XML是非常常用的元件之一,很多程式會用到他們。WSH元件會被一部分主機管理程式用到,也有的打包程式也會用到。
    解除安裝最不安全的元件
    最簡單的辦法是直接解除安裝後刪除相應的程式檔案。將下面的程式碼儲存為一個.BAT檔案,
regsvr32/u C:WindowsSystem32wshom.ocx
del C:WindowsSystem32wshom.ocx
regsvr32/u C:Windowssystem32shell32.dll
del C:Windowssystem32shell32.dll
然後執行一下,WScript.Shell, Shell.application, WScript.Network就會被解除安裝了。可能會提示無法刪除檔案,不用管它,重啟一下伺服器,你會發現這三個都提示“×安全”了。
四、登錄檔設定
1.      隱藏重要檔案/目錄可以修改登錄檔實現完全隱藏:[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrent-VersionExplorerAdvancedFolderHi-ddenSHOWALL],滑鼠右擊 “CheckedValue”,選擇修改,把數值由1改為0
2.      3.防止SYN洪水攻擊: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters] 新建DWORD值,名為SynAttackProtect,值為2                     EnablePMTUDiscovery REG_DWORD 0      NoNameReleaseOnDemand REG_DWORD 1 KeepAliveTime         REG_DWORD 300000   TcpMaxConnectResponseRetransmissions  2
TcpMaxHalfOpen  500                  TcpMaxHalfOpenRetried   400
TcpMaxPortsExhausted   5             TcpMaxDataRetransmissions   2
3.      防止ICMP重定向報文的攻擊: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]   將EnableICMPRedirects 值設為0
4.      抵禦 SNMP 攻擊    [HKLMSystemCurrentControlSetServicesTcpipParameters] EnableDeadGWDetect  0
5.      不支援IGMP協議: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]     新建DWORD值,名為IGMPLevel 值為0
6.      禁止IPC空連線:                                                       [HKEY_LOCAL_MACHINESYSTEM CurrentControlSetControlLSA]    RestrictAnonymous 把這個值改成”1”即可。
7.      更改TTL值:[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]:DefaultTTL  REG_DWORD  0-0xff(0-255 十進位制,預設值128)改成一個莫名其妙的數字如258
8.      刪除預設共享:                                                             [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]:AutoShareServer型別是REG_DWORD把值改為0即可
五、組策略
1、系統管理員賬戶最好少建,更改預設的管理員帳戶名(Administrator)和描述,密碼最好採用數字加大小寫字母加數字的上檔鍵組合,長度最好不少於14位。
2、新建一個名為Administrator的陷阱帳號,為其設定最小的許可權,然後隨便輸入組合的最好不低於20位的密碼
3、將Guest賬戶禁用並更改名稱和描述,然後輸入一個複雜的密碼,當然現在也有一個DelGuest的工具,也許你也可以利用它來刪除Guest賬戶,但我沒有試過。
4、在執行中輸入gpedit.msc回車,開啟組策略編輯器,選擇計算機配置-Windows設定-安全設定-賬戶策略-賬戶鎖定策略,將賬戶設為“三次登陸無效”,“鎖定時間為30分鐘”,“復位鎖定計數設為30分鐘”。
5、在安全設定-本地策略-安全選項中將“不顯示上次的使用者名稱”設為啟用
6、在安全設定-本地策略-使用者權利分配中將“從網路訪問此計算機”中只保留Internet來賓賬戶、啟動IIS程式賬戶。如果你使用了Asp.net還要保留Aspnet賬戶。
7、啟用 不允許匿名訪問SAM帳號和共享
8、啟用 不允許為網路驗證儲存憑據或Passport
9、啟用 在下一次密碼變更時不儲存LANMAN雜湊值
10、啟用 清除虛擬記憶體頁面檔案
11、禁止IIS匿名使用者在本地登陸
12、從檔案共享中刪除允許匿名登陸的DFS$和COMCFG
推薦的要稽核的專案是:
  登入事件 成功 失敗
  賬戶登入事件 成功 失敗
  系統事件 成功 失敗
  策略更改 成功 失敗
  物件訪問 失敗
  目錄服務訪問 失敗
特權使用 失敗
13、IP安全策略
禁用以下埠
TCP 1025 137 139 445 593 2745 3127 6129 3389
UDP 135 139 445
七、配置Sql伺服器
  1、System Administrators 角色最好不要超過兩個
  2、如果是在本機最好將身份驗證配置為Win登陸
  3、不要使用Sa賬戶,為其配置一個超級複雜的密碼,資料庫鍵接不使用SA帳戶,單資料庫單獨設使用帳戶.只給public和db_owner許可權.
  4、刪除以下的擴充套件儲存過程格式為:
  use master
  sp_dropextendedproc '擴充套件儲存過程名'
  xp_cmdshell:是進入作業系統的最佳捷徑,刪除
訪問登錄檔的儲存過程,刪除
  Xp_regaddmultistring  Xp_regdeletekey  Xp_regdeletevalue  Xp_regenumvalues
  Xp_regread      Xp_regwrite    Xp_regremovemultistring 
OLE自動儲存過程,不需要刪除
  Sp_OACreate   Sp_OADestroy    Sp_OAGetErrorInfo  Sp_OAGetProperty
  Sp_OAMethod  Sp_OASetProperty  Sp_OAStop
use master
EXEC sp_dropextendedproc `xp_cmdshell`
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
  5、隱藏 SQL Server、更改預設的1433埠
  右擊例項選屬性-常規-網路配置中選擇TCP/IP協議的屬性,選擇隱藏 SQL Server 例項,並改原預設的1433埠
本文轉自king_819 51CTO部落格,原文連結:http://blog.51cto.com/kerry/102144,如需轉載請自行聯絡原作者


相關文章