返回列表 发帖

WebSphere Application Server V5 中的防火墙端口分配

引言 WebSphere®Application Server V5 带来了许多运行时配置方面的改变,这些改变不仅影响着正在运行的进程,同时还影响着用于进程间通信的传输。因此,WebSphere Application Server 早期版本的用户很可能需要调整自己的防火墙配置才能过渡到使用版本5。本文将概述每个进程的端口分配以及版本5所用的传输。这里将不讨论配置防火墙的细节,因为防火墙配置是特定于每个防火墙厂商的。 简要地说,与早期的版本相比,WebSphere Application Server V5 的主要改变在于: 部署管理器(Deployment Manager,DMgr)和节点代理(Node Agent,NA)取代了 Adminserver 进程: DMgr 不但为管理 WebSphere Application Server 进程提供了惟一的管理点,而且还提供了单元的配置。DMgr 可以驻留在运行 WebSphere Application Server 进程的机器(节点)上,也可以驻留在专用于此任务的独立服务器上。从高的可用性来说,推荐采用后者。(请查阅参考资料部分中可用性方面的文章以了解更多的信息)。 NA 是 WebSphere Application Server 单元中每个节点(物理服务器)的本地进程,它为在每个节点上运行的 JMS 服务器和应用程序服务器提供进程管理。 WebSphere Application Servers 同时还提供了名字服务和安全服务;这与早期的版本有所不同,在早期的版本中,Adminserver 提供了这些功能。 版本5还提供了 JMS 服务器功能。在 WebSphere Application Server Base 中,JMS 服务器进程是与应用程序服务器进程一起运行的。在 WebSphere Application Server 网络部署(ND)中,JMS 服务器是每个节点上的独立进程。 wsadmin 取代了 WebSphere Congtrol Program(WSCP)和 XMLConfig 命令行工具。 除了以上指出的对 WebSphere Application Server V5 进程模型的更改外,还存在着对早期版本中使用的传输所作的相应修改。在版本5以前,所有进程间通信都是通过 RMI/IIOP(当启用安全性时通过RMI/IIOP/SSL)来进行的,惟一的例外是 Web(HTTP)服务器插件和应用程序服务器 Web 容器间的通信除外,它是 HTTP(当启用安全性时为HTTPS)或 OSE(版本3.x)。在版本5中,服务器间的和来自管理客户端的内部管理通信在缺省情况下都是通过 HTTP(S)之上的 SOAP 来进行的。然而,可以选择把用于 EJB 通信的 RMI/IIOP 作为客户机或服务器间的通信。 下面的图1展示了“典型的” WebSphere Application Server 单元中的进程以及这些进程各自之间的传输协议。下表中概述了对传输协议的说明。在 WebSphere 信息中心中也可以找到端口分配的清单(请参阅参考资料)。 图2扩展了这个“典型”的 WebSphere Application Server 单元,它在图中放置了防火墙,从而可以用于更具代表性的数据中心配置。 图2. 带防火墙的 WebSphere Application Server 单元 在这个网络布局中添加了三个防火墙: 防火墙 1(FW1)与防火墙 2(FW2)联合起来创建一个“禁区”,在这个区域中只能运行 Web 服务。这样就可以保护不受企业外部的威胁同时也限制了通过外部防火墙(FW1)进行侵入的访问。 防火墙 3(FW3)用来保证生产数据中心不受内部威胁,比如非生产网络。 虽然添加其他的防火墙是可行的,比如在应用程序服务器和数据库服务器之间,甚至在应用程序服务器之间,但是这些附加的防火墙在提供额外保护方面所起的作用很小,而肯定会增加网络布局的复杂性。通过使用虚拟专用网络或者把所有的组件放在相同的子网上,也能实现附加防火墙所提供的很多功能而且降低了复杂性。 防火墙只是保证通信仅仅在特定地址之间的指定端口上进行的安全性因素之一。要有更好的安全性,需要启用 WebSphere Application Server 安全性来保护每个带有 SSL 的传输并且启用强大的验证和授权功能。 必须通过使用管理功能指定 DES 加密来保护内存到内存传输。 Web 和 SOAP 客户机 既然我们已经概述了典型网络布局中相关的各种组件和传输,就让我们来一层一层地说明每个组件的防火墙端口分配,首先从传入 Web(HTTP)服务器的客户机请求开始,如图3所示。 图 3. 客户机到 Web 服务器 由于我们处理的仅仅是 HTTP 和 HTTPS 通信,所以这一层很可能是最容易配置的,因为浏览器客户机和 Web 服务客户机请求一般都是通过 HTTP(S)进行的。因此,防火墙需要开放两个端口:80 和 443(除非您正在使用的端口不是您的 Web 服务器的缺省端口)。 Web 服务器到应用程序服务器 需要配置的下一层就是 Web 服务器与应用程序服务器之间的链接,如图4所示。 图 4. Web 服务器和应用程序服务器 这一层相对来说也比较容易配置,因为我们仅处理一个协议:HTTP(S)。在缺省情况下,WebSphere Application Server 为每个应用程序服务器中的 Web 容器组件进行端口配置都是从9080(用于HTTP)和9043(用于HTTPS)开始的。当附加的应用程序服务器添加到节点时,WebSphere Application Server 就自动增加端口配置,但是在创建应用程序服务器时,不这样做也是可能的。因此,假定您允许运行时为您负责端口配置,那么节点上的第二个应用程序服务器将使用端口 9081(HTTP)和 9044(HTTPS),而第三个将使用 9082 和 9045,依此类推。如果您想要查看当前设置,或者使用不同的端口,可以导航到 Web 容器传输(在管理浏览器中,选择 Application Servers => servername => Web Container => HTTP Transports),如图5所示。 图 5. HTTP 传输对话框 如果您要在给定节点上创建9个以上的应用程序服务器,并在此节点上同时驻留部署管理器,那么您就需要确保端口9090不被应用程序服务器所用。部署管理器将此端口用于未受保护的浏览器客户机连接。 EJB 客户机到应用程序服务器 下一层不仅连接是最多的,而且对于这些连接上的传输还存在着多种选项,如图6所示。 图 6. EJB 客户机到应用程序服务器 EJB 客户机通过几个端口与应用程序服务器进行通信: BOOTSTRAP_ADDRESS:查找名称服务的引导端口,固定。 ORB_LISTENER_ADDRESS: TCP/IP 端口,在缺省情况下为动态。 当启用安全性(SSL)时,还有三个附加端口: SAS_SSL_SERVERAUTH_LISTENER_ADDRESS:用于向后兼容 WebSphere Application Server 的早期版本的SAS SSL端口,在缺省情况下为动态。 CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS:CSIv2 客户机验证 SSL 端口,在缺省情况下为动态。 CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS:CSIv2 SSL 端口(没有客户机验证),在缺省情况下为动态。 EJB 客户机还需要访问节点代理(Node Agent)的 ORB 监听器端口: ORB_LISTENER_ADDRESS: TCP/IP 端口,固定。 最后这个端口用于 EJB 客户机对运行在节点代理(Node Agent)中的 Location Service Daemon(LSD)的初始请求,不过没有在图6中画出。之所以需要这个接口,是因为 WebSphere WorkLoad Management(WLM)实现依赖于“位置转移(location forwarding)”(根据 CORBA 标准的命名)。WebSphere Application Server 运行时的 WLM 部分把一个间接 IOR(可互操作的对象引用)返回到 EJB 客户机作为lookup()调用的结果。这个间接的 IOR 指向节点代理(Node Agent)中的 ORB 监听器端口。作为间接 IOR 请求的响应,节点代理(Node Agent)把一个直接 IOR 返回到正在运行该 EJB 的应用程序服务器。 在一个不安全的环境中,最低限度您需要考虑应用程序服务器 BOOTSTRAP_ADDRESS(上面的 a)和 ORB_LISTENER_ADDRESS(b)以及节点代理(Node Agent)ORB_LISTENER_ADDRESS(f)上的防火墙通信量。在启用了 WebSphere 安全性的环境中,您还将需要提供 CSIV2 和 SAS 地址(c、d、e),取决于您的应用程序和系统需求。 当您创建应用程序服务器时,应用程序服务器 BOOTSTRAP_ADDRESS(a)会从端口9810的节点上第一个应用程序服务器的值开始自动增加。如果您不需要向后兼容 WebSphere Application Server V4.x 系统,就不需要考虑 SAS。如果您确实需要 WebSphere Application Server V4.x 客户机或者应用程序服务器具有互操作性,就需要给指定的 SAS 端口(c)分配一个值,将其配置为静态的。 在管理浏览器客户机中选择 Application Servers => servername => End Points 来查看或更改每个应用程序服务器的端口。 图 7. End Points 对话框 在缺省情况下,有些端口特别是 ORB_LISTENER_ADDRESS(上面的 b)没有在 End Points 对话框中列出(图7)。如果是 ORB_LISTENER_ADDRESS,这就意味着端口号是动态分配的。要为没有列出的端口指定固定的端口分配,只需使用 End Points 对话框中的 New 按钮创建一个具有合适名称的新端口,然后 WebSphere Application Server 运行时就将使用它。(请参阅参考资料部分中关于传输的文章以获得更多信息。) 配置一个防火墙的关键有两个: 通过指定 End Points 来固定这些端口 而对于 IIOP 连接, 使用不执行网络地址转换(Network Address Translation)的防火墙。(大部分防火墙不“理解”IIOP)。 当您在管理浏览器中导航到这些 End Points 时,会发现已经给它们分配了“0”值,这表示的是动态端口分配。在“0”的位置指定一个数字就可以简单地固定端口的值。当 End Points 更改为静态值时,您就可以配置防火墙以接受这些端口上的通信量。 根据客户机的类型,CSIv2 和 SAS 两者可以独立使用,也可以一起使用,因此可以从 V4 客户机、使用 SAS 的 V4 应用程序服务器、V5 客户机或使用 CSIv2 或 SAS 的 V5 应用程序服务器中调用在 WebSphere Application Server V5 中运行的 EJB。 管理客户机 WebSphere Application Server V5 中有两种类型的管理客户机:基于浏览器的管理控制台和高性能客户机(例如,wsadmin、Tivoli_Performance Viewer 等等)。每个都有其不同的端口需求。 管理控制台 基于浏览器的控制台中的缺省端口分配为 9090 和 9443。通过查看 admin_host 虚拟主机(图8)和 DMgr 的 HTTP Transports(图9),可以看到这些端口,它们是从 WebSphere Application Server V5.0.1 开始公开的。 图 8. 使用 Host Aliases 查看端口分配 图 9. 使用 HTTP Transports 对话框查看端口分配 如果您选择修改这些端口,就需要在两个地方进行更改:一个在 Host Alias 对话框中,一个在 DMgr 对话框中的 HTTP Transports 里面。这些对话框的导航路径都已在图8和图9中表示出来了。接下来,您需要做的就是配置您自己的防火墙,以允许在您所选定的端口上进行通信。 wsadmin 客户机 接下来是一个高性能客户机的具体例子:wsadmin。此客户机缺省连接类型是端口8879上的 SOAP 。更改这个端口也需要两步(two-step)过程: 为部署管理器(Deployment Manager)修改 SOAP_CONNECTOR_ADDRESS End Point。 修改 wsadmin.properties 文件中的 com.ibm.ws.scripting.port 特性,或者在从命令行调用 wsadmin时指定端口号。例如: wsadmin -conntype SOAP -port 还有一种方法,您可以使用 RMI 将 wsadmin 连接到部署管理器(Deployment Manager)。在这种情况下,缺省的端口是9809,这个端口是此进程中的 BOOTSTRAP_PORT。启动 wsadmin的 RMI 命令是: wsadmin -conntype RMI -port 9809 强制 wsadmin 使用 RMI 的好处是,RMI 运行时将提示输入管理用户 ID 和密码,而不需要在命令行上或特性文件中指定它们。 不管您所选是什么连接方法,您都需要开放防火墙上的合适端口以允许访问部署管理器(Deployment Manager)。顺便提一下,对 wsadmin 连接的端口限制不仅有助于限制对部署管理器(Deployment Manager)的访问,而且能起到只能通过部署管理器(Deployment Manager)来修改配置的作用。任何在节点代理(Node Agent)处所作的“本地”更改,在下一个库同步到来时都将被覆盖。用这种方式限制防火墙访问可以阻止 wsadmin 连接到这样的 MBean 服务器中去,它运行在节点代理(Node Agent)中,而 AdminConfig MBean 也在其中运行。 在更改与部署管理器相关的 SOAP_CONNECTOR_PORT 时: 如果在重新启动 Dmgr 和节点代理(Node Agent)之后连接到 Dmgr 的多个节点中的某一个出现问题,就必须在重新启动节点代理(Node Agent)之前停止节点代理(Node Agent)并且运行 syncNode.bat/sh 命令行脚本。在运行 syncNode 时不要忘记指定端口号。 为管理客户机所选的连接器类型不依赖于为内部服务器到服务器管理通信所选的连接器类型(例如,管理服务器到应用程序服务器)。您可以将 SOAP 用于内部服务器管理通信,而将 RMI 用于管理客户机,反过来也是一样的,也可以同样地使用它们。用于内部管理通信的连接器类型通过 Preferred Connector 特性来进行指定,这个属性是在每个服务器进程中的“Administration Services”选项卡上进行指定的。 防火墙方面需要考虑的其他事项 有些用户可能会选择用防火墙来将 WebSphere 应用程序服务器与他们的数据库和 LDAP 服务器分离开来。如果您这样做的话,那么将需要提供从应用程序服务器到数据库服务器的数据库连接。所用的端口将随着数据库的不同而不同,因此,请参阅您的数据库文档以找到应该使用的实际端口。一些缺省端口的例子有: DB2:50000 和 50001 Oracle:1521 SQL 服务器:1433 LDAP:缺省端口为389,不过,如果您选择用防火墙来将您的 LDAP 服务器与 WebSphere 服务器分离开来,那么这个端口也将需要进行配置。 我们还没有讨论相同单元中 WebSphere Application Server 之间的协议通信量,因为还有其他几个端口将需要配置:内存复制(DRS 端口)、DMgr 文件传输及其他。我们建议不要进行这样的配置,因为它大大增加了复杂性,而所提供的额外保护,即使有的话,也非常之少。然而,如果您决定这样做,其中的细节问题将会有所变化,这取决于您的部署网络布局。一种可能的网络布局就是将运行 Web 容器的应用程序服务器与运行 EJB 容器的应用程序服务器分离开来。在这种情况下,Web 容器应用程序服务器就是 EJB 客户机,这样上面为 EJB 客户机描述的步骤将适用。假定 Web 应用程序服务器与 EJB 应用程序服务器在同一单元中,那么就需要规定好单元中各个节点之间的节点代理( Node Agent) MULTICAST_DISCOVERY_ADDRESS(端口5000上的 UDP 协议),包括部署管理器( Deployment Manager)节点在内。您还需要考虑部署管理器( Deployment Manager)CELL_DISCOVERY_ADDRESS、CELL_MULTICAST_DISCOVERY_ADDRESS 和 BOOTSTRAP_ADDRESS 的通信量,DMgr 和节点代理( Node Agent)的 SOAP_CONNECTOR_ADDRESS 也是一样的。另外,如果您使用的是 WebSphere JMS Server,您还将需要考虑到此进程的管理和应用程序通信量。请参阅参考资料,以获得完整的端口清单。 结束语 在配置 WebSphere Application Server V5 和防火墙以防止有害侵入时,保持耐心和有条不紊是很重要的。正确地识别您的环境所需的端口,并且只开放这些端口,这对于您的成功与安全性非常关键。采用本文中的信息作为指导,连同下面列出的参考资料、防火墙文档以及诸如 netstat 之类的网络工具一起来帮助确认您的端口使用情况,您就能够成功而有效地保护您的环境。

返回列表 回复 发帖