INF:透过防火墙和 SQL Server 通讯所需的 TCP 通讯端口

本文说明透过防火墙和 SQL Server 通讯所需的最少数目的 TCP 通讯端口。 

SQL Server 是 一种 Winsock 应用程序,使用通讯端网络链接库透过 TCP/IP 进行通讯。SQL Server 会倾听来自某特定通讯端口的联 机;SQL Server 的预设通讯端口是 1433。通讯端口不一定必须是 1433, 但 1433 是 Internet Assigned Number Authority (IANA) 为 SQL Server 所订定的官方通讯 端编号。 

客户端应用程序使用客户端网络链接 库 Dbmssocn.dll (或 Dbnetlib.dll for SQL Server 2000) 来和 SQL Server 通讯,并使 用 Microsoft Data Access Components (MDAC) 2.6 和任何客户端通讯。 

当客户端建 立 TCP/IP 联机时,会完成一个三向的协议 (Three-way Handshake)。客户端会开启来源通讯端口,并将数据传送至目的通讯端 口,根据默认值是 1433。客户端所使用的来源通讯端口是随机挑选的,但会大于 1024。根据默认值,当应用程序向系统要求通讯端以便输出呼叫时,系 统会供应介于 1024 与 5000 之间的通讯端口给应用程序。有关其它信息,请参阅位于下 面 Microsoft Developer Network (MSDN) 网站的 〈Microsoft Windows 2000 TCP/IP Implementation Details〉: 
http://www.microsoft.com/windows2000/library/howitworks/communications/networkbasics/tcpip_implement.asp 
服务器 (在本范例中是 SQL Server) 接着就会从 1433 将数据传送回客户端建立的通讯端口,来和客户端通讯。 

要 观察此行为的最佳方式就是使用「Microsoft 网络监视器」或网络窥探工具来追踪客户端对服务器的通讯。若要设定防火墙,您必须让资料可以 从 *ANY* 传输到 1433,并从 1433 传输到 *ANY*,其中 *ANY* 是大于 1024 的通讯端口。 
*ANY* -> 1433 
1433 -> *ANY* 
除 了使用「Microsoft 网络监视器」之外,您也可以使用 TCP/IP Netstat 公用程序来追踪客户端对服务器的通讯。从 MS- DOS 指令窗口发出 netstat -an 指令,可以得到下面结果,显示出所建立的三个对 SQL Server 的联机。此范例是使 用 157.54.178.42 作为 SQL Server 的 IP 地址,而客户端的 IP 地址则是 157.54.178.31。客户端所开启 的通讯端口分别是 1746、1748 与 1750。 
Proto   Local Address          Foreign Address        State
 TCP    157.54.178.42:1433     0.0.0.0:0              LISTENING
 TCP    157.54.178.42:1433     157.54.178.31:1746     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1748     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1750     ESTABLISHED
防火墙软件应该经由使用规则让配置动态发生。如果是这样,您可以设定 1433 -> *ANY* 已建立;经由状态完整的封包检验在 syn 后面跟着 syn/ack 之后这样就会动态开启响应通讯端口。 

没 有方法可以限制 SQL Server 客户端用来联机的来源 TCP 通讯端口的数目;这样会违反让客户端可以分派到新的、未经使用的动态通讯端口的目 的。这是为 Winsock 应用程序而定义的 TCP/IP 标准;这并不是对 SQL Server 客户端通讯的限制。 

此外,根 据默认值,SQL Server 2000 具名执行个体会使用动态的目的通讯端口。在设定防火墙之前,应该要先将此通讯端口改为固定的通讯端口。您应该 使用 SQL Server「网络公用程序」来设定目的通讯端口。有关如何使用 SQL Server「网络公用程序」的信息,请参 阅 SQL Server《在线丛书》。 

否则,客户端计算机就需要开启随机的 UDP 通讯端口,且服务器 UDP 通讯端 口 1434 就会被用来传送执行个体名称,而如果此执行个体是丛集式的执行个体,也会传送 SQL 执行个体的版本、此执行个体倾听的 TCP 通讯端 口编号,以及此执行个体所使用的命名管道。然而,如果您的目标是要将防火墙上开启的通讯端口数目减到最少,就应该替预设执行个体与任何具名执行个体选择静 态的通讯端口编号。还需要设定客户端计算机,让客户端计算机联机至特定的 ServerName 或 ServerName 执行个体以及使用特定的通讯 端口编号。 

