Отключение локальных JMX-соединений на JVM - PullRequest
7 голосов
/ 10 августа 2009

Мы пишем Java-программу, которая хранит пароль в памяти. К сожалению, пользователь может легко использовать jconsole или jmap для создания файла дампа кучи и открыть его, чтобы найти пароль. Я думаю, что jconsole соединяет jvm, используя локальные сокеты. Я хочу знать, есть ли способ отключить JMX даже для локальных пользователей? Есть ли способ полностью отключить дампы кучи? Поскольку у пользователя есть доступ к сегменту памяти, в любом случае возможно получить доступ к паролю. Однако я хочу отключить стандартные способы сделать это, чтобы сделать действие как можно более дорогим.

Ответы [ 2 ]

5 голосов
/ 11 августа 2009

Наконец-то я нашел решение для отключения соединений jconsole. Это также мешает jmap создать файл дампа. Я нашел решение здесь . Я также цитирую ответ здесь:

Вы можете предотвратить такие инструменты, как JConsole и другие от подключения по работает с -XX: + опция DisableAttachMechanism. Обратите внимание, что эта опция не задокументировано / поддерживается, но должно делать то, что ты хочешь. Тем не менее, даже с это ничто тебя не остановит подключите gdb или другую отладку / proc основанные программы

Однако очевидно, что к сегменту памяти можно получить доступ локально. Но кто-нибудь знает инструмент для создания стандартных дампов памяти с прямым доступом к памяти?

2 голосов
/ 06 января 2016

Установка максимального числа подключений на ноль отключает JMX

-Dsun.rmi.transport.tcp.maxConnectionThreads=0

Если вам все еще нужна статистика, просто прочитайте соответствующий файл hsperfdata_ *

Edit: Я опубликовал свой hsperf munin плагин на github.

...