Windows服務器防火牆配置規范


本文屬於一篇內部規范文檔,整理的初衷是為了規范、統一集團的Windows服務器(僅僅SQL Server數據庫服務器)防火牆設置,僅僅供內部其它同事設置Windows防火牆時作為參考的文檔資料。如有不足,敬請指正。后續將不斷完善、整理該文檔。文檔里面部分內容直接摘抄自MSDN,敬請知曉!

 

 

 

文檔類型

Windows服務器防火牆配置規范

創建日期

2017-02-06

版本變化

V1.0

 

 

 

 

修改記錄

 

修改人

修改日期

版本

修改描述

孔令波

2017-02-06

V1.0

創建制定文檔

 

 

注意事項:Windows服務器防火牆必須開啟,不能因為繁瑣或圖省事直接關閉防火牆。

 

 

 

 

 

SQL Server組件使用的端口

 

 

 

數據庫引擎使用的端口

 

 

應用場景

端口

注釋

SQL Server 默認實例

TCP端口 1433

這是允許通過防火牆的最常用端口。 它適用於與默認數據庫引擎安裝或作為計算機上唯一運行實例的命名實例之間的例行連接。 (命名實例具有特殊的注意事項。 請參閱本主題后面的動態端口。)

SQL Server 命名實例

TCP端口是在啟動數據庫引擎時確定的動態端口。

請參閱下面 動態端口部分中的描述。 當使用命名實例時, SQL Server Browser 服務可能需要 UDP 端口 1434

SQL Server 命名實例

由管理員配置的端口號。

請參閱下面 動態端口部分中的描述。

專用管理連接

對於默認實例,為 TCP 端口 1434。 其他端口用於命名實例。 有關端口號,請查看錯誤日志。

默認情況下,不會啟用與專用管理員連接 (DAC) 的遠程連接。 若要啟用遠程 DAC,請使用外圍應用配置器方面。 有關詳細信息,請參閱 Surface Area Configuration

SQL Server Browser 服務

UDP 端口 1434

SQL Server Browser 服務用於偵聽指向命名實例的傳入連接,並為客戶端提供與此命名實例對應的 TCP 端口號。 通常,只要使用 SQL Server 的命名實例,就會啟動數據庫引擎Browser服務。 如果客戶端配置為連接到命名實例的特定端口,則不必啟動 SQL Server Browser 服務。

SQL Server 實例。

可以在創建 HTTP 端點時指定。 對於 CLEAR_PORT 通信,默認端口為 TCP 端口 80,對於 SSL_PORT 通信,默認端口為 443

用於通過 URL 實現的 HTTP 連接。

SQL Server 默認實例。

TCP 端口 443

用於通過 URL 實現的 HTTPS 連接。 HTTPS 是使用安全套接字層 (SSL) HTTP 連接。

Service Broker

TCP 端口 4022。 若要驗證使用的端口,請執行下面的查詢:

SELECT name, protocol_desc, port, state_desc

FROM sys.tcp_endpoints

WHERE type_desc = 'SERVICE_BROKER'

對於 SQL ServerService Broker,沒有默認端口,不過這是聯機叢書示例中使用的常規配置。

數據庫鏡像

管理員選擇的端口。 若要確定此端口,請執行以下查詢:
SELECT name, protocol_desc, port, state_desc
FROM sys.tcp_endpoints
WHERE type_desc = 'DATABASE_MIRRORING'

對於數據庫鏡像,沒有默認端口,不過聯機叢書示例使用 TCP 端口 7022。 務必避免中斷正在使用的鏡像端點,尤其是處於帶有自動故障轉移功能的高安全模式下時。 防火牆配置必須避免破壞仲裁。 有關詳細信息,請參閱指定服務器網絡地址(數據庫鏡像)。

復制

SQL Server 的復制連接使用典型的常規數據庫引擎端口(供默認實例使用的 TCP 端口 1433 等)

