比较BlockIP2和通道认证记录以获取WebSphere MQ安全性

BlockIP2是广泛使用的IBM®WebSphere®MQ的著名独立软件供应商(ISV)安全出口。 WebSphere MQ V7.1和更高版本提供了使用通道身份验证记录(也称为CHLAUTH命令)来实现与安全出口中通常实现的功能相似的功能的能力。

本文概述并比较了BlockIP2和CHLAUTH中最常用的功能。 本文的主要目的是帮助熟悉安全性的人员熟悉通道身份验证记录如何替代BlockIP2功能。

本文中使用的BlockIP2版本是2.93版,但它应同样适用于其他版本。 本文中使用的WebSphere MQ版本是V7.1.0.6,但是除非明确指出,否则它应同样适用于更高版本。

BlockIP2概述

WebSphere MQ提供了一种称为安全性退出的功能,该功能允许ISV实施与安全性相关的功能。 BlockIP2是一个安全出口,可通过在通道上强制执行身份验证来提供安全性。

BlockIP2出口可用于执行以下功能:

  • IP地址映射
  • IP地址封锁
  • 证书DN映射
  • 证书DN阻止
  • 客户端用户ID映射
  • 客户端用户ID阻止

通道身份验证记录概述

通道身份验证记录可用于提供对通道级别或侦听器级别连接到队列管理器的远程连接的身份验证和授权的精确控制。 通道身份验证记录执行针对BlockIP2列出的相同功能,以及两个附加功能:

  • 远程队列管理器名称映射
  • 远程队列管理器名称阻止

在WebSphere MQ V7.1和更高版本中,当您创建队列管理器时,默认情况下启用CHLAUTH。 如果您在V7.1之前的版本中具有队列管理器,则安装新版本将不会自动启用CHLAUTH。 WebSphere MQ管理员必须手动启用CHLAUTH。

从BlockIP2迁移到CHLAUTH

该场景是一个示例实现,显示了如何从使用BlockIP2迁移到使用CHLAUTH。 BlockIP2配置文件如下所示。

图1.示例BlockIP2配置文件

################################################ #####################

# 1.Block mqm users
BlockMqmUsers=Y;
# 2. Specific channel limitations
MAXCHL=SYSTEM.DEF.SVRCONN;25;   
MAXCHL=SYSTEM.ADMIN.SVRCONN;25;
MAXCHL=SYSTEM.AUTO.SVRCONN;25;
# 3. Block user id:alis
BlockUsers=alis;
# 4. Allow clientuser1 when coming from 172.20.10.31, using the MCAUSER settings
CON=172.20.10.31;;clientuser1;
# 5. Allow tester when coming from 10.*, and set MCAUSER to clientuser2
CON=10.*;tester;MCA=clientuser2;
# 6.Allow connections from DN Organization's name='MQORG'
and map them to MCA user 'mqusers'
SSL=O=MQORG;MCA=mqusers;
# 7. Block connection attempts that don't match any of the other rules.
CON=*;*;BLOCK;

################################################ #####################

为了演示如何从上述的BlockIP2配置文件转换为CHLAUTH命令,以下各节介绍了文件中的每个组件以及CHLAUTH如何执行相同的操作。

IP地址映射

BlockIP2和CHLAUTH均可用于为从特定IP地址连接的任何通道设置MCAUSER。 如果使用BlockIP2,则CON属性可用于指定要设置的IP地址和MCAUSER值。

以下属性允许从IP地址10.7.0.139建立连接,并将其映射到MCAUSER mqtestusers

CON=10.7.0.139;;MCA=mqtestusers;

您可以使用通道身份验证记录,根据接收连接的IP地址来设置通道的MCAUSER属性。

以下命令允许从IP地址10.7.0.139建立连接,并将其映射到MCAUSER mqtestusers

SET CHLAUTH('*') TYPE(ADDRESSMAP) ADDRESS('10.7.0.139') USERSRC(MAP) MCAUSER('mqtestusers')

IP地址封锁

BlockIP2和CHLAUTH均可用于阻止从特定IP地址连接的通道的连接。 如果使用的是BlockIP2,则可以使用CON属性在配置文件中指定要阻止的IP地址。

以下属性阻止IP地址10.21.*连接到队列管理器:

