MQ客户端连接到远程MQ服务器的权限不足

时间:2012-04-27 15:30:11

标签: ibm-mq

现在我使用c#使用websphere MQ客户端连接到远程MQ Server(7.0版本),并出现权限问题,运行MQ客户端应用程序的用户没有足够的权限访问qmgr。然后我使用& #39;的setmqaut'命令授予用户足够的权限并且它有效。

我认为它不是很方便,必须是更好的方法。可以通过在MQ Server中添加用户的IP吗?但我不知道该怎么做。

任何建议都将不胜感激。 感谢

1 个答案:

答案 0 :(得分:5)

WebSphere MQ不执行任何身份验证。本地应用程序由操作系统进行身份验证,因此可以信任其ID。 (根据定义,如果您不能信任本地OS身份验证,则整个服务器都会受到攻击。)与本地连接一样,WMQ信任远程连接的ID是真实的。由WMQ管理员决定使用哪种级别的身份验证。在WMQ第7版中,有两种选择 - 使用SSL / TLS通道进行身份验证,或使用通道出口进行身份验证。

在任何一种情况下,通道的MCAUSER值决定了用于授权的ID。如果MCAUSER留空,则通道将使用客户端发送的用户ID。在您的情况下,您收到2035错误,因为客户端发送的ID不在管理(mqm)组中。如果您的客户端发送了ID“mqm”(或在Windows“MUSR_MQADMIN”上),则连接将成功。如果您的程序是Java或JMS,则选择提供的ID的能力是API的一部分。告诉QMgr你想成为谁。

如果您愿意允许远程连接在服务器上执行OS命令,那么只需将管理ID放在通道的MCAUSER中。 (例如,UNIX / Linux上的MCAUSER('mqm')或Windows上的MCAUSER('MUSR_MQADMIN')。但是,请注意具有管理员权限的远程用户可以使用QMgr远程执行任意OS命令行代码。这是WMQ的一个功能,而不是一个bug,因此我们从不在生产中推荐这个。实际上,我个人建议开发环境实现安全性。等到Production以确定如何验证连接以及需要哪些授权通常会导致不必要的部署延迟。

如果您想使用IP过滤来缓解该威胁,您可以转移到本机包含此功能的WMQ v7.1,或使用BlockIP2之类的退出。这些解决方案中的任何一个都允许您创建按IP地址,用户ID等过滤传入连接请求的规则。

请注意,在v7.0 QMgr上,默认情况下所有通道都不受保护。因此,即使您在一个通道上过滤传入的请求,如果其他通道保持默认状态,任何人仍然可以作为管理员连接和执行命令。有关所有这些的全面评论,请查看t-rob.net处的Hardening WebSphere MQ演示文稿。向下滚动到v7.0演示文稿。