Estamos escribiendo un programa java que mantiene una contraseña en la memoria. Desafortunadamente, el usuario puede usar fácilmente jconsole o jmap para crear un archivo de volcado de almacenamiento dinámico y abrirlo para encontrar la contraseña. Creo que jconsole conecta jvm usando sockets locales. Quiero saber, ¿hay alguna manera de deshabilitar jmx incluso para usuarios locales? ¿Hay alguna forma de deshabilitar totalmente los volcados de almacenamiento dinámico? Como el usuario tiene acceso al segmento de memoria, de todos modos es posible acceder a la contraseña. Sin embargo, quiero deshabilitar las formas estándar de hacerlo para que la acción sea lo más cara posible.Deshabilitar las conexiones JMX locales en JVM
Respuesta
Finalmente, encontré una solución para deshabilitar las conexiones de jconsole. También evita que jmap cree un archivo de volcado. Encontré la solución here. También cito aquí la respuesta:
Puede evitar que las herramientas tales como jconsole y otras personas se conecten por corriendo con el -XX: + opción DisableAttachMechanism. Tenga en cuenta que esta opción no está documentada/apoyada en , sino que debe hacer lo que quiera con . Dicho esto, incluso con esto no hay nada que le impida conecta BGF y otros programas de depuración/proc
Sin embargo, eso es obvio el segmento de memoria se podía acceder localmente. Pero, ¿alguien sabe una herramienta para hacer volcados de memoria estándar con acceso directo a la memoria?
Configuración de la conexión máx cuenta a cero apaga JMX
-Dsun.rmi.transport.tcp.maxConnectionThreads=0
Si aún necesita estadísticas, sencillo de leer el archivo * hsperfdata_ correspondiente
Editar: publiqué mi hsperf munin plugin en github.
- 1. PostgreSQL: deshabilitar temporalmente las conexiones
- 2. ¿Cómo tener un solo proxy JMX para múltiples JVM?
- 3. ¿Cómo activar JMX en mi JVM para acceder con jconsole?
- 4. Conexión JMX remota
- 5. ¿Es posible configurar una ubicación en Web.config para permitir solo las conexiones locales?
- 6. ¿Cómo se diferencian las "JVM modernas" de las JVM antiguas?
- 7. Oauth: cómo probar con las URL locales?
- 8. Cómo conectarse a un programa Java en localhost jvm usando JMX?
- 9. Permitir todas las conexiones remotas, MySQL
- 10. Cómo conectarme al agente JMX usando python
- 11. ¿Scala funciona bien en las JVM propietarias?
- 12. ¿Cómo se definen las variables estáticas locales locales de subprocesos?
- 13. Los procesos locales de Java se atenúan cuando se intenta conectar a través de JMX
- 14. Cómo leer las cookies locales
- 15. Las conexiones MongoDB siguen aumentando
- 16. acceso todas las variables locales
- 17. ¿Cómo reiniciar JVM cuando se agota la memoria usando la monitorización JMX?
- 18. ¿Cómo declarar las variables locales en postgresql?
- 19. las variables Constructor-locales en Scala
- 20. Deshabilitar las referencias en perl
- 21. Cómo usar getSystemCpuLoad() en JMX
- 22. Habilitar JMX remoto en Jetty
- 23. ¿Cómo habilita JMX en Websphere?
- 24. Marco exportador JMX similar al exportador Spring JMX
- 25. Obteniendo variables locales desde un marco de pila en la JVM
- 26. VB6: Deshabilitar las variantes
- 27. Las variables locales en las definiciones de clase/ámbito
- 28. PostgreSQL - deshabilitar las restricciones
- 29. ¿El escritorio de Emacs no recuerda las conexiones de TRAMP?
- 30. El uso de JMX y cómo utilizar las aplicaciones existentes
No necesariamente un formato de volcado de memoria estándar, pero puede usar, por ejemplo, el editor hexadecimal HxD (http://mh-nexus.de/en/hxd/) para acceder a la memoria de cualquier proceso local (con suficientes privilegios) . –
Agradable. ¡Funciona para mi! – laher