ibm-mq - 远程 MQ 服务器身份验证

标签 ibm-mq

我试图弄清楚我们如何配置/设置身份验证、队列和队列管理器来连接 MQ 客户端,该客户端位于与将消息转发到的 MQ 服务器完全分开的服务器/域上。

我假设在正常的组织环境中,您可以仅使用 Active Directory(如果托管在 Windows 服务器上)进行身份验证/AD 查找。但是,在这种情况下,因为它们是不同的组织,所以您不能这样做吗?

您可以简单地将 SSL 证书应用于客户端/服务器并将其用作您的身份验证吗?如果是这样,这是否仅适用于连接中使用的 channel ?

不确定如何继续此操作。

如有任何建议,我们将不胜感激。

谢谢

最佳答案

看看Hardening WebSphere MQ v7.0 及更早版本的演示文稿。需要记住的是,WMQ 不验证任何内容。它根据操作系统身份和组进行授权,但不进行密码检查。

对于 QMgrs 和客户端位于 Windows 网络上的情况,连接使用 SID,因此似乎执行了一些有用的身份验证。但如果尝试从非 Windows 平台进行连接,Windows QMgr 将使用 ID 的字符串表示形式。例如,如果某人的桌面上有一个 Linux VM,他们可以轻松创建一个名为 MUSR_MQADMIN 的用户 ID,并且 Windows QMgr 将接受该连接。有一个设置会导致 Windows QMgr 只接受与它可以解析的 SIDS 的连接,但即使如此,也只需知道 SID 值是什么即可在连接上欺骗它们。

这里的教训是,任何 QMgr,即使是 Windows 上的 QMgr,也必须配置为对远程连接进行身份验证。对于 WMQ v7.1 及更高版本,QMgr 具有将 X.509 证书 DN 映射到用户 ID 或执行 IP 过滤的功能。在 v7.1 之前,这些函数需要退出,例如 BlockIP2 。 Capitalware 销售 MQAUSX具有BlockIP2的功能,并且可以进行ID和密码认证,支持。

第一个建议是使用 v7.1 QMgr,以便您获得用于映射和过滤的 CHLAUTH 规则。即使您不使用证书,v7.1 也会限制管理连接,因此攻击者更难获得完全的管理权限。然后,如果您需要密码验证,请结合使用 SSL channel (对密码进行加密并防止简单重放攻击)以及您可以自己编写或购买的退出。

请注意,允许来自域外部的连接不会带来任何新的挑战。 v7.1 之前的 Windows QMgr 未在 channel 定义中或通过退出设置 MCAUSER,允许远程管理访问,甚至可以从源自本地 Windows 域的连接进行访问。 总是需要强化 QMgr,尽管如果管理员没有为诚实的用户设置身份验证,他们就会收到授权错误。

摘要:
对于来自管理域之外的客户端,我建议使用相互身份验证的 TLS/SSL channel 。我在上面链接到的同一页面还包含 WMQ 安全实验室指南和脚本,它们展示了如何编写 WMQ 证书的创建和交换脚本并使用它们配置 WMQ Explorer。

无论您做什么,任何合法 channel 上的 MCAUSER 都必须在配置中或通过退出进行设置。如果允许客户端指定 ID,则没有什么可以阻止它指定管理 ID。对于未使用的 channel (例如 SYSTEM.DEF.*SYSTEM.AUTO.*),将 MCAUSER 设置为不能是本地 ID 的值,例如 no!body 或在 v7.1 及更高版本上*NOACCESS

关于ibm-mq - 远程 MQ 服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147757/

相关文章:

java - 从 Java 代码向 IBM MQ 放入和获取消息

ibm-mq - IBM Message Broker (IIB) 节点无法将凭证发送到 MQ

ibm-mq - 通过 mqsc 命令查看 MQ Explorer 事件查看器

Spring-JMS(Websphere MQ)

java - MQDestination 覆盖记帐 token 值

ibm-mq - WebSphere MQ 推荐的 AUTHRECS

c - IBM MQ 7.5 使用 C-API 检查本地或非本地集群队列

java - MQ 队列应允许最大 5MB 的文件传输

java - 使用 MDB 的 WebSphere MQ 中的订阅者授权

c# - 使用 WCF 的原始 MQ 消息