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

讓防火牆與SQL Server數據庫共存

2013-11-15 14:52:46  來源: SQL Server 

  安全與性能是數據庫管理員的兩塊心頭肉而通過防火牆來保護數據庫的安全無疑是一種不錯的選擇但是有時會防火牆與SQL Server數據庫也會鬧矛盾防火牆如果配置不當的話不但不能夠起到其應有的保護作用而且還會阻止客戶端的合法連接為此如果想讓防火牆與SQL Server數據庫共存的話還不是一件簡單的事情對於這個問題筆者有如下幾條建議或許這些建議能夠給各位數據庫管理員在數據庫與防火牆部署的時候提供一定的幫助

  建議一先部署數據庫再部署防火牆

  導致客戶端無法連接上數據庫服務器的原因有很多而防火牆的限制無疑也是其中的一種為了降低故障排除的復雜程度筆者建議數據庫管理員在部署的時候最好先把防火牆關掉即先部署數據庫然後再部署防火牆或者說在防火牆存在的情況下如果發現客戶端無法正常連接到數據庫最好先把防火牆關掉然後再看看能夠正常連接這主要可以幫助數據庫管理員簡單的來判斷這個連接故障是不是因為防火牆的不恰當配置所造成的在排除防火牆配置錯誤的時候這個方法非常的有用如果確實是因為防火牆的原因而數據庫管理員還一直在數據庫管理系統或者客戶端那邊尋找原因那就是白花力氣同理如果確實是數據庫服務器的問題而不是防火牆的配置所造成的連接故障但是數據庫管理員卻是在尋找防火牆的麻煩那也是自討苦吃所以筆者建議大家在部署數據庫的時候(不僅限於SQL Server數據庫系統)最好先把已經存在的防火牆關閉掉等到客戶端能夠正常連接到服務器後再嘗試啟動防火牆

  建議二根據數據庫開啟的服務來開啟防火牆的端口

  從安全上來說數據庫服務器的端口開啟的越少越好但是數據庫的有些服務必須要開啟某些特定的端口否則的話某些服務就會受到影響為此從安全與性能上綜合考慮的話就要求數據庫管理員根據數據庫要采用的服務來開啟防火牆的端口

  如在SQL Server數據庫中啟用了復制功能的話就需要在防火牆上開啟端口(這是數據庫默認的給復制服務啟用的端口)當然數據庫管理員也可以跟網絡管理員商量最終所采用的端口另外如果采用復制快照則進行WEB同步或者FTP訪問則要求在防後牆上打開其他需要的端口如快照復制通過FTP實現的話為了將數據文件和架構從一個位置傳輸到網絡上的另外一個位置則需要在防火牆上開啟端口以允許FTP協議的數據通過這個端口而通常情況下為了安全起見是把這個端口關閉的而如果在復制功能中如果需要用到HTTP或者文件和打印共享服務時還需要打開端口等等否則的話由於防火牆的阻擋這些服務將無法正常使用

  另外SQL Server數據庫中有些服務的話是沒有指定端口的數據庫管理員可以根據實際需要來確定所需要采用的端口如數據庫的鏡像服務其沒有指定所需要采用的端口而是要求數據庫管理員來選擇端口此時數據庫管理員就可以根據服務器端口的實際采用情況來設置到底開啟哪個端口為好在配置的時候如果數據庫服務器中還部署有其他英勇的話就需要避免與其他服務端口的沖突

  SQL Server數據庫的相關服務有很多如還有報表服務Browser服務(用於偵聽指向命名實例的傳入連接並為客戶端提供與此命名實例對應的TCP端口號)等等若數據庫管理員以為客戶端的連接故障是由於防火牆所引起的那麼數據庫管理員就需要查看微軟的官方文檔看看對應服務所需要開啟的端口在防火牆中是否已經打開

  建議三管理好動態端口

  以上這些服務的端口基本上是靜態的只需要在防火牆上把這些端口打開即可沒有多大的難度而其管理的難點是有些服務采用的是動態的端口這會給數據庫服務器上防火牆的配置帶來一定的麻煩因為端口不固定所以有時候防火牆就無法適從了

  如通常情況下數據庫中有一個叫做命名實例的服務這個服務采用的就是動態端口也就是說每次啟動數據庫服務器的時候數據庫引擎都將確定一個服務器沒有使用的端口作為自己的端口即每次采用的端口都不一致默認情況下SQL Server數據庫引擎采用的TCP端口號為但是如果在這台數據庫服務器上還部署有其他的數據庫引擎如Oracle數據庫系統或者MySQL數據庫系統則可能這個端口已經被他們所采用了則此時SQL Server數據庫系統引擎將無法使用這個端口此時數據庫引擎就會另外選擇一個可用的端口可見由於數據庫引擎或者數據庫服務器在每次啟動的時候所采用的端口都可能不同為此很難在防火牆上啟用對正確端口的訪問(防火牆不會跟數據庫引擎互動)也就是說防火牆不會去偵測數據庫引擎到底啟用哪些端口所以如果在數據庫服務器上配置了防火牆則在數據庫部署的時候如果某些服務采用了動態端口則數據庫管理員需要把他們配置為固定端口或者靜態端口以保證數據庫引擎每次都采用同一的端口號

  在SQL Server數據庫中把動態端口設置為固定端口其難度不是很大只是如果啟用的服務比較多的話工作量可不算小下面筆者就談談如何通過企業管理器來設置固定端口

  第一步打開TCP/IP屬性對話框在數據庫配置管理中打開網絡配置選項然後單擊要配置的服務器實例此時在右面窗口中會顯示相關的內容管理員需要找到TCP/IP這項內容並雙擊它以打開TCP/IP屬性對話框

  第二步設置可用的端口號在TCP/IP屬性對話框中找到TCP端口頁簽在這個頁簽中就是當前SQL Server數據庫所采用的端口號數據庫管理員需要在這個地方把需要采用的端口信息加入到這個頁簽中那麼操作系統在分配端口的時候會把這個端口信息預留給數據庫系統注意數據庫管理員手工數據的端口最好能夠采取後面一些的端口號如此的話發生端口沖突的幾率就會少許多

  第三步關聯相關的服務設置好端口後此時還沒有關聯到具體的服務數據庫管理員還必須把新設置的端口與數據庫的服務關聯起來此時就需要單擊SQL Server服務找到相關的服務後選擇重新啟動當數據庫引擎重新啟動時就會將新的端口給這個服務所使用以後每次數據庫引擎重新啟動之後這個服務都將采用這個端口為此在防護牆上只需要把這個端口打開即可

  所以說對於動態端口來說防火牆配置有一定的難度此時最理想的方式就是把數據庫服務所采用的動態端口改為靜態端口或者固定端口上面筆者介紹得就是把數據庫服務的動態端口改為靜態端口的基本步驟各位數據庫管理員可以嘗試利用這種方法試試看

  建議四出現連接故障時的排錯步驟

  如果在數據庫服務器上部署了防火牆此時如果客戶端發生無法連接到服務器的現象那麼此時最佳的排錯步驟是什麼呢?如何才能夠在最短時間內找到問題的原因呢?為此筆者有如下這個建議

  首先數據庫管理員必須先保證服務器與客戶端之間網絡的連通性數據庫管理員可以利用ping命令或者求助網絡管理員來判斷服務器與客戶端之間的連接是否有問題有則改之沒有的話則進行下面一個步驟

  第二把防火牆先禁用掉如果服務器與客戶端之間的網絡連通沒有問題那麼此時數據庫管理員就需要判斷是防火牆的問題還是數據庫服務器本身的問題要判斷這個故障的起點最簡單的方法就是把防火牆禁用掉如果防火牆禁用後客戶端訪問服務器正常了那麼就說明是防火牆在作怪;而過此時故障還依舊那麼就是數據庫本身的問題了不過此時也先不要急著把防火牆啟用起來等到故障修復後再重新啟用防火牆為好這麼處理就是讓數據庫環境盡量的簡單以加速排錯的過程

  第三如果是防火牆的問難那麼就先查看SQL Server數據庫所需要采用的端口並在防火牆中全部打開因為有些服務的話可能需要很多個端口;而某些服務又會引用其他的服務而這被引用的服務也需要新的端口為此及時是數據庫專家也很難一下子說清楚某個服務到底需要哪些端口為此就把用到的端口先一一打開然後再逐漸的關閉從而可以確定某個服務需要引用哪些服務采用哪些端口


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22481.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.