security - 无法连接到 WebSphere MQ 7.1 中的队列管理器

标签 security ibm-mq mq userid messagebroker

我已经在 Linux 平台上安装了 WebSphere MQ 7.1,之后我安装了 WebSphere Message Broker 8.0.0.1。现在,当我尝试创建一个执行组时,我收到一个异常:原因代码 2035。此异常表明用户未获授权连接到队列管理器。我将此用户添加到 mqm 组中。我在使用 MQ 7.0.x 时没有遇到任何此类问题。我搜索了很多,才知道MQ 7.1 中存在用户ID 阻塞。但是,我希望这个用户能够创建执行组,我该怎么做?请指教。

最佳答案

如果您在 V7.1 或更高版本中创建一个新的 QMgr,它带有以下默认的 CHLAUTH 规则:

SET CHLAUTH(SYSTEM.ADMIN.SVRCONN)           TYPE(ADDRESSMAP)
    DESCR(Default rule to allow MQ Explorer access)
    ADDRESS(*) 
    MCAUSER( )                              USERSRC(CHANNEL)

SET CHLAUTH(SYSTEM.*)                       TYPE(ADDRESSMAP)
    DESCR(Default rule to disable all SYSTEM channels)
    ADDRESS(*)
    MCAUSER( )                              USERSRC(NOACCESS)

SET CHLAUTH(*)                              TYPE(BLOCKUSER)
    DESCR(Default rule to disallow privileged users)
    USERLIST(*MQADMIN)

底部的一个告诉 QMgr“如果有人尝试使用管理用户 ID 通过 SVRCONN 进行连接,则在所有情况下都阻止连接。”

要允许来自 Broker Toolkit 的连接,您有以下两种选择:
  • 从 mqm 组中删除 mqbrkrs。这允许它在不触发阻止管理员用户的 CHLAUTH 规则的情况下进行连接。您当然需要将 mqbrkrs 组的授权授予它需要访问的所有代理和应用程序队列,因为它不再是 MQ 管理员。
  • 覆盖 CHLAUTH 规则以允许代理工具包以管理员身份连接到 SYSTEM.BROKER.CONFIG channel 。

  • 作为安全专家,我赞成第一种选择。 MQ 管理员可以管理代理是不可避免的。但是,可以避免允许代理(以及所有代理流)管理 QMgr。

    但是,如果您希望采用第二条路线,则需要覆盖阻止管理员访问的 CHLAUTH 规则。有几种方法可以做到这一点。您可以删除该规则,但这会打开 所有 您的 channel 到管理员连接。更精确的方法是为管理员要连接的 channel 提供规则。例如:
    SET CHLAUTH(SYSTEM.BKR.CONFIG) TYPE(BLOCKUSER) +
        USERLIST('*NOACCESS')
    

    由于 WMQ 应用最具体的规则,默认规则被新规则覆盖,但仅适用于 SYSTEM.BKR.CONFIG channel 。 BLOCKUSER 规则语法允许我们指定拒绝谁而不是允许谁,它需要用户 ID 而不是组 ID。为了允许管理员访问,有必要指定一些不是 *MQADMIN 的 ID。我选择 *NOACCESS 是因为它不能是实际的用户 ID,并且是 WMQ 在其他地方使用的保留字。您可以轻松使用任何用户 ID,例如 nobody 甚至 mqm 。 (阻止 mqm 将允许 mqbrkrs 但不允许 mqm 但是因为 mqbrkrsmqm 组中,它不会限制 mqbrkrs 管理 QMgr。)

    最后,请注意,任何允许管理员访问的 channel 都应该经过严格的身份验证。如果您设置的唯一 CHLAUTH 规则是上述规则,那么任何拥有到 QMgr 的网络路由的人都可以通过在连接上声明 mqbrkrs 用户 ID 来连接到该 channel 。连接后,他们将完全控制 QMgr 并能够使用 mqmmqbrkrs 用户 ID 远程匿名执行命令。至少添加一个 CHLAUTH 规则以按 IP 地址过滤此 channel 上的连接。或者,更好的是,使用 SSL 并按证书专有名称过滤连接。

    关于security - 无法连接到 WebSphere MQ 7.1 中的队列管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12889953/

    相关文章:

    performance - WebSphere MQ 性能

    jquery - 从 jQuery 安全地调用安全的 WebService

    java - 在 IBM WebSphere MQ Explorer 中创建 View 时出错

    java - 如何查找远程 JNDI

    java - WebSphere MQ Java 类中的 MQSecurityExit 是什么?

    messaging - IBM MQ - 一对多消息流

    .net - .Net 和 iPhone 之间的三重 DES 互操作性?

    asp.net - 常见的网络攻击

    security - 使用 spring-security-core-ldap 插件在 grails 中实现 LDAP 身份验证?

    java - 获取 header 属性的字节流 IBM MQ