CON=10.21*;;BLOCK;

传入连接必须命名包含BlockIP2安全出口的有效MQ通道定义,否则将不会调用BlockIP2出口。 可以在CHLAUTH中使用全局IP规则来阻止不是MQ通道连接的连接。

使用CHLAUTH,我们可以设置规则以禁止特定IP地址连接到队列管理器。 我们可以为IP地址阻止设置两种规则。

全局IP规则允许您在不知道通道名称的情况下在侦听器本身阻止连接。 实际上,连接甚至可能不是MQ通道。

以下命令在不知道通道名称的情况下阻止IP地址10.21.*连接到队列管理器:

SET CHLAUTH('*') TYPE(BLOCKADDR) ADDRLIST('10.21.*')

每通道规则允许您设置规则以阻止IP地址使用特定通道。

以下命令阻止IP地址10.21.*连接到服务器连接通道SYSTEM.DEF.SVRCONN

SET CHLAUTH(SYSTEM.DEF.SVRCONN) TYPE(ADDRESSMAP) ADDRESS('10.21.*') USERSRC(NOACCESS)

TYPE(BLOCKADDR)命令用于指定在更新防火墙之前要阻止的IP地址。 更新防火墙后,可以将其从WebSphere MQ配置中除去。

TYPE(ADDRESSMAP)命令可用于拒绝部分或全部连接,然后您可以根据需要编写规则以启用特定的白名单规则。

证书DN映射

BlockIP2和CHLAUTH均可用于设置规则,以将证书专有名称(DN)映射到要使用的MCAUSER值。 如果使用的是BlockIP2,则可以使用属性SSL在配置文件中指定要阻止的DN。

以下属性允许来自组织名称为XYZ的DN的连接,并将它们映射到MCAUSER mqusers

SSL=O=XYZ;MCA=mqusers;

这是CHLAUTH的等效命令:

SET CHLAUTH('*') TYPE(SSLPEERMAP) SSLPEER('O="XYZ"') MCAUSER('mqusers')

证书DN阻止

BlockIP2和CHLAUTH均可用于设置规则以阻止对证书DN名称的访问。 如果使用的是BlockIP2,则可以使用SSL属性。

以下属性阻止来自组织名称为IBMINDIA的DN的连接:

SSL=O=IBMINDIA;BLOCK;

使用CHLAUTH,以下命令可阻止来自组织名称为IBMINDIA的DN的连接:

SET CHLAUTH('*') TYPE(SSLPEERMAP) SSLPEER('O="IBMINDIA"') USERSRC(NOACCESS)

客户端用户ID映射

根据从客户端收到的原始用户ID,BlockIP2和CHLAUTH均可用于映射服务器连接通道的MCAUSER属性。

如果使用的是BlockIP2,则CON属性可用于根据客户端声明的用户ID映射MCAUSER属性。

以下属性将客户端断言的用户ID npardhas到MCAUSER mquser

CON=*;npardhas;MCA=mquser;

如果您使用的是CHLAUTH,则以下命令会将客户端声明的用户ID npardhas到MCAUSER mquser

SET CHLAUTH('*') TYPE(USERMAP) CLNTUSER('npardhas') MCAUSER('mquser')

也可以通过检查IP地址以及从客户端收到的原始用户ID来完成这种映射。

以下属性将映射具有IP地址10.*的客户端断言用户ID npardhas连接,并将MCAUSER设置为master

CON=10.*;npardhas;MCA=master;

如果使用的是CHLAUTH,则以下命令将允许来自IP地址10.*连接,并将客户端声明的用户ID npardhas到MCAUSER master

SET CHLAUTH('*') TYPE(USERMAP) ADDRESS('10.*') CLNTUSER('npardhas') USERSRC(MAP) MCAUSER('master')

客户端用户ID阻止

BlockIP2和CHLAUTH均可用于阻止特定的用户ID。 使用BlockIP2,可以通过在BlockIP2配置文件中使用BlockUsers属性指定多个用户ID来阻止它们连接到特定的服务器连接通道。 可以将BlockIP2配置文件中的BlockMqmUsers属性设置为“ Y”,以阻止特权用户使用客户端通道。

以下属性阻止客户端声明的用户标识MQUSER1

BlockUsers=MQUSER1;