有关其它信息,请按一下下面的文件编号,检视「Microsoft 知识库」中的文件: 
216415 How to Set Up SQL Server for Access Through Microsoft Proxy Server(http://support.microsoft.com/kb/216415/EN-US/)
179442 How to Configure a Firewall for Windows NT and Trusts (http://support.microsoft.com/kb/179442/EN-US/)
148942 How to Capture Network Traffic with Network Monitor (http://support.microsoft.com/kb/148942/EN-US/)
169292 The Basics of Reading TCP/IP Traces (http://support.microsoft.com/kb/169292/EN-US/)
269882HOWTO:使用 ADO 连接到防火墙之后的 SQL 服务器(http://support.microsoft.com/kb/269882/ZH-TW/)
参考
本文件是根据 Microsoft Knowledgebase 文件编号 Q287932 翻译的. 若要参考原始英文文件内容, 请至以下网址:
http://support.microsoft.com/support/kb/articles/Q287/9/32.asp

本日志由 flyinweb 于 2009-06-20 16:17:11 发表到 数据库技术 中,目前已经被浏览 4457 次,评论 0 次;

作者添加了以下标签: SQL Server端口

1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 
2 compressnet Management Utility     compressnet 管理实用程序 
3 compressnet Compression Process    压缩进程 
5 rje Remote Job Entry          远程作业登录 
7 echo Echo               回显 
9 discard Discard            丢弃 
11 systat Active Users          在线用户 
13 daytime Daytime            时间 
17 qotd Quote of the Day         每日引用 
18 msp Message Send Protocol       消息发送协议 
19 chargen Character Generator      字符发生器 
20 ftp-data File Transfer [Default Data] 文件传输协议(默认数据口)  
21 ftp File Transfer [Control]      文件传输协议(控制) 

本日志由 flyinweb 于 2009-06-19 23:29:51 发表到 技术文摘 中,目前已经被浏览 4107 次,评论 0 次;

作者添加了以下标签: 端口

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

Windows 2000 下的修改办法

  win2k的终端服务可以运行在两种方式下:远程管理或应用程序服务器模式。

  远程管理模式:允许一定数量的管理员远程管理这个服务器,这个模式对服务器性能的影响程度最低。

  应用程序服务器模式:允许远程用户运行一定数量的应用程序,这个模式优化应用程序响应时间。还记得以前的瘦客户机吧?现在你可以用一台486计算机安装一个win95,用这种模式连上2000服务器,运行以前你无法运行的3DMAX、AutoCAD2000……。

  终端服务默认端口号:3389。
  更改原因:不想让非法用户连接到服务器进行登录实验。当这台服务器托管在外时更不希望发生这种情况,呵呵,还没忘记2000的输入法漏洞吧?

  更改方法:
  一、服务器端:
  1、第一处
  运行regedit,找到[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp],看到右边的PortNumber了吗?在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。
  2、第二处HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。
  二、客户端:
  打开客户端管理连接器,单击已经建好的某个连接,单击“文件(file)”→“导出(Export)”……
  用记录本或其它文本编辑软件找开刚导出的这个.cns文件,找到“Server Port =3389”这一行了吗?
  把这个默认的3389改成与服务器一样的端口号就行了。

Windows XP/2003 下的修改办法

  使用XP或2003的客户端,它可以显示多彩,还可以有声音,功能更强大。但终端客户端连接端口的修改方法与WIN2000有一定区别:

  按照原来更改2000的客户端的思路,把XP、2003的默认配置另存(在连接界面上单击“另存为”),和2000不一样的是:XP、2003的配置文件后缀是.rdp,WIN2000的是.cns
  用记事本打开这个地default.rdp文件,在里面没有发现什么3389的东东(2000的配置文件是有的),没有这句端口的配置我们就给它加上,假定现在的端口为8933,如下:
       server port:i:8933

  保存,退出即可。

本日志由 flyinweb 于 2009-06-17 23:00:50 发表到 Windows 中,目前已经被浏览 4237 次,评论 0 次;

作者添加了以下标签: 终端服务端口

  在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。 

  那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。 

  端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。 

本日志由 flyinweb 于 2009-06-17 22:59:25 发表到 技术文摘 中,目前已经被浏览 4200 次,评论 0 次;

作者添加了以下标签: 端口攻击

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文