Особое внимание WMQ для клиентов WAS?

У нас есть клиентская установка WMQ - WAS / JMS через каналы подключения к серверу, где мы пытаемся обеспечить безопасность через идентификаторы пользователей.

Теперь мы установили идентификатор локального пользователя в поле MQ, mquserid, и оставили поле MCAUSER канала пустым.

Мы подумали: идентификатор, на котором запущен клиент MQ (в нашем случае WAS), wasuserid, при передаче в MQ завершится ошибкой, поскольку он не настроен в поле MQ. Затем мы настроим псевдоним JAAS (с идентификатором пользователя: mquserid) для фабрики соединений очереди на WAS, который затем будет передан в MQ и разрешит соединения.

Но мы можем подключаться и отправлять сообщения без псевдонима JAAS :(

Я написал отдельную программу Java для подключения к QM, и она работает правильно в зависимости от идентификатора пользователя, который я передаю при установлении соединения.

Обращается ли WMQ с WAS особым образом, разрешая соединения без проверки в локальном реестре пользователей?


person dvlpr    schedule 22.09.2010    source источник


Ответы (1)


Нет, WAS рассматривается как любое другое соединение.

В версии 6 и ранее WAS он будет отправлять пустой идентификатор, если идентификатор пользователя в соединении WMQ не указан. Вы можете определить, так ли это, посмотрев состояние канала при подключенном WAS. MCAUSER работающего канала будет содержать идентификатор, который использовался для подключения. Если статус работающего канала не показывает значения MCAUSER, значит, WAS не представил ID.

Другая возможность состоит в том, что определение канала SVRCONN (не статус) имеет такое значение, как mqm в MCAUSER. В этом случае идентификатор, представленный во время запроса на соединение, игнорируется. Опять же, проверьте состояние канала, чтобы увидеть, какой идентификатор используется во время выполнения, или просто проверьте определение канала SVRCONN, чтобы найти значение MCAUSER.

Теперь вот что интересно - если MCAUSER канала пуст, тогда WMQ примет любой представленный идентификатор. Если идентификатор не указан, то связанное приложение или пользователь запускается от имени администратора. Если приложение или пользователь могут быть администратором WMQ, они могут делать что угодно в QMgr, а также могут удаленно выполнять произвольные команды ОС на сервере под QMgr. Фигово.

Правильный ответ - установить MCAUSER на канале на любое значение, которое приложение должно подключать. На этом этапе приложение не может использовать какой-либо другой идентификатор, потому что канал переопределит его. Однако любой может подключиться к этому каналу, поэтому следующим шагом будет проверка подлинности запроса на подключение. Вы можете использовать бесплатный выход, например BlockIP2, или MQAUSX, который является продуктом коммерческого поставщика. BlockIP2 будет фильтровать входящие запросы по IP-адресу, что может быть достаточно для подключений, поступающих со статического IP-адреса в заблокированном центре обработки данных. MQAUSX фактически проверит идентификатор пользователя и пароль, отправленные во время запроса на соединение от WAS (или любого клиента, если на то пошло). Вы также можете использовать SSL и атрибут SSLPEER канала для аутентификации запросов с использованием сертификатов X.509. Обратите внимание, что если вы используете MQAUSX для проверки идентификатора пользователя и пароля, либо используйте с ним шифрование SSL, либо используйте как клиентскую, так и серверную версии выхода. В противном случае ваши учетные данные будут переданы в виде открытого текста по сети, что приведет к поражению цели.

Конечно, если вы защищаете канал приложения, необходимо защитить другие каналы на хосте, такие как SYSTEM.DEF. * И SYSTEM.AUTO. *, Иначе злоумышленник просто обойдет канал приложения.

Обратите внимание, что если каналы RCVR, RQSTR и CLUSRCVR не аутентифицируют запросы или не содержат значение MCAUSER, они также предоставляют доступ администратора. Например, если я хочу управлять вашим QMgr, а вы заблокировали каналы SVRCONN, я бы создал QMgr на своем рабочем столе, удалил мой SYSTEM.DEF.RECEIVER, создал новый канал SDR с именем SYSTEM. DEF.RCVR и укажите его на QMgr. Если ваш SYSTEM.DEF.RCVR (или SDRQSTR или SDCLUSRCVR) или любой другой из этих типов каналов, которые вы определили, не имеет SSL или выхода, я могу подключиться, и если они обнаружат MCAUER, я могу администрировать QMgr анонимно и выполнить Команды ОС.

Любое определение канала без значения MCAUSER разрешает административный доступ.
Любой канал без SSL / SSLPEER и / или выхода разрешает анонимные соединения.

Для получения дополнительной информации см. Презентацию WMQ по усилению защиты и документы лаборатории безопасности WMQ по адресу https://t-rob.net/links. Также ознакомьтесь со статьями по SSL и другим темам безопасности WMQ в столбце Миссия: обмен сообщениями в техническом журнале IBM developerWorks. .

person T.Rob    schedule 22.09.2010
comment
Спасибо, Роб! Это очень ясный ответ. - person dvlpr; 23.09.2010
comment
Я подумал, что, возможно, преобразование JMS Message - ›MQ Message вырезает поля User Id. Но я проверю MCAUSER работающего канала, как вы предложили. Спасибо. - person dvlpr; 23.09.2010
comment
Да, поля JMS отображаются в MQMD или из него. Сначала это сообщение MQ, поверх которого отображается структура JMS. Поле JMS можно рассматривать как псевдоним для базового значения MQMD. - person T.Rob; 23.09.2010