以下属性阻止特权用户:

BlockMqmUsers=Y;

还可以设置CHLAUTH规则,以防止特定的客户端断言的用户ID启动服务器连接通道。 以下命令从启动服务器连接通道SYSTEM.DEF.SVRCONN阻止客户机声明的用户标识MQUSER1

SET CHLAUTH('SYSTEM.DEF.SVRCONN') TYPE(BLOCKUSER) USERLIST('MQUSER1')

您可以使用上面显示的命令,通过覆盖为特定通道阻止用户的默认规则,而保留阻止其他通道的默认规则,以允许远程特权用户连接到队列管理器。

以下命令阻止特权用户使用客户端通道:

SET CHLAUTH('*') TYPE(BLOCKUSER) USERLIST('*MQADMIN')

*MQADMIN表示在队列管理器上具有特权访问权限的任何用户。 将此值放在USERLIST字段中将阻止任何将以特权用户身份运行的连接。

远程队列管理器名称映射

当前版本的BlockIP2无法执行远程队列管理器名称映射。 您可以使用CHLAUTH根据通道所连接的队列管理器来设置通道的MCAUSER属性。

以下命令映射队列管理器QM1并将MCAUSER设置为QM1USER

SET CHLAUTH('QM1.QM2') TYPE(QMGRMAP) QMNAME('QM1') USERSRC(MAP) MCAUSER('QM1USER')

远程队列管理器名称阻止

当前版本的BlockIP2无法执行远程队列管理器名称阻止。 您可以使用通道身份验证记录来防止远程队列管理器启动通道。

以下命令阻止队列管理器QM1连接到通道QM1.QM2。

SET CHLAUTH('QM1.QM2') TYPE(QMGRMAP) QMNAME('QM1') USERSRC(NOACCESS)

将BlockIP2配置文件移植到MQSC命令中

本节显示了图1所示的BlockIP2配置文件的等效MQSC命令。

  1. 阻止特权用户和用户ID alis使用客户端通道。
    SET CHLAUTH('*') TYPE(BLOCKUSER) USERLIST('*MQADMIN','alis')
  2. 特定渠道限制:
    ALTER CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MAXINST(25)
    ALTER CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) MAXINST(25)
    ALTER CHANNEL(SYSTEM.AUTO.SVRCONN) CHLTYPE(SVRCONN) MAXINST(25)
  3. 在步骤1中实施了块用户ID alis命令。
  4. 当来自172.20.10.31 ,使用MCAUSER的客户端用户ID允许clientuser1
    SET CHLAUTH('*') TYPE(USERMAP) ADDRESS('172.20.10.31') CLNTUSER('clientuser1') USERSRC(CHANNEL)
  5. 从IP地址10.*进入时允许测试器,并将MCAUSER设置为clientuser2
    SET CHLAUTH('*') TYPE(USERMAP) CLNTUSER('tester') MCAUSER('clientuser2') ADDRESS('10.*')
  6. 允许来自DN组织名称MQORG连接,并将它们映射到MCAUSER mqusers
    SET CHLAUTH('*') TYPE(SSLPEERMAP) SSLPEER('O="MQORG"') MCAUSER('mqusers')
  7. 阻止与其他任何规则都不匹配的连接尝试。
    SET CHLAUTH('*') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS)

比较CHLAUTH和BlockIP2

以下各节讨论CHLAUTH和BlockIP2之间在配置,优先级顺序,验证,日志记录,每个节点的粒度和自签名证书方面的特定区别。

配置比较

要使用BlockIP2,您需要下载它并将其解压缩到适合您平台的位置。 BlockIP2配置由WebSphere MQ服务器上的文件管理。 每个通道可以(通常应该)具有自己的配置文件或自己的​​内联配置。 如果您有一个新应用程序想要连接到队列管理器,则需要编辑BlockIP2配置文件并更新安全性信息。

使用CHLAUTH规则,可以在常规MQSC脚本中合并配置。 通过将配置创建为MQSC命令或在单个MQSC脚本中,您可以创建通道并设置规则以一次向通道提供所需的身份验证。 MQSC命令DISPLAY CHLAUTH(*)ALL将显示队列管理器的所有CHLAUTH规则。 这使WebSphere MQ管理员的工作变得更加容易和简单,以实现安全性并有效地实施它。

