{"id":11067,"date":"2021-12-09T22:42:02","date_gmt":"2021-12-09T19:42:02","guid":{"rendered":"https:\/\/kifarunix.com\/?p=11067"},"modified":"2024-03-18T07:50:29","modified_gmt":"2024-03-18T04:50:29","slug":"detect-changes-to-critical-files-in-linux-using-auditbeat-and-elk","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/detect-changes-to-critical-files-in-linux-using-auditbeat-and-elk\/","title":{"rendered":"Detect Changes to Critical Files in Linux using Auditbeat and ELK"},"content":{"rendered":"\n<p>In this tutorial, you will learn how to detect changes to critical files in Linux using Auditbeat and ELK. Auditbeat is one of the elastic beats that according to <a href=\"https:\/\/www.elastic.co\/beats\/auditbeat\" target=\"_blank\" rel=\"noreferrer noopener\">Elastic page<\/a>, <em>collects Linux audit framework data and monitor the integrity of the files. It ships these events in real time to the rest of the Elastic Stack for further analysis<\/em>. It enables you to find out <em>who was the actor?<\/em> <em>What action did they perform and when?<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Detecting Changes to Critical Files in Linux using Auditbeat and ELK<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install and Setup ELK Stack<\/h3>\n\n\n\n<p>To begin with, you need to have a running ELK stack. We use Debian 11 in this setup. Hence, you can follow the link below setup ELK;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-elk-stack-on-debian-11\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install ELK Stack on Debian 11<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Auditbeat on the Host<\/h3>\n\n\n\n<p>In this tutorial, we will use two hosts, Ubuntu and Rocky Linux vms as our remote hosts to monitor for any changes in the critical files.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Installing Auditbeat on Ubuntu\/Debian based sytems<\/h4>\n\n\n\n<p>Run the commands below to install Auditbeat on Ubuntu\/Debian based systems;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install gnupg2 apt-transport-https -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -qO - https:\/\/artifacts.elastic.co\/GPG-KEY-elasticsearch | gpg --dearmor &gt; \/etc\/apt\/trusted.gpg.d\/elastic.gpg<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"deb https:\/\/artifacts.elastic.co\/packages\/7.x\/apt stable main\" &gt; \/etc\/apt\/sources.list.d\/elastic-7.x.list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install auditbeat -y<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Installing Auditbeat on RHEL based sytems<\/h5>\n\n\n\n<p>Run the commands below to install Auditbeat on RHEL based systems;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rpm --import https:\/\/packages.elastic.co\/GPG-KEY-elasticsearch<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\ncat > \/etc\/yum.repos.d\/elastic.repo << EOL\n[elastic-7.x]\nname=Elastic repository for 7.x packages\nbaseurl=https:\/\/artifacts.elastic.co\/packages\/7.x\/yum\ngpgcheck=1\ngpgkey=https:\/\/artifacts.elastic.co\/GPG-KEY-elasticsearch\nenabled=0\nautorefresh=1\ntype=rpm-md\nEOL\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>yum --enablerepo=elastic-7.x install auditbeat -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Auditbeat Elasticsearch connection<\/h3>\n\n\n\n<p>Once the installation is done, open the Auditbeat configuration file for editing;<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Navigate to Elasticsearch Output configuration section;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>...\n...\n# ---------------------------- Elasticsearch Output ----------------------------\noutput.elasticsearch:\n  # Array of hosts to connect to.\n  hosts: [\"localhost:9200\"]\n\n  # Protocol - either `http` (default) or `https`.\n  #protocol: \"https\"\n\n  # Authentication credentials - either API key or username\/password.\n  #api_key: \"id:api_key\"\n  #username: \"elastic\"\n  #password: \"changeme\"\n...\n<\/code><\/pre>\n\n\n\n<p>Set the output configurations depending on how your Elasticsearch is configured. In my setup, i just need to update the Elasticsearch IP address and port by replacing <strong><code>localhost:9200<\/code><\/strong> with my Elasticsearch connection details; <strong><code>192.168.58.22:9200<\/code><\/strong>.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>...\n...\n# ---------------------------- Elasticsearch Output ----------------------------\noutput.elasticsearch:\n  # Array of hosts to connect to.\n  <strong>hosts: [\"192.168.58.22:9200\"]<\/strong>\n\n  # Protocol - either `http` (default) or `https`.\n  #protocol: \"https\"\n\n  # Authentication credentials - either API key or username\/password.\n  #api_key: \"id:api_key\"\n  #username: \"elastic\"\n  #password: \"changeme\"\n...\n<\/code><\/pre>\n\n\n\n<p>Save the changes and exit the configuration file.<\/p>\n\n\n\n<p>Ensure the Elasticsearch port is opened and you can connect to it;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -nvz 192.168.58.22 9200<\/code><\/pre>\n\n\n\n<p>Next, test the Auditbeat connection to Elasticsearch (<em>Ensure auditbeat service is not running before you ran this command<\/em>);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditbeat test output<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>elasticsearch: http:\/\/192.168.58.22:9200...\n  parse url... OK\n  connection...\n    parse host... OK\n    dns lookup... OK\n    addresses: 192.168.58.22\n    dial up... OK\n  TLS... WARN secure connection disabled\n  talk to server... OK\n  version: 7.16.0\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Auditbeat to Collect Audit Data<\/h3>\n\n\n\n<p>Next, you need to configure Auditbeat to collect system audit data that needs to be shipped to Elasticsearch.<\/p>\n\n\n\n<p>In the default Auditbeat configuration file, <code><strong>\/etc\/auditbeat\/auditbeat.yml<\/strong><\/code>, the default configurations for Auditbeat is as shown below;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code># =========================== Modules configuration ============================\nauditbeat.modules:\n\n- module: auditd\n  # Load audit rules from separate files. Same format as audit.rules(7).\n  audit_rule_files: [ '${path.config}\/audit.rules.d\/*.conf' ]\n  audit_rules: |\n    ## Define audit rules here.\n    ## Create file watches (-w) or syscall audits (-a or -A). Uncomment these\n    ## examples or add your own rules.\n\n    ## If you are on a 64 bit platform, everything should be running\n    ## in 64 bit mode. This rule will detect any use of the 32 bit syscalls\n    ## because this might be a sign of someone exploiting a hole in the 32\n    ## bit API.\n    #-a always,exit -F arch=b32 -S all -F key=32bit-abi\n\n    ## Executions.\n    #-a always,exit -F arch=b64 -S execve,execveat -k exec\n\n    ## External access (warning: these can be expensive to audit).\n    #-a always,exit -F arch=b64 -S accept,bind,connect -F key=external-access\n\n    ## Identity changes.\n    #-w \/etc\/group -p wa -k identity\n    #-w \/etc\/passwd -p wa -k identity\n    #-w \/etc\/gshadow -p wa -k identity\n\n    ## Unauthorized access attempts.\n    #-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access\n    #-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access\n\n- module: file_integrity\n  paths:\n  - \/bin\n  - \/usr\/bin\n  - \/sbin\n  - \/usr\/sbin\n  - \/etc\n\n- module: system\n  datasets:\n    - package # Installed, updated, and removed packages\n\n  period: 2m # The frequency at which the datasets check for changes\n\n- module: system\n  datasets:\n    - host    # General host information, e.g. uptime, IPs\n    - login   # User logins, logouts, and system boots.\n    - process # Started and stopped processes\n    - socket  # Opened and closed sockets\n    - user    # User information\n\n  # How often datasets send state updates with the\n  # current state of the system (e.g. all currently\n  # running processes, all open sockets).\n  state.period: 12h\n\n  # Enabled by default. Auditbeat will read password fields in\n  # \/etc\/passwd and \/etc\/shadow and store a hash locally to\n  # detect any changes.\n  user.detect_password_changes: true\n\n  # File patterns of the login record files.\n  login.wtmp_file_pattern: \/var\/log\/wtmp*\n  login.btmp_file_pattern: \/var\/log\/btmp*\n<\/code><\/pre>\n\n\n\n<p>Auditbeat supports different modules that simplifies the collection, parsing, and visualization of various audit data.<\/p>\n\n\n\n<p>These modules include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.elastic.co\/guide\/en\/beats\/auditbeat\/current\/auditbeat-module-auditd.html\" target=\"_blank\" rel=\"noreferrer noopener\">Auditd<\/a>: defined by <code>- module: auditd<\/code>. <em>The module receives audit events from the Linux Audit Framework that is a part of the Linux kernel<\/em>.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.elastic.co\/guide\/en\/beats\/auditbeat\/current\/auditbeat-module-file_integrity.html\" target=\"_blank\" rel=\"noreferrer noopener\">File Integrity<\/a>: <em>defined by <strong><code>- module: file_integrity<\/code><\/strong> <\/em>in the Auditbeat config file. <em>This module sends events when a file is changed (created, updated, or deleted) on disk. The events contain file metadata and hashes<\/em>. By default, it monitors the following directories;\n<ul class=\"wp-block-list\">\n<li>\/bin<\/li>\n\n\n\n<li>\/usr\/bin<\/li>\n\n\n\n<li>\/sbin<\/li>\n\n\n\n<li>\/usr\/sbin<\/li>\n\n\n\n<li>\/etc<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/www.elastic.co\/guide\/en\/beats\/auditbeat\/current\/auditbeat-module-system.html\" target=\"_blank\" rel=\"noreferrer noopener\">System<\/a>: defined by <strong><code>- module: system<\/code><\/strong> in the config file. This <em>module collects various security related information about a system<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>In this setup, we will go with the default configurations.<\/p>\n\n\n\n<p>If you want to monitor another file\/directory, for integrity changes, add it under the file_integrity module.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Validate Auditbeat Configuration<\/h4>\n\n\n\n<p>Whenever you make changes to Auditbeat configuration, ensure that you validate the config.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditbeat test config<\/code><\/pre>\n\n\n\n<p>If the output is <strong><code>Config OK<\/code><\/strong>, then all is fine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Load Auditbeat Index Template and Visualization Dashboards to Elasticsearch<\/h3>\n\n\n\n<p>Run the command below to load Auditbeat index template:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=&#91;\"192.168.58.22:9200\"]' -E setup.kibana.host=192.168.58.22:5601<\/code><\/pre>\n\n\n\n<p>Output;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Index setup finished.<\/code><\/pre>\n\n\n\n<p>Run this command to load visualization dashboards to Elasticsearch;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditbeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=&#91;'192.168.58.22:9200'] -E setup.kibana.host=192.168.58.22:5601<\/code><\/pre>\n\n\n\n<p>You can run these command only once on a single system. No need to run on other hosts running audibeat.<\/p>\n\n\n\n<p>Ensure both Elasticsearch and Kibana are reachable from the host.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Auditbeat Logging<\/h3>\n\n\n\n<p>Run the command below to update Auditbeat logging;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\ncat >> \/etc\/auditbeat\/auditbeat.yml << EOL\nlogging.level: info\nlogging.to_files: true\nlogging.files:\n  path: \/var\/log\/auditbeat\n  name: auditbeat\n  keepfiles: 7\n  permissions: 0644\nEOL\n<\/code><\/pre>\n\n\n\n<p>Update the Limit on the size of the process executable that will be hashed. Default is \"100 MiB\". With the default value, you may see a warning like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>failed to hash executable \/usr\/share\/auditbeat\/bin\/auditbeat for PID 5888: failed to hash file \/usr\/share\/auditbeat\/bin\/auditbeat: hasher: file size 111924496 exceeds max file size<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i '\/ state.period:\/a\\  process.hash.scan_rate_per_sec: 50 MiB\\n  process.hash.max_file_size: 250 MiB\\n  process.hash.hash_types: &#91;sha1]' \/etc\/auditbeat\/auditbeat.yml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Running Auditbeat<\/h3>\n\n\n\n<p>You can now start and enable Auditbeat service;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now auditbeat<\/code><\/pre>\n\n\n\n<p>Checking the status;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status auditbeat<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\u25cf auditbeat.service - Audit the activities of users and processes on your system.\n     Loaded: loaded (\/lib\/systemd\/system\/auditbeat.service; enabled; vendor preset: enabled)\n     Active: active (running) since Thu 2021-12-09 20:46:09 EAT; 3s ago\n       Docs: https:\/\/www.elastic.co\/beats\/auditbeat\n   Main PID: 2621 (auditbeat)\n      Tasks: 5 (limit: 1133)\n     Memory: 41.8M\n        CPU: 109ms\n     CGroup: \/system.slice\/auditbeat.service\n             \u2514\u25002621 \/usr\/share\/auditbeat\/bin\/auditbeat --environment systemd -c \/etc\/auditbeat\/auditbeat.yml --path.home \/usr\/share\/auditbeat --path.config \/etc\/auditbeat &gt;\n\nDec 09 20:46:09 debian11 systemd[1]: Started Audit the activities of users and processes on your system..\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Verify Audit Data Reception on Kibana<\/h3>\n\n\n\n<p>Go to Kibana web interface and navigate to the <strong>Menu &gt; Management &gt; Stack Management &gt; Data &gt; Index management<\/strong>.<\/p>\n\n\n\n<p>You should see an <strong><code>auditbeat-<\/code><\/strong> index created.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1909\" height=\"628\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-management.png\" alt=\"Detect Changes to Critical Files in Linux using Auditbeat and ELK\" class=\"wp-image-11088\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-management.png?v=1639077308 1909w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-management-768x253.png?v=1639077308 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-management-1536x505.png?v=1639077308 1536w\" sizes=\"(max-width: 1909px) 100vw, 1909px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Visualize Auditbeat Data in Kibana<\/h3>\n\n\n\n<p>Create Auditbeat Kibana Index pattern by navigating to <strong>Menu &gt; Management &gt; Stack Management &gt; Kibana &gt; Index Pattern &gt; Create Index Pattern<\/strong>.<\/p>\n\n\n\n<p>Define the name of the index and select the timestamp field.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1910\" height=\"575\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-pattern.png\" alt=\"\" class=\"wp-image-11089\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-pattern.png?v=1639077350 1910w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-pattern-768x231.png?v=1639077350 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/index-pattern-1536x462.png?v=1639077350 1536w\" sizes=\"(max-width: 1910px) 100vw, 1910px\" \/><\/figure>\n\n\n\n<p>Then click <strong>Create index pattern<\/strong>.<\/p>\n\n\n\n<p>If you navigate to <strong>Discover<\/strong> tab and selecting the index pattern just created, <strong>auditbeat-*<\/strong>, you will the events.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1913\" height=\"931\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-data.png\" alt=\"\" class=\"wp-image-11090\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-data.png?v=1639077397 1913w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-data-768x374.png?v=1639077397 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-data-1536x748.png?v=1639077397 1536w\" sizes=\"(max-width: 1913px) 100vw, 1913px\" \/><\/figure>\n\n\n\n<p>When you navigate to Dashboards, you should see multiple Auditbeat dashboards;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1889\" height=\"794\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard.png\" alt=\"\" class=\"wp-image-11091\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard.png?v=1639077422 1889w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard-768x323.png?v=1639077422 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard-1536x646.png?v=1639077422 1536w\" sizes=\"(max-width: 1889px) 100vw, 1889px\" \/><\/figure>\n\n\n\n<p>Take for example, File integrity dashboards;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1900\" height=\"937\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard_FIM.png\" alt=\"\" class=\"wp-image-11092\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard_FIM.png?v=1639077454 1900w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard_FIM-768x379.png?v=1639077454 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-dashboard_FIM-1536x757.png?v=1639077454 1536w\" sizes=\"(max-width: 1900px) 100vw, 1900px\" \/><\/figure>\n\n\n\n<p>In our previous tutorial, we learnt how to <a href=\"https:\/\/kifarunix.com\/find-out-who-edited-files-in-linux\/\" target=\"_blank\" rel=\"noreferrer noopener\">Find out who Edited Files in Linux<\/a> with auditd.<\/p>\n\n\n\n<p>Auditbeat auditd module can be configured the same way.<\/p>\n\n\n\n<p>Taking an example from the above guide, where SSH server configuration file is being monitored, using the Auditd rule;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditctl <strong>-w \/etc\/ssh\/sshd_config -p wax -k monitor_sshd_conf<\/strong><\/code><\/pre>\n\n\n\n<p>then you can configure Auditbeat auditd module by inserting the above rule;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i '\/audit_rules:\/a\\    -w \/etc\/ssh\/sshd_config -p wax -k monitor_sshd_conf' \/etc\/auditbeat\/auditbeat.yml<\/code><\/pre>\n\n\n\n<p>The <code>\/etc\/auditbeat\/auditbeat.yml<\/code> Auditd module config now look like;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auditbeat.modules:\n\n- module: auditd\n  # Load audit rules from separate files. Same format as audit.rules(7).\n  audit_rule_files: &#91; '${path.config}\/audit.rules.d\/*.conf' ]\n  audit_rules: |\n<strong>    -w \/etc\/ssh\/sshd_config -p wax -k monitor_sshd_conf<\/strong><\/code><\/pre>\n\n\n\n<p>Restart Auditd;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart auditd<\/code><\/pre>\n\n\n\n<p>Next,navigate to Kibana Auditd dashboards and select Auditd overview dashboard. With some filters applied, you can see who edited the SSH server configuration file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1908\" height=\"892\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-auditd-module.png\" alt=\"\" class=\"wp-image-11093\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-auditd-module.png?v=1639078588 1908w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-auditd-module-768x359.png?v=1639078588 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/12\/auditbeat-auditd-module-1536x718.png?v=1639078588 1536w\" sizes=\"(max-width: 1908px) 100vw, 1908px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Further Reading<\/h4>\n\n\n\n<p><a href=\"https:\/\/www.elastic.co\/guide\/en\/beats\/auditbeat\/current\/auditbeat-getting-started.html\" target=\"_blank\" rel=\"noreferrer noopener\">Getting Started with Auditbeat<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Other Tutorials<\/h4>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/detecting-malicious-files-with-wazuh-and-virustotal\/\" target=\"_blank\" rel=\"noreferrer noopener\">Detecting Malicious Files with Wazuh and VirusTotal<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-wazuh-agent-on-rocky-linux-8\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install Wazuh Agent on Rocky Linux 8<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-and-configure-elastic-auditbeat-on-ubuntu-18-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install and Configure Elastic Auditbeat on Ubuntu 18.04<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn how to detect changes to critical files in Linux using Auditbeat and ELK. Auditbeat is one of the elastic<\/p>\n","protected":false},"author":3,"featured_media":11101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[34,910,121,72],"tags":[4336,4339,4335,4334,4337,4338],"class_list":["post-11067","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security","category-elastic-stack","category-howtos","category-monitoring","tag-auditbeat-auditd-module","tag-auditbeat-fim","tag-configure-auditbeat-in-linux","tag-detect-changes-to-critical-files-in-linux-using-auditbeat-and-elk","tag-linux-auditbeat-elk","tag-monitor-file-integrity-changes-with-auditbeat","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/11067"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=11067"}],"version-history":[{"count":7,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/11067\/revisions"}],"predecessor-version":[{"id":21592,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/11067\/revisions\/21592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/11101"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=11067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=11067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=11067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}