Auditoría administrativa en Exchange

En Exchange 2010 / 2013 / 2016 tenemos 2 tipos de auditoría; una asociada a lo que sucede con los buzones y otra enfocada en las acciones que realiza un usuario administrativo sobre algún aspecto del sistema.

En esta entrada nos vamos a enfocar en el segundo caso.

La auditoria administrativa viene habilitada de forma predeterminada en Exchange 2010 / 2013 / 2016.

Cada acción realizada por un administrador independientemente de la interfaz que use, termina siendo un comando (cmdlet) del shell de Exchange (EMS).

En el log de auditoría encontramos información sobre los cambios en el sistema, qué objeto fue modificado, qué cmdlets se usaron, fecha y hora de la modificación y quién realizo la acción.


Cómo ver la configuración de auditoría administrativa?

Para ver la configuración actual de la auditoría ejecutamos el siguiente comando:

Get-AdminAuditLogConfig

Auditoría en Exchange

Ahora vamos a ejecutar el mismo comando pero seleccionando las propiedades de mayor interés:

Get-AdminAuditLogConfig | FL *log*

Auditoría en Exchange

En la salida podemos ver lo siguiente:

  • La auditoría se encuentra habilitada
  • Los comandos de test no son registrados (por ejemplo test-servicehealth). Tener en cuenta que los comandos de Get o Search tampoco se registran
  • Se registran todos los comandos y todos los parámetros (salvo las excepciones mencionadas)
  • Se guarda el log por 90 días (esto lo hace en un buzón de sistema)

Información básica que vamos a encontrar dentro de los logs:

  • Quién hizo un cambio
  • Qué objeto fue modificado
  • La fecha del cambio
  • Que comando y parámetros fueron utilizados

Cómo buscamos dentro de los logs de auditoría de Exchange?

Para buscar dentro de los logs de auditoría podemos utilizar el ECP en Exchange 2010, el EAC en Exchange 2013 / 2016 o el shell:

Auditoría en el ECP de Exchange 2010:

Roles & Auditing –> Auditing –> Export the administrator audit log..

Auditoría en Exchange 2010

Auditoría en el EAC de Exchange 2013 / 2016:

Administración de cumplimiento –> Auditoría –> …..registro de auditoría del administrador..

Auditoría en Exchange 2013

Auditoría en el EMS de Exchange 2010 / 2013 / 2016

Volviendo al shell de Exchange, tenemos 2 comandos para realizar búsquedas dentro de los logs de auditoría:

  • New-AdminAuditLogSearch
  • Search-AdminAuditLog

Ambos utilizarían parámetros similares, la diferencia importante para un administrador es que el comando New-AdminAuditLogSearch lleva un parámetro adicional indicando una dirección de correo a donde enviar el reporte. Como esto demora un poco más, a lo largo del artículo vamos a usar el comando Search-AdminAuditLog ya que nos permite ver la salida de forma interactiva dentro del shell.

Veamos un ejemplo utilizando el comando Search-AdminAuditLog, en este caso quisiera ver todas las acciones que afectaron buzones en las últimas 24 horas y por un tema de que entre en la pantalla selecciono únicamente el primer evento (es decir que para realmente ver todas las acciones no tendría que incluir el  “-first 1” del “select” del final):

$fechaActual = Get-Date

$fecha = $fechaActual.AddDays(-1)

Search-AdminAuditLog –StartDate $fecha | where{$_.cmdletName –like “*-mailbox”} | Select –First 1

Auditoría en Exchange 2010 / 2013 /2016

En la primer variable ($fechaActual) guardo la fecha con el comando Get-Date, en el segundo le resto 1 día exacto (me gusta utilizar el get-date para estas cosas porque funciona independientemente del formato de fecha que utilice el servidor).

Por último, utilizamos el comando Search-AdminAuditLog filtrando con Where para que se devuelvan únicamente los resultados donde se haya usado un cmdlet que termine en “mailbox”. Finalmente se especifica que seleccione la primer entrada.

Sin lugar a dudas trae propiedades que son interesantes pero otras que no lo son tanto, por lo que voy a ejecutar nuevamente la consulta acotando a los datos que me interesan (incluyéndolos dentro del Select):

  • Qué objeto fue modificado (ObjectModified)
  • Comando y parámetros utilizados (CmdletName, CmdletParameters)
  • Fecha exacta (RunDate)
  • Quién hizo el cambio (Caller)
  • Si fue exitoso el cambio (Succeeded)

