【问题标题】:How to Secure IBM WebSphere MQ 8.0 with Creds?如何使用 Creds 保护 IBM WebSphere MQ 8.0?
【发布时间】:2018-11-02 08:59:35
【问题描述】:

我正在使用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?

谢谢

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

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


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

    createQueueConnection("username", "password")
    

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

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

    在 Linux 等 Unix 操作系统上,您可以将 IDPWOS 身份验证方法 (AUTHENMD) 配置为 OS(使用加密并与影子密码条目进行比较)或 PAM(使用可插入身份验证模块)。如果您使用IDPWOS,我推荐PAM,因为它可以提供加密和比较支持(与OS 方法相同),但也支持您可以使用PAM 执行的任何操作,例如针对Windows Active Directory 进行身份验证。

    为了安全起见,您希望告诉 MQ 采用经过身份验证的用户,这是 AUTHINFO 对象上的 ADOPTCTX(YES) 设置。您应该在 qm.ini 文件中为 ChlauthEarlyAdopt=Y 配置队列管理器(请注意,这些现在都是 MQ v9.0.4 CD 和更高版本以及 9.1.0.0 LTS(也是 9.1.1 CD)和更高版本中的默认行为。

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

    请记住,如果您对队列管理器 CONNAUTH 设置进行任何更改,您需要运行 REFRESH SECURITY TYPE(CONNAUTH) 以使这些设置生效。

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

    可以在qm.ini 中设置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: IBM WebSphere MQ 本地 runmqsc 中某些显示命令的访问控制不正确

    8.0.0.6:

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

    8.0.0.7:

    • IT18052: ChlauthEarlyAdopt 修改

    8.0.0.8:

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

    8.0.0.10:

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

    8.0.0.11(尚未发布):

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

    【讨论】:

    • 您好 JoshMc,感谢您的回复。我正在使用 Windows、Linux 并使用 MQ 8.0.0.3。我是 IBM MQ 的新手,无法理解您上面解释的内容。我的要求是,我想只使用用户名和密码来保护现有应用程序(队列消息传递)。
    • 由于限制,我无法将 MQ 升级到任何其他版本。您能否指导我如何保护我的队列、队列管理器以及 Windows 和 ubuntu 的凭据? (我希望两个操作系统都使用相同的身份验证机制)
    • @Joe 如果您无法迁移到 MQ v9,您将希望使用 8.0.0.10 + IFIX。 IBM CONNAUTH 有很多问题,只有在 8.0.0.3 之后的版本中才能解决这些问题。有谁会要求您使用 3 年前(2015 年 6 月 18 日)发布的软件版本来实施安全性?从 8.0.0.4 到 8.0.0.10 的版本中总共有 46 个安全修复程序。您的 Windows 和 ubuntu 是否都使用单个帐户存储(例如:ubuntu 指向 Windows AD 进行身份验证)?如果没有,您是否有可用的 Windows AD?
    • 您对支持现有的 SVRCONN 频道还有哪些其他要求?这是一个新的“绿地”环境还是您将其添加到现有环境中?我提供了所需内容的中级摘要。您应该出去尝试其中的一些东西,但要知道,在 8.0.0.3 中,有些东西不是很稳定,有些东西确实如此。可能无法按预期工作。
    • 是否可以使用我想要的凭据配置 MQ。我不想使用 AD 或 LDAP 或操作系统凭据。我想自己配置用户名密码,当 Java App 想从队列中读取消息时,我只需提供我在 MQ 中配置的凭据 createQueueConnection("username", "password")
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多