151 lines
5.0 KiB
YAML
151 lines
5.0 KiB
YAML
---
|
|
|
|
- name: "5.2.1 | PATCH | Ensure sudo is installed"
|
|
when: ubtu24cis_rule_5_2_1
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- rule_5.2.1
|
|
- NIST800-53R5_AC-6
|
|
- sudo
|
|
ansible.builtin.package:
|
|
name: "{{ ubtu24cis_sudo_package }}"
|
|
state: present
|
|
|
|
- name: "5.2.2 | PATCH | Ensure sudo commands use pty"
|
|
when: ubtu24cis_rule_5_2_2
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- rule_5.2.2
|
|
- NIST800-53R5_AC-6
|
|
- sudo
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/sudoers
|
|
regexp: '^Defaults\s+use_'
|
|
line: 'Defaults use_pty'
|
|
insertafter: '^\s*Defaults'
|
|
|
|
- name: "5.2.3 | PATCH | Ensure sudo log file exists"
|
|
when: ubtu24cis_rule_5_2_3
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- rule_5.2.3
|
|
- NIST800-53R5_AU-3
|
|
- NIST800-53R5_AU-12
|
|
- sudo
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/sudoers
|
|
regexp: '^Defaults\s+logfile'
|
|
line: 'Defaults logfile="{{ ubtu24cis_sudo_logfile }}"'
|
|
insertafter: '^\s*Defaults'
|
|
|
|
- name: "5.2.4 | PATCH | Ensure users must provide password for escalation"
|
|
when: ubtu24cis_rule_5_2_4
|
|
tags:
|
|
- level2-server
|
|
- level2-workstation
|
|
- patch
|
|
- sudo
|
|
- rule_5.2.4
|
|
- NIST800-53R5_AC-6
|
|
block:
|
|
- name: "5.2.4 | AUDIT | Ensure users must provide password for escalation | discover accts with NOPASSWD"
|
|
ansible.builtin.shell: grep -Ei '(nopasswd)' /etc/sudoers /etc/sudoers.d/* | cut -d':' -f1
|
|
become: true
|
|
changed_when: false
|
|
failed_when: false
|
|
register: discovered_sudoers_nopasswd
|
|
|
|
- name: "5.2.4 | PATCH | Ensure users must provide password for escalation"
|
|
when: discovered_sudoers_nopasswd.stdout | length > 0
|
|
ansible.builtin.replace:
|
|
path: "{{ item }}"
|
|
regexp: '^((?!#|{% for name in ubtu24cis_sudoers_exclude_nopasswd_list %}{{ name }}{% if not loop.last -%}|{%- endif -%}{% endfor %}).*)NOPASSWD(.*)'
|
|
replace: '\1PASSWD\2'
|
|
validate: '/usr/sbin/visudo -cf %s'
|
|
loop: "{{ discovered_sudoers_nopasswd.stdout_lines }}"
|
|
|
|
- name: "5.2.5 | PATCH | Ensure re-authentication for privilege escalation is not disabled globally"
|
|
when: ubtu24cis_rule_5_2_5
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- sudo
|
|
- rule_5.2.5
|
|
- NIST800-53R5_AC-6
|
|
ansible.builtin.replace:
|
|
path: "{{ item }}"
|
|
regexp: '^([^#].*)!authenticate(.*)'
|
|
replace: '\1authenticate\2'
|
|
validate: '/usr/sbin/visudo -cf %s'
|
|
loop: "{{ prelim_sudoers_files.stdout_lines }}"
|
|
|
|
- name: "5.2.6 | PATCH | Ensure sudo authentication timeout is configured correctly"
|
|
when: ubtu24cis_rule_5_2_6
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- sudo
|
|
- rule_5.2.6
|
|
- NIST800-53R5_AC-6
|
|
block:
|
|
- name: "5.2.6 | AUDIT | Ensure sudo authentication timeout is configured correctly | Get files with timeout set"
|
|
ansible.builtin.shell: grep -is 'timestamp_timeout' /etc/sudoers /etc/sudoers.d/* | cut -d":" -f1 | uniq | sort
|
|
changed_when: false
|
|
failed_when: false
|
|
register: discovered_ubtu24cis_ssh_timeout_files
|
|
|
|
- name: "5.2.6 | PATCH | Ensure sudo authentication timeout is configured correctly | Set value if no results"
|
|
when: discovered_ubtu24cis_ssh_timeout_files.stdout | length == 0
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/sudoers
|
|
regexp: '^\s*Defaults/s+timestamp_timeout='
|
|
line: "Defaults timestamp_timeout={{ ubtu24cis_sudo_timestamp_timeout }}"
|
|
insertafter: '^\s*Defaults'
|
|
validate: '/usr/sbin/visudo -cf %s'
|
|
|
|
- name: "5.2.6 | PATCH | Ensure sudo authentication timeout is configured correctly | Set value if has results"
|
|
when: discovered_ubtu24cis_ssh_timeout_files.stdout | length > 0
|
|
ansible.builtin.replace:
|
|
path: "{{ item }}"
|
|
regexp: 'timestamp_timeout=(\d+)'
|
|
replace: "timestamp_timeout={{ ubtu24cis_sudo_timestamp_timeout }}"
|
|
validate: '/usr/sbin/visudo -cf %s'
|
|
loop: "{{ discovered_ubtu24cis_ssh_timeout_files.stdout_lines }}"
|
|
|
|
- name: "5.2.7 | PATCH | Ensure access to the su command is restricted"
|
|
when: ubtu24cis_rule_5_2_7
|
|
tags:
|
|
- level1-server
|
|
- level1-workstation
|
|
- patch
|
|
- sudo
|
|
- rule_5.2.7
|
|
- NIST800-53R5_AC-3
|
|
- NIST800-53R5_MP-2
|
|
block:
|
|
- name: "5.2.7 | PATCH | Ensure access to the su command is restricted | Ensure sugroup exists"
|
|
ansible.builtin.group:
|
|
name: "{{ ubtu24cis_sugroup }}"
|
|
state: present
|
|
|
|
- name: "5.2.7 | PATCH | Ensure access to the su command is restricted | remove users from group"
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/group
|
|
regexp: '^{{ ubtu24cis_sugroup }}(:.:.*:).*$'
|
|
line: '{{ ubtu24cis_sugroup }}\g<1>'
|
|
backrefs: true
|
|
|
|
- name: "5.2.7 | PATCH | Ensure access to the su command is restricted | Setting pam_wheel to use_uid"
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/pam.d/su
|
|
regexp: '^(#)?auth\s+required\s+pam_wheel\.so'
|
|
line: 'auth required pam_wheel.so use_uid group={{ ubtu24cis_sugroup }}'
|