Blame SOURCES/scap-security-guide-0.1.50-add_audit_rules_immutable_PR_5609.patch

dac76a
From d5533786f8d34442754cf60234877f4f9768fdae Mon Sep 17 00:00:00 2001
dac76a
From: Vojtech Polasek <vpolasek@redhat.com>
dac76a
Date: Thu, 16 Apr 2020 11:35:14 +0200
dac76a
Subject: [PATCH 1/4] add ansible remediation
dac76a
dac76a
---
dac76a
 .../audit_rules_immutable/ansible/shared.yml  | 45 +++++++++++++++++++
dac76a
 1 file changed, 45 insertions(+)
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
new file mode 100644
dac76a
index 0000000000..20266d394f
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
@@ -0,0 +1,45 @@
dac76a
+# platform = multi_platform_all
dac76a
+# reboot = false
dac76a
+# strategy = restrict
dac76a
+# complexity = low
dac76a
+# disruption = low
dac76a
+
dac76a
+- name: add /etc/audit/audit.rules to the list of files to be searched
dac76a
+  set_fact:
dac76a
+    files_to_search:
dac76a
+      - /etc/audit/audit.rules
dac76a
+
dac76a
+- name: Search /etc/audit/rules.d  for files containing the -e option
dac76a
+  find:
dac76a
+    paths: "/etc/audit/rules.d"
dac76a
+    recurse: true
dac76a
+    contains: "-e[\\s]+.*"
dac76a
+    patterns: "*.rules"
dac76a
+  register: find_immutable
dac76a
+
dac76a
+- name: add found files to the list of files to be searched
dac76a
+  set_fact:
dac76a
+    files_to_search: "{{ files_to_search + [item.path] }}"
dac76a
+  with_items: "{{ find_immutable.files }}"
dac76a
+  when: find_immutable.matched is defined and find_immutable.matched >= 1
dac76a
+
dac76a
+- name: remove the config line from /etc/audit/audit.rules and any file in /etc/audit/rules.d directory
dac76a
+  lineinfile:
dac76a
+    path: "{{ item }}"
dac76a
+    regexp: "-e[\\s]+.*"
dac76a
+    state: absent
dac76a
+  with_items: "{{ files_to_search }}"
dac76a
+
dac76a
+- name: insert lines at the end of /etc/audit/audit.rules and /etc/audit/rules.d/immutable.rules
dac76a
+  blockinfile:
dac76a
+    path: "{{ item }}"
dac76a
+    create: True
dac76a
+    marker: ""
dac76a
+    block: |+
dac76a
+      # Set the audit.rules configuration immutable per security requirements
dac76a
+      # Reboot is required to change audit rules once this setting is applied
dac76a
+      
dac76a
+      -e 2
dac76a
+  with_items:
dac76a
+    - /etc/audit/audit.rules
dac76a
+    - /etc/audit/rules.d/immutable.rules
dac76a
dac76a
From 8f1c60ba4efd625c2df20a109710e0dbf423e44a Mon Sep 17 00:00:00 2001
dac76a
From: Vojtech Polasek <vpolasek@redhat.com>
dac76a
Date: Thu, 16 Apr 2020 11:35:37 +0200
dac76a
Subject: [PATCH 2/4] add tests
dac76a
dac76a
---
dac76a
 .../audit_rules_immutable/tests/auditctl_correct.pass.sh   | 6 ++++++
dac76a
 .../audit_rules_immutable/tests/auditctl_missing.fail.sh   | 6 ++++++
dac76a
 .../tests/auditctl_wrong_value.fail.sh                     | 7 +++++++
dac76a
 .../audit_rules_immutable/tests/augen_correct.pass.sh      | 3 +++
dac76a
 .../audit_rules_immutable/tests/augen_missing.fail.sh      | 3 +++
dac76a
 .../audit_rules_immutable/tests/augen_wrong_value.fail.sh  | 4 ++++
dac76a
 6 files changed, 29 insertions(+)
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_correct.pass.sh
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_missing.fail.sh
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_wrong_value.fail.sh
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_correct.pass.sh
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_missing.fail.sh
dac76a
 create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_wrong_value.fail.sh
dac76a
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_correct.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_correct.pass.sh
dac76a
new file mode 100644
dac76a
index 0000000000..36478840c1
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_correct.pass.sh
dac76a
@@ -0,0 +1,6 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+# use auditctl
dac76a
+sed -i "s%^ExecStartPost=.*%ExecStartPost=-/sbin/auditctl%" /usr/lib/systemd/system/auditd.service
dac76a
+
dac76a
+echo "-e 2" > /etc/audit/audit.rules
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_missing.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_missing.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..733436ecaf
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_missing.fail.sh
dac76a
@@ -0,0 +1,6 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+# use auditctl
dac76a
+sed -i "s%^ExecStartPost=.*%ExecStartPost=-/sbin/auditctl%" /usr/lib/systemd/system/auditd.service
dac76a
+
dac76a
+echo "some value" > /etc/audit/audit.rules
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_wrong_value.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..e3369107dd
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/auditctl_wrong_value.fail.sh
dac76a
@@ -0,0 +1,7 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+# use auditctl
dac76a
+sed -i "s%^ExecStartPost=.*%ExecStartPost=-/sbin/auditctl%" /usr/lib/systemd/system/auditd.service
dac76a
+
dac76a
+echo "-e 1" > /etc/audit/audit.rules
dac76a
+
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_correct.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_correct.pass.sh
dac76a
new file mode 100644
dac76a
index 0000000000..fa5b7231df
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_correct.pass.sh
dac76a
@@ -0,0 +1,3 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+echo "-e 2" > /etc/audit/rules.d/immutable.rules
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_missing.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_missing.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..0997495e4b
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_missing.fail.sh
dac76a
@@ -0,0 +1,3 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+rm -rf /etc/audit/rules.d/*
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_wrong_value.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..a8c2d53830
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/tests/augen_wrong_value.fail.sh
dac76a
@@ -0,0 +1,4 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+rm -rf /etc/audit/rules.d/*
dac76a
+echo "-e 1" > /etc/audit/rules.d/immutable.rules
dac76a
dac76a
From 2bba06ada88cb359a19288725232e79387931aee Mon Sep 17 00:00:00 2001
dac76a
From: Vojtech Polasek <vpolasek@redhat.com>
dac76a
Date: Mon, 4 May 2020 15:29:10 +0200
dac76a
Subject: [PATCH 3/4] do not use explaining comment in ansible remediation
dac76a
dac76a
---
dac76a
 .../audit_rules_immutable/ansible/shared.yml  | 58 ++++++++++---------
dac76a
 1 file changed, 32 insertions(+), 26 deletions(-)
dac76a
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
index 20266d394f..4e1b2f9569 100644
dac76a
--- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
@@ -1,45 +1,51 @@
dac76a
 # platform = multi_platform_all
dac76a
-# reboot = false
dac76a
+# reboot = true
dac76a
 # strategy = restrict
dac76a
 # complexity = low
dac76a
 # disruption = low
dac76a
 
dac76a
-- name: add /etc/audit/audit.rules to the list of files to be searched
dac76a
-  set_fact:
dac76a
-    files_to_search:
dac76a
-      - /etc/audit/audit.rules
dac76a
+- name: Check if the file /etc/audit/audit.rules contains the -e option
dac76a
+  find:
dac76a
+    paths: "/etc/audit"
dac76a
+    contains: '^\s*-e\s+.*$'
dac76a
+    patterns: "audit.rules"
dac76a
+  register: find_immutable_audit_rules
dac76a
 
dac76a
 - name: Search /etc/audit/rules.d  for files containing the -e option
dac76a
   find:
dac76a
     paths: "/etc/audit/rules.d"
dac76a
-    recurse: true
dac76a
-    contains: "-e[\\s]+.*"
dac76a
+    contains: '^\s*-e\s+.*$'
dac76a
     patterns: "*.rules"
dac76a
-  register: find_immutable
dac76a
+  register: find_immutable_rules_d
dac76a
 
dac76a
-- name: add found files to the list of files to be searched
dac76a
-  set_fact:
dac76a
-    files_to_search: "{{ files_to_search + [item.path] }}"
dac76a
-  with_items: "{{ find_immutable.files }}"
dac76a
-  when: find_immutable.matched is defined and find_immutable.matched >= 1
dac76a
+- name: Construct list of Audit config files containing the -e option
dac76a
+  block:
dac76a
+    - name: Initialize empty list for files to be edited
dac76a
+      set_fact:
dac76a
+        files_to_edit: []
dac76a
+    - name: Add matched files from /etc/audit/rules.d
dac76a
+      set_fact:
dac76a
+        files_to_edit: "{{ files_to_edit + [item.path] }}"
dac76a
+      loop: "{{ find_immutable_rules_d.files }}"
dac76a
+    - name: Add /etc/audit/audit.rules to the list of files
dac76a
+      set_fact:
dac76a
+        files_to_edit: "{{ files_to_edit + ['/etc/audit/audit.rules'] }}"
dac76a
+      when: find_immutable_audit_rules is defined and find_immutable_audit_rules.matched >= 1
dac76a
+  when: (find_immutable_rules_d.matched is defined and find_immutable_rules_d.matched >= 1) or (find_immutable_audit_rules.matched is defined and find_immutable_audit_rules.matched >= 1)
dac76a
 
dac76a
-- name: remove the config line from /etc/audit/audit.rules and any file in /etc/audit/rules.d directory
dac76a
+- name: Remove the -e option from all Audit config files
dac76a
   lineinfile:
dac76a
     path: "{{ item }}"
dac76a
     regexp: "-e[\\s]+.*"
dac76a
     state: absent
dac76a
-  with_items: "{{ files_to_search }}"
dac76a
+  loop: "{{ files_to_edit }}"
dac76a
+  when: (find_immutable_rules_d.matched is defined and find_immutable_rules_d.matched >= 1) or (find_immutable_audit_rules.matched is defined and find_immutable_audit_rules.matched >= 1)
dac76a
 
dac76a
-- name: insert lines at the end of /etc/audit/audit.rules and /etc/audit/rules.d/immutable.rules
dac76a
-  blockinfile:
dac76a
+- name: Insert configuration into /etc/audit/rules.d/immutable.rules and /etc/audit/audit.rules
dac76a
+  lineinfile:
dac76a
     path: "{{ item }}"
dac76a
     create: True
dac76a
-    marker: ""
dac76a
-    block: |+
dac76a
-      # Set the audit.rules configuration immutable per security requirements
dac76a
-      # Reboot is required to change audit rules once this setting is applied
dac76a
-      
dac76a
-      -e 2
dac76a
-  with_items:
dac76a
-    - /etc/audit/audit.rules
dac76a
-    - /etc/audit/rules.d/immutable.rules
dac76a
+    line: "-e 2"
dac76a
+  loop:
dac76a
+    - "/etc/audit/audit.rules"
dac76a
+    - "/etc/audit/rules.d/immutable.rules"
dac76a
dac76a
From dbf87484436e142a771ebd22a1bada61a429cceb Mon Sep 17 00:00:00 2001
dac76a
From: Vojtech Polasek <vpolasek@redhat.com>
dac76a
Date: Tue, 5 May 2020 14:44:24 +0200
dac76a
Subject: [PATCH 4/4] simplify remediation
dac76a
dac76a
---
dac76a
 .../audit_rules_immutable/ansible/shared.yml  | 34 +++----------------
dac76a
 1 file changed, 5 insertions(+), 29 deletions(-)
dac76a
dac76a
diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
index 4e1b2f9569..5ac7b3dabb 100644
dac76a
--- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml
dac76a
@@ -4,42 +4,18 @@
dac76a
 # complexity = low
dac76a
 # disruption = low
dac76a
 
dac76a
-- name: Check if the file /etc/audit/audit.rules contains the -e option
dac76a
+- name: Collect all files from /etc/audit/rules.d with .rules extension
dac76a
   find:
dac76a
-    paths: "/etc/audit"
dac76a
-    contains: '^\s*-e\s+.*$'
dac76a
-    patterns: "audit.rules"
dac76a
-  register: find_immutable_audit_rules
dac76a
-
dac76a
-- name: Search /etc/audit/rules.d  for files containing the -e option
dac76a
-  find:
dac76a
-    paths: "/etc/audit/rules.d"
dac76a
-    contains: '^\s*-e\s+.*$'
dac76a
+    paths: "/etc/audit/rules.d/"
dac76a
     patterns: "*.rules"
dac76a
-  register: find_immutable_rules_d
dac76a
-
dac76a
-- name: Construct list of Audit config files containing the -e option
dac76a
-  block:
dac76a
-    - name: Initialize empty list for files to be edited
dac76a
-      set_fact:
dac76a
-        files_to_edit: []
dac76a
-    - name: Add matched files from /etc/audit/rules.d
dac76a
-      set_fact:
dac76a
-        files_to_edit: "{{ files_to_edit + [item.path] }}"
dac76a
-      loop: "{{ find_immutable_rules_d.files }}"
dac76a
-    - name: Add /etc/audit/audit.rules to the list of files
dac76a
-      set_fact:
dac76a
-        files_to_edit: "{{ files_to_edit + ['/etc/audit/audit.rules'] }}"
dac76a
-      when: find_immutable_audit_rules is defined and find_immutable_audit_rules.matched >= 1
dac76a
-  when: (find_immutable_rules_d.matched is defined and find_immutable_rules_d.matched >= 1) or (find_immutable_audit_rules.matched is defined and find_immutable_audit_rules.matched >= 1)
dac76a
+  register: find_rules_d
dac76a
 
dac76a
 - name: Remove the -e option from all Audit config files
dac76a
   lineinfile:
dac76a
     path: "{{ item }}"
dac76a
-    regexp: "-e[\\s]+.*"
dac76a
+    regexp: '^\s*(?:-e)\s+.*$'
dac76a
     state: absent
dac76a
-  loop: "{{ files_to_edit }}"
dac76a
-  when: (find_immutable_rules_d.matched is defined and find_immutable_rules_d.matched >= 1) or (find_immutable_audit_rules.matched is defined and find_immutable_audit_rules.matched >= 1)
dac76a
+  loop: "{{ find_rules_d.files | map(attribute='path') | list + ['/etc/audit/audit.rules'] }}"
dac76a
 
dac76a
 - name: Insert configuration into /etc/audit/rules.d/immutable.rules and /etc/audit/audit.rules
dac76a
   lineinfile: