Version information
This version is compatible with:
- Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
- Puppet >= 5.5.8 < 7.0.0
- , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'tomkrieger-security_baseline', '0.9.2'
Learn more about managing modules with a PuppetfileDocumentation
security_baseline
Table of Contents
- Description
- Security baseline
- CIS Benchmark Reference
- Setup - The basics of getting started with security_baseline
- Checking facts
- Extend the security baseline
- Usage
- Reference
- Limitations
- Credits
- Development
- Changelog
- Contributors
- Warranty
Description
Define a complete security baseline and monitor the baseline's rules. The definition of the baseline should be done in Hiera. The purpose of the module is to give the ability to setup a complete security baseline which not necessarily have to stick to industry security guides like the CIS benchmarks.
The security_baseline module does not use bechmark numbers for the class names of the rules. These numbers change from OS version to OS version and even from benchmark version to benchmark version. One main purpose is to ensure this module can be extended by further security settings and monitorings without changing the code of this module. Therefore the module uses a generic interface to call classes implementing particular security baseline rules.
This module also has the ability to create compliance reports. The reports can be created as a Puppet fact uploaded to the Puppet Master or as a CSV file which will remain on the servers for later collection.
Security baseline
A security baseline describes how servers in your environment are setup with a secure configuration. The baseline may be different each server class like database servers, application or web servers.
A security baseline can be based on a CIS benchmark but can include more rules specific to your environment. But depending on server classes not all rules of a CIS benchmark will be used. Sometimes the benchmarks contain different ways to achieve a goal, e.g. with RedHat 8 you can use firewalld, iptables or nftables to setup a firewall. Surely it makes no sense to have all of them running in parallel. So it is your task to define a security baseline to define which tool to use or which settings to use.
For this module level 1 and level 2 server tests from the CIS benchmarks below are taken into account.
CIS Benchmark Reference
The code of this security baseline module is based on the following CIS Benchmarks:
OS | Benchmark version | Version | Date |
---|---|---|---|
Suse SLES 12 | CIS SUSE Linux Enterprise 12 Benchmark | 2.1.0 | 12-28-2017 |
RedHat 6 | CIS Red Hat Enterprise Linux 6 Benchmark | 2.1.0 | 12-27-2017 |
RedHat 7 | CIS Red Hat Enterprise Linux 7 Benchmark | 2.2.0 | 12-27-2017 |
RedHat 8 | CIS Red Hat Enterprise Linux 8 Benchmark | 1.0.0 | 09-30-2019 |
CentOS 6 | CIS CentOS Linux 6 Benchmark | 2.1.0 | 12-27-2017 |
CentOS 7 | CIS CentOS Linux 7 Benchmark | 2.2.0 | 12-27-2017 |
CentOS 8 | CIS CentOS Linux 8 Benchmark | 1.0.0 | 10-31-2019 |
Ubuntu 18.04 | CIS Ubuntu Linux 18.04 LTS Benchmark | 2.0.1 | 01-03-2020 |
Debian 9 | CIS Debian Linux 9 Benchmark | 1.0.1 | 01-13-2020 |
The benchmarks can be found at CIS Benchmarks Website.
Setup
It is highly recommended to have the complete security baseline definition written in Hira definitions. This enables you to have different security baselines for groups of servers, environments or even special single servers.
What security_baseline affects
The security_baseline module has a parameter enforce
for each rule. If this parameter is set to true all necessary changes are made to make a server compliant to the security baseline rules. This can have severe impacts to the machines, especially if security settings are defined in a wrong way.
Please test your settings before rolling out to production environments.
The module needs a base directory. The base directory /usr/share/security_baseline
is created by the module during the fist run. Some data is collected with cron jobs once a day as collecting this data is somewhat expensive and time consuming depending on the server size, e. g. searching als s-bit programs . Under the base directory there will be a directory bin
where all scripts for gathering information are located.
This module creates a larger fact security_baseline
to have all required information for applying the rules. Some information is collected with cron jobs once a day as these jobs might run for a long time (e. g. searching filesystems for s-bit programs).
Setup Requirements
The security_baseline module needs several other Puppet modules. These modules are defined in the metadata.json file and are all available at Puppet Forge.
Beginning with security_baseline
The most easiest way to use the security baseline module is just calling the class or including the class.
class { 'security_baseline':
}
or
include ::security_baseline
The data
folder contains example Hiera definitions for various operation systems.
Passing additional data to rules
Sometimes rules need additional data, especially if the security benchmark requirements should be enforced. The following example shows the Hirea configuration how to pass these parameters to the class implementing the rule.
---
'2.2.1.2':
rulename: 'ntp'
active: true
scored: true
level: 1
description: 'ntp is a daemon which implements the Network Time Protocol (NTP). It is designed to synchronize system clocks across a variety of systems and use a source that is highly accurate. More information on NTP can be found at http://www.ntp.org. ntp can be configured to be a client and/or a server. This recommendation only applies if ntp is in use on the system.'
enforce: true
class: '::security_baseline::rules::redhat::sec_ntp_daemon_ntp'
check:
fact_hash: security_baseline
fact_name:
- ntp
- ntp_status
fact_value: true
message: 'Rule 2.2.1.2. NTP should be configured propperly.'
log_level: 'warning'
config_data:
ntp_servers:
- 0.de.pool.ntp.org
- 1.de.pool.ntp.org
- 2.de.pool.ntp.org
ntp_restrict:
- 127.0.0.1
- default kod nomodify notrap nopeer
- '-6 default kod nomodify notrap nopeer'
ntp_driftfile: '/var/lib/ntp/ntp.drift'
ntp_statsdir: '/var/log/ntpstats/'
ntp_disable_monitor: true
ntp_burst: true
All data below the config_data
entry is passed as parameters to the class for the rule together with the common parameters for enforce
, log_level
and message
. The class must be capable of accept and use these additional parameters.
The class security_baseline::rules::redhat::sec_ntp_daemon_ntp
from the Hiera example above is defined as follows
class security_baseline::rules::redhat::sec_ntp_daemon_ntp (
Boolean $enforce = true,
String $message = '',
String $log_level = '',
Array $ntp_servers = [],
Array $ntp_restrict = [],
String $ntp_driftfile = '',
String $ntp_statsdir = '',
Boolean $ntp_disable_monitor = true,
Boolean $ntp_burst = false,
) {
}
Cronjobs
Gathering information can sometime consume a lot of time. Gathering those facts during Puppet runs would have a significat impact on the time consumed by a Puppet run. Therefore some facts are only gathered once a day using cron jobs. The security_baseline
module installes the following cron jobs to collect information and provide the information to the fact scripts creating the security_baseline
fact.
Cron /etc/cron.d/system-file-permissions.cron
This cron job runs a verrify for rpm or dpkg packages and checks for changes file permissions and so on.
Cron /etc/cron.d/unowned-files.cron
This cron job searches for unowned and ungrouped files.
Cron /etc/cron.d/world-writebale-files.cron
This cron job searches for world writable files.
Cron /etc/cron.daily/suid-audit
Search for s-uid programs to create auditd rules for those binaries.
Reporting
This module has two possible methods of reporting. First you can create a Puppet fact with the reporting results and upload this fact to the Puppet Master. Or you choose to create a CSV report which will be stored on the server and can be collected afterwards with some collecting job.
A summary report can be created as well. This report gives you an overview which checks are successful, which are not and which have an unknown result. You also get some numbers arround the tests.
Reporting is configured as follows
class { 'security_baseline':
reporting_type => 'fact',
logfile => '/opt/puppetlabs/facter/facts.d/security_baseline_findings.yaml',
summary_report => '/opt/puppetlabs/facter/facts.d/security_baseline_summary.yaml',
reports => 'both',
}
or for CSV file creation
class { 'security_baseline':
reporting_type => 'csv_file',
logfile => '/usr/share/security_baseline/logs/security_baseline_findings.csv',
summary_report => '/opt/puppetlabs/facter/facts.d/security_baseline_summary.yaml',
reports => 'both',
}
Facts indirector and Logstash
This module has a facts indirector includes which can send security baseline result facts to Logstash. The indirector grabs the security baseline summary facts data and send this data to logstash to build an index from that data. This enables you to create Kibana reportings above the data from your security baseline results.
The Logstash input could look like this:
input {
tcp {
type => "puppet-report"
port => 5997
codec => json
}
}
You do not need a filter for the security baseline data.
The output could look like this:
output {
elasticsearch {
action => 'index'
index => "security-baseline-%{+YYYY.MM.dd}"
hosts => ["<elastic_host1>:<elastic_port>","<elastic_host2>:<elastic_port>"]
}
}
Example Hiera files
The data
directory contains example Hiera data for various operating systems. Please do not use these files without reviewing them carefully. The configuration in these files may or may not fit your needs or can even crash your systems.
You are strongly advised to review the files before using them and adapt them to your needs.
Checking facts
For reporting purposes it is necessary that the security settings required by a baseline are checked.
---
'1.1.1.1':
rulename: 'cramfs'
active: true
scored: true
level: 1
description: 'The cramfs filesystem type is a compressed read-only Linux filesystem embedded in small footprint systems. A cramfs image can be used without having to first decompress the image.'
enforce: true
class: '::security_baseline::rules::common::sec_cramfs'
check:
fact_hash: security_baseline
fact_name:
- kernel_modules
- cramfs
fact_value: false
message: 'Rule 1.1.1.1. Cramfs kernel module should not be available.'
log_level: 'warning'
'5.2.11':
rulename: sshd-macs
active: true
scored: true
level: 1
description: 'This variable limits the types of MAC algorithms that SSH can use during communication.'
enforce: true
class: '::security_baseline::rules::common::sec_sshd_macs'
check:
fact_hash: security_baseline
fact_name:
- sshd
- macs
fact_value:
- hmac-sha2-512
- hmac-sha2-256
message: 'Rule 5.2.11. The sshd parameter MACs should be configured with strong MAC algorithms.'
log_level: warning
config_data:
macs:
- hmac-sha2-512
- hmac-sha2-256
The example above contains two rule definitions from a Hirea file. The first example shows how to check for a simple fact value. The second example shows how to provide multiple values to be checked.
For the first example the fact $facts['security_baseline']['kernel_modules']['cramfs']
has to be false
. For the second example the fact $facts['security_baseline']['sshd']['macs']
has to contain only the values hmac-sha2-5 and hmac-sha2-256.
Parameters of the check
hash:
fact_hash
The fact hash tells the module wich fact hash contains the facts to check. This is normally security_baseline
.
fact_name
This parameter can be either a string or an array. In case of a string the string is the name of the fact within the security_baseline
hash. In case of an array, the array will be expanded into an array access to the hash. For the example for the cramfs kernel module above the fact will be looked up like $facts['security_baseline']['kernel_modules']['cramfs']
.
fact_value
The value the fact is compared against. In case of a single value the value of the fact is compared to the value given. In case of an array, all values of the array have to be in the fact and the fact should not contain any additional values.
Extend the security baseline
To extend the security baseline module you can write your own Puppet modules. These modules must implement a particular interface. This interface has to consume the following parameters.
class your_class_name (
Boolean $enforce = true,
String $message = '',
String $log_level = '',
String $logfile = '',
Optional[Hash] $config_data = {}
) {
...
}
Please keep in mind that the classes you want to use for your security baseline have to be available in the Puppet catalog. Otherwise the catalog compliation will fail.
Parameter enforce
This parameter controls if the security settings should be monitored only or if the system should be changed. Setting enforce to true
will normaly change your system to be compliant to the security settings. A value of false
just prints messages if the system is not compliant to the rules.
Parameter message
The message to log if the system is not compliant and enforce is set to false.
Parameter log_level
The log level the message should be logged.
Parameter logfile
The logfile
parameter gives you the ability to write to the logfile. You can use the logging
resource defined in this module to do this.
Parameter config_data
This parameter has to be a hash. The structure of the hash can be freely defined. The module consuming that hash has to be aware of the structure of that hash.
Usage
The most easiest way to use the security baseline module is just calling the class or including the class. The security baseline data has to be defined in a Hiera configuration file.
class { 'security_baseline':
}
or
include ::security_baseline
Hiera data:
---
security_baseline::baseline_version: '1.0.0'
security_baseline::debug: false
security_baseline::log_info: true
security_baseline::auditd_suid_include:
- /usr
security_baseline::update_postrun_command: true
security_baseline::reporting_type: fact
security_baseline::logfile: /opt/puppetlabs/facter/facts.d/security_baseline_findings.yaml
security_baseline::auditd_rules_file: /etc/audit/rules.d/sec_baseline_auditd.rules
security_baseline::auditd_rules_fact_file: /opt/puppetlabs/facter/facts.d/security_baseline_auditd.yaml
security_baseline::reboot: false
security_baseline::reboot_timeout: 120
security_baseline::rules:
'1.1.1.1':
rulename: 'cramfs'
active: true
description: 'Support for cramfs removed'
enforce: true
class: 'sec_cramfs'
check:
fact_name: 'kmod_cramfs'
fact_value: false
'1.1.1.2':
rulename: 'freevxfs'
active: true
description: 'Support for freevxfs removed'
enforce: true
class: 'sec_freevxfs'
check:
fact_name: 'kmod_freevxfs'
fact_value: false
Extension classes
The security baseline module contains a lot of classes to make your system complinat to a security guide. But some companies have own security baselines with own rules. Therefore the security baseline module can be extended by custom modules. You can add your own classes if these classes implement the interface described above
class your_class_name (
Boolean $enforce = true,
String $message = '',
String $log_level = '',
String $logfile = '',
Optional[Hash] $config_data = {}
) {
if($config_data) {
validate_hash($config_data)
}
...
}
Extension class Hiera data
---
'2.2.1.2':
rulename: 'ntp'
active: true
description: 'ntp is a daemon which implements the Network Time Protocol (NTP).'
enforce: true
class: '::security_baseline_ntp'
check:
fact_name: ''
fact_value: ''
message: 'Not in compliance with rule 2.2.1.2. NTP not configured.'
loglevel: 'warning'
config_data:
ntp_daemon: 'ntp'
ntp_servers:
- 0.de.pool.ntp.org
- 1.de.pool.ntp.org
- 2.de.pool.ntp.org
Reference
See REFERENCE.md
Limitations
Currently the module is tested with RedHat 6, 7, 8, CentOS 6, 7, 8, Suse SLES 12, Debian 9 (partly tested) and Ubuntu 18.04 (partially tested). Other OSes may work but there's no guarantee. If you need your own rules please create Puppet modules and call them from the security baseline module. See extend the security baseline.
More testing is needed as for every supported OS there are different setups in the wild and some of them might not be covered.
Auditd
Auditd is normally configured with immutable rules. This meens that changing rules will require a reboot to make the new rules effective.
SELinux and Apparmor
SELinux and AppArmor are - if configured - activated while this module is applied. To make them effective a reboot is required.
Automatic reboot
Automatic reboots might be dangerous as servers would be rebooted if one of the classes subscribed for reboot takes any action. But some changes need a reboot, e. g. enabling SELinux or changing auditd rules. As servers in production environments may not be rebooted you have to choose if you will allow reboots by settings a global parameter security_baseline::reboot and you can add a parameter reboot to each rule.
The global reboot parameter enables or disables reboots regardless of the settings rules have. The reboot parameter given with a rule will subscribe the class implementing the rule to the reboot module. If the rule takes any action a reboot will be triggered.
The reboot timeout will shedule a reboot within the given time after applying the catalogue finished.
---
security_baseline::reboot: true
security_baseline::reboot_timeout: 120
security_baseline::rules:
'1.6.1.1':
rulename: 'selinux-bootloader'
active: true
scored: true
level: 2
description: 'Configure SELINUX to be enabled at boot time and verify that it has not been overwritten by the grub boot parameters.'
enforce: true
class: 'security_baseline::rules::redhat::sec_selinux_bootloader'
check:
fact_hash: security_baseline
fact_name:
- selinux
- bootloader
fact_value: true
message: 'Rule 1.6.1.1. All linux bootloader entries should enforce selinux.'
log_level: 'warning'
reboot: true
Credits
This project is highly inspired by the fervid/secure_linux_cis module from Puppet Forge.
Development
Contributions are welcome in any form, pull requests, and issues should be filed via GitHub.
Changelog
See CHANGELOG.md
Contributors
The list of contributors can be found at: https://github.com/tom-krieger/security_baseline/graphs/contributors.
Warranty
This Puppet module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache 2.0 License for more details.
Reference
Table of Contents
Classes
Public Classes
security_baseline
: Security baseline enforcement and monitoringsecurity_baseline::auditd_suid_rules_cron
: Create a cron job to search binaries with s-bitsecurity_baseline::config
: Configuration stuffsecurity_baseline::fact_indirector
: Configure sending facts to logstashsecurity_baseline::services
: Additional servicessecurity_baseline::sticky_world_writabe_cron
: Create cron job for searching world writable dir3ctories with sticky bitsecurity_baseline::system_file_permissions_cron
: Create cron job for system file permissionssecurity_baseline::unowned_files_cron
: Cron to run search for unowned filessecurity_baseline::world_writeable_files_cron
: Create cron for world writable files search
Private Classes
security_baseline::rules::common::sec_audit_sgid_programs
: A short summary of the purpose of this classsecurity_baseline::rules::common::sec_audit_suid_programs
: A short summary of the purpose of this classsecurity_baseline::rules::common::sec_auditd_access
: Ensure unsuccessful unauthorized file access attempts are collected (Scored)security_baseline::rules::common::sec_auditd_actions
: Ensure system administrator actions (sudolog) are collected (Scored)security_baseline::rules::common::sec_auditd_backlog_limit
: Ensure audit_backlog_limit is sufficient (Scored)security_baseline::rules::common::sec_auditd_delete
: Ensure file deletion events by users are collected (Scored)security_baseline::rules::common::sec_auditd_identity
: Ensure events that modify user/group information are collected (Scored)security_baseline::rules::common::sec_auditd_immutable
: Ensure the audit configuration is immutable (Scored)security_baseline::rules::common::sec_auditd_init
: Initialize auditd rules filesecurity_baseline::rules::common::sec_auditd_logins
: Ensure login and logout events are collected (Scored)security_baseline::rules::common::sec_auditd_mac_policy
: Ensure events that modify the system's Mandatory Access Controls are collected (Scored)security_baseline::rules::common::sec_auditd_max_log_file
: Ensure audit log storage size is configured (Not Scored)security_baseline::rules::common::sec_auditd_max_logfile_action
: Ensure audit logs are not automatically deleted (Scored)security_baseline::rules::common::sec_auditd_modules
: Ensure kernel module loading and unloading is collected (Scored)security_baseline::rules::common::sec_auditd_mounts
: Ensure successful file system mounts are collected (Scored)security_baseline::rules::common::sec_auditd_perm_mod
: Ensure discretionary access control permission modification events are collected (Scored)security_baseline::rules::common::sec_auditd_privileged_commands
: Ensure use of privileged commands is collected (Scored)security_baseline::rules::common::sec_auditd_process
: Ensure auditing for processes that start prior to auditd is enabled (Scored)security_baseline::rules::common::sec_auditd_scope
: Ensure changes to system administration scope (sudoers) is collected (Scored)security_baseline::rules::common::sec_auditd_session
: Ensure session initiation information is collected (Scored)security_baseline::rules::common::sec_auditd_session_logins
: Ensure session initiation information is collected (Scored)security_baseline::rules::common::sec_auditd_time_change
: Ensure events that modify date and time information are collected (Scored)security_baseline::rules::common::sec_auditd_when_full
: Ensure system is disabled when audit logs are full (Scored)security_baseline::rules::common::sec_automounting
: Disable Automounting (Scored)security_baseline::rules::common::sec_avahi
: Ensure Avahi Server is not enabled (Scored)security_baseline::rules::common::sec_core_dump
: Ensure core dumps are restricted (Scored)security_baseline::rules::common::sec_cramfs
: Ensure mounting of cramfs filesystems is disabled (Scored)security_baseline::rules::common::sec_cron_daily
: Ensure permissions on /etc/cron.daily are configured (Scored)security_baseline::rules::common::sec_cron_hourly
: Ensure permissions on /etc/cron.hourly are configured (Scored)security_baseline::rules::common::sec_cron_monthly
: Ensure permissions on /etc/cron.monthly are configured (Scored)security_baseline::rules::common::sec_cron_restrict
: Ensure at/cron is restricted to authorized users (Scored)security_baseline::rules::common::sec_cron_weekly
: Ensure permissions on /etc/cron.weekly are configured (Scored)security_baseline::rules::common::sec_cups
: Ensure CUPS is not enabled (Scored)security_baseline::rules::common::sec_dev_shm_nodev
: Ensure nodev option set on /dev/shm partition (Scored)security_baseline::rules::common::sec_dev_shm_noexec
: Ensure noexec option set on /dev/shm partition (Scored)security_baseline::rules::common::sec_dev_shm_nosuid
: Ensure nosuid option set on /dev/shm partition (Scored)security_baseline::rules::common::sec_dhcpd
: Ensure DHCP Server is not enabled (Scored)security_baseline::rules::common::sec_dns
: Ensure DNS Server is not enabled (Scored)security_baseline::rules::common::sec_dovecot
: Ensure IMAP and POP3 server is not enabled (Scored)security_baseline::rules::common::sec_duplicate_gids
: Ensure no duplicate GIDs exist (Scored)security_baseline::rules::common::sec_duplicate_groups
: Ensure no duplicate group names exist (Scored)security_baseline::rules::common::sec_duplicate_uids
: Ensure no duplicate UIDs exist (Scored)security_baseline::rules::common::sec_duplicate_users
: Ensure no duplicate user names exist (Scored)security_baseline::rules::common::sec_empty_passwords
: Ensure password fields are not empty (Scored)security_baseline::rules::common::sec_etc_crond
: Ensure permissions on /etc/cron.d are configured (Scored)security_baseline::rules::common::sec_etc_crontab
: Ensure permissions on /etc/crontab are configured (Scored)security_baseline::rules::common::sec_freevxfs
: Ensure mounting of freevxfs filesystems is disabled (Scored)security_baseline::rules::common::sec_group_bak_perms
: Ensure permissions on /etc/group- are configured (Scored)security_baseline::rules::common::sec_group_passwd
: Ensure all groups in /etc/passwd exist in /etc/group (Scored)security_baseline::rules::common::sec_group_perms
: Ensure permissions on /etc/group are configured (Scored)security_baseline::rules::common::sec_grub_passwd
: Ensure bootloader password is set (Scored)security_baseline::rules::common::sec_hfs
: Ensure mounting of hfs filesystems is disabled (Scored)security_baseline::rules::common::sec_hfsplus
: Ensure mounting of hfsplus filesystems is disabled (Scored)security_baseline::rules::common::sec_home_dirs_exist
: Ensure all users' home directories exist (Scored)security_baseline::rules::common::sec_home_dirs_owner
: Ensure users own their home directories (Scored)security_baseline::rules::common::sec_home_dirs_perms
: Ensure users' home directories permissions are 750 or more restrictive (Scored)security_baseline::rules::common::sec_home_nodev
: Ensure nodev option set on /home partition (Scored)security_baseline::rules::common::sec_home_partition
: Ensure separate partition exists for /home (Scored)security_baseline::rules::common::sec_hosts_allow
: Ensure /etc/hosts.allow is configured (Scored)security_baseline::rules::common::sec_hosts_allow_perms
: Ensure permissions on /etc/hosts.allow are configured (Scored)security_baseline::rules::common::sec_hosts_deny
: Ensure /etc/hosts.deny is configured (Scored)security_baseline::rules::common::sec_hosts_deny_perms
: Ensure /etc/hosts.deny is configured (Scored)security_baseline::rules::common::sec_ip6tables
: Ensure iptables is installed (Scored)security_baseline::rules::common::sec_ip6tables_deny_policy
: Ensure default deny firewall policy (Scored)security_baseline::rules::common::sec_ip6tables_loopback
: Ensure loopback traffic is configured (Scored)security_baseline::rules::common::sec_ip6tables_open_ports
: Ensure firewall rules exist for all open ports (Scored)security_baseline::rules::common::sec_ip6tables_outbound_established
: Ensure outbound and established connections are configured (Not Scored)security_baseline::rules::common::sec_iptables
: Ensure iptables is installed (Scored)security_baseline::rules::common::sec_iptables_deny_policy
: Ensure default deny firewall policy (Scored)security_baseline::rules::common::sec_iptables_loopback
: Ensure loopback traffic is configured (Scored)security_baseline::rules::common::sec_iptables_open_ports
: Ensure firewall rules exist for all open ports (Scored)security_baseline::rules::common::sec_iptables_outbound_established
: Ensure outbound and established connections are configured (Not Scored)security_baseline::rules::common::sec_issue
: Ensure local login warning banner is configured properly (Not Scored)security_baseline::rules::common::sec_issue_net
: Ensure remote login warning banner is configured properly (Not Scored)security_baseline::rules::common::sec_issue_net_permissions
: Ensure permissions on /etc/issue.net are configured (Not Scored)security_baseline::rules::common::sec_issue_permissions
: Ensure permissions on /etc/issue are configured (Scored)security_baseline::rules::common::sec_jffs2
: Ensure mounting of jffs2 filesystems is disabled (Scored)security_baseline::rules::common::sec_journald_compress_logs
: Ensure journald is configured to compress large log files (Scored)security_baseline::rules::common::sec_journald_persistent_disk
: Ensure journald is configured to write logfiles to persistent disk (Scored)security_baseline::rules::common::sec_journald_rsyslog
: Ensure journald is configured to send logs to rsyslog (Scored)security_baseline::rules::common::sec_kernel_aslr
: Ensure address space layout randomization (ASLR) is enabled (Scored)security_baseline::rules::common::sec_ldap
: Ensure LDAP server is not enabled (Scored)security_baseline::rules::common::sec_legacy_plus_group
: Ensure no legacy "+" entries exist in /etc/group (Scored)security_baseline::rules::common::sec_legacy_plus_passwd
: Ensure no legacy "+" entries exist in /etc/passwd (Scored)security_baseline::rules::common::sec_legacy_plus_shadow
: Ensure no legacy "+" entries exist in /etc/shadow (Scored)security_baseline::rules::common::sec_logrotate
: Ensure logrotate is configured (Not Scored)security_baseline::rules::common::sec_motd
: Ensure message of the day is configured properly (Scored)security_baseline::rules::common::sec_motd_permissions
: A short summary of the purpose of this classsecurity_baseline::rules::common::sec_net_dccp
: Ensure DCCP is disabled (Not Scored)security_baseline::rules::common::sec_net_rds
: Ensure RDS is disabled (Not Scored)security_baseline::rules::common::sec_net_sctp
: Ensure SCTP is disabled (Not Scored)security_baseline::rules::common::sec_net_tipc
: Ensure TIPC is disabled (Not Scored)security_baseline::rules::common::sec_network_bogus_icmp_responses
: Ensure bogus ICMP responses are ignored (Scored)security_baseline::rules::common::sec_network_broadcast_icmp_requests
: Ensure broadcast ICMP requests are ignored (Scored)security_baseline::rules::common::sec_network_icmp_redirect
: Ensure ICMP redirects are not accepted (Scored)security_baseline::rules::common::sec_network_ip_forward
: Ensure IP forwarding is disabled (Scored)security_baseline::rules::common::sec_network_ipv6_disable
: Ensure IPv6 is disabled (Not Scored)security_baseline::rules::common::sec_network_ipv6_redirects
: Ensure ICMP redirects are not accepted (Scored)security_baseline::rules::common::sec_network_ipv6_router_advertisements
: Ensure IPv6 router advertisements are not accepted (Not Scored)security_baseline::rules::common::sec_network_log_suspicious_packets
: Ensure secure ICMP redirects are not accepted (Scored)security_baseline::rules::common::sec_network_packet_redirect
: Ensure packet redirect sending is disabled (Scored)security_baseline::rules::common::sec_network_reverse_path_filtering
: Ensure Reverse Path Filtering is enabled (Scored)security_baseline::rules::common::sec_network_secure_icmp_redirect
: Ensure secure ICMP redirects are not accepted (Scored)security_baseline::rules::common::sec_network_source_route
: Ensure source routed packets are not accepted (Scored)security_baseline::rules::common::sec_network_tcp_syn_cookies
: Ensure TCP SYN Cookies is enabled (Scored)security_baseline::rules::common::sec_nfs_rpcbind
: Ensure NFS and RPC are not enabled (Scored)security_baseline::rules::common::sec_nodev_removable
: Ensure nodev option set on removable media partitions (Not Scored)security_baseline::rules::common::sec_noexec_removable
: Ensure noexec option set on removable media partitions (Not Scored)security_baseline::rules::common::sec_nosuid_removable
: Ensure nosuid option set on removable media partitions (Not Scored)security_baseline::rules::common::sec_ntalk
: Ensure talk server is not enabled (Scored)security_baseline::rules::common::sec_ntp_daemon_chrony
: Ensure chrony is configured (Scored)security_baseline::rules::common::sec_ntp_usage
: Ensure time synchronization is in use (Not Scored)security_baseline::rules::common::sec_nx_support
: Ensure XD/NX support is enabled (Not Scored)security_baseline::rules::common::sec_passwd_bak_perms
: Ensure permissions on /etc/passwd- are configured (Scored)security_baseline::rules::common::sec_passwd_expiration
: Ensure password expiration is 365 days or less (Scored)security_baseline::rules::common::sec_passwd_inactive_days
: Ensure inactive password lock is 30 days or less (Scored)security_baseline::rules::common::sec_passwd_last_change_in_past
: Ensure all users last password change date is in the past (Scored)security_baseline::rules::common::sec_passwd_min_days
: Ensure minimum days between password changes is 7 or more (Scored)security_baseline::rules::common::sec_passwd_perms
: Ensure permissions on /etc/passwd are configured (Scored)security_baseline::rules::common::sec_passwd_warn_days
: Ensure password expiration warning days is 7 or more (Scored)security_baseline::rules::common::sec_root_gid
: Ensure default group for the root account is GID 0 (Scored)security_baseline::rules::common::sec_root_path_integrity
: Ensure root PATH Integrity (Scored)security_baseline::rules::common::sec_rsyslog_installed
: Ensure rsyslog or syslog-ng is installed (Scored)security_baseline::rules::common::sec_rsyslog_service
: Ensure rsyslog Service is enabled (Scored)security_baseline::rules::common::sec_security_patches
: Ensure updates, patches, and additional security software are installed (Scored)security_baseline::rules::common::sec_selinux_policy
: 1.6.1.3security_baseline::rules::common::sec_selinux_state
: Ensure the SELinux state is enforcing (Scored)security_baseline::rules::common::sec_service_xinetd
: Ensure xinetd is not enabled (Scored)security_baseline::rules::common::sec_smb
: Ensure DHCP Server is not enabled (Scored)security_baseline::rules::common::sec_snmpd
: Ensure SNMP Server is not enabled (Scored)security_baseline::rules::common::sec_squashfs
: Ensure mounting of squashfs filesystems is disabled (Scored)security_baseline::rules::common::sec_squid
: Ensure HTTP Proxy Server is not enabled (Scored)security_baseline::rules::common::sec_sshd_banner
: Ensure SSH warning banner is configured (Scored)security_baseline::rules::common::sec_sshd_ciphers
: Ensure only strong Ciphers are used (Scored)security_baseline::rules::common::sec_sshd_config_file
: Ensure permissions on /etc/ssh/sshd_config are configured (Scored)security_baseline::rules::common::sec_sshd_crypto_policy
: Ensure system-wide crypto policy is not over-ridden (Scored)security_baseline::rules::common::sec_sshd_empty_passwords
: A short summary of the purpose of this classsecurity_baseline::rules::common::sec_sshd_hostbased_authentication
: Ensure SSH HostbasedAuthentication is disabled (Scored)security_baseline::rules::common::sec_sshd_ignore_rhosts
: Ensure SSH IgnoreRhosts is enabled (Scored)security_baseline::rules::common::sec_sshd_kex
: # Ensure only strong Key Exchange algorithms are used (Scored)security_baseline::rules::common::sec_sshd_limit_access
: Ensure SSH access is limited (Scored)security_baseline::rules::common::sec_sshd_login_gracetime
: Ensure SSH LoginGraceTime is set to one minute or less (Scored)security_baseline::rules::common::sec_sshd_loglevel
: Ensure SSH LogLevel is set to INFO (Scored)security_baseline::rules::common::sec_sshd_macs
: Ensure only approved MAC algorithms are used (Scored)security_baseline::rules::common::sec_sshd_max_auth_tries
: Ensure SSH MaxAuthTries is set to 4 or less (Scored)security_baseline::rules::common::sec_sshd_max_sessions
: Ensure SSH MaxSessions is set to 4 or less (Scored)security_baseline::rules::common::sec_sshd_max_startups
: Ensure SSH MaxStartups is configured (Scored)security_baseline::rules::common::sec_sshd_private_keys
: Ensure permissions on SSH private host key files are configured (Scored)security_baseline::rules::common::sec_sshd_protocol
: Ensure SSH Protocol is set to 2 (Scored)security_baseline::rules::common::sec_sshd_public_keys
: Ensure permissions on SSH public host key files are configured (Scored)security_baseline::rules::common::sec_sshd_root_login
: Ensure SSH root login is disabled (Scored)security_baseline::rules::common::sec_sshd_tcp_forwarding
: Ensure SSH AllowTcpForwarding is disabled (Scored)security_baseline::rules::common::sec_sshd_timeouts
: Ensure SSH Idle Timeout Interval is configured (Scored)security_baseline::rules::common::sec_sshd_use_pam
: Ensure SSH PAM is enabled (Scored)security_baseline::rules::common::sec_sshd_user_environment
: Ensure SSH PermitUserEnvironment is disabled (Scored)security_baseline::rules::common::sec_sshd_x11_forward
: Ensure SSH X11 forwarding is disabled (Scored)security_baseline::rules::common::sec_sticky_world_writeable
: Ensure sticky bit is set on all world-writable directories (Scored)security_baseline::rules::common::sec_sudo_logfile
: Ensure sudo log file exists (Scored)security_baseline::rules::common::sec_sudo_package
: Ensure sudo is installed (Scored)security_baseline::rules::common::sec_sudo_use_pty
: Ensure sudo commands use pty (Scored)security_baseline::rules::common::sec_syslog_installed
: Ensure rsyslog or syslog-ng is installed (Scored)security_baseline::rules::common::sec_syslog_logfile_perms
: Ensure permissions on all logfiles are configured (Scored)security_baseline::rules::common::sec_syslogng_default_file_perms
: Ensure syslog-ng default file permissions configured (Scored)security_baseline::rules::common::sec_syslogng_logging
: Ensure logging is configured (Not Scored)security_baseline::rules::common::sec_syslogng_remote_logs
: Ensure syslog-ng is configured to send logs to a remote log host (Not Scored)security_baseline::rules::common::sec_syslogng_remote_syslog
: Ensure remote syslog-ng messages are only accepted on designated log hosts (Not Scored)security_baseline::rules::common::sec_syslogng_service
: Ensure syslog-ng service is enabled (Scored)security_baseline::rules::common::sec_system_file_perms
: Audit system file permissions (Not Scored)security_baseline::rules::common::sec_telnet
: Ensure telnet server is not enabled (Scored)security_baseline::rules::common::sec_tftp
: Ensure telnet server is not enabled (Scored)security_baseline::rules::common::sec_tmp_nodev
: Ensure nodev option set on /tmp partition (Scored)security_baseline::rules::common::sec_tmp_noexec
: Ensure noexec option set on /tmp partition (Scored)security_baseline::rules::common::sec_tmp_nosuid
: Ensure nosuid option set on /tmp partition (Scored)security_baseline::rules::common::sec_tmp_partition
: Ensure separate partition exists for /tmp (Scored)security_baseline::rules::common::sec_tty_root_login
: Ensure root login is restricted to system console (Not Scored)security_baseline::rules::common::sec_udf
: Ensure mounting of udf filesystems is disabled (Scored)security_baseline::rules::common::sec_uid_0_root
: Ensure root is the only UID 0 account (Scored)security_baseline::rules::common::sec_unconfigured_daemons
: Ensure no unconfined daemons exist (Scored)security_baseline::rules::common::sec_unconfigured_services
: Ensure no unconfined services exist (Scored)security_baseline::rules::common::sec_ungrouped_files
: Ensure no ungrouped files or directories exist (Scored)security_baseline::rules::common::sec_unowned_files
: Ensure no unowned files or directories exist (Scored)security_baseline::rules::common::sec_usb_storage
: Disable USB Storage (Scored)security_baseline::rules::common::sec_users_dot_files
: Ensure users' dot files are not group or world writable (Scored)security_baseline::rules::common::sec_users_forward_files
: Ensure no users have .forward files (Scored)security_baseline::rules::common::sec_users_netrc_files
: Ensure no users have .netrc files (Scored)security_baseline::rules::common::sec_users_netrc_files_write
: Ensure users' .netrc Files are not group or world accessible (Scored)security_baseline::rules::common::sec_users_rhosts
: Ensure no users have .rhosts files (Scored)security_baseline::rules::common::sec_var_log_audit_partition
: Ensure separate partition exists for /var/log/audit (Scored)security_baseline::rules::common::sec_var_log_partition
: Ensure separate partition exists for /var/log (Scored)security_baseline::rules::common::sec_var_partition
: Ensure separate partition exists for /var (Scored)security_baseline::rules::common::sec_var_tmp_nodev
: Ensure nodev option set on /var/tmp partition (Scored)security_baseline::rules::common::sec_var_tmp_noexec
: Ensure noexec option set on /var/tmp partition (Scored)security_baseline::rules::common::sec_var_tmp_nosuid
: Ensure nosuid option set on /var/tmp partition (Scored)security_baseline::rules::common::sec_var_tmp_partition
: Ensure separate partition exists for /var/tmp (Scored)security_baseline::rules::common::sec_vfat
: Ensure mounting of FAT filesystems is disabled (Scored)security_baseline::rules::common::sec_vsftpd
: Ensure FTP Server is not enabled (Scored)security_baseline::rules::common::sec_world_writable_files
: Ensure no world writable files exist (Scored)security_baseline::rules::debian::sec_access_control
: Ensure AppArmor are installed (Scored)security_baseline::rules::debian::sec_aide
: Ensure AIDE is installed (Scored)security_baseline::rules::debian::sec_aide_cron
: Ensure filesystem integrity is regularly checked (Scored)security_baseline::rules::debian::sec_apparmor_bootloader
: Ensure AppArmor is not disabled in bootloader configuration (Scored)security_baseline::rules::debian::sec_apparmor_profiles
: Ensure all AppArmor Profiles are enforcing (Scored)security_baseline::rules::debian::sec_apparmor_profiles_complain_enforce
: Ensure all AppArmor Profiles are in enforce or complain mode (Scored)security_baseline::rules::debian::sec_apt_gpg_keys
: Ensure GPG keys are configured (Not Scored)security_baseline::rules::debian::sec_apt_gpgcheck
: Ensure GPG keys are configured (Not Scored)security_baseline::rules::debian::sec_apt_repolist
: Ensure package manager repositories are configured (Not Scored)security_baseline::rules::debian::sec_auditd_package
: Ensure auditd is installed (Scored)security_baseline::rules::debian::sec_auditd_service
: Ensure auditd service is enabled (Scored).security_baseline::rules::debian::sec_auditd_system_locale
: Ensure events that modify the system's network environment are collected (Scored)security_baseline::rules::debian::sec_crond
: Ensure cron daemon is enabled (Scored)security_baseline::rules::debian::sec_disable_ipv6
: Disable IPv6 (Not Scored)security_baseline::rules::debian::sec_exim4
: A short summary of the purpose of this classsecurity_baseline::rules::debian::sec_firewall_package
: Ensure a Firewall package is installed (Scored)security_baseline::rules::debian::sec_gdm
:security_baseline::rules::debian::sec_grub
: Ensure permissions on bootloader config are configured (Scored)security_baseline::rules::debian::sec_gshadow_bak_perms
: Ensure permissions on /etc/gshadow- are configured (Scored)security_baseline::rules::debian::sec_gshadow_perms
: Ensure permissions on /etc/gshadow are configured (Scored)security_baseline::rules::debian::sec_httpd
: Ensure HTTP server is not enabled (Scored)security_baseline::rules::debian::sec_interctive_boot
: Ensure interactive boot is not enabled (Not Scored)security_baseline::rules::debian::sec_nftables_base_chains
: Ensure base chains exist (Scored)security_baseline::rules::debian::sec_nftables_default_deny
: Ensure default deny firewall policy (Scored)security_baseline::rules::debian::sec_nftables_flush_iptables
: Ensure iptables are flushed (Not Scored)security_baseline::rules::debian::sec_nftables_loopback
: Ensure loopback traffic is configured (Scored)security_baseline::rules::debian::sec_nftables_outbound_established
: Ensure outbound and established connections are configured (Not Scored)security_baseline::rules::debian::sec_nftables_persistence
: Ensure nftables rules are permanent (Scored)security_baseline::rules::debian::sec_nftables_service
: Ensure nftables service is enabled (Scored)security_baseline::rules::debian::sec_nftables_table
: A short summary of the purpose of this classsecurity_baseline::rules::debian::sec_nis
: Ensure NIS Server is not enabled (Scored)security_baseline::rules::debian::sec_nis_client
: Ensure NIS Client is not installed (Scored)security_baseline::rules::debian::sec_ntp_daemon_ntp
: Ensure ntp is configured (Scored)security_baseline::rules::debian::sec_openldap_client
: Ensure LDAP client is not installed (Scored)security_baseline::rules::debian::sec_package_xinetd
: Ensure xinetd is not installed (Scored)security_baseline::rules::debian::sec_pam_lockout
: Ensure lockout for failed password attempts is configured (Scored)security_baseline::rules::debian::sec_pam_old_passwords
: Ensure password reuse is limited (Scored)security_baseline::rules::debian::sec_pam_passwd_sha512
: Ensure password hashing algorithm is SHA-512 (Scored)security_baseline::rules::debian::sec_pam_pw_requirements
: Ensure password creation requirements are configured (Scored)security_baseline::rules::debian::sec_prelink
: Ensure prelink is disabled (Scored)security_baseline::rules::debian::sec_restrict_su
: Ensure access to the su command is restricted (Scored)security_baseline::rules::debian::sec_rsh
: Ensure rsh server is not enabled (Scored)security_baseline::rules::debian::sec_rsh_client
: Ensure rsh client is not installed (Scored)security_baseline::rules::debian::sec_rsyncd
: Ensure talk server is not enabled (Scored)security_baseline::rules::debian::sec_rsyslog_default_file_perms
: Ensure rsyslog default file permissions configured (Scored)security_baseline::rules::debian::sec_rsyslog_logging
: Ensure logging is configured (Not Scored)security_baseline::rules::debian::sec_rsyslog_remote_logs
: Ensure rsyslog is configured to send logs to a remote log host (Scored)security_baseline::rules::debian::sec_rsyslog_remote_syslog
: Ensure remote rsyslog messages are only accepted on designated log hosts. (Not Scored)security_baseline::rules::debian::sec_selinux_bootloader
: Ensure SELinux is not disabled in bootloader configuration (Scored)security_baseline::rules::debian::sec_service_chargen
: Ensure chargen services are not enabled (Scored)security_baseline::rules::debian::sec_service_daytime
: Ensure daytime services are not enabled (Scored)security_baseline::rules::debian::sec_service_discard
: Ensure discard services are not enabled (Scored)security_baseline::rules::debian::sec_service_echo
: Ensure echo services are not enabled (Scored)security_baseline::rules::debian::sec_service_openbsd_inetd
: Ensure openbsd-inetd is not installed (Scored)security_baseline::rules::debian::sec_service_talk
: Ensure talk server is not enabled (Scored)security_baseline::rules::debian::sec_service_telnet
: Ensure telnet server is not enabled (Scored)security_baseline::rules::debian::sec_service_tftp
: Ensure tftp server is not enabled (Scored)security_baseline::rules::debian::sec_service_time
: Ensure time services are not enabled (Scored)security_baseline::rules::debian::sec_shadow_bak_perms
: Ensure permissions on /etc/shadow- are configured (Scored)security_baseline::rules::debian::sec_shadow_group
: Ensure shadow group is empty (Scored)security_baseline::rules::debian::sec_shadow_perms
: Ensure permissions on /etc/shadow are configured (Scored)security_baseline::rules::debian::sec_shell_nologin
: Ensure system accounts are non-login (Scored)security_baseline::rules::debian::sec_single_user_mode
: Ensure authentication required for single user mode (Scored)security_baseline::rules::debian::sec_systemd_timesyncd
: Ensure systemd-timesyncd is configured (Not Scored)security_baseline::rules::debian::sec_talk_client
: Ensure talk client is not installed (Scored)security_baseline::rules::debian::sec_tcp_wrappers
: Ensure TCP Wrappers is installed (Scored)security_baseline::rules::debian::sec_telnet_client
: Ensure telnet client is not installed (Scored)security_baseline::rules::debian::sec_timeout_setting
: Ensure default user shell timeout is 900 seconds or less (Scored)security_baseline::rules::debian::sec_ufw_default_deny
: Ensure default deny firewall policy (Scored)security_baseline::rules::debian::sec_ufw_loopback
: Ensure loopback traffic is configured (Scored)security_baseline::rules::debian::sec_ufw_open_ports
: Ensure firewall rules exist for all open ports (Not Scored)security_baseline::rules::debian::sec_ufw_outbound
: Ensure outbound connections are configured (Not Scored)security_baseline::rules::debian::sec_ufw_service
: Ensure ufw service is enabled (Scored)security_baseline::rules::debian::sec_umask_setting
: Ensure default user umask is 027 or more restrictive (Scored)security_baseline::rules::debian::sec_wlan_interfaces
: Ensure wireless interfaces are disabled (Not Scored)security_baseline::rules::debian::sec_x11_installed
: Ensure X Window System is not installed (Scored)security_baseline::rules::redhat::sec_aide
: Ensure AIDE is installed (Scored)security_baseline::rules::redhat::sec_aide_cron
: Ensure filesystem integrity is regularly checked (Scored)security_baseline::rules::redhat::sec_auditd_package
: Ensure auditd is installed (Scored)security_baseline::rules::redhat::sec_auditd_service
: Ensure auditd service is enabled (Scored).security_baseline::rules::redhat::sec_auditd_system_locale
: Ensure events that modify the system's network environment are collected (Scored)security_baseline::rules::redhat::sec_authselect_profile
: Create custom authselect profile (Scored)security_baseline::rules::redhat::sec_authselect_profile_select
: Select authselect profile (Scored)security_baseline::rules::redhat::sec_authselect_with_faillock
: Ensure authselect includes with-faillock (Scored)security_baseline::rules::redhat::sec_crond
: Ensure cron daemon is enabled (Scored)security_baseline::rules::redhat::sec_crypto_policy
: Ensure system-wide crypto policy is FUTURE or FIPS (Scored)security_baseline::rules::redhat::sec_crypto_policy_legacy
: Ensure system-wide crypto policy is not legacy (Scored)security_baseline::rules::redhat::sec_disable_ipv6
: Disable IPv6 (Not Scored)security_baseline::rules::redhat::sec_firewall_package
: Ensure a Firewall package is installed (Scored)security_baseline::rules::redhat::sec_firewalld_default_zone
: Ensure default zone is set (Scored)security_baseline::rules::redhat::sec_firewalld_iface_assignment
: Ensure network interfaces are assigned to appropriate zone (Not Scored)security_baseline::rules::redhat::sec_firewalld_iptables_service
: Ensure iptables is not enabled (Scored)security_baseline::rules::redhat::sec_firewalld_nftables_service
: Ensure nftables is not enabled (Scored)security_baseline::rules::redhat::sec_firewalld_ports_and_services
: A short summary of the purpose of this classsecurity_baseline::rules::redhat::sec_firewalld_service
: Ensure firewalld service is enabled and running (Scored)security_baseline::rules::redhat::sec_gdm
:security_baseline::rules::redhat::sec_grub
: Ensure permissions on bootloader config are configured (Scored)security_baseline::rules::redhat::sec_grub2
: Ensure permissions on bootloader config are configured (Scored)security_baseline::rules::redhat::sec_gshadow_bak_perms
: Ensure permissions on /etc/gshadow- are configured (Scored)security_baseline::rules::redhat::sec_gshadow_perms
: Ensure permissions on /etc/gshadow are configured (Scored)security_baseline::rules::redhat::sec_httpd
: Ensure HTTP server is not enabled (Scored)security_baseline::rules::redhat::sec_interactive_boot
: Ensure interactive boot is not enabled (Scored)security_baseline::rules::redhat::sec_mcstrans
: Ensure the MCS Translation Service (mcstrans) is not installed (Scored)security_baseline::rules::redhat::sec_nftables_base_chains
: Ensure base chains exist (Scored)security_baseline::rules::redhat::sec_nftables_default_deny
: Ensure default deny firewall policy (Scored)security_baseline::rules::redhat::sec_nftables_flush_iptables
: Ensure iptables are flushed (Not Scored)security_baseline::rules::redhat::sec_nftables_loopback
: Ensure loopback traffic is configured (Scored)security_baseline::rules::redhat::sec_nftables_outbound_established
: Ensure outbound and established connections are configured (Not Scored)security_baseline::rules::redhat::sec_nftables_persistence
: Ensure nftables rules are permanent (Scored)security_baseline::rules::redhat::sec_nftables_service
: Ensure nftables service is enabled (Scored)security_baseline::rules::redhat::sec_nftables_table
: A short summary of the purpose of this classsecurity_baseline::rules::redhat::sec_nis
: Ensure NIS Server is not enabled (Scored)security_baseline::rules::redhat::sec_nis_client
: Ensure NIS Client is not installed (Scored)security_baseline::rules::redhat::sec_ntp_daemon_ntp
: Ensure ntp is configured (Scored)security_baseline::rules::redhat::sec_openldap_client
: Ensure LDAP client is not installed (Scored)security_baseline::rules::redhat::sec_package_xinetd
: Ensure xinetd is not installed (Scored)security_baseline::rules::redhat::sec_pam_lockout
: Ensure lockout for failed password attempts is configured (Scored)security_baseline::rules::redhat::sec_pam_old_passwords
: Ensure password reuse is limited (Scored)security_baseline::rules::redhat::sec_pam_passwd_sha512
: Ensure password hashing algorithm is SHA-512 (Scored)security_baseline::rules::redhat::sec_pam_pw_requirements
: Ensure password creation requirements are configured (Scored)security_baseline::rules::redhat::sec_prelink
: Ensure prelink is disabled (Scored)security_baseline::rules::redhat::sec_restrict_su
: Ensure access to the su command is restricted (Scored)security_baseline::rules::redhat::sec_rhnsd
: Disable the rhnsd Daemon (Not Scored)security_baseline::rules::redhat::sec_rhsm_identity
: Ensure Red Hat Subscription Manager connection is configured (Not Scored)security_baseline::rules::redhat::sec_rsh
: Ensure rsh server is not enabled (Scored)security_baseline::rules::redhat::sec_rsh_client
: Ensure rsh client is not installed (Scored)security_baseline::rules::redhat::sec_rsyncd
: Ensure talk server is not enabled (Scored)security_baseline::rules::redhat::sec_rsyslog_default_file_perms
: Ensure rsyslog default file permissions configured (Scored)security_baseline::rules::redhat::sec_rsyslog_logging
: Ensure logging is configured (Not Scored)security_baseline::rules::redhat::sec_rsyslog_remote_logs
: Ensure rsyslog is configured to send logs to a remote log host (Scored)security_baseline::rules::redhat::sec_rsyslog_remote_syslog
: Ensure remote rsyslog messages are only accepted on designated log hosts. (Not Scored)security_baseline::rules::redhat::sec_selinux
: Ensure SELinux is installed (Scored)security_baseline::rules::redhat::sec_selinux_bootloader
: Ensure SELinux is not disabled in bootloader configuration (Scored)security_baseline::rules::redhat::sec_service_chargen
: Ensure chargen services are not enabled (Scored)security_baseline::rules::redhat::sec_service_daytime
: Ensure daytime services are not enabled (Scored)security_baseline::rules::redhat::sec_service_discard
: Ensure discard services are not enabled (Scored)security_baseline::rules::redhat::sec_service_echo
: Ensure echo services are not enabled (Scored)security_baseline::rules::redhat::sec_service_talk
: Ensure talk server is not enabled (Scored)security_baseline::rules::redhat::sec_service_telnet
: Ensure telnet server is not enabled (Scored)security_baseline::rules::redhat::sec_service_tftp
: Ensure tftp server is not enabled (Scored)security_baseline::rules::redhat::sec_service_time
: Ensure time services are not enabled (Scored)security_baseline::rules::redhat::sec_setroubleshoot
: Ensure SETroubleshoot is not installed (Scored)security_baseline::rules::redhat::sec_shadow_bak_perms
: Ensure permissions on /etc/shadow- are configured (Scored)security_baseline::rules::redhat::sec_shadow_group
: Ensure shadow group is empty (Scored)security_baseline::rules::redhat::sec_shadow_perms
: Ensure permissions on /etc/shadow are configured (Scored)security_baseline::rules::redhat::sec_shell_nologin
: Ensure system accounts are non-login (Scored)security_baseline::rules::redhat::sec_single_user_mode
: Ensure authentication required for single user mode (Scored)security_baseline::rules::redhat::sec_talk_client
: Ensure talk client is not installed (Scored)security_baseline::rules::redhat::sec_tcp_wrappers
: Ensure TCP Wrappers is installed (Scored)security_baseline::rules::redhat::sec_telnet_client
: Ensure telnet client is not installed (Scored)security_baseline::rules::redhat::sec_timeout_setting
: Ensure default user shell timeout is 900 seconds or less (Scored)security_baseline::rules::redhat::sec_umask_setting
: Ensure default user umask is 027 or more restrictive (Scored)security_baseline::rules::redhat::sec_wlan_interfaces
: Ensure wireless interfaces are disabled (Not Scored)security_baseline::rules::redhat::sec_x11_installed
: Ensure X Window System is not installed (Scored)security_baseline::rules::redhat::sec_yum_gpg_keys
: Ensure GPG keys are configured (Not Scored)security_baseline::rules::redhat::sec_yum_gpgcheck
: Ensure gpgcheck is globally activated (Scored)security_baseline::rules::redhat::sec_yum_repolist
: Ensure package manager repositories are configured (Not Scored)security_baseline::rules::sles::sec_access_control
: Ensure SELinux or AppArmor are installed (Scored)security_baseline::rules::sles::sec_aide
: Ensure AIDE is installed (Scored)security_baseline::rules::sles::sec_aide_cron
: Ensure filesystem integrity is regularly checked (Scored)security_baseline::rules::sles::sec_apparmor_bootloader
: Ensure AppArmor is not disabled in bootloader configuration (Scored)security_baseline::rules::sles::sec_apparmor_profiles
: Ensure all AppArmor Profiles are enforcing (Scored)security_baseline::rules::sles::sec_auditd_service
: Ensure auditd service is enabled (Scored).security_baseline::rules::sles::sec_auditd_system_locale
: Ensure events that modify the system's network environment are collected (Scored)security_baseline::rules::sles::sec_crond
: Ensure cron daemon is enabled (Scored)security_baseline::rules::sles::sec_gdm
:security_baseline::rules::sles::sec_grub2
: Ensure permissions on bootloader config are configured (Scored)security_baseline::rules::sles::sec_gshadow_bak_perms
: Ensure permissions on /etc/gshadow- are configured (Scored)security_baseline::rules::sles::sec_gshadow_perms
: Ensure permissions on /etc/gshadow are configured (Scored)security_baseline::rules::sles::sec_httpd
: Ensure HTTP server is not enabled (Scored)security_baseline::rules::sles::sec_mcstrans
: Ensure the MCS Translation Service (mcstrans) is not installed (Scored)security_baseline::rules::sles::sec_nis
: Ensure NIS Server is not enabled (Scored)security_baseline::rules::sles::sec_nis_client
: Ensure NIS Client is not installed (Scored)security_baseline::rules::sles::sec_ntp_daemon_ntp
: Ensure ntp is configured (Scored)security_baseline::rules::sles::sec_openldap_client
: Ensure LDAP client is not installed (Scored)security_baseline::rules::sles::sec_pam_lockout
: Ensure lockout for failed password attempts is configured (Scored)security_baseline::rules::sles::sec_pam_old_passwords
: Ensure password reuse is limited (Scored)security_baseline::rules::sles::sec_pam_passwd_sha512
: Ensure password hashing algorithm is SHA-512 (Scored)security_baseline::rules::sles::sec_pam_pw_requirements
: Ensure password creation requirements are configured (Scored)security_baseline::rules::sles::sec_prelink
: Ensure prelink is disabled (Scored)security_baseline::rules::sles::sec_restrict_su
: Ensure access to the su command is restricted (Scored)security_baseline::rules::sles::sec_rsh
: Ensure rsh server is not enabled (Scored)security_baseline::rules::sles::sec_rsh_client
: Ensure rsh client is not installed (Scored)security_baseline::rules::sles::sec_rsyncd
: Ensure talk server is not enabled (Scored)security_baseline::rules::sles::sec_rsyslog_default_file_perms
: Ensure rsyslog default file permissions configured (Scored)security_baseline::rules::sles::sec_rsyslog_logging
: Ensure logging is configured (Not Scored)security_baseline::rules::sles::sec_rsyslog_remote_logs
: Ensure rsyslog is configured to send logs to a remote log host (Scored)security_baseline::rules::sles::sec_rsyslog_remote_syslog
: Ensure remote rsyslog messages are only accepted on designated log hosts. (Not Scored)security_baseline::rules::sles::sec_selinux_bootloader
: Ensure SELinux is not disabled in bootloader configuration (Scored)security_baseline::rules::sles::sec_service_chargen
: Ensure chargen services are not enabled (Scored)security_baseline::rules::sles::sec_service_daytime
: Ensure daytime services are not enabled (Scored)security_baseline::rules::sles::sec_service_discard
: Ensure discard services are not enabled (Scored)security_baseline::rules::sles::sec_service_echo
: Ensure echo services are not enabled (Scored)security_baseline::rules::sles::sec_service_tftp
: Ensure tftp server is not enabled (Scored)security_baseline::rules::sles::sec_service_time
: Ensure time services are not enabled (Scored)security_baseline::rules::sles::sec_setroubleshoot
: Ensure SETroubleshoot is not installed (Scored)security_baseline::rules::sles::sec_shadow_bak_perms
: Ensure permissions on /etc/shadow- are configured (Scored)security_baseline::rules::sles::sec_shadow_group
: Ensure shadow group is empty (Scored)security_baseline::rules::sles::sec_shadow_perms
: Ensure permissions on /etc/shadow are configured (Scored)security_baseline::rules::sles::sec_shell_nologin
: Ensure system accounts are non-login (Scored)security_baseline::rules::sles::sec_single_user_mode
: Ensure authentication required for single user mode (Scored)security_baseline::rules::sles::sec_talk_client
: Ensure talk client is not installed (Scored)security_baseline::rules::sles::sec_tcp_wrappers
: Ensure TCP Wrappers is installed (Scored)security_baseline::rules::sles::sec_telnet_client
: Ensure telnet client is not installed (Scored)security_baseline::rules::sles::sec_timeout_setting
: Ensure default user shell timeout is 900 seconds or less (Scored)security_baseline::rules::sles::sec_umask_setting
: Ensure default user umask is 027 or more restrictive (Scored)security_baseline::rules::sles::sec_wlan_interfaces
: Ensure wireless interfaces are disabled (Not Scored)security_baseline::rules::sles::sec_x11_installed
: Ensure X Window System is not installed (Scored)security_baseline::rules::sles::sec_zypper_gpg_keys
: Ensure GPG keys are configured (Not Scored)security_baseline::rules::sles::sec_zypper_gpgcheck
: Ensure GPG keys are configured (Not Scored)security_baseline::rules::sles::sec_zypper_repolist
: Ensure package manager repositories are configured (Not Scored)
Defined types
security_baseline::logging
: Write concat fragments to a logfilesecurity_baseline::sec_check
: Check a security rule.security_baseline::set_mount_options
: Change mount options
Classes
security_baseline
Define a complete security baseline and monitor the rules. The definition of the baseline can be done in Hiera. The purpose of the module is to give the ability to setup complete security baseline which not necessarily have to stick to an industry security guide like the CIS benchmarks. One main purpose is to ensure the module can be extended by further security settings and monitorings without changing the code of this module.
The easiest way to use the module is to put all rule data into a hiera file. For more information please coinsult the README file.
Examples
include security_baseline
Parameters
The following parameters are available in the security_baseline
class.
baseline_version
Data type: String
Version of the security ruleset
rules
Data type: Hash
Hash containing the whole ruleset
debug
Data type: Boolean
Switch debug output on
Default value: false
log_info
Data type: Boolean
Switch logging with level info on
Default value: false
logfile
Data type: String
Logfile to write messages to
Default value: '/opt/puppetlabs/facter/facts.d/security_baseline_findings.yaml'
summary_report
Data type: String
File to write a summary report yaml report
Default value: '/opt/puppetlabs/facter/facts.d/security_baseline_summary.yaml'
auditd_suid_include
Data type: Array
Directories to search for suid and sgid programs. Can not be set together with auditd_suid_exclude
Default value: []
auditd_suid_exclude
Data type: Array
Directories to exclude from search for suid and sgid programs. Can not be set together with auditd_suid_include
Default value: []
auditd_rules_file
Data type: String
Files to write the auditd rules facts into.
Default value: '/etc/audit/rules.d/sec_baseline_auditd.rules'
reporting_type
Data type: Enum['fact', 'csv_file']
Select to type of reporting. ca currently be set to csv or fact.
Default value: 'fact'
reports
Data type: Enum['summary', 'details', 'both']
Select which reports to produce.
Default value: 'both'
auditd_rules_fact_file
Data type: String
The file where to store the facts for auditd rules
Default value: '/opt/puppetlabs/facter/facts.d/security_baseline_auditd.yaml'
suid_fact_file
Data type: String
The file where to store the suid programms
Default value: '/opt/puppetlabs/facter/facts.d/security_baseline_suid_programs.yaml'
sgid_fact_file
Data type: String
The file where to store the sgid programs
Default value: '/opt/puppetlabs/facter/facts.d/security_baseline_sgid_programs.yaml'
update_postrun_command
Data type: Boolean
Update Puppet agent post run command
Default value: true
fact_upload_command
Data type: String
Command to use to upload facts to Puppet master
Default value: '/usr/share/security_baseline/bin/fact_upload.sh'
reboot
Data type: Boolean
If set to true and there are classes with the reboot flag set to true a reboot will be performef if these classed fire
Default value: false
reboot_timeout
Data type: Integer
Timeout until reboot will take place
Default value: 60
ruby_binary
Data type: String
Ruby binary to run the summary Ruby script
Default value: '/opt/puppetlabs/puppet/bin/ruby'
dry_run
Data type: Boolean
All rules run not in enforcement mode if set to true.
Default value: false
configure_logstash
Data type: Boolean
If set to true the facts indirevtor to logstash will be configured. This requires Puppet Enterprise
Default value: false
logstash_host
Data type: String
The logstash host to send facts to
Default value: ''
logstash_port
Data type: Integer
The port logstash is listening
Default value: 5999
logstash_timeout
Data type: Integer
The timeout for sendding facts to logstash.
Default value: 1000
exclude_dirs_unowned_files
Data type: Array
Array of directories to exclude from the search for onowned files
Default value: []
exclude_dirs_world_writeable
Data type: Array
Array of directories to exclude from the search for world writable files
Default value: []
exclude_dirs_sticky_ww
Data type: Array
Araay of directories to exclude from the search for world writable directories with sticky bit
Default value: []
security_baseline::auditd_suid_rules_cron
Create a fact with all auditd rules needed to monitor the usage of s-bit programs.
Examples
include security_baseline::auditd_suid_rules_cron
Parameters
The following parameters are available in the security_baseline::auditd_suid_rules_cron
class.
include
Data type: Array
Directories to include into search. Can not be set together with parameter exclude.
Default value: []
exclude
Data type: Array
Directories to exclude from search. Can not be set together with parameter include.
Default value: []
auditd_rules_fact_file
Data type: String
File to write the auditd rules facts into.
Default value: '/tmp/auditd.facts.yaml'
suid_fact_file
Data type: String
File to write the suid program facts into.
Default value: '/tmp/suid_programs.yaml'
sgid_fact_file
Data type: String
File to etite the sgid program facts into.
Default value: '/tmp/sgid_progras.yaml'
security_baseline::config
Run configuration stuff
Examples
include security_baseline::config
Parameters
The following parameters are available in the security_baseline::config
class.
update_postrun_command
Data type: Boolean
Update the post run command of Puppet agent
Default value: true
fact_upload_command
Data type: String
Command to use to upload facts to Puppet master
Default value: '/usr/local/bin/puppet facts upload'
reporting_type
Data type: Enum['fact', 'csv_file']
Selects the report type to be written
Default value: 'fact'
logfile
Data type: String
Facts log file to use for summary
Default value: ''
summary
Data type: String
Facts file to write with summary data
Default value: ''
ruby_binary
Data type: String
The ruby binary to use
Default value: '/opt/puppetlabs/puppet/bin/ruby'
security_baseline::fact_indirector
Setup sending summary facts from secutity_baseline to logstash
Examples
include security_baseline::fact_indirector
Parameters
The following parameters are available in the security_baseline::fact_indirector
class.
configure_logstash
Data type: Boolean
If set to true the facts indirevtor to logstash will be configured. This requires Puppet Enterprise
Default value: false
logstash_host
Data type: String
The logstash host to send facts to
logstash_port
Data type: Integer
The port logstash is listening
Default value: 5999
logstash_timeout
Data type: Integer
The timeout for sendding facts to logstash.
Default value: 1000
security_baseline::services
Services e. g. reload sshd
Examples
include security_baseline::services
security_baseline::sticky_world_writabe_cron
Create a cron ob for the search for world writable directories with sticky bit set.
Examples
include security_baseline::sticky_world_writabe_cron
Parameters
The following parameters are available in the security_baseline::sticky_world_writabe_cron
class.
dirs_to_exclude
Data type: Array
Array of directories to exclude from search.
Default value: []
security_baseline::system_file_permissions_cron
Create a cron job for sytem file permissions
Examples
include security_baseline::system_file_permissions_cron
security_baseline::unowned_files_cron
Create a cron job to run a search for unowned files.
Examples
include security_baseline::unowned_files_cron
Parameters
The following parameters are available in the security_baseline::unowned_files_cron
class.
dirs_to_exclude
Data type: Array
Array of directories to exclude from search.
Default value: []
security_baseline::world_writeable_files_cron
Create a cron job for world writable files search.
Examples
include security_baseline::world_writeable_files_cron
Parameters
The following parameters are available in the security_baseline::world_writeable_files_cron
class.
dirs_to_exclude
Data type: Array
Array of directories to exclude from search.
Default value: []
Defined types
security_baseline::logging
Logging resource to write parts of the log.
Examples
security_baseline::logging { '1.1.1.1':
rulenr => '1.1.1.1',
rule => 'Test Rule',
desc => 'What ever description you like',
level => 'warning',
msg => 'A suitable message',
rulestate => 'fail'
}
Parameters
The following parameters are available in the security_baseline::logging
defined type.
rulenr
Data type: Any
Number of the rule to be written into the log
rule
Data type: Any
A name for the rule to be written into the logfile
desc
Data type: Any
Description of the rule
log_level
Data type: Any
Log level for the message in the log
msg
Data type: Any
The log message
rulestate
Data type: Any
Status of the rule, e. g. compliant or fail
level
Data type: Any
The level from the CIS benchmark
scored
Data type: Any
Flag if rule is scored
reporting_type
Data type: Enum['fact', 'csv_file']
Type of report.
Default value: 'fact'
security_baseline::sec_check
Check a security rule, enforce it or just monitor it and log into the Puppet log files.
Examples
security_baseline::sec_check { '1.1.2':
rulename => 'tmp_partition',
active => true,
description => 'The /tmp directory ...',
enforce => true,
class => '::security_baseline::rules::sec_tmp_partition',
check => {
fact_name => 'tmp_partition',
fact_value => '/tmp',
},
message => 'Not in compliance with rule 1.1.2. No seperate directory for /tmp.',
log_level => 'warning',
}
Parameters
The following parameters are available in the security_baseline::sec_check
defined type.
rulename
Data type: String
Name of the rule for loggting
active
Data type: Boolean
Sets a rule active or inactive. Inactive rules will not be used
Default value: true
level
Data type: Integer
Profile level
Default value: 1
scored
Data type: Boolean
Indicates if a ruile is scored or not
Default value: true
description
Data type: String
Information about the rule. Currently only for information.
enforce
Data type: Boolean
Sets rule enforcemt. If set to true, code will be exeuted to bring the system into a comliant state.
class
Data type: String
Class implementing the rule. This might be a class with this module but can reference an external class as well. This makes this module highly generic.
check
Data type: Hash
A hash describing the fact for the test and the desired value
message
Data type: String
Message to print into the log
Default value: ''
log_level
Data type: String
Loglevel for the message
Default value: 'warning'
reboot
Data type: Boolean
If set to true and global reboot is allowed a class firing with this flag will trigger a reboot after catalog apply has finished
Default value: false
config_data
Data type: Optional[Hash]
Additional configuration data, especially if external security modules are used to provide configuration data to those modules
Default value: {}
security_baseline::set_mount_options
Change the mount options of a mountpoint.
Examples
security_baseline::set_mount_options {
mountpoint => '/home',
mountoptions => 'nodev',
}
Parameters
The following parameters are available in the security_baseline::set_mount_options
defined type.
mountpoint
Data type: String
Mountpoint to work on
mountoptions
Data type: String
Options to set
Changelog
Release 0.9.2
- changed value names in summary report
- introduced dry run mode which overwrites the enforcing settings of each rule. If dry run ist set to true no rule will be enforced.
- use resource defaults for packages and services
- added facts indirector to send summary facts to logstash
- added some Litmus acceptance testing
- fixed a bug in package handling in Debian like OS
Release 0.9.1
- Added summary report fact
- Bug fix: fixed sed commands for Redhat/CentOS 8
- fixed some check rules
- moved fact for cron restrictions into a function to remove duplicated code
Release 0.9.0
Initial release including Redhat 6, 7, 8, CentOS 6, 7, 8, Suse SLES 12, Debian 9 and Ubuntu 18.04.
Dependencies
- puppetlabs-stdlib (>= 4.0.0 < 7.0.0)
- puppetlabs-concat (>= 5.0.0 < 7.0.0)
- camptocamp-kmod (2.3.1)
- camptocamp-augeas (1.8.0)
- ipcrm-echo (0.1.6)
- herculesteam-augeasproviders_pam (2.2.1)
- herculesteam-augeasproviders_core (2.5.0)
- herculesteam-augeasproviders_sysctl (2.3.1)
- herculesteam-augeasproviders_grub (3.1.0)
- herculesteam/augeasproviders_shellvar (3.1.0)
- herculesteam/augeasproviders_mounttab (2.1.1)
- purplehazech-syslogng (0.7.1)
- puppet-rsyslog (3.3.0)
- puppet-logrotate (4.0.0)
- puppetlabs-ntp (8.0.0)
- jorten-chrony (0.3.0)
- puppetlabs-augeas_core (1.0.5)
- puppetlabs-firewall (2.2.0)
- puppetlabs-mount_providers (2.0.1)
- puppetlabs-reboot (2.3.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2019 puppet-modules Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.