优先级比较

BlockIP2从上到下搜索配置文件,一旦匹配,它就会停止寻找其他匹配规则。 因此,您需要将最具体的规则放在配置文件中最不具体的规则之前。

下表显示了CHLAUTH检查规则匹配的顺序。

表1. CHLAUTH检查的顺序
进行检查的顺序 类型 哪里
1个 块地址 听众
2 SSLPEERMAP,USERMAP,QMGRMAP和ADDRESSMAP 渠道
3 出口处 渠道
4 阻止用户 渠道

当传入的连接请求到达WebSphere MQ队列管理器时,将针对CHLAUTH进行以下检查:

  1. 该请求首先由侦听器处理,其中应用了任何BLOCKADDR规则。
  2. 然后,将请求传递到响应的频道程序,在该程序中将应用最特定的映射规则,如下一节所述。
  3. 应用映射规则后,如果定义了通道安全出口,则将运行该出口安全出口。
  4. 处理完上述规则后,将应用BLOCKUSER规则。

如果在前面的步骤之一中没有拒绝连接请求,则通道启动完成。 当多个映射规则与入站通道匹配时,最具体的规则优先,如以下列表所示:

  • 首先匹配通道名称,可以为可能使用较低优先级机制的某些通道制定特定规则。
  • WebSphere MQ队列管理器名称或客户机用户标识通常包含在SSL / TLS DN中。 这使SSL / TLS DN成为信息的超集,因此比队列管理器名称或客户端用户ID更为具体,因此具有更高的优先级。
  • 您可以有多个队列管理器或从同一IP地址运行的客户端。 因此,这具有最低的优先级。

下表总结了映射规则中的优先顺序。

表2. CHLAUTH优先顺序
优先顺序 身份机制
1个 频道名称
2 SSL / TLS专有名称
3 = 客户端确认的用户ID
3 = 队列管理器名称
4 IP地址

有关SSL / TLS可分辨名称的更多信息,请参阅WebSphere MQ知识中心中的主题可分辨名称 。

请考虑以下CHLAUTH规则,以了解优先级映射在通道身份验证记录中如何工作。

