config/recipes/beats/auditbeat_hosts.yaml (118 lines of code) (raw):

apiVersion: beat.k8s.elastic.co/v1beta1 kind: Beat metadata: name: auditbeat spec: type: auditbeat version: 8.17.0 elasticsearchRef: name: elasticsearch kibanaRef: name: kibana config: auditbeat.modules: - module: file_integrity paths: - /hostfs/bin - /hostfs/usr/bin - /hostfs/sbin - /hostfs/usr/sbin - /hostfs/etc exclude_files: - '(?i)\.sw[nop]$' - '~$' - '/\.git($|/)' scan_at_start: true scan_rate_per_sec: 50 MiB max_file_size: 100 MiB hash_types: [sha1] recursive: true - module: auditd audit_rules: | # Executions -a always,exit -F arch=b64 -S execve,execveat -k exec # Unauthorized access attempts (amd64 only) -a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access -a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access processors: - add_cloud_metadata: {} - add_host_metadata: {} - add_process_metadata: match_pids: ['process.pid'] daemonSet: podTemplate: spec: hostPID: true # Required by auditd module dnsPolicy: ClusterFirstWithHostNet hostNetwork: true # Allows to provide richer host metadata automountServiceAccountToken: true # some older Beat versions are depending on this settings presence in k8s context securityContext: runAsUser: 0 volumes: - name: bin hostPath: path: /bin - name: usrbin hostPath: path: /usr/bin - name: sbin hostPath: path: /sbin - name: usrsbin hostPath: path: /usr/sbin - name: etc hostPath: path: /etc - name: run-containerd hostPath: path: /run/containerd type: DirectoryOrCreate # Uncomment the below when running on GKE. See https://github.com/elastic/beats/issues/8523 for more context. #- name: run # hostPath: # path: /run #initContainers: #- name: cos-init # image: docker.elastic.co/beats/auditbeat:8.17.0 # volumeMounts: # - name: run # mountPath: /run # command: ['sh', '-c', 'export SYSTEMD_IGNORE_CHROOT=1 && systemctl stop systemd-journald-audit.socket && systemctl mask systemd-journald-audit.socket && systemctl restart systemd-journald'] containers: - name: auditbeat securityContext: capabilities: add: # Capabilities needed for auditd module - 'AUDIT_READ' - 'AUDIT_WRITE' - 'AUDIT_CONTROL' volumeMounts: - name: bin mountPath: /hostfs/bin readOnly: true - name: sbin mountPath: /hostfs/sbin readOnly: true - name: usrbin mountPath: /hostfs/usr/bin readOnly: true - name: usrsbin mountPath: /hostfs/usr/sbin readOnly: true - name: etc mountPath: /hostfs/etc readOnly: true # Directory with root filesystems of containers executed with containerd, this can be # different with other runtimes. This volume is needed to monitor the file integrity # of files in containers. - name: run-containerd mountPath: /run/containerd readOnly: true --- apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: elasticsearch spec: version: 8.17.0 nodeSets: - name: default count: 3 config: node.store.allow_mmap: false --- apiVersion: kibana.k8s.elastic.co/v1 kind: Kibana metadata: name: kibana spec: version: 8.17.0 count: 1 elasticsearchRef: name: elasticsearch ...