- Sécuriser les Consoles JMX
<!-- web.xml -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>JBoss JMX Console</realm-name>
</login-config>
<security-role>
<role-name>JBossAdmin</role-name>
</security-role>
Attention cependant, à utiliser le même "security-domain" pour les deux consoles, ce qui n'est pas le cas avec les exemples fournis. Il faut veiller aussi à changer les login et password par défaut dans les fichiers properties :
JBOSS_HOME/server/ports-01/conf/props/jbossws-roles.properties
JBOSS_HOME/server/ports-01/conf/props/jbossws-users.properties
<!-- jboss-web.xml -->
<security-domain>java:/jaas/jmx-console</security-domain>
- Sécuriser le JMX Invoker
Les accès via RMI et twiddle passent par le jmx-invoker. Pour le sécuriser, il faut décommenter la partie proposée en fin du fichier jmx-invoker-service.xml :
<!-- deploy/jmx-invoker-service.xml -->
<descriptors>
<interceptors>
<interceptor code="org.jboss.jmx.connector.invoker.AuthenticationInterceptor"
securityDomain="java:/jaas/jmx-console"/>
</interceptors>
</descriptors>
Un fois cette partie activée, les accès RMI nécessitent du authentification via un ClientLoginModule ou via la connexion à JNDI. Les accès par script (twiddle ou shutdown) nécessitent de renseigner les arguments -u et -p.
- Restrictions réseau :
La sécurité des accès distants peut encore être renforcée par un filtrage au niveau système.
Le jmx-invoker utilise un protocole de communication RMI qui s'appuie sur un invoker jrmp, pooled, iiop ou http. En standard, c'est l'invoker jrmp qui est utilisé. Par conséquent, les accès twiddle ou RMI se font via le port 4444. Si on crée un nouvel invoker, sur un autre port, il est alors possible de faire passer uniquement les invocations JMX par ce nouvel invoker. Il reste alors à paramétrer le firewall système du serveur pour qu'il n'accepte que les adresses IP des postes d'administrateur sur ce port.
Pour créer un nouvel invoker, on duplique l'invoker jrmp, du fichier conf/jboss-service.xml, en changeant le port et le nom du MBean ; puis on modifie le ProxyFactory du JmxInvoker.
<!-- deploy/jmx-invoker-service.xml -->
<mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
name="jboss.jmx:type=adaptor,name=Invoker,protocol=jrmp,service=proxyFactory">
<depends optional-attribute-name="InvokerName">jboss:service=invoker,type=admin</depends>
</mbean>
<!-- RMI/JRMP invoker for Admin -->
<mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
name="jboss:service=invoker,type=admin">
<attribute name="RMIObjectPort">4449</attribute>
<attribute name="ServerAddress">${jboss.bind.address}</attribute>
<depends>jboss:service=TransactionManager</depends>
</mbean>
Aucun commentaire:
Enregistrer un commentaire