1. SET CHLAUTH('*') TYPE(ADDRESSMAP) DESCR('MAP MCAUSER to TESTUSER for the IP Address 
coming from 10.121.*') ADDRESS('10.121.*') MCAUSER(TESTUSER)

2. SET CHLAUTH('*') TYPE(SSLPEERMAP) DESCR('MAP MCAUSER to IBMUSER coming with SSLPEER value IBM') 
SSLPEER('O="IBM"') MCAUSER(IBMUSER)

3. SET CHLAUTH('TEST.*') TYPE(USERMAP) DESCR('connection coming with client asserted id npardhas') 
CLNTUSER('npardhas') MCAUSER(PARDHA)

4. SET CHLAUTH('TEST.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('10.121.250.79') DESCR('connection 
coming with 10.121.250.79 to TEST.SVRCONN') MCAUSER(PARDHA)

如果传入连接通过名为TEST.SVRCONN的通道TEST.SVRCONN ,其源IP地址为10.121.250.79 ,客户端用户ID为npardhas ,则它将与第四条规则匹配,因为通道名的优先级高于其他标识机制。

如果传入连接通过名为TEST.CLNT.SVRCONN的通道TEST.CLNT.SVRCONN ,其源IP地址为10.121.250.79 ,客户端用户ID为npardhas ,则它将匹配规则编号3,因为通道名称与部分通道规则名称TEST。*相匹配。

使用RUNCHECK函数验证CHLAUTH规则

DISPLAY CHLAUTH命令可与MATCH(RUNCHECK)选项一起使用,以从控制台测试规则,而无需与客户机或WebSphere MQ队列管理器建立真实连接。

DISPLAY CHLAUTH(TEST.SVRCONN) MATCH(RUNCHECK) CLNTUSER('npardhas') ADDRESS('10.121.250.79') ALL
    10 : DISPLAY CHLAUTH(TEST.SVRCONN) MATCH(RUNCHECK) CLNTUSER('npardhas') ADDRESS('10.121.250.79') ALL
AMQ8878: Display channel authentication record details.
   CHLAUTH(TEST.SVRCONN)                   TYPE(ADDRESSMAP)
   DESCR(connection coming with 10.121.250.79 to TEST.SVRCONN)  
     CUSTOM( )                       ADDRESS(10.121.250.79)
   MCAUSER(PARDHA)                         USERSRC(MAP)
   ALTDATE(2014-06-16)                     ALTTIME(07.11.21)

上面的显示命令显示了如果传入连接通过名为TEST.SVRCONN的通道进入,该通道具有源IP地址10.121.250.79和客户端用户ID npardhas 。 提供给RUNCHECK的值必须完全指定。 也就是说,不能有任何通配符。

在尝试模拟来自客户端或队列管理器的入站连接时,无法使用DISPLAY CHLAUTH MATCH(RUNCHECK)工具测试诸如BlockIP2之类的出口。 使用MATCH(RUNCHECK)时,不会调用出口,因此对它们所做的任何更改都不会反映在结果中。

日志比较

可以将BlockIP2和CHLAUTH都配置为在通道上发生连接拒绝时记录日志。 以下示例是如果连接被阻止则写入BlockIP2日志文件的错误。

一个独立的Java客户端使用Windows操作系统上的服务器连接通道TEST.SVRCONN在IP地址为192.168.92.1用户ID ganesh运行。 客户机连接到在Linux®操作系统上以IP地址192.168.92.128运行的WebSphere MQ队列管理器。

以下代码片段显示了Java客户端用来连接到WebSphere MQ队列管理器的连接参数:

// Set MQ connection credentials to MQ Environment.
         MQEnvironment.hostname = 192.168.92.128;
         MQEnvironment.channel = TEST.SVRCONN;
         MQEnvironment.port = 1415;

在以下示例中,在服务器连接通道TEST.SVRCONN的属性中配置BlockIP2出口:

ALTER CHANNEL(TEST.SVRCONN) CHLTYPE(SVRCONN) 
SCYDATA('FN=c:\path\Blockspec.txt;') 
SCYEXIT('BlockIP2(BlockExit)')

以下是写在指定BlockIP2配置文件中的属性

CON=192.168.92.1;;BLOCK;

程序运行时,无法成功连接,并且以下消息被写入BlockIP2日志文件:

2011-03-10|18:29:54|-1221153904|Connection refused, Channel [TEST.SVRCONN] ConName [192.168.92.1] 
User [ganesh] was not accepted in CON=

当CHLAUTH生成通道事件时,它们被视为EXCEPTION类型,因此您可以通过将队列管理器属性CHLEV设置为EXCEPTIONENABLED 。 只要连接被阻止,它就会生成一个事件。 CHLAUTH可以通过三种方式阻止通道。 每种方式都会产生一个带有原因限定符的事件,该事件指示失败类型。 下表列出了事件消息及其原因限定符。

表3.阻塞的通道事件消息
活动讯息 原因
MQRQ_CHANNEL_BLOCKED_USERID 通道由于其已断言(或映射)的用户ID在列表中而被拒绝,因此被阻止。
MQRQ_CHANNEL_BLOCKED_ADDRESS 由于通道的IP地址在列表中而被拒绝,因此通道被阻止。
MQRQ_CHANNEL_BLOCKED_NOACCESS 通道被阻止,因为其标识(IP地址,SSL对等名称,远程队列管理器名称或客户端用户ID)与表示要阻止的规则匹配。

MQRQ_CHANNEL_BLOCKED_USERID示例

在此示例中,使用Windows操作系统上的服务器连接通道TEST.SVRCONN ,以用户ID MUSR_MQADMIN运行IP地址为192.168.122.1的独立Java™客户端。 客户机连接到在Linux操作系统上以IP地址192.168.122.82运行的WebSphere MQ队列管理器。 以下代码片段显示了Java客户端用来连接到WebSphere MQ队列管理器的连接参数:

// Set MQ connection credentials to MQ Environment.
         MQEnvironment.hostname = 192.168.122.82;
         MQEnvironment.channel = TEST.SVRCONN;
         MQEnvironment.port = 1414;

默认情况下,队列管理器提供了三个规则。 启用CHLAUTH后,这些规则将生效。 下面显示的第三条规则禁止任何特权用户连接到客户端通道。

DIS CHLAUTH(*)
     1 : DIS CHLAUTH(*)
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.ADMIN.SVRCONN)           TYPE(ADDRESSMAP)
   ADDRESS(*)                              USERSRC(CHANNEL)
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.*)                       TYPE(ADDRESSMAP)
   ADDRESS(*)                              USERSRC(NOACCESS)
