Capítulo 10. Auditoria
Importante
Importante
Procedimento 10.1. Ativação do recurso de auditoria de segurança
Abra o arquivo de configuração log4j
Navegue ao$JBOSS_HOME/server/$PROFILE/conf/Abra o arquivojboss-log4j.xmlusando um editor de texto.Descomente a categoria de auditoria de segurança
Por padrão, a definição da categoria do Provedor de Auditoria de Segurança é comentada no arquivojboss-log4j.xml. Descomente a definição de categoria apresentada no Exemplo 10.1, “Categoria do Provedor de Auditoria de Segurança log4j”.Exemplo 10.1. Categoria do Provedor de Auditoria de Segurança log4j
<?xml version="1.0" encoding="UTF-8"?> <!-- Limit the verbose MC4J EMS (lib used by admin-console) categories --> <category name="org.mc4j.ems"> <priority value="WARN"/> </category> <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max] <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"> <priority value="TRACE"/> </category> --> <!-- Category specifically for Security Audit Provider --> <category name="org.jboss.security.audit.providers.LogAuditProvider" additivity="false"> <priority value="TRACE"/> <appender-ref ref="AUDIT"/> </category> <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose --> <category name="org.jboss.serial"> <priority value="INFO"/> </category>
Descomente o anexo de auditoria
Por padrão, a definição AUDITORIA é comentada no arquivojboss-log4j.xml. Descomente a definição do anexo apresentada no Exemplo 10.1, “Categoria do Provedor de Auditoria de Segurança log4j”.Exemplo 10.2. Categoria do Provedor de Auditoria de Segurança log4j
... <!-- Emit events as JMX notifications <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="Threshold" value="WARN"/> <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m"/> </layout> </appender> --> <!-- Security AUDIT Appender --> <appender name="AUDIT" class="org.jboss.logging.appender.DailyRollingFileAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.log.dir}/audit.log"/> <param name="Append" value="true"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] (%t:%x) %m%n"/> </layout> </appender> <!-- ================ --> <!-- Limit categories --> <!-- ================ --> <!-- Limit the org.apache category to INFO as its DEBUG is verbose --> <category name="org.apache"> <priority value="INFO"/> </category> ...Salve e reinicie o servidor
Você ativou o serviço de auditoria para sua implantação, conforme configurado no arquivojboss-log4j.xml.Reinicie o servidor para garantir que a nova política de segurança seja aplicada.Verifique se a auditoria de segurança está operando corretamente
Uma vez que o serviço de auditoria seja configurado e implantado, as entradas de log de auditoria verificarão se o serviço de auditoria e a invocação EJB foram procedidos com sucesso.O arquivoaudit.logestá localizado no diretóriojboss-as/server/$PROFILE/log/.Uma invocação EJB processada com êxito parece-se com o seguinte resultadoaudit.log.Exemplo 10.3. Entrada de log da Invocação EJB com êxito
2008-12-05 16:08:26,719 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (http-127.0.0.1-8080-2:) [Success]policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518; Resource:=[org.jboss.security.authorization.resources.EJBResource:contextMap={policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518}:method=public abstract org.jboss.test.security.interfaces.RunAsServiceRemote org.jboss.test.security.interfaces.RunAsServiceRemoteHome.create() throws java.rmi.RemoteException,javax.ejb.CreateException:ejbMethodInterface=Home:ejbName=RunAs:ejbPrincipal=jduke:MethodRoles=Roles(identitySubstitutionCaller,):securityRoleReferences=null:callerSubject=Subject: Principal: [roles=[identitySubstitutionCaller, extraRunAsRole],principal=runAsUser] Principal: Roles(members:extraRunAsRole,identitySubstitutionCaller) :callerRunAs=[roles=[identitySubstitutionCaller, extraRunAsRole],principal=runAsUser]:callerRunAs=[roles=[identitySubstitutionCaller, extraRunAsRole],principal=runAsUser]:ejbRestrictionEnforcement=false:ejbVersion=null];Source=org.jboss.security.plugins.javaee.EJBAuthorizationHelper;Exception:=;Uma invocação EJB processada sem êxito parece-se ao seguinte resultadoaudit.log.Exemplo 10.4. Entrada de log da Invocação EJB processada sem êxito
[Error]policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518;Resource:=[org.jboss.security.authorization.resources.EJBResource:contextMap={policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518}:method=public java.security.Principal org.jboss.test.security.ejb3.SimpleStatelessSessionBean.invokeUnavailableMethod():ejbMethodInterface=Remote:ejbName=SimpleStatelessSessionBean:ejbPrincipal=UserA:MethodRoles=Roles(<NOBODY>,):securityRoleReferences=null:callerSubject=Subject: Principal: UserA Principal: Roles(members:RegularUser,Administrator) :callerRunAs=null:callerRunAs=null:ejbRestrictionEnforcement=false:ejbVersion=null];Source=org.jboss.security.plugins.javaee.EJBAuthorizationHelper;Exception:=Authorization Failed: ;
Procedimento 10.2. Ativação da auditoria de segurança para recipientes da Web
Ative a auditoria da segurança EJB
Você deve ativar a segurança descrita no Procedimento 10.1, “Ativação do recurso de auditoria de segurança”.Ative a auditoria no realm do servidor
A auditoria do recipiente deve ser primeiramente ativada no realm do servidor do arquivoserver.xml.O arquivoserver.xmlestá localizado no diretóriojboss-as/server/$PROFILE/deploy/jbossweb.sar/.O elemento<Realm>deve possuir o atributoenableAudit="configurado, conforme o Exemplo 10.5, “server.xml audit activation”.true"Exemplo 10.5. server.xml audit activation
<Realm className="org.jboss.web.tomcat.security.JBossWebRealm" certificatePrincipal="org.jboss.security.auth.certs.SubjectDNMapping" allRolesMode="authOnly" enableAudit="
true"/>Especifique a propriedade do sistema dos níveis de auditoria
Os níveis de auditoria para aplicativos da Web devem ser especificados usando a propriedade do sistema org.jboss.security.web.audit no scriptrun.bat(Microsoft Windows) ourun.sh(Linux).Alternativamente, você pode especificar a propriedade de sistema no arquivojboss-as/server/$PROFILE/deploy/properties-service.xml.Linux
Adicione a propriedade de sistema no arquivojboss-as/bin/run.sh## Specify the Security Audit options #System Property setting to configure the web audit: #* off = turn it off #* headers = audit the headers #* cookies = audit the cookie #* parameters = audit the parameters #* attributes = audit the attributes #* headers,cookies,parameters = audit the headers,cookie and # parameters #* headers,cookies = audit the headers and cookies JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.security.web.audit=headers,cookies,parameter"
Microsoft Windows
Adicione a propriedade de sistema ao arquivojboss-as/bin/run.batrem Specify the Security Audit options rem System Property setting to configure the web audit rem * off = turn it off rem * headers = audit the headers rem * cookies = audit the cookie rem * parameters = audit the parameters rem * attributes = audit the attributes rem * headers,cookies,parameters = audit the headers,cookie and rem parameters rem * headers,cookies = audit the headers and cookies set JAVA_OPTS=%JAVA_OPTS% " -Dorg.jboss.security.web.audit=headers,cookies,parameter"
properties-service.xml
Atualize o MBean de classeSystemPropertiesServiceno arquivojboss-as/server/$PROFILE/deploy/properties-service.xmle declare a propriedade java como um <attribute>. Você pode descomentar o bloqueio do sistema de operação relevante da amostra do código abaixo.... <mbean code="org.jboss.varia.property.SystemPropertiesService" name="jboss:type=Service,name=SystemProperties"> <!-- Linux Attribute Declaration --> <!-- <attribute name="Properties">JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.security.web.audit=headers,cookies,parameter" </attribute> --> <!-- Windows Attribute Declaration --> <!-- <attribute name="Properties">JAVA_OPTS=%JAVA_OPTS% " -Dorg.jboss.security.web.audit=headers,cookies,parameter" </attribute> --> </mbean> ...
Verifique se a auditoria de segurança está operando corretamente
Uma propriedade do sistema é especificada no arquivo, as entradas de log da auditoria verificarão se a invocação da Web foi procedida com êxito.O arquivoaudit.logestá localizado no diretóriojboss-as/server/$PROFILE/log/.Uma invocação da Web procedida com êxito parece-se com o seguinte resultadoaudit.log.Exemplo 10.6. Entrada do log da Invocação da Web processada com êxito
2008-12-05 16:08:38,997 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (http-127.0.0.1-8080-17:) [Success]policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518;Resource:=[org.jboss.security.authorization.resources.WebResource:contextMap={policyRegistration=org.jboss.security.plugins.JBossPolicyRegistration@76ed4518,securityConstraints=[Lorg.apache.catalina.deploy.SecurityConstraint;@6feeae6, resourcePermissionCheck=true},canonicalRequestURI=/restricted/get-only/x,request=[/web-constraints:cookies=null:headers=user-agent=Jakarta Commons-HttpClient/3.0,authorization=host=localhost:8080,][parameters=],CodeSource=null];securityConstraints=SecurityConstraint[RestrictedAccess - Get Only];Source=org.jboss.security.plugins.javaee.WebAuthorizationHelper;resourcePermissionCheck=true;Exception:=;Uma invocação EJB processada sem êxito parece-se ao seguinte resultadoaudit.log.Exemplo 10.7. Entrada do log da Invocação da Web processada sem êxito
2008-12-05 16:08:41,561 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (http-127.0.0.1-8080-4:) [Failure]principal=anil;Source=org.jboss.web.tomcat.security.JBossWebRealm;request=[/jaspi-web-basic:cookies=null:headers=user-agent=Jakarta Commons-HttpClient/3.0,authorization=host=localhost:8080,][parameters=][attributes=];2008-12-05 16:07:30,129 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (WorkerThread#1[127.0.0.1:55055]:)