Hoy ha surgido la necesidad de monitorear los cambios en ciertos archivos en el servidor, existen muchas maneras diferentes, por ejemplo, , pero como recientemente comencé a usar , decidí monitorear archivos con Elastic, uno de sus .
No describiré la instalación de Elastic Stack y Auditbeat, todo está en los manuales, solo que, después de la instalación, editen el archivo auditbeat.yml, en el módulo file_integrity agreguen la ruta al archivo a monitorear.
Después de la configuración y el inicio, aparecerá un índice en Kibana auditbeat-*

A continuación, creamos la monitorización, especificamos el nombre de la monitorización, el intervalo de chequeo, así como el tipo de monitorización y el archivo índice:

en Definir consulta de extracción escribimos lo siguiente:
Definir consulta de extracción
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"file.path": {
"query": ""
}
}
}
],
"filter": [
{
"term": {
"event.action": {
"value": "attributes_modified" #cambios de atributos, puede ser created o deleted
}
}
},
{
"range": {
"@timestamp": {
"from": "now-1m" #período durante el cual monitoreamos el cambio
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}Después presionamos el botón Run y verificamos la consulta, debería aparecer algo como esto:

Intentamos cambiar el archivo objetivo y ejecutar la consulta nuevamente:

como pueden ver hits cambió a 2, hacemos clic en update y creamos un disparador para el cambio de valor:

Dejamos todo como en la imagen.
A continuación, se pueden configurar notificaciones en Slack o en otro mensajero.
Fuente: habr.com
