Blog dedicado a la programación y a la informática en general

Ir al contenido | Ir al menú | Ir a las búsquedas

Jboss 4.2.3 - Seguridad

Hace algunos días, tuve problemas con un servidor web con Jboss 4.2.3 GA porque comenzó a emitir 300.000 paquetes por segundo, lo que provoco que el proovedor de red bloqueará inmediatamente el acceso a Internet.

Problemas de Seguridad

Después de mucho indagar y de buscar el responsable de dicho ataque, dimos con un proceso que se estaba ejecutando llamado "WUU.exe". El archivo en cuestión, estaba alojado en la carpeta System32, y curiosamente tenia como fecha de creación unos minutos antes del comienzo de los ataques. En principio, la amenaza estaba detectada, pero quedaba lo más importante. ¿Como ha llegado ahí?


Aquí es donde entra en escena JBoss. Somos conscientes de que la versión de JBoss no es precisamente la última (ahora está Jboss7) pero los requisitos del proyecto nos obligaban a ello. Para colmo, no soy administrador de sistemas, pero también me tuve que adaptar, debido a ello, paso lo que paso.

Tras seguir investigando la procedencia de nuestro,a partir de ahora "archienemigo" WUU.exe, encontramos en JBoss una aplicación desplegada que nada tenia que ver con las nuestras, wcscmd.

Entre las características de esa aplicación detectamos que la fecha de creación vuelve a coincidir con la de WUU.exe, y además dentro del proyecto encontramos una clase JAVA (wcscmd_jsp.java) que no tiene muy buena pinta, a priori, se encarga de generar archivos, descargarlos, y darle permisos totales.

Poco a poco vamos descubriendo el problema, pero vuelve a surgir la misma pregunta, aunque con distinto objeto ¿Como ha llegado ahí el proyecto wcscmd?

A esta pregunta encontramos solución de manera más rápida, con consola de Jboss se pueden desplegar war de manera remota mediante URL.

Pues ese es el problema, Jboss por defecto tiene aplicaciones propias que se despliegan al arrancar y permiten entre otras cosas desplegar WAR de manera remota, y además no tienen ninguna seguridad.

Añadir Seguridad


Para comprobarlo podemos arrancar JBoss y acceder con el navegador a http://localhost:8080/ y veremos esto.

JBoss_1.png

Observamos que en dicha página tiene la sección JBoss Management donde se puede visualizar las aplicaciones desplegadas, el estado de ellas, etc... Pero de todo lo que hay lo más peligroso es JMX Console que es la que permite el acceso a Jboss.

Una vez detectado el problema, encontramos dos posibles soluciones.

  1. Añadir Usuario/Contraseña para el acceso a JMX Console
  2. Eliminar todas las aplicaciones que vienen por defecto en JBoss (Opción válida si no se van a usar)


Añadir Usuario/Contraseña a JMX Console


Vamos a comenzar activando la seguridad en JMX Console, para ello abrimos el archivo server/PROFILE/deploy/jmx-console.war/WEB-INF/web.xml

En esté fichero hay que Descomentar el siguiente bloque.

 <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>

Una vez descomentado, es muy importante eliminar las etiquetas que definen la seguridad para los métodos GET y POST, ya que esto hace que permita otros tipos de peticiones. Por tanto, borramos las siguientes lineas.

  <http-method>GET</http-method>
  <http-method>POST</http-method>

Así la seguridad se aplica para todas la peticiones que se realicen a la consola de JBoss.

Si ahora intentamos acceder a la consola de Jboss, esto es lo de debe aparecer.

JBoss_2.png

Continuamos añadiendo seguridad a Jboss, ahora abrimos el fichero server/PROFILE/deploy/jmx-console.war/WEB-INF/jboss-web.xml y descomentamos la siguiente linea.

<security-domain>java:/jaas/jmx-console</security-domain>

Si reiniciamos el servidor, e intentamos acceder a la consola, podremos accerlo con el usuario admin y contraseña admin.

Para cambiar esos usuario hay que modificar el fichero server/PROFILE/conf/props/jmx-console-users.properties

La seguridad de la Consola JMX es completamente configurable, incluyendo roles y demás, a continuación dejo en enlace a la página propia de JBoss explicando las posibilidades.

https://developer.jboss.org/wiki/SecureTheJmxConsole


Eliminar las aplicaciones de JBoss


Aunque la solución anterior es válida, a mi personalmente seguía sin gustarme que apareciese cualquier información del JBoss y de sus aplicaciones introduciendo únicamente la URL. Por ello, decidí eliminar las aplicaciones de JBoss, ya que no las iba a utilizar.

A continuación incluyo una lista con los archivos que se pueden borrar (No olvides hacer una copia de seguridad del JBoss por lo que pueda pasar):

  • server/PROFILE/deploy/jmx-console.war
  • server/PROFILE/deploy/jboss-web.deployer/management/console-mgr.sar
  • server/PROFILE/deploy/jboss-web.deployer/ROOT.war

Ya tenemos JBoss un poco más seguro. Si ahora intentamos acceder a la misma url de antes http://localhost:8080/ nos aparecerá una página en blanco.

Añadir un comentario

El código HTML se muestra como texto y las direcciones web se transforman automáticamente.

Discusiones sobre el mismo tema

URL de retroenlace : https://www.dosmweb.com/blog/index.php?trackback/7

Fuente de los comentarios de esta entrada