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
Ahora vamos a ejecutar el mismo comando pero seleccionando las propiedades de mayor interés:
Get-AdminAuditLogConfig | FL *log*
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 el EAC de Exchange 2013 / 2016:
Administración de cumplimiento –> Auditoría –> …..registro de auditoría del administrador..
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
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
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):
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
Daniel Núñez Banega says
Ivan, lo primero sería habilitar la auditoría del buzón con la info del siguiente artículo:
https://technet.microsoft.com/es-es/library/ff461937(v=exchg.150).aspx
Posteriormente podes hacer una búsqueda en los registros de auditoría utilizando el comando search-mailboxauditlog:
https://technet.microsoft.com/es-es/library/ff522360(v=exchg.150).aspx
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.
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.
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
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.
VANESSA ELIZABETH RODRIGUEZ EDGAR says
Me podrían ayuda con un ejemplo de ejecución del comando New-AdminAuditLogSearch
Daniel Núñez Banega says
Hola Vanessa, te dejo un artículo de Microsoft donde se detallan algunos ejemplos con el cmdlet New-AdminAuditLogSearch:
https://docs.microsoft.com/es-es/powershell/module/exchange/policy-and-compliance-audit/new-adminauditlogsearch?view=exchange-ps
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.
Daniel Núñez Banega says
Hola Carlos, esto se registra en otro tipo de auditoría que tendría que estar habilitada a nivel de buzón (previo a la eliminación).
En el siguiente artículo de Microsoft se amplía detalle:
https://docs.microsoft.com/es-es/exchange/mailbox-audit-logging-exchange-2013-help
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
Daniel Núñez Banega says
Hola Miguel, en el Módulo 6 del curso básico de Exchange se trata el tema de auditoría de buzones, parte del teórico se encuentra disponible con acceso libre en la siguiente página: https://aprendiendoexchange.com/cursos/adm-m6
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