Search-AdminAuditLog –StartDate $fecha | where{$_.cmdletName –like “*-mailbox”} | Select  RunDate, ObjectModified, CmdletName, CmdletParameters, Caller, Succeeded –First 1

Auditoría en Exchange

Básicamente en este caso estamos viendo que el admin2 modificó la cuota del buzón de usuario1.


Con esto llegamos al final del artículo, por más información teórica y práctica sobre operaciones en Exchange, ver el siguiente recurso para miembros VIP del sitio (videos de entrenamiento):


About Daniel Núñez Banega

Consultor IT especializado en Microsoft Exchange, Active Directory y Microsoft 365.
Principales Certificaciones: Microsoft Certified Trainer | Microsoft Certified Solutions Expert | Microsoft Certified Systems Engineer | Microsoft Certified Systems Administrator | Microsoft Certified IT Professional | Microsoft Certified Technology Specialist | Microsoft 365 Certified: Enterprise Administrator Expert | Microsoft 365 Certified: Security Administrator Associate | Microsoft Certified: Cybersecurity Architect Expert | Comptia Pentest+ | EC-Council Certified Ethical Hacker Master

Reader Interactions

Comments

  1. ivan surichaqui flores says

    quisiera hacer auditoria a un determinado usuario de microsoft Exchange cuando, fecha y hora de ingreso al correo y si accedió a su buzon o no

  2. Raul Porras says

    Deseo saber como obtener un reporte de usuarios donde pueda evidenciar a que cuentas (gmail, hotmail, etc.) se envió un correo electrónico, fecha y hora, ya que sospecho de una fuga de información.

    • Daniel Núñez Banega says

      Hola Raul, si bien hay características específicas para prevenir fugas. Para obtener los reportes de envío podes utilizar el tracking log, desde el shell Get-MessageTrackingLog.

  3. Pedro says

    No conozco mucho de exchange y por error se crearon buzones con un dominio que no deberia estar asociado al usuario, se debio crear como contacto.

    La consulta es como puedo saber que buzones se crearon en exchange desde una fecha determinada.

    Y lo segundo como puedo revertir la información llegada a ese buzon creado hacia el correcto

    • Daniel Núñez Banega says

      Hola Pedro, una opción para conocer la fecha de creación de un buzón es con el cmdlet Get-Mailbox, este devuelve la propiedad «WhenCreated». Respecto a la 2da consulta necesitaría que detalles un poco más a qué te referis con revertir la información.

  4. Pablo says

    Hola Daniel,
    Quiero limpiar el AdminAuditLog, ejecuto el comando desde la shell
    Set-AdminAuditLogConfig -AdminAuditLogAgeLimit 00.00:00:00
    Y pasados 60 minutos sigue igual,
    Me puedes echar una mano por favor?
    Muchas gracias

    • Daniel Núñez Banega says

      Hola Pablo, se me ocurre que estés teniendo algún problema a otro nivel, quizás con buzones de arbitraje (el comando parece estar ok).
      Una buena opción sería revisar el Event viewer y buscar por entradas relacionadas, si no hay ninguna se podría ver de incrementar el logging y a partir de ahí investigar la situación.

      saludos

  5. Miguel Angel Manuel says

    Buenas tardes Daniel, leo que te has centrado sobre la auditoria de usuarios administrativos sobre el sistema pero estoy haciendo pruebas y buscando información de como auditar los cambios que se producen en un calendario. Existe algún modo? muchas gracias.

    • Daniel Núñez Banega says

      Hola Miguel, para esto tendrías que habilitar la auditoría a nivel de buzón. En el primer comentario del artículo están los enlaces.

  6. VANESSA ELIZABETH RODRIGUEZ EDGAR says

    Me podrían ayuda con un ejemplo de ejecución del comando New-AdminAuditLogSearch

  7. Carlos Torres says

    Hola! Daniel Nuñez, necesito de tu ayuda quisiera saber como hacer para saber cuando(fecha) un correo fue eliminado o movido a la carpeta Elementos Eliminados, de Antemano Muchísimas gracias.

  8. Miguel says

    Hola,
    Cómo puedo auditar inicios de sesión en ecp?
    Se que deben estar en el dc más cercano, pero existirá forma de auditar localmente en exchange?
    Saludos

  9. Miguel says

    Hola,
    Cómo puedo auditar inicios de sesión en ecp?
    Se que deben estar en el dc más cercano, pero existirá forma de auditar localmente en exchange?
    Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *