熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

數據庫人員手邊系列:SQL Server安全列表

2013-11-15 14:40:43  來源: SQL Server 

   確認已經安裝了NT/和SQL Server的最新補丁程序不用說大家應該已經安裝好了但是我覺得最好還是在這裡提醒一下
  
   評估並且選擇一個考慮到最大的安全性但是同時又不影響功能的網絡協議 多協議是明智的選擇 但是它有時不能在異種的環境中使用
  
  saprobe 帳戶設定強壯的密碼來加強其安全性設定一個強壯的密碼並將其保存在一個安全的地方 注意: probe帳戶被用來進行性能分析和分發傳輸 當在標准的安全模態中用的時候 給這個帳戶設定高強度的密碼能影響某些功能的使用
  
   使用一個低特權用戶作為 SQL 服務器服務的查詢操作賬戶不要用 LocalSystem 或sa 這個帳戶應該有最小的權利 ( 注意作為一個服務運行的權利是必須的)和應該包含( 但不停止)在妥協的情況下對服務器的攻擊 注意當使用企業管理器做以上設置時 文件注冊表和使用者權利上的 ACLs同時被處理
  
   確定所有的 SQL 服務器數據而且系統文件是裝置在 NTFS 分區且appropraite ACLs 被應用 如果萬一某人得到對系統的存取操作權限該層權限可以阻止入侵者破壞數據避免造成一場大災難
  
  如果不使用Xp_cmdshell就關掉 如果使用 SQL 至少使用Server Options中的SQLExecutieCmdExec 賬戶操作限制非sa用戶使用XP_cmdshell
  
  在任何的 isql/ osql 窗口中( 或查詢分析器):
  
  use master
  
  exec sp_dropextendedprocxp_cmdshell
  
  對 SQLExecutiveCmdExec 的詳細情況請查看下列文章:
  
  
  
  如果你不需要 xp_cmdshell 那請停用它請記住一個系統系統管理員如果需要的話總是能把它增加回來這也好也不好 一個侵入者可能發現它不在只需要把他加回來考慮也除去在下面的 dll但是移除之前必須測試因為有些dll同時被一些程序所用 要找到其他的程序是否使用相同的 dll:
  
  首先得到該 dll
  
  select onamectext from dbosyscomments c dbosysobjects o where cid=oid and oname=xp_cmdshell
  
  其次使用相同的 dll發現其他的擴展儲存操作是否使用該dll
  
  select onamectext from dbosyscomments c dbosysobjects o where cid=oid and ctext=xplogdll
  
  用戶可以用同樣的辦法處理下面步驟中其他你想去掉的進程
  
   如不需要就停用對象連接與嵌入自動化儲存程序 ( 警告 當這些儲存程序被停用的時候 一些企業管理器功能可能丟失) 這些包括:
  
  Sp_OACreate
  
  Sp_OADestroy
  
  Sp_OAGetErrorInfo
  
  Sp_OAGetProperty
  
  Sp_OAMethod
  
  Sp_OASetProperty
  
  Sp_OAStop
  
  如果你決定停用該進程那麼請給他們寫一個腳本這樣在以後你用到他們的時候你能夠把他們重新添加回來 記住 我們在這裡正在做的是鎖定一個應用程序的功能 你的開發平台應該放到其他機器上
  
   禁用你不需要的注冊表存取程序(同上面的警告)這些包括:
  
  Xp_regaddmultistring
  
  Xp_regdeletekey
  
  Xp_regdeletevalue
  
  Xp_regenumvalues
  
  Xp_regremovemultistring
  
  注意 :我過去一直在這裡列出 xp_regread/ xp_regwrite但是這些程序的移除影響一些主要功能包括日志和SP的安裝所以他們的移除不被推薦
  
  移除其他你認為會造成威脅的系統儲存進程 這種進程是相當多的而且他們也會浪費一些cpu時間 小心不要首先在一個配置好的服務器上這樣做首先在開發的機器上測試確認這樣不會影響到任何的系統功能在下面是我們所推薦的有待你評估的一些列表:
  
  sp_sdidebug
  
  xp_availablemedia
  
  xp_cmdshell
  
  xp_deletemail
  
  xp_dirtree
  
  xp_dropwebtask
  
  xp_dsninfo
  
  xp_enumdsn
  
  xp_enumerrorlogs
  
  xp_enumgroups
  
  xp_enumqueuedtasks
  
  xp_eventlog
  
  xp_findnextmsg
  
  xp_fixeddrives
  
  xp_getfiledetails
  
  xp_getnetname
  
  xp_grantlogin
  
  xp_logevent
  
  xp_loginconfig
  
  xp_logininfo
  
  xp_makewebtask
  
  xp_msver xp_perfend
  
  xp_perfmonitor
  
  xp_perfsample
  
  xp_perfstart
  
  xp_readerrorlog
  
  xp_readmail
  
  xp_revokelogin
  
  xp_runwebtask
  
  xp_schedulersignal
  
  xp_sendmail
  
  xp_servicecontrol
  
  xp_snmp_getstate
  
  xp_snmp_raisetrap
  
  xp_sprintf
  
  xp_sqlinventory
  
  xp_sqlregister
  
  xp_sqltrace
  
  xp_sscanf
  
  xp_startmail
  
  xp_stopmail
  
  xp_subdirs
  
  xp_unc_to_drive
  
  xp_dirtree
  
   在企業管理器中安全選項 之下禁用默認登錄(只有SQL ) 當使用整合的安全時候這使未經認可的不在 syslogins 表中使用者無權登陸一個有效的數據庫服務器
  
   除去數據庫的guest賬戶把未經認可的使用者據之在外 例外情況是master和 tempdb 數據庫因為對他們guest帳戶是必需的
  
   若非必須請完全地禁用SQL郵件功能它的存在使潛在的攻擊者遞送潛在的 trojans 病毒或是簡單實現一個DOS攻擊成為可能
  
   檢查masterSp_helpstartup看有無可疑的木馬進程 確定沒有人已經在這裡放置秘密的後門程序 使用 Sp_unmakestartup 移除任何可疑進程
  
   檢查masterSp_password看有無trojan代碼比較你的產品scripts和一個新安裝的系統的默認scripts而且方便的保存
  
   記錄所有的用戶存取訪問情況 從企業管理器做這些設定或通過以sa登陸進入查詢分析器的下列各項:
  
  xp_instance_regwrite NHKEY_LOCAL_MACHINE NSOFTWARE\ Microsoft\MSSQLServer\MSSQLServerNAuditLevelREG_DWORD
  
   重寫應用程序使用更多用戶定義的儲存和察看進程所以一般的對表的訪問可以被禁用 在這裡你也應該看到由於不必經常進行查詢計劃操作而帶來的性能提升
  
   除去不需要的網絡協議
  
   注意SQL 服務器的物理安全把它鎖在固定的房間裡並且注意鑰匙的安全只要有機會到服務器面前就總是會找到一個方法進入
  
   建立一個計劃的任務運行:
  
  findstr/C: Login Failed\mssql\log\**
  
  然後再重定向輸出到一個文本文件或電子郵件因此你監測失敗的登錄嘗試這也為系統管理員提供一個好的記錄攻擊的方法 也有很多用來分析NT日志事件的第三者工具 注意: 你可能需要將路徑換成你安裝SQL的路徑
  
   設定非法訪問和登陸失敗日志警報到 企業管理器中的Manager SQL Server Messages 搜尋任何有關無權訪問的消息 ( 從查找login faileddenied開始) 確定你所有感興趣的信息被記錄到事件日志然後在這些信息上設定警報 發送一個電子郵件或信息到一個能夠對問題及時響應的操作員
  
   確定在服務器和數據庫層次上的角色都只被授給了需要的用戶 當 SQL Server 安全模型 有許多增強的時候 它也增加額外的許可層我們必須監控該層確定沒有人被授予了超過必需的權限
  
   經常檢查組或角色全體會員並且確定用組分配權限這樣你的審計工作能夠簡化 確定當你在的時候 公眾的組不能從系統表執行選擇操作
  
   花些時間審計用空密碼登陸的請求 使用下面的代碼進行空密碼檢查:
  
  使用主體
  
  選擇名字
  
  password
  
  from syslogins
  
  where password is null
  
  order by name
  
   如果可能在你的組織中利用整合的安全策略 通過使用整合的安全策略你能夠依賴系統的安全最大簡化管理工作從維護二個分開的安全模型中分離開來這也不讓密碼接近連接字串
  
   檢查所有非sa用戶的存取進程和擴充存儲進程的權限 使用下面的查詢定期的查詢哪一個進程有公眾存儲權限(在SQL Server中 使用 type 而不是 xtype):
  
  Use master
  
  select sysobjectsname
  
  from sysobjectssysprotects
  
  where sysprotectsuid=
  
  AND xtype 在 (XP)
  
  AND sysobjectsid=sysprotectsid
  
  Order by name
  
   當時用企業管理器的時候使用整合的安全策略 過去企業管理器被發現在標准的安全模態中儲存 sa 密碼在注冊表的 plaintext 中 注意: 即使你改變模態密碼也會留在注冊表中 使用 regedit 而且檢查鍵:
  
  HKEY_CURRENT_USER\SOFTWARE\Microsoft
  MSSQLServer\SQLEW\ Regedi
  SQL
  
  現在數
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22160.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.