Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Configurar Bitácoras

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en GlassFish al configurar bitácoras. Las aplicaciones deben registrar los eventos importantes, facilitando la detección y el rastreo de ataques y situaciones no deseadas.

Necesidad

Configurar el servicio de bitácoras en GlassFish.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se utiliza el servidor de aplicaciones GlassFish.

  2. Existen eventos excepcionales a los que no se les hace ningún control.

  3. Se desea configurar parámetros del servicio de bitácoras.

Solución

Todas las aplicaciones y sistemas son potencialmente vulnerables a fallos o comportamientos inesperados. El problema muchas veces reside en determinar la causa de estos comportamientos, y el daño causado a la información del sistema. Las bitácoras realizan un registro de eventos importantes de la aplicación. Esto permite realizar una realimentación y detección de anomalías en caso de una falla del sistema, un ataque u otra situación no deseada. En este artículo mostraremos cómo configurar apropiadamente las bitácoras en GlassFish, así como la forma de definir, establecer, listar y configurar eventos. Para ello debemos seguir el siguiente procedimiento:

  1. Cambiar el nombre y la ubicación de las bitácoras, Para realizar esto, primero utilizamos el comando list-log-attributes para ver la configuración actual.

  2. Después debemos utilizar el comando set-log-attributes para especificar el nuevo nombre o ubicación. De manera predeterminada este cambio se realiza en el Servidor de Administración del Dominio (DAS). Sin embargo, también se puede especificar si se desea hacer el cambio en una instancia o cluster.

  3. El siguiente ejemplo establece el nombre del archivo de bitácora de Cluster1 a cluster1.log. Cluster1 tiene dos instancias de servidor: ClusterServer1 y ClusterServer2.

    cluster1.log
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    asadmin> list-log-attributes Cluster1
    com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
    com.sun.enterprise.server.logging.GFFileHandler.file
    <${com.sun.aas.instanceRoot}/logs/server.log>
    com.sun.enterprise.server.logging.GFFileHandler.flushFrequency  1
    .
    .
    .
    log4j.logger.org.hibernate.validator.util.Version <warn>
    Command list-log-attributes executed successfully.
    asadmin> set-log-attributes --target Cluster1
    com.sun.enterprise.server.logging.GFFileHandler.file=
    ${com.sun.aas.instanceRoot}/logs/cluster1.log
    com.sun.enterprise.server.logging.GFFileHandler.file
    logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
    These logging attributes are set for Cluster1.
    ClusterServer1 :
    com.sun.enterprise.server.logging.GFFileHandler.file
    logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
    These logging attributes are set for Cluster1.
    
    ClusterServer2 :
    com.sun.enterprise.server.logging.GFFileHandler.file
    logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
    These logging attributes are set for Cluster1.
    
    Command set-log-attributes executed successfully.
    
  4. Posteriormente, debemos listar los niveles de bitácora. GlassFish permite listar todos los loggers y sus niveles registrados. Al utilizar el comando list-log-levels podemos listar los módulos y sus niveles de bitácora actual. El siguiente ejemplo muestra una lista parcial de los loggers y sus niveles:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    asadmin> list-log-levels
    javax.enterprise.system.container.cmp <INFO>
    javax.enterprise.system.tools.admin <INFO>
    java.util.logging.ConsoleHandler <FINEST>
    javax.enterprise.system.container.web <INFO>
    javax.enterprise.system.util <INFO>
    javax.enterprise.resource.webcontainer.jsf.timing <INFO>
    javax <INFO>
    javax.enterprise.resource.corba <INFO>
    ...
    Command list-log-levels executed successfully.
    

    Es posible especificar como parámetro si se desea un servidor o instancia.

  5. Finalmente debemos configurar el nivel de bitácora global. El nivel de bitácora global especifica qué eventos son guardados en las bitácoras. El nivel predeterminado es INFO (el cual incluye SEVERE y WARNING). Use el comando set-log-levels para especificar el nivel del logger java.util.logging.ConsoleHandler, esto cambiará el nivel global. El siguiente ejemplo configura el nivel en INFO:

    1
    2
    3
    4
    5
    asadmin> set-log-levels java.util.logging.ConsoleHandler=INFO
    java.util.logging.ConsoleHandler package set with log level INFO.
    These logging levels are set for server.
    
    Command set-log-levels executed successfully.
    



Haz un comentario

Estado de los servicios - Términos de Uso