復制快照的 Web 同步和 FTP/UNC 訪問要求在防火牆上打開其他端口。 為了將初始數據和架構從一個位置傳輸到另一個位置,復制可以使用 FTPTCP 端口 21)或者通過 HTTPTCP 端口 80)或文件共享進行的同步。 文件共享使用 UDP 端口 137 138,如果使用 NetBIOS,則還有 TCP 端口 139。 文件共享使用 TCP 端口 445

對於通過 HTTP 進行的同步,復制使用 IIS 端點(其端口可配置,但默認情況下為端口 80),不過 IIS 進程通過標准端口(對於默認實例為 1433)連接到后端 SQL Server

在使用 FTP 進行 Web 同步期間,FTP 傳輸是在 IIS SQL Server 發布服務器之間進行,而非在訂閱服務器和 IIS 之間進行。

Transact-SQL 調試器

TCP 端口 135

請參閱 端口 135 的特殊注意事項


可能還需要 IPsec 例外。

如果使用 Visual Studio,則在 Visual Studio 主機計算機上,還必須將 Devenv.exe 添加到“例外”列表中並打開 TCP 端口 135

如果使用 Management Studio,則在 Management Studio 主機計算機上,還必須將 ssms.exe 添加到“例外”列表中並打開 TCP 端口 135。 有關詳細信息,請參閱運行 TSQL 調試器之前配置防火牆規則。

 

 

 

 

 

 

 

Analysis Services 使用的端口

 

下表列出了 Analysis Services經常使用的端口。

 

功能

端口

注釋

Analysis Services

對於默認實例,為 TCP 端口 2383

默認 Analysis Services實例的標准端口。

SQL Server Browser 服務

Analysis Services 命名實例需要的 TCP 端口 2382

客戶端向 Analysis Services 命名實例發出不指定端口號的連接請求時,該連接請求將被轉到端口 2382,即 SQL Server Browser 偵聽的端口。 SQL Server Browser 將此請求重定向到該命名實例所使用的端口。

Analysis Services 配置為通過 IIS/HTTP 使用

PivotTable® Service 使用 HTTP HTTPS

TCP 端口 80

用於通過 URL 實現的 HTTP 連接。

Analysis Services 配置為通過 IIS/HTTPS 使用

PivotTable® Service 使用 HTTP HTTPS

TCP 端口 443

用於通過 URL 實現的 HTTPS 連接。 HTTPS 是使用安全套接字層 (SSL) HTTP 連接。

 

 

 

 

Reporting Services 使用的端口

 

下表列出了 Reporting Services經常使用的端口。

 

 

功能

端口

注釋

Reporting Services Web 服務

TCP 端口 80

用於通過 URL 實現的與 Reporting Services 之間的 HTTP 連接。 建議不要使用預配置規則萬維網服務(HTTP)。 有關詳細信息,請參閱下面的 與其他防火牆規則的交互 部分。

Reporting Services 配置為通過 HTTPS 使用

TCP 端口 443

用於通過 URL 實現的 HTTPS 連接。 HTTPS 是使用安全套接字層 (SSL) HTTP 連接。 建議不要使用預配置規則安全萬維網服務(HTTPS)”。 有關詳細信息,請參閱下面的 與其他防火牆規則的交互 部分。

 

 

 

 

 

Integration Services 使用的端口

 

下表列出了 Integration Services 服務經常使用的端口。

 

功能

端口

注釋

Microsoft 遠程過程調用 (MS RPC)

Integration Services 運行時使用。

TCP 端口 135

請參閱 端口 135 的特殊注意事項

Integration Services 服務在端口 135 上使用 DCOM。 服務控制管理器使用端口 135 執行諸如啟動和停止 Integration Services 服務以及將控制請求傳送到正在運行的服務等任務。 此端口號無法更改。

僅當從 Integration Services 或自定義應用程序連接到遠程 Management Studio 服務實例時,才需要打開此端口。

 

 

如何配置Windows Firewall

 

 

 

