首页 > 代码库 > Windows服务器防火墙配置规范

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防火墙)。

 

 

技术分享

 

 

2:在Exception下,选择添加端口(Add Port

 

技术分享

 

 

Add a Port里面,添加对应的TCP端口号,如下所示,如果你需要限制某些IP段才能访问数据库,可以在“Chnage scope"里面根据实际需要进行配置。

 

技术分享

 

技术分享

 

 

另外,如果需要开放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选项。

 

 

 

技术分享

 

 

 

4:在协议和端口(Protocol and Ports)",选择 TCP 选择特定本地端口,然后键入数据库引擎实例的端口号,例如默认实例的端口号 14331434 这里具体根据实际需要定制,如上所示,有可能还需要开通其它TCP端口号或UDP端口号(UDP端口,一般新建一个命名为Customer Defined Port--SQL Server Udp Port的规则)。 单击下一步

 

 

技术分享

 

 

5:在操作(Action对话框中,选择允许连接,然后单击下一步

 

技术分享

 

 

6:在配置文件里面选择在什么时候应用该规则,例如域(Domain)、专用(Private)、公用(Public)。 全部勾选。

 

 

技术分享

 

 

7:在名称(Name)里面填入Customer Defined Port--SQL Server Tcp Port 这个名称Customer Defined Port表示自定义端口,SQL Server Tcp Port表示与SQL Server相关的Tcp 端口号。

 

 

技术分享

 

 

8:完成后,如果你要限制某些IP才能访问这些端口,可以找到新建的规则“Customer Defined Port--SQL Server Tcp Port”,右键单击属性,在Scop里面设置。如下所示

 

 

技术分享

 

 

当然也可以在“Rule Type”里面选择定制,左边菜单就会出现“Scope”选项。

 

 

技术分享

 

 

方式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 .

Windows服务器防火墙配置规范