AMQ8878: Display channel authentication record details.
   CHLAUTH(*)                              TYPE(BLOCKUSER)
   USERLIST(*MQADMIN)

程序运行时,它无法成功连接,并且在错误日志中捕获了一条错误消息:

AMQ9776: Channel was blocked by userid

EXPLANATION:
The inbound channel 'TEST.SVRCONN' was blocked from address '192.168.122.1' 
because the active values of the channel were mapped to a userid which 
should be blocked. The active values of the channel were 'MCAUSER
(MUSR_MQADMIN)CLNTUSER(MUSR_MQADMIN)'.

ACTION:
Contact the systems administrator, who should examine the channel 
authentication records to ensure that the correct settings have been configured. 
The ALTER QMGR CHLAUTH switch is used to control whether channel authentication 
records are used. The command DISPLAY CHLAUTH can be used to
query the channel authentication records.

WebSphere MQ生成事件消息到通道事件队列。

图2. MQRQ_CHANNEL_BLOCKED_USERID事件的MS0P视图
比较BlockIP2和通道认证记录以获取WebSphere MQ安全性_第1张图片

MQRQ_CHANNEL_BLOCKED_NOACCESS示例

在此示例中,用户ID为pardha的独立Java客户端使用Linux操作系统上的服务器连接通道SYSTEM.DEF.SVRCONN以IP地址192.168.122.1运行。 客户机连接到Windows操作系统上以IP地址192.168.122.82运行的WebSphere MQ队列管理器。 以下代码片段显示了Java客户端用来连接到WebSphere MQ队列管理器的连接参数:

// Set MQ connection credentials to MQ Environment.
         MQEnvironment.hostname = 192.168.122.82;
         MQEnvironment.channel = SYSTEM.DEF.SVRCONN;
         MQEnvironment.port = 1414;

默认情况下,队列管理器提供了三个规则。 启用CHLAUTH后,这些规则将生效。 下面显示的第二条规则禁止使用任何与系统相关的通道。

dis chlauth(*)
     3 : dis chlauth(*)
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.ADMIN.SVRCONN)           TYPE(ADDRESSMAP)
   ADDRESS(*)                              USERSRC(CHANNEL)
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.*)                       TYPE(ADDRESSMAP)
   ADDRESS(*)                              USERSRC(NOACCESS)
AMQ8878: Display channel authentication record details.
   CHLAUTH(*)                              TYPE(BLOCKUSER)
   USERLIST(*MQADMIN)

程序运行时,它无法成功连接,并且在错误日志中捕获了一条错误消息:

AMQ9777: Channel was blocked

EXPLANATION:

The inbound channel 'SYSTEM.DEF.SVRCONN' was blocked from address '192.168.122.1' 
because the active values of the channel matched a record configured with USERSRC(NOACCESS). 
The active values of the channel were 'CLNTUSER(pardha)'.

ACTION:

Contact the systems administrator, who should examine the channel authentication records 
to ensure that the correct settings have been configured. The ALTER QMGR CHLAUTH switch 
is used to control whether channel authentication records are used. The command 
DISPLAY CHLAUTH can be used to query the channel authentication records.

将以下事件消息写入通道事件队列。

图3. MQRQ_CHANNEL_BLOCKED_NOACCESS事件的MS0P视图
比较BlockIP2和通道认证记录以获取WebSphere MQ安全性_第2张图片

MQRQ_CHANNEL_BLOCKED_ADDRESS示例

用户ID pardha下的独立Java客户端在Linux操作系统上以IP地址192.168.122.1运行。 客户机使用服务器连接通道TEST.SVRCONN连接到IP地址为192.168.122.82的WebSphere MQ队列管理器。 以下代码片段显示了Java客户端用来连接到WebSphere MQ队列管理器的连接参数:

// Set MQ connection credentials to MQ Environment.
         MQEnvironment.hostname = 192.168.122.82;
         MQEnvironment.channel = TEST.SVRCONN;
         MQEnvironment.port = 1415;

