HarryHarcourt / Ansible-RHEL8-CIS-Benchmarks

Ansible role for RedHat Enterprise Linux release 8 following the CIS Benchmarks
22 stars 18 forks source link
ansible automation cis cis-benchmarks idempotent rhel rhel8 security security-hardening

HarryHarcourt.Ansible-RHEL8-CIS-Benchmarks

All Credit goes to anthcourtney for the original framework found here: https://github.com/anthcourtney/ansible-role-cis-amazon-linux

This implementation has been converted to Red Hat Enterprise Linux 8.X and CentOS 8.X (note not tested yet).

This implementation has been made idempotent in many places, and continues to be

This implementation allows the enabling of and configuration of some services.

The CIS RHEL Linux Benchmark. https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v2.1.1.pdf

This role was developed and tested against Red Hat Linux 8.0 using AWS AMI: ami-079596bf7a949ddf8

Why Would I Use This Role?

If you are attempting to obtain compliance against an industry-accepted security standard, like PCI DSS, APRA or ISO 27001, then you need to demonstrate that you have applied documented hardening standards against all systems within scope of assessment.

If you are running Red Hat Linux, then this role attempts to provide one piece of the solution to the compliance puzzle.

Here Be Dragons!

If you are considering applying this role to any servers, you should have a basic familiarity with the CIS Benchmark (or other similar benchmarks) and an appreciation for the impact that it may have on a system.

Please take the time to familarise yourself with the standard and with the configurable default values, and exclude any items before applying to a system.

An examples of items that should be immediately considered for exclusion (or at least, for modification of the related default values) include:

Example Playbook

An example playbook which uses this role is as follows:

---

- hosts: localhost
  connection: local
  gather_facts: true
  become: yes

  roles:
    - Ansible-RHEL8-CIS-Benchmarks 

A more advanced example, which includes modifications to the default values used, as well as the exclusion of some items in the benchmark which are considered unnecessary for a fictional environment, is as follows:

---

- hosts: localhost
  connection: local
  gather_facts: true
  become: yes

  vars:
    cis_level_1_exclusions:
      - 5.4.4
      - 3.4.2
      - 3.4.3
      - 6.2.13   
    cis_pass_max_days: 45
    cis_umask_default: 002

  roles:
    - Ansible-RHEL8-CIS-Benchmarks

Note that the use of become: yes is required as 99% of tasks require privileged access to execute.

Role Variables

See defaults/main.yml for variables which can be overriden according to preference.

Options

Tags (and combinations thereof) can be used to run a particular level of the CIS standard, a section, or an individual recommendation. For example:

ansible-playbook playbook.yml -t level-1
ansible-playbook playbook.yml -t section-3
ansible-playbook playbook.yml -t 1.3.1,2.2.10
ansible-playbook playbook.yml -t scored

Limitations

At present, only the Level 1 items of the benchmark are implemented. Level 2 items will be added as time permits.

The following checks have not been implemented:

Compatibility

This role is compatible with the following versions of ansible:

This role has not been tested against any other versions of ansible.

Testing

The following testing processes are applied by the developer of this role:

The following tests have been flagged but are not yet implemented:

License

BSD.

Author Information

The role was originally developed by Anth Courtney.

This role was further developed by Ben Wright.

All feedback, issues and PRs are encouraged and appreciated.