mirror of
https://github.com/ansible-lockdown/RHEL9-CIS.git
synced 2025-12-26 15:13:05 +00:00
Merge pull request #332 from ansible-lockdown/may25_issues
May25 issues
This commit is contained in:
commit
9ee1498c98
8 changed files with 38 additions and 21 deletions
|
|
@ -4,7 +4,7 @@
|
||||||
tags: always
|
tags: always
|
||||||
block:
|
block:
|
||||||
- name: "PRELIM | 5.5.2 | 6.2.7 | 6.2.8 | 6.2.20 | Parse /etc/passwd"
|
- name: "PRELIM | 5.5.2 | 6.2.7 | 6.2.8 | 6.2.20 | Parse /etc/passwd"
|
||||||
ansible.builtin.command: cat /etc/passwd
|
ansible.builtin.shell: cat /etc/passwd | grep -v '^#'
|
||||||
changed_when: false
|
changed_when: false
|
||||||
check_mode: false
|
check_mode: false
|
||||||
register: prelim_passwd_file_audit
|
register: prelim_passwd_file_audit
|
||||||
|
|
|
||||||
|
|
@ -23,22 +23,23 @@
|
||||||
- name: "PRELIM | AUDIT | Interactive Users"
|
- name: "PRELIM | AUDIT | Interactive Users"
|
||||||
tags: always
|
tags: always
|
||||||
ansible.builtin.shell: >
|
ansible.builtin.shell: >
|
||||||
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '(!index($7, "sbin/nologin") && $7 != "/bin/nologin" && $7 != "/bin/false" && $7 != "/dev/null") { print $1 }'
|
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '(!index($7, "sbin/nologin") && $7 != "/bin/nologin" && $7 != "/bin/false" && $7 != "/dev/null") { print $1":"$3":"$6 }'
|
||||||
changed_when: false
|
changed_when: false
|
||||||
register: prelim_interactive_usernames
|
check_mode: false
|
||||||
|
register: prelim_interactive_users_raw
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Interactive User accounts home directories"
|
- name: "PRELIM | AUDIT | Interactive Users (reformat)"
|
||||||
tags: always
|
tags: always
|
||||||
ansible.builtin.shell: >
|
ansible.builtin.set_fact:
|
||||||
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '(!index($7, "sbin/nologin") && $7 != "/bin/nologin" && $7 != "/bin/false") { print $6 }'
|
prelim_interactive_usernames: "{{ prelim_interactive_users | default([]) + [dict([('username', item.split(':')[0]), ('uid', item.split(':')[1]), ('home', item.split(':')[2])])] }}"
|
||||||
changed_when: false
|
loop: "{{ prelim_interactive_users_raw.stdout_lines }}"
|
||||||
register: prelim_interactive_users_home
|
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Interactive UIDs"
|
- name: "PRELIM | AUDIT | Interactive UIDs"
|
||||||
tags: always
|
tags: always
|
||||||
ansible.builtin.shell: >
|
ansible.builtin.shell: >
|
||||||
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '(!index($7, "sbin/nologin") && $7 != "/bin/nologin" && $7 != "/bin/false") { print $3 }'
|
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '(!index($7, "sbin/nologin") && $7 != "/bin/nologin" && $7 != "/bin/false") { print $3 }'
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
check_mode: false
|
||||||
register: prelim_interactive_uids
|
register: prelim_interactive_uids
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Capture /etc/password variables"
|
- name: "PRELIM | AUDIT | Capture /etc/password variables"
|
||||||
|
|
@ -64,6 +65,7 @@
|
||||||
ansible.builtin.shell: |
|
ansible.builtin.shell: |
|
||||||
mount | awk '{print $1, $3, $5, $6}'
|
mount | awk '{print $1, $3, $5, $6}'
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
check_mode: false
|
||||||
register: prelim_mount_output
|
register: prelim_mount_output
|
||||||
|
|
||||||
- name: PRELIM | AUDIT | Section 1.1 | Retrieve mount options - build fact # This is inherited and used in mountpoints tasks
|
- name: PRELIM | AUDIT | Section 1.1 | Retrieve mount options - build fact # This is inherited and used in mountpoints tasks
|
||||||
|
|
@ -100,6 +102,7 @@
|
||||||
ansible.builtin.command: rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' # noqa command-instead-of-module
|
ansible.builtin.command: rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' # noqa command-instead-of-module
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
check_mode: false
|
||||||
register: prelim_check_gpg_imported
|
register: prelim_check_gpg_imported
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Import gpg keys | Check Package" # noqa command-instead-of-module
|
- name: "PRELIM | AUDIT | Import gpg keys | Check Package" # noqa command-instead-of-module
|
||||||
|
|
@ -200,7 +203,7 @@
|
||||||
tags:
|
tags:
|
||||||
- always
|
- always
|
||||||
block:
|
block:
|
||||||
- name: "PRELIM | AUDIT | Discover is wirelss adapter on system"
|
- name: "PRELIM | AUDIT | Discover is wireless adapter on system"
|
||||||
ansible.builtin.command: find /sys/class/net/*/ -type d -name wireless
|
ansible.builtin.command: find /sys/class/net/*/ -type d -name wireless
|
||||||
register: discover_wireless_adapters
|
register: discover_wireless_adapters
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
@ -328,12 +331,14 @@
|
||||||
ansible.builtin.command: awk '/^UID_MIN/ {print $2}' /etc/login.defs
|
ansible.builtin.command: awk '/^UID_MIN/ {print $2}' /etc/login.defs
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
check_mode: false
|
||||||
register: prelim_uid_min_id
|
register: prelim_uid_min_id
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Capture UID_MAX from /etc/login.defs"
|
- name: "PRELIM | AUDIT | Capture UID_MAX from /etc/login.defs"
|
||||||
ansible.builtin.command: awk '/^UID_MAX/ {print $2}' /etc/login.defs
|
ansible.builtin.command: awk '/^UID_MAX/ {print $2}' /etc/login.defs
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
check_mode: false
|
||||||
register: prelim_uid_max_id
|
register: prelim_uid_max_id
|
||||||
|
|
||||||
- name: "PRELIM | AUDIT | Set facts for interactive UID/GID ranges"
|
- name: "PRELIM | AUDIT | Set facts for interactive UID/GID ranges"
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
- name: "5.4.1.1 | PATCH | Ensure password expiration is 365 days or less | Set existing users PASS_MAX_DAYS"
|
- name: "5.4.1.1 | PATCH | Ensure password expiration is 365 days or less | Set existing users PASS_MAX_DAYS"
|
||||||
when:
|
when:
|
||||||
- discovered_max_days.stdout_lines | length > 0
|
- discovered_max_days.stdout_lines | length > 0
|
||||||
- item in prelim_interactive_usernames.stdout
|
- item in prelim_interactive_usernames | map(attribute='username') | list
|
||||||
- rhel9cis_force_user_maxdays
|
- rhel9cis_force_user_maxdays
|
||||||
ansible.builtin.user:
|
ansible.builtin.user:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
- name: "5.4.1.2 | PATCH | Ensure minimum password days is configured | Set existing users PASS_MIN_DAYS"
|
- name: "5.4.1.2 | PATCH | Ensure minimum password days is configured | Set existing users PASS_MIN_DAYS"
|
||||||
when:
|
when:
|
||||||
- discovered_min_days.stdout_lines | length > 0
|
- discovered_min_days.stdout_lines | length > 0
|
||||||
- item in prelim_interactive_usernames.stdout
|
- item in prelim_interactive_usernames | map(attribute='username') | list
|
||||||
- rhel9cis_force_user_mindays
|
- rhel9cis_force_user_mindays
|
||||||
ansible.builtin.user:
|
ansible.builtin.user:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
|
|
@ -91,7 +91,7 @@
|
||||||
- name: "5.4.1.3 | PATCH | Ensure password expiration warning days is configured | Set existing users WARN_DAYS"
|
- name: "5.4.1.3 | PATCH | Ensure password expiration warning days is configured | Set existing users WARN_DAYS"
|
||||||
when:
|
when:
|
||||||
- discovered_warn_days.stdout_lines | length > 0
|
- discovered_warn_days.stdout_lines | length > 0
|
||||||
- item in prelim_interactive_usernames.stdout
|
- item in prelim_interactive_usernames | map(attribute='username') | list
|
||||||
- rhel9cis_force_user_warnage
|
- rhel9cis_force_user_warnage
|
||||||
ansible.builtin.command: "chage --warndays {{ rhel9cis_pass['warn_age'] }} {{ item }}"
|
ansible.builtin.command: "chage --warndays {{ rhel9cis_pass['warn_age'] }} {{ item }}"
|
||||||
changed_when: true
|
changed_when: true
|
||||||
|
|
@ -140,7 +140,7 @@
|
||||||
register: discovered_passwdlck_user_list
|
register: discovered_passwdlck_user_list
|
||||||
|
|
||||||
- name: "5.4.1.5 | PATCH | Ensure inactive password lock is 30 days or less | Apply Inactive setting to existing accounts"
|
- name: "5.4.1.5 | PATCH | Ensure inactive password lock is 30 days or less | Apply Inactive setting to existing accounts"
|
||||||
when: item in prelim_interactive_usernames.stdout
|
when: item in prelim_interactive_usernames | map(attribute='username') | list
|
||||||
ansible.builtin.command: chage --inactive {{ rhel9cis_inactivelock.lock_days }} "{{ item }}"
|
ansible.builtin.command: chage --inactive {{ rhel9cis_inactivelock.lock_days }} "{{ item }}"
|
||||||
changed_when: true
|
changed_when: true
|
||||||
loop: "{{ discovered_passwdlck_user_list.stdout_lines }}"
|
loop: "{{ discovered_passwdlck_user_list.stdout_lines }}"
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@
|
||||||
- name: "5.4.2.7 | PATCH | Ensure system accounts do not have a valid login shell"
|
- name: "5.4.2.7 | PATCH | Ensure system accounts do not have a valid login shell"
|
||||||
when:
|
when:
|
||||||
- rhel9cis_rule_5_4_2_7
|
- rhel9cis_rule_5_4_2_7
|
||||||
- "item.id not in prelim_interactive_usernames.stdout"
|
- "item.id not in prelim_interactive_usernames | map(attribute='username')"
|
||||||
- item.id not in rhel9cis_system_users_shell
|
- item.id not in rhel9cis_system_users_shell
|
||||||
- "'root' not in item.id"
|
- "'root' not in item.id"
|
||||||
- rhel9cis_disruption_high
|
- rhel9cis_disruption_high
|
||||||
|
|
@ -220,7 +220,7 @@
|
||||||
when:
|
when:
|
||||||
- rhel9cis_rule_5_4_2_8
|
- rhel9cis_rule_5_4_2_8
|
||||||
- rhel9cis_disruption_high
|
- rhel9cis_disruption_high
|
||||||
- "item.id not in prelim_interactive_usernames.stdout"
|
- "item.id not in prelim_interactive_usernames | map(attribute='username')"
|
||||||
- "'root' not in item.id"
|
- "'root' not in item.id"
|
||||||
tags:
|
tags:
|
||||||
- level1-server
|
- level1-server
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,10 @@
|
||||||
dest: /var/lib/aide/aide.db.gz
|
dest: /var/lib/aide/aide.db.gz
|
||||||
remote_src: true
|
remote_src: true
|
||||||
mode: 'ug-wx,o-rwx'
|
mode: 'ug-wx,o-rwx'
|
||||||
|
register: aide_db_cp
|
||||||
|
failed_when:
|
||||||
|
- not ansible_check_mode
|
||||||
|
- aide_db_cp.failed
|
||||||
|
|
||||||
- name: "6.1.2 | PATCH | Ensure filesystem integrity is regularly checked"
|
- name: "6.1.2 | PATCH | Ensure filesystem integrity is regularly checked"
|
||||||
when:
|
when:
|
||||||
|
|
@ -119,4 +123,7 @@
|
||||||
/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512
|
/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512
|
||||||
/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512
|
/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512
|
||||||
/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512
|
/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512
|
||||||
validate: aide -D --config %s
|
register: aide_file_integrity_check
|
||||||
|
failed_when:
|
||||||
|
- not ansible_check_mode
|
||||||
|
- aide_file_integrity_check.failed
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,9 @@
|
||||||
file: cis_6.2.2.x.yml
|
file: cis_6.2.2.x.yml
|
||||||
|
|
||||||
- name: "SECTION | 6.2.3 | Configure rsyslog"
|
- name: "SECTION | 6.2.3 | Configure rsyslog"
|
||||||
when: rhel9cis_syslog == 'rsyslog'
|
when:
|
||||||
|
- rhel9cis_syslog == 'rsyslog'
|
||||||
|
- rhel9cis_rsyslog_ansiblemanaged
|
||||||
ansible.builtin.import_tasks:
|
ansible.builtin.import_tasks:
|
||||||
file: cis_6.2.3.x.yml
|
file: cis_6.2.3.x.yml
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@
|
||||||
etype: group
|
etype: group
|
||||||
permissions: rx
|
permissions: rx
|
||||||
state: present
|
state: present
|
||||||
loop: "{{ prelim_interactive_users_home.stdout_lines }}"
|
loop: "{{ prelim_interactive_users | map(attribute='home') | list }}"
|
||||||
|
|
||||||
- name: "7.2.8 | PATCH | Ensure local interactive user home directories are configured | Set other ACL"
|
- name: "7.2.8 | PATCH | Ensure local interactive user home directories are configured | Set other ACL"
|
||||||
when: not system_is_container
|
when: not system_is_container
|
||||||
|
|
@ -266,7 +266,7 @@
|
||||||
etype: other
|
etype: other
|
||||||
permissions: 0
|
permissions: 0
|
||||||
state: present
|
state: present
|
||||||
loop: "{{ prelim_interactive_users_home.stdout_lines }}"
|
loop: "{{ prelim_interactive_users | map(attribute='home') | list }}"
|
||||||
|
|
||||||
- name: "7.2.9 | PATCH | Ensure local interactive user dot files access is configured"
|
- name: "7.2.9 | PATCH | Ensure local interactive user dot files access is configured"
|
||||||
when:
|
when:
|
||||||
|
|
@ -315,6 +315,6 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: '{{ item }}'
|
path: '{{ item }}'
|
||||||
mode: 'go-w'
|
mode: 'go-w'
|
||||||
owner: "{{ rhel9cis_passwd | selectattr('dir', 'in', prelim_interactive_users_home.stdout_lines) | selectattr('dir', 'in', item) | map(attribute='uid') | last }}"
|
owner: "{{ rhel9cis_passwd | selectattr('dir', 'in', prelim_interactive_users_raw.stdout_lines) | selectattr('dir', 'in', item) | map(attribute='uid') | last }}"
|
||||||
group: "{{ rhel9cis_passwd | selectattr('dir', 'in', prelim_interactive_users_home.stdout_lines) | selectattr('dir', 'in', item) | map(attribute='gid') | last }}"
|
group: "{{ rhel9cis_passwd | selectattr('dir', 'in', prelim_interactive_users_raw.stdout_lines) | selectattr('dir', 'in', item) | map(attribute='gid') | last }}"
|
||||||
with_items: "{{ discovered_homedir_hidden_files.stdout_lines }}"
|
with_items: "{{ discovered_homedir_hidden_files.stdout_lines }}"
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,9 @@ rhel9cis_allowed_crypto_policies_modules:
|
||||||
warn_control_list: ""
|
warn_control_list: ""
|
||||||
warn_count: 0
|
warn_count: 0
|
||||||
|
|
||||||
|
# list of dicts of interactive users, filled in during prelim.yml
|
||||||
|
prelim_interactive_users: []
|
||||||
|
|
||||||
# Default empty values for 1.4.2
|
# Default empty values for 1.4.2
|
||||||
efi_mount_opts_addition: ''
|
efi_mount_opts_addition: ''
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue