JBoss를 사용하는 사용자가 특별히 보안조치를 하지 않았다면 (default 환경이라면 ...)
http://www.yourserver.com/jmx-console 혹은 http://www.yourserver.com/web-console 로 접속하면
JBoss 서버의 내부 전체를 살펴볼 수 있으며 심지어는 정당하게 마우스 클릭 몇번으로 서버를 shutdown 시킬 수 있다. 그렇다고 모니터링 및 관리 유지에 도움이 되는 jmx-console과 web-console 서비스를 하지 않을 수도 없다. 이런 경우 반드시 jmx-console과 web-console에 보안조치를 취해야 한다.

jmx-console 보안

1. jmx console을 보안하기 위해서는 deploy 디렉토리로 이동하여 jmx-console.war를 찾는다.
shell>cd JBOSS_HOME/server/default/deploy/jmx-console.war <enter>

2. web.xml 과 jboss-web.xml의 security-constraint 부분 활성화한다.

shell>vi WEB-INF/web.xml <enter>

아래 처럼 comment 되어 있는 security 부분을 uncomment 하고 뒤에 <login-config> 블록을 추가한다.
   <!-- A security constraint that restricts access to the HTML JMX console
   to users with the role JBossAdmin. Edit the roles to what you want and
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
   secured access to the HTML JMX console.
   -->
   <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>

shell>vi jboss-web.xml <enter>
아래 처럼 comment 되어 있는 security 부분을 uncomment 해야한다.
<jboss-web>
   <!-- Uncomment the security-domain to enable security. You will
      need to edit the htmladaptor login configuration to setup the
      login modules used to authentication users.
        -->
      <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>


3. users , roles properties 를 수정한다.
JBoss 4.0.2 이상
shell>cd $JBOSS_HOME/server/default/conf/props <enter>
shell>vi jmx-console-users.properties <enter>
# A sample users.properties file for use with the UsersRolesLoginModule
myaccount=mypassword

shell>vi jmx-console-roles.properties <enter>
# A sample roles.properties file for use with the UsersRolesLoginModule
myaccount=JBossAdmin,HttpInvoker

JBoss 4.0.2 이전
shell>cd $JBOSS_HOME/server/default/jmx-console.war/WEB-INF/classes/props <enter>
shell>vi jmx-console-users.properties <enter>
shell>vi jmx-console-roles.properties <enter>


web-console 보안도 jmx-console과 매우 유사하다.
우선 deploy 디렉토리가 $JBOSS_HOME/server/default/deploy/management/console-mgr.sar/web-console.war 이다.

1. jboss-web.xml 과 web.xml의 security-domain 블록을 uncomment 한다.
2. JBOSS_HOME/server/default/conf/login-config.xml 을 수정한다.
shell>vi $JBOSS_HOME/server/default/conf/login-config.xml  <enter>

중간쯤 "web-console"을 지정한 아래의 부분이 있는데
    <!-- A template configuration for the web-console web application. This
      defaults to the UsersRolesLoginModule the same as other and should be
      changed to a stronger authentication mechanism as required.
    -->
    <application-policy name = "web-console">
       <authentication>
          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
             flag = "required">
             <module-option name="usersProperties">web-console-users.properties</module-option>
             <module-option name="rolesProperties">web-console-roles.properties</module-option>
          </login-module>
       </authentication>
    </application-policy>


강조한 부분을 props/web-console-users.properties 와 props/web-console-roles.properties 로 각각 수정한다.
3. web-console-users.properties, web-console-roles.properties 내용을 작성한다.
shell>cd $JBOSS_HOME/server/default/conf/props <enter>
shell>cp jmx-console-users.properties web-console-users.properties <enter>
shell>cp jmx-console-roles.properties web-console-roles.properties <enter>

물론 web-console-users.properties 와 web-console-roles.properties 의 내용을 원하는대로 수정해도 된다.

마지막으로 JBoss를 restart 시키면 된다.




Posted by
,