如何使用Creds保护IBM WebSphere MQ 8.0?

时间:2018-09-04 13:52:47

标签: ibm-mq

我正在使用IBM WebSphere MQ 8.x,并希望保护它。

如何使用用户名/密码保护我的WebSphere Queue Messaging,以便只有有效的用户才能执行操作。

这就是我现在访问队列的方式

Context jndiContext = getInitialContext();
String qcf= getJMSDetailsBean().getQueueConnectionFactory();
QueueConnectionFactory qconFactory = (QueueConnectionFactory) jndiContext.lookup(qcf);
qcon = qconFactory.createQueueConnection();

您能在下面指导我吗?

  1. 如何首先保护我的MQ?
  2. 在#1之后,如何使用QueueConnectionFactory访问MQ?

谢谢

1 个答案:

答案 0 :(得分:0)

与技术中的许多其他事物一样,有多种方法可以完成您要询问的任务,下面介绍了一种使用IBM MQ提供的功能的方法。


首先要回答一个简单的问题,如果要将用户名和密码传递给MQ,可以使用用户名和密码作为参数调用createQueueConnection

createQueueConnection("username", "password")

在MQ方面,如果可以升级,我建议您升级到9.0.0.5 LTS,如果不能升级到v9.0,那么我建议您升级到8.0.0.10 + IFIX IT25591,可以下载顶部APAR页上的此权限的IFIX。

您没有提及队列管理器在哪个操作系统上运行。对于大多数操作系统版本,您可以配置队列管理器以针对操作系统(IDPWOS)或LDAP(IDPWLDAP)验证凭据。您可以将QMGR CONNAUTH属性指向带有以上任一选项的AUTHINFO的{​​{1}}对象。

在Linux等Unix操作系统上,您可以将AUTHTYPE身份验证方法(IDPWOS)配置为AUTHENMD(使用crypt并与影子密码条目进行比较)或OS (使用可插拔身份验证模块)。如果您使用PAM,我建议您使用IDPWOS,因为它可以提供加密和比较支持(与PAM方法相同),而且还支持您可以使用PAM进行的所有操作,例如,针对Windows进行身份验证活动目录。

出于安全性考虑,您想告诉MQ采用通过身份验证的用户,这是OS对象上的ADOPTCTX(YES)设置。您应该在AUTHINFO文件中为ChlauthEarlyAdopt=Y配置队列管理器(请注意,这既是MQ v9.0.4 CD和更高版本以及9.1.0.0 LTS(也是9.1.1 CD)的默认行为。甚至更高。

如果您确定希望队列管理器上的每个qm.ini通道都要求发送有效的用户名/密码,则可以在SVRCONN对象上设置CHCKCLNT(REQUIRED)。如果需要更详细,可以将其设置为AUTHINFO,这意味着如果存在用户名和密码,则该密码必须对该用户名有效,但是这也意味着如果未提供密码,MQ将不会尝试身份验证。例如,如果您有一些现有渠道,在其中使用其他身份验证方法(例如TLS证书或安全出口),则可能需要这样做。如果在CHCKCLNT(OPTIONAL)级别将其设置为OPTIONAL,则可以设置QMGR规则以将特定频道的设置提升到CHLAUTH

请记住,如果您对队列管理器CHCKCLNT(REQUIRED)进行了任何更改,则需要运行CONNAUTH才能使这些设置生效。

如果MQ客户端是MQ v8或更高版本,则默认情况下,密码在非TLS通道上发送时,将使用3DES加密保护。这里是Java和JMS客户端的例外,您必须启用MQCSP模式(兼容性)是默认设置。)

可以在REFRESH SECURITY TYPE(CONNAUTH)中进行设置PasswordProtection=always的设置,以确保MQ强制必须使用密码保护功能来保护密码,或者使用具有非NULL密码规范的TLS通道。这也意味着在非TLS通道上,任何小于v8的客户端都将被拒绝。


我将更新此答案,并提供一些示例命令来实现上述设置,请让我知道此答案是否朝着您想要的方向发展?


我扫描了Fix list for IBM MQ Version 8.0,发现以下与CONNAUTH或一般安全性相关的有趣内容,这些内容在8.0.0.3之后的版本中已得到修复,这不是完整列表,还有很多:

8.0.0.5:

  • IT12825:IBM MQV8:客户端应用程序无法连接到错误为AMQ9777的队列管理器:通道被阻塞。
  • IT11645:当PASSWORDPROTECTION = ALWAYS并且USER_AUTHENTICATION_MQCSP = FALSE
  • 时,IBM MQ V8客户端连接被错误地允许
  • CVE-2015-7473:IBM WebSphere MQ对某些本地MQSC命令的访问控制不正确
  • CVE-2016-0259:对本地runmqsc中某些显示命令的IBM WebSphere MQ错误访问控制

8.0.0.6:

  • CVE-2016-3052:IBM MQ Java客户端可能以明文形式发送密码

8.0.0.7:

  • IT18052:ChlauthEarly采用修改

8.0.0.8:

  • IT22419:所有用户名/密码身份验证请求均挂起。队列管理器配置为通过PAM请求
  • IT21306:确保在Java中启用MQCSP身份验证模式的机制之间的一致性
  • IT21384:在IT15833之后,设置COM.IBM.MQ.CFG.JMQI.USEMQCSPAUTHENTICIC = Y不会启用MQCSP认证方式。

8.0.0.10:

  • IT20275:USERMAP CHLAUTH规则和ChlauthEarlyAdopt未映射到正确的用户

8.0.0.11(尚未发布):

  • IT25591:升级到MQ 8.0.0.10后,与队列管理器的连接失败,错误日志报告用户缺少对qmgr(AMQ8077)的CTRL权限