要创建阻止IP地址192.168.122.1作为客户端连接到队列管理器的通道身份验证记录,请使用以下命令:

SET CHLAUTH('*') TYPE(BLOCKADDR) ADDRLIST('192.168.122.1')

程序运行时,它无法成功连接,并且在错误日志中捕获了一条错误消息:

AMQ9782: Remote connection blocked.

EXPLANATION:

A connection from IP address '192.168.122.1' was blocked because it matched 
the blocking address rule 192.168.122.1'.

ACTION:

Verify that the channel authentication blocking rules are correct. If necessary 
modify the rules to allow the inbound connection using the SET CHLAUTH command. 
The ALTER QMGR CHLAUTH switch is used to control whether channel authentication 
records are used. Refer to the commands section of the WebSphere MQ Information 
Center for more information on the specification of the IP address parameter.

将以下事件消息写入通道事件队列。

图4. MQRQ_CHANNEL_BLOCKED_ADDRESS事件的MS0P视图

比较每个节点的粒度以保护群集

如果您的WebSphere MQ集群网络包含多种平台,则BlockIP2需要一个额外的通道自动定义出口以在集群环境中提供精细的安全性。 CHLAUTH记录可以提供每个节点的粒度来保护群集。

允许每个节点粒度保护群集安全的设置任务如下:

  • 使用CHLAUTH记录为完整的存储库队列管理器创建身份验证规则。
  • 使用AUTHREC记录为完整的存储库队列管理器创建授权配置文件。
  • 使用CHLAUTH记录配置部分存储库队列管理器。
  • 使用AUTHREC记录为集群成员队列管理器创建授权配置文件。

自签名证书比较

BlockIP2可以强制执行策略以阻止自签名证书连接到队列管理器。 以下属性可用于允许自签名证书:

AllowSelfSignedCertificates=Y;

WebSphere MQ没有提供等效功能。 管理员可以验证是否配置了密钥库中的自签名证书,而不能对其他证书进行签名。

放在一起

下表总结了BlockIP2和WebSphere MQ V7.1的功能。

表4.通道身份验证记录和BlockIP2的比较
功能性 IBM WebSphere MQ 区块IP2
IP地址映射 是的-CHLAUTH 是的-CON
IP地址封锁 是的-CHLAUTH 是的-CON
证书DN映射 是的-CHLAUTH 是-SSL
证书DN阻止 是的-CHLAUTH 是-SSL
客户端用户ID映射 是的-CHLAUTH 是的– CON
客户端用户ID阻止 是的-CHLAUTH 是的– CON
远程队列管理器名称映射 是的-CHLAUTH 没有
远程队列管理器名称阻止 是的-CHLAUTH 没有
DNS过滤 否,但是在IBM MQ V8中引入 是-参见注释1
区分自身证书和CA签名证书 没有
频道限制 是的-MAXINST 是的-MAXCHL
允许按节点粒度来保护群集 是的-CHLAUTH 是-参见注释2
记录故障 是-错误消息和事件消息 是-日志文件
记录成功的连接 部分地; 频道启动的事件,但不适用于SVRCONN 是-日志文件
失败影响 IBM的全力支持 没有支持,后果自负

笔记

1. BlockIP2可以过滤DNS名称和IP地址,而CHLAUTH仅过滤V7中的IP地址。 在WebSphere MQ V8中,CHLAUTH过滤DNS名称和IP地址。

2.为了使BlockIP2在异构集群上提供安全性,您需要具有通道自动定义(CHAD)出口。 使用CHLAUTH,可以为每个队列管理器独立地实现异构集群上的安全性,从而使整体解决方案更简单,更稳定。

结论

WebSphere MQ中的通道认证记录功能旨在提高消息传递的安全性,并且不需要其他ISV扩展来实现安全性。 本文比较了使用WebSphere MQ V7.1的BlockIP2版本2.93和通道身份验证记录的功能。 通道身份验证记录提供了BlockIP2提供的类似功能,并获得了IBM的全面支持。

致谢

作者要感谢IBM WebSphere MQ Architect的Morag Hughson对本文的有益技术评论。

翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1407_nalla/1407_nalla.html

你可能感兴趣的:(python,linux,java,数据库,大数据)