Windows Server 2003服務器

 

 

 

Windows Server 2003的防火牆設置比較簡單,下面簡要列一下配置步驟:

 

 

1:在開始菜單上,選擇控制面板,打開Windows防火牆(或者在運行窗口使用firewall.cpl命令打開Windows防火牆)。

 

 

clip_image001

 

 

2:在Exception下,選擇添加端口(Add Port

 

clip_image002

 

 

Add a Port里面,添加對應的TCP端口號,如下所示,如果你需要限制某些IP段才能訪問數據庫,可以在“Chnage scope"里面根據實際需要進行配置。

 

clip_image003

 

clip_image004

 

 

另外,如果需要開放UDP端口,可以新建一個命名為Customer Defined Port--SQL Server Udp Port的規則(Exception)。步驟基本上一致,在此略過。

 

 

 

 

Windows Server 2008/2012服務器

 

 

 

注意:Windows Server 2008R2 2012服務器的防火牆設置基本上一致,在此不做重復介紹。只介紹Windows Server 2012,請知曉!

 

1:開始菜單上,單擊運行,鍵入 WF.msc,然后單擊確定,打開高級安全Windows防火牆,當然你可以從控制面板,打開Windows防火牆(運行里面使用firewall.cpl命令打開Windows防火牆),然后從菜單進入高級安全Windows防火牆

 

 

2:在入站規則右鍵點擊新建規則,然后安裝下面步驟逐一操作即可,當然有些地方根據實際需求配置

 

3:在"規則類型(Rule Type)"下,選擇端口(Port選項。

 

 

 

clip_image005

 

 

 

4:在協議和端口(Protocol and Ports)",選擇 TCP 選擇特定本地端口,然后鍵入數據庫引擎實例的端口號,例如默認實例的端口號 14331434 這里具體根據實際需要定制,如上所示,有可能還需要開通其它TCP端口號或UDP端口號(UDP端口,一般新建一個命名為Customer Defined Port--SQL Server Udp Port的規則)。 單擊下一步

 

 

clip_image006

 

 

5:在操作(Action對話框中,選擇允許連接,然后單擊下一步

 

clip_image007

 

 

6:在配置文件里面選擇在什么時候應用該規則,例如域(Domain)、專用(Private)、公用(Public)。 全部勾選。

 

 

clip_image008

 

 

7:在名稱(Name)里面填入Customer Defined Port--SQL Server Tcp Port 這個名稱Customer Defined Port表示自定義端口,SQL Server Tcp Port表示與SQL Server相關的Tcp 端口號。

 

 

clip_image009

 

 

8:完成后,如果你要限制某些IP才能訪問這些端口,可以找到新建的規則“Customer Defined Port--SQL Server Tcp Port”,右鍵單擊屬性,在Scop里面設置。如下所示

 

 

clip_image010

 

 

當然也可以在“Rule Type”里面選擇定制,左邊菜單就會出現“Scope”選項。

 

 

clip_image011

 

 

方式2:使用Powshell來配置防火牆.

 

 

注意: Windows Server 2008 R2下如果Powshell2.0版本,是無法使用Powshell來配置防火牆的。 我沒有測試升級Powshell版本是否支持。下面實驗環境為Windows Server 2012 使用Powshell配置防火牆的效率是遠遠高於使用圖形界面的。

 

 

1:開啟1433端口

 

New-NetFirewallRule -DisplayName "Customer Defined Port--SQL Server Tcp Port" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow -Description "This Inbound rule is special for SQL Server"

 

 

2:開啟1433,1434端口

 

New-NetFirewallRule -DisplayName "Customer Defined Port--SQL Server Tcp Port" -Direction Inbound -LocalPort 1433,1434 -Protocol TCP -Action Allow -Description "This Inbound rule is special for SQL Server"

 

 

 

當然可以根據實際情況開啟相關端口,嚴禁開啟其它不相關端口號,所需端口才開啟,另外,使用powshell可以非常方便的管理防火牆,如果你需要查找幫助命令,可以使用下面命令,此處從略。

 

Get-Command -Noun "*Firewall*" | Select -ExpandProperty Name

 

PS C:\Users> Get-Command -Noun "*Firewall*" | Select -ExpandProperty Name

Copy-NetFirewallRule

Disable-NetFirewallRule

Enable-NetFirewallRule

Get-NetFirewallAddressFilter

Get-NetFirewallApplicationFilter

Get-NetFirewallInterfaceFilter

Get-NetFirewallInterfaceTypeFilter

Get-NetFirewallPortFilter

Get-NetFirewallProfile

Get-NetFirewallRule

Get-NetFirewallSecurityFilter

Get-NetFirewallServiceFilter

Get-NetFirewallSetting

New-NetFirewallRule

Remove-NetFirewallRule

Rename-NetFirewallRule

Set-NetFirewallAddressFilter

Set-NetFirewallApplicationFilter

Set-NetFirewallInterfaceFilter

Set-NetFirewallInterfaceTypeFilter

Set-NetFirewallPortFilter

Set-NetFirewallProfile

Set-NetFirewallRule

Set-NetFirewallSecurityFilter

Set-NetFirewallServiceFilter

Set-NetFirewallSetting

Show-NetFirewallRule

Add-SqlFirewallRule

Remove-SqlFirewallRule

 

 

 

查看某個命令的具體幫助信息,如下所示:

 

PS C:\Users> get-help New-NetFirewallRule

 

NAME

New-NetFirewallRule

 

SYNTAX

New-NetFirewallRule -DisplayName <string> [-PolicyStore <string>] [-GPOSession <string>] [-Name <string>]

[-Description <string>] [-Group <string>] [-Enabled <Enabled> {True | False}] [-Profile <Profile> {Any | Domain |

Private | Public | NotApplicable}] [-Platform <string[]>] [-Direction <Direction> {Inbound | Outbound}] [-Action

<Action> {NotConfigured | Allow | Block}] [-EdgeTraversalPolicy <EdgeTraversal> {Block | Allow | DeferToUser |

DeferToApp}] [-LooseSourceMapping <bool>] [-LocalOnlyMapping <bool>] [-Owner <string>] [-LocalAddress <string[]>]

[-RemoteAddress <string[]>] [-Protocol <string>] [-LocalPort <string[]>] [-RemotePort <string[]>] [-IcmpType

<string[]>] [-DynamicTarget <DynamicTransport> {Any | ProximityApps | ProximitySharing | WifiDirectPrinting |

WifiDirectDisplay | WifiDirectDevices}] [-Program <string>] [-Package <string>] [-Service <string>]

[-InterfaceAlias <WildcardPattern[]>] [-InterfaceType <InterfaceType> {Any | Wired | Wireless | RemoteAccess}]

[-LocalUser <string>] [-RemoteUser <string>] [-RemoteMachine <string>] [-Authentication <Authentication>

{NotRequired | Required | NoEncap}] [-Encryption <Encryption> {NotRequired | Required | Dynamic}]

[-OverrideBlockRules <bool>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob] [-WhatIf] [-Confirm]

[<CommonParameters>]

 

 

ALIASES

None

 

 

REMARKS

Get-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help.

-- To download and install Help files for the module that includes this cmdlet, use Update-Help.

 

 

 

方式3:使用netsh來配置防火牆.

 

 

 

netsh 命令也配置防火牆,在此從略。

 

 

netsh firewall set portopening protocol = TCP port = 1433 name ='Customer Defined Port--SQL Server Tcp Port' mode = ENABLE scope = SUBNET profile = CURRENT

 

IMPORTANT: Command executed successfully.

However, "netsh firewall" is deprecated;

use "netsh advfirewall firewall" instead.

For more information on using "netsh advfirewall firewall" commands

instead of "netsh firewall", see KB article 947709

at http://go.microsoft.com/fwlink/?linkid=121488 .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM