inspec 2.0.32 → 2.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +101 -101
- data/CHANGELOG.md +2991 -2970
- data/Gemfile +55 -55
- data/LICENSE +14 -14
- data/MAINTAINERS.md +33 -33
- data/MAINTAINERS.toml +52 -52
- data/README.md +446 -437
- data/Rakefile +322 -322
- data/bin/inspec +12 -12
- data/docs/.gitignore +2 -2
- data/docs/README.md +40 -40
- data/docs/dsl_inspec.md +258 -258
- data/docs/dsl_resource.md +93 -93
- data/docs/glossary.md +99 -99
- data/docs/habitat.md +191 -191
- data/docs/inspec_and_friends.md +107 -107
- data/docs/matchers.md +169 -168
- data/docs/migration.md +293 -293
- data/docs/platforms.md +118 -118
- data/docs/plugin_kitchen_inspec.md +49 -49
- data/docs/profiles.md +370 -370
- data/docs/reporters.md +105 -105
- data/docs/resources/aide_conf.md.erb +75 -75
- data/docs/resources/apache.md.erb +67 -67
- data/docs/resources/apache_conf.md.erb +68 -68
- data/docs/resources/apt.md.erb +71 -71
- data/docs/resources/audit_policy.md.erb +47 -47
- data/docs/resources/auditd.md.erb +79 -79
- data/docs/resources/auditd_conf.md.erb +68 -68
- data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
- data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
- data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
- data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
- data/docs/resources/aws_config_recorder.md.erb +71 -71
- data/docs/resources/aws_ec2_instance.md.erb +106 -106
- data/docs/resources/aws_iam_access_key.md.erb +123 -123
- data/docs/resources/aws_iam_access_keys.md.erb +198 -198
- data/docs/resources/aws_iam_group.md.erb +46 -46
- data/docs/resources/aws_iam_groups.md.erb +43 -43
- data/docs/resources/aws_iam_password_policy.md.erb +76 -76
- data/docs/resources/aws_iam_policies.md.erb +82 -82
- data/docs/resources/aws_iam_policy.md.erb +144 -144
- data/docs/resources/aws_iam_role.md.erb +63 -63
- data/docs/resources/aws_iam_root_user.md.erb +58 -58
- data/docs/resources/aws_iam_user.md.erb +64 -64
- data/docs/resources/aws_iam_users.md.erb +89 -89
- data/docs/resources/aws_kms_keys.md.erb +84 -84
- data/docs/resources/aws_route_table.md.erb +47 -47
- data/docs/resources/aws_s3_bucket.md.erb +134 -134
- data/docs/resources/aws_security_group.md.erb +151 -151
- data/docs/resources/aws_security_groups.md.erb +91 -91
- data/docs/resources/aws_sns_topic.md.erb +63 -63
- data/docs/resources/aws_subnet.md.erb +133 -133
- data/docs/resources/aws_subnets.md.erb +126 -126
- data/docs/resources/aws_vpc.md.erb +120 -120
- data/docs/resources/aws_vpcs.md.erb +48 -48
- data/docs/resources/azure_generic_resource.md.erb +170 -170
- data/docs/resources/azure_resource_group.md.erb +284 -284
- data/docs/resources/azure_virtual_machine.md.erb +347 -347
- data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -224
- data/docs/resources/bash.md.erb +75 -75
- data/docs/resources/bond.md.erb +90 -90
- data/docs/resources/bridge.md.erb +57 -57
- data/docs/resources/bsd_service.md.erb +67 -67
- data/docs/resources/command.md.erb +138 -138
- data/docs/resources/cpan.md.erb +79 -79
- data/docs/resources/cran.md.erb +64 -64
- data/docs/resources/crontab.md.erb +89 -89
- data/docs/resources/csv.md.erb +54 -54
- data/docs/resources/dh_params.md.erb +205 -205
- data/docs/resources/directory.md.erb +30 -30
- data/docs/resources/docker.md.erb +219 -219
- data/docs/resources/docker_container.md.erb +104 -104
- data/docs/resources/docker_image.md.erb +94 -94
- data/docs/resources/docker_service.md.erb +114 -114
- data/docs/resources/elasticsearch.md.erb +242 -242
- data/docs/resources/etc_fstab.md.erb +125 -125
- data/docs/resources/etc_group.md.erb +75 -75
- data/docs/resources/etc_hosts.md.erb +78 -78
- data/docs/resources/etc_hosts_allow.md.erb +74 -74
- data/docs/resources/etc_hosts_deny.md.erb +74 -74
- data/docs/resources/file.md.erb +526 -515
- data/docs/resources/filesystem.md.erb +41 -41
- data/docs/resources/firewalld.md.erb +107 -107
- data/docs/resources/gem.md.erb +79 -79
- data/docs/resources/group.md.erb +61 -61
- data/docs/resources/grub_conf.md.erb +101 -101
- data/docs/resources/host.md.erb +86 -86
- data/docs/resources/http.md.erb +196 -196
- data/docs/resources/iis_app.md.erb +122 -122
- data/docs/resources/iis_site.md.erb +135 -135
- data/docs/resources/inetd_conf.md.erb +94 -94
- data/docs/resources/ini.md.erb +76 -76
- data/docs/resources/interface.md.erb +58 -58
- data/docs/resources/iptables.md.erb +64 -64
- data/docs/resources/json.md.erb +63 -63
- data/docs/resources/kernel_module.md.erb +120 -120
- data/docs/resources/kernel_parameter.md.erb +53 -53
- data/docs/resources/key_rsa.md.erb +85 -85
- data/docs/resources/launchd_service.md.erb +57 -57
- data/docs/resources/limits_conf.md.erb +75 -75
- data/docs/resources/login_def.md.erb +71 -71
- data/docs/resources/mount.md.erb +69 -69
- data/docs/resources/mssql_session.md.erb +60 -60
- data/docs/resources/mysql_conf.md.erb +99 -99
- data/docs/resources/mysql_session.md.erb +74 -74
- data/docs/resources/nginx.md.erb +79 -79
- data/docs/resources/nginx_conf.md.erb +128 -128
- data/docs/resources/npm.md.erb +60 -60
- data/docs/resources/ntp_conf.md.erb +60 -60
- data/docs/resources/oneget.md.erb +53 -53
- data/docs/resources/oracledb_session.md.erb +52 -52
- data/docs/resources/os.md.erb +141 -141
- data/docs/resources/os_env.md.erb +78 -78
- data/docs/resources/package.md.erb +120 -120
- data/docs/resources/packages.md.erb +67 -67
- data/docs/resources/parse_config.md.erb +103 -103
- data/docs/resources/parse_config_file.md.erb +138 -138
- data/docs/resources/passwd.md.erb +141 -141
- data/docs/resources/pip.md.erb +67 -67
- data/docs/resources/port.md.erb +137 -137
- data/docs/resources/postgres_conf.md.erb +79 -79
- data/docs/resources/postgres_hba_conf.md.erb +93 -93
- data/docs/resources/postgres_ident_conf.md.erb +76 -76
- data/docs/resources/postgres_session.md.erb +69 -69
- data/docs/resources/powershell.md.erb +102 -102
- data/docs/resources/processes.md.erb +109 -109
- data/docs/resources/rabbitmq_config.md.erb +41 -41
- data/docs/resources/registry_key.md.erb +158 -158
- data/docs/resources/runit_service.md.erb +57 -57
- data/docs/resources/security_policy.md.erb +47 -47
- data/docs/resources/service.md.erb +121 -121
- data/docs/resources/shadow.md.erb +146 -144
- data/docs/resources/ssh_config.md.erb +80 -80
- data/docs/resources/sshd_config.md.erb +83 -83
- data/docs/resources/ssl.md.erb +119 -119
- data/docs/resources/sys_info.md.erb +42 -42
- data/docs/resources/systemd_service.md.erb +57 -57
- data/docs/resources/sysv_service.md.erb +57 -57
- data/docs/resources/upstart_service.md.erb +57 -57
- data/docs/resources/user.md.erb +140 -140
- data/docs/resources/users.md.erb +127 -127
- data/docs/resources/vbscript.md.erb +55 -55
- data/docs/resources/virtualization.md.erb +57 -57
- data/docs/resources/windows_feature.md.erb +47 -47
- data/docs/resources/windows_hotfix.md.erb +53 -53
- data/docs/resources/windows_task.md.erb +95 -95
- data/docs/resources/wmi.md.erb +81 -81
- data/docs/resources/x509_certificate.md.erb +151 -151
- data/docs/resources/xinetd_conf.md.erb +156 -156
- data/docs/resources/xml.md.erb +85 -85
- data/docs/resources/yaml.md.erb +69 -69
- data/docs/resources/yum.md.erb +98 -98
- data/docs/resources/zfs_dataset.md.erb +53 -53
- data/docs/resources/zfs_pool.md.erb +47 -47
- data/docs/ruby_usage.md +203 -203
- data/docs/shared/matcher_be.md.erb +1 -1
- data/docs/shared/matcher_cmp.md.erb +43 -43
- data/docs/shared/matcher_eq.md.erb +3 -3
- data/docs/shared/matcher_include.md.erb +1 -1
- data/docs/shared/matcher_match.md.erb +1 -1
- data/docs/shell.md +215 -215
- data/examples/README.md +8 -8
- data/examples/inheritance/README.md +65 -65
- data/examples/inheritance/controls/example.rb +14 -14
- data/examples/inheritance/inspec.yml +15 -15
- data/examples/kitchen-ansible/.kitchen.yml +25 -25
- data/examples/kitchen-ansible/Gemfile +19 -19
- data/examples/kitchen-ansible/README.md +53 -53
- data/examples/kitchen-ansible/files/nginx.repo +6 -6
- data/examples/kitchen-ansible/tasks/main.yml +16 -16
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-chef/.kitchen.yml +20 -20
- data/examples/kitchen-chef/Berksfile +3 -3
- data/examples/kitchen-chef/Gemfile +19 -19
- data/examples/kitchen-chef/README.md +27 -27
- data/examples/kitchen-chef/metadata.rb +7 -7
- data/examples/kitchen-chef/recipes/default.rb +6 -6
- data/examples/kitchen-chef/recipes/nginx.rb +30 -30
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-puppet/.kitchen.yml +22 -22
- data/examples/kitchen-puppet/Gemfile +20 -20
- data/examples/kitchen-puppet/Puppetfile +25 -25
- data/examples/kitchen-puppet/README.md +53 -53
- data/examples/kitchen-puppet/manifests/site.pp +33 -33
- data/examples/kitchen-puppet/metadata.json +11 -11
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
- data/examples/meta-profile/README.md +37 -37
- data/examples/meta-profile/controls/example.rb +13 -13
- data/examples/meta-profile/inspec.yml +13 -13
- data/examples/profile-attribute.yml +2 -2
- data/examples/profile-attribute/README.md +14 -14
- data/examples/profile-attribute/controls/example.rb +11 -11
- data/examples/profile-attribute/inspec.yml +8 -8
- data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
- data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
- data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
- data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
- data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
- data/examples/profile-aws/inspec.yml +11 -11
- data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
- data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
- data/examples/profile-azure/inspec.yml +11 -11
- data/examples/profile-sensitive/README.md +29 -29
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
- data/examples/profile-sensitive/controls/sensitive.rb +9 -9
- data/examples/profile-sensitive/inspec.yml +8 -8
- data/examples/profile/README.md +48 -48
- data/examples/profile/controls/example.rb +23 -23
- data/examples/profile/controls/gordon.rb +36 -36
- data/examples/profile/controls/meta.rb +34 -34
- data/examples/profile/inspec.yml +10 -10
- data/examples/profile/libraries/gordon_config.rb +53 -53
- data/inspec.gemspec +47 -47
- data/lib/bundles/README.md +3 -3
- data/lib/bundles/inspec-artifact.rb +7 -7
- data/lib/bundles/inspec-artifact/README.md +1 -1
- data/lib/bundles/inspec-artifact/cli.rb +277 -277
- data/lib/bundles/inspec-compliance.rb +16 -16
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
- data/lib/bundles/inspec-compliance/README.md +185 -185
- data/lib/bundles/inspec-compliance/api.rb +316 -316
- data/lib/bundles/inspec-compliance/api/login.rb +152 -152
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
- data/lib/bundles/inspec-compliance/cli.rb +254 -254
- data/lib/bundles/inspec-compliance/configuration.rb +103 -103
- data/lib/bundles/inspec-compliance/http.rb +86 -86
- data/lib/bundles/inspec-compliance/support.rb +36 -36
- data/lib/bundles/inspec-compliance/target.rb +98 -98
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
- data/lib/bundles/inspec-habitat.rb +12 -12
- data/lib/bundles/inspec-habitat/cli.rb +36 -36
- data/lib/bundles/inspec-habitat/log.rb +10 -10
- data/lib/bundles/inspec-habitat/profile.rb +390 -390
- data/lib/bundles/inspec-init.rb +8 -8
- data/lib/bundles/inspec-init/README.md +31 -31
- data/lib/bundles/inspec-init/cli.rb +97 -97
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
- data/lib/bundles/inspec-supermarket.rb +13 -13
- data/lib/bundles/inspec-supermarket/README.md +45 -45
- data/lib/bundles/inspec-supermarket/api.rb +84 -84
- data/lib/bundles/inspec-supermarket/cli.rb +73 -73
- data/lib/bundles/inspec-supermarket/target.rb +34 -34
- data/lib/fetchers/git.rb +163 -163
- data/lib/fetchers/local.rb +74 -74
- data/lib/fetchers/mock.rb +35 -35
- data/lib/fetchers/url.rb +204 -204
- data/lib/inspec.rb +24 -24
- data/lib/inspec/archive/tar.rb +29 -29
- data/lib/inspec/archive/zip.rb +19 -19
- data/lib/inspec/backend.rb +92 -92
- data/lib/inspec/base_cli.rb +355 -350
- data/lib/inspec/cached_fetcher.rb +66 -66
- data/lib/inspec/cli.rb +292 -292
- data/lib/inspec/completions/bash.sh.erb +45 -45
- data/lib/inspec/completions/fish.sh.erb +34 -34
- data/lib/inspec/completions/zsh.sh.erb +61 -61
- data/lib/inspec/control_eval_context.rb +179 -179
- data/lib/inspec/dependencies/cache.rb +72 -72
- data/lib/inspec/dependencies/dependency_set.rb +92 -92
- data/lib/inspec/dependencies/lockfile.rb +115 -115
- data/lib/inspec/dependencies/requirement.rb +123 -123
- data/lib/inspec/dependencies/resolver.rb +86 -86
- data/lib/inspec/describe.rb +27 -27
- data/lib/inspec/dsl.rb +66 -66
- data/lib/inspec/dsl_shared.rb +33 -33
- data/lib/inspec/env_printer.rb +157 -157
- data/lib/inspec/errors.rb +13 -13
- data/lib/inspec/exceptions.rb +12 -12
- data/lib/inspec/expect.rb +45 -45
- data/lib/inspec/fetcher.rb +45 -45
- data/lib/inspec/file_provider.rb +275 -275
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +250 -250
- data/lib/inspec/formatters/json_rspec.rb +20 -20
- data/lib/inspec/formatters/show_progress.rb +12 -12
- data/lib/inspec/library_eval_context.rb +58 -58
- data/lib/inspec/log.rb +11 -11
- data/lib/inspec/metadata.rb +247 -247
- data/lib/inspec/method_source.rb +24 -24
- data/lib/inspec/objects.rb +14 -14
- data/lib/inspec/objects/attribute.rb +65 -65
- data/lib/inspec/objects/control.rb +61 -61
- data/lib/inspec/objects/describe.rb +92 -92
- data/lib/inspec/objects/each_loop.rb +36 -36
- data/lib/inspec/objects/list.rb +15 -15
- data/lib/inspec/objects/or_test.rb +40 -40
- data/lib/inspec/objects/ruby_helper.rb +15 -15
- data/lib/inspec/objects/tag.rb +27 -27
- data/lib/inspec/objects/test.rb +87 -87
- data/lib/inspec/objects/value.rb +27 -27
- data/lib/inspec/plugins.rb +60 -60
- data/lib/inspec/plugins/cli.rb +24 -24
- data/lib/inspec/plugins/fetcher.rb +86 -86
- data/lib/inspec/plugins/resource.rb +135 -135
- data/lib/inspec/plugins/secret.rb +15 -15
- data/lib/inspec/plugins/source_reader.rb +40 -40
- data/lib/inspec/polyfill.rb +12 -12
- data/lib/inspec/profile.rb +510 -510
- data/lib/inspec/profile_context.rb +207 -207
- data/lib/inspec/profile_vendor.rb +66 -66
- data/lib/inspec/reporters.rb +54 -50
- data/lib/inspec/reporters/base.rb +24 -24
- data/lib/inspec/reporters/cli.rb +356 -356
- data/lib/inspec/reporters/json.rb +116 -116
- data/lib/inspec/reporters/json_min.rb +48 -48
- data/lib/inspec/reporters/junit.rb +77 -77
- data/lib/inspec/require_loader.rb +33 -33
- data/lib/inspec/resource.rb +186 -186
- data/lib/inspec/rule.rb +266 -266
- data/lib/inspec/runner.rb +345 -345
- data/lib/inspec/runner_mock.rb +41 -41
- data/lib/inspec/runner_rspec.rb +175 -175
- data/lib/inspec/runtime_profile.rb +26 -26
- data/lib/inspec/schema.rb +213 -213
- data/lib/inspec/secrets.rb +19 -19
- data/lib/inspec/secrets/yaml.rb +30 -30
- data/lib/inspec/shell.rb +220 -220
- data/lib/inspec/shell_detector.rb +90 -90
- data/lib/inspec/source_reader.rb +29 -29
- data/lib/inspec/version.rb +8 -8
- data/lib/matchers/matchers.rb +339 -339
- data/lib/resource_support/aws.rb +41 -41
- data/lib/resource_support/aws/aws_backend_base.rb +12 -12
- data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
- data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
- data/lib/resources/aide_conf.rb +159 -160
- data/lib/resources/apache.rb +48 -48
- data/lib/resources/apache_conf.rb +156 -156
- data/lib/resources/apt.rb +149 -149
- data/lib/resources/audit_policy.rb +63 -63
- data/lib/resources/auditd.rb +231 -231
- data/lib/resources/auditd_conf.rb +55 -55
- data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
- data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
- data/lib/resources/aws/aws_config_recorder.rb +98 -98
- data/lib/resources/aws/aws_ec2_instance.rb +157 -157
- data/lib/resources/aws/aws_iam_access_key.rb +106 -106
- data/lib/resources/aws/aws_iam_access_keys.rb +149 -144
- data/lib/resources/aws/aws_iam_group.rb +56 -56
- data/lib/resources/aws/aws_iam_groups.rb +52 -45
- data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
- data/lib/resources/aws/aws_iam_policies.rb +53 -46
- data/lib/resources/aws/aws_iam_policy.rb +125 -119
- data/lib/resources/aws/aws_iam_role.rb +51 -51
- data/lib/resources/aws/aws_iam_root_user.rb +60 -60
- data/lib/resources/aws/aws_iam_user.rb +111 -111
- data/lib/resources/aws/aws_iam_users.rb +108 -96
- data/lib/resources/aws/aws_kms_keys.rb +53 -46
- data/lib/resources/aws/aws_route_table.rb +61 -61
- data/lib/resources/aws/aws_s3_bucket.rb +115 -115
- data/lib/resources/aws/aws_security_group.rb +93 -93
- data/lib/resources/aws/aws_security_groups.rb +68 -68
- data/lib/resources/aws/aws_sns_topic.rb +53 -53
- data/lib/resources/aws/aws_subnet.rb +88 -88
- data/lib/resources/aws/aws_subnets.rb +53 -53
- data/lib/resources/aws/aws_vpc.rb +69 -69
- data/lib/resources/aws/aws_vpcs.rb +45 -45
- data/lib/resources/azure/azure_backend.rb +377 -377
- data/lib/resources/azure/azure_generic_resource.rb +59 -59
- data/lib/resources/azure/azure_resource_group.rb +152 -152
- data/lib/resources/azure/azure_virtual_machine.rb +264 -264
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
- data/lib/resources/bash.rb +35 -35
- data/lib/resources/bond.rb +68 -68
- data/lib/resources/bridge.rb +122 -122
- data/lib/resources/command.rb +73 -69
- data/lib/resources/cpan.rb +58 -58
- data/lib/resources/cran.rb +64 -64
- data/lib/resources/crontab.rb +169 -170
- data/lib/resources/csv.rb +60 -60
- data/lib/resources/dh_params.rb +82 -82
- data/lib/resources/directory.rb +25 -25
- data/lib/resources/docker.rb +236 -236
- data/lib/resources/docker_container.rb +89 -89
- data/lib/resources/docker_image.rb +83 -83
- data/lib/resources/docker_object.rb +57 -57
- data/lib/resources/docker_service.rb +90 -90
- data/lib/resources/elasticsearch.rb +169 -169
- data/lib/resources/etc_fstab.rb +101 -102
- data/lib/resources/etc_group.rb +152 -156
- data/lib/resources/etc_hosts.rb +82 -81
- data/lib/resources/etc_hosts_allow_deny.rb +122 -123
- data/lib/resources/file.rb +298 -298
- data/lib/resources/filesystem.rb +31 -31
- data/lib/resources/firewalld.rb +143 -144
- data/lib/resources/gem.rb +70 -70
- data/lib/resources/groups.rb +215 -215
- data/lib/resources/grub_conf.rb +237 -237
- data/lib/resources/host.rb +306 -300
- data/lib/resources/http.rb +251 -250
- data/lib/resources/iis_app.rb +101 -104
- data/lib/resources/iis_site.rb +148 -148
- data/lib/resources/inetd_conf.rb +62 -62
- data/lib/resources/ini.rb +29 -29
- data/lib/resources/interface.rb +129 -129
- data/lib/resources/iptables.rb +80 -69
- data/lib/resources/json.rb +117 -117
- data/lib/resources/kernel_module.rb +107 -107
- data/lib/resources/kernel_parameter.rb +58 -58
- data/lib/resources/key_rsa.rb +67 -67
- data/lib/resources/limits_conf.rb +55 -55
- data/lib/resources/login_def.rb +66 -66
- data/lib/resources/mount.rb +88 -88
- data/lib/resources/mssql_session.rb +101 -101
- data/lib/resources/mysql.rb +81 -81
- data/lib/resources/mysql_conf.rb +134 -134
- data/lib/resources/mysql_session.rb +71 -71
- data/lib/resources/nginx.rb +96 -96
- data/lib/resources/nginx_conf.rb +227 -227
- data/lib/resources/npm.rb +48 -48
- data/lib/resources/ntp_conf.rb +58 -58
- data/lib/resources/oneget.rb +71 -71
- data/lib/resources/oracledb_session.rb +139 -139
- data/lib/resources/os.rb +36 -36
- data/lib/resources/os_env.rb +76 -76
- data/lib/resources/package.rb +370 -370
- data/lib/resources/packages.rb +111 -111
- data/lib/resources/parse_config.rb +116 -116
- data/lib/resources/passwd.rb +74 -74
- data/lib/resources/pip.rb +89 -89
- data/lib/resources/platform.rb +109 -109
- data/lib/resources/port.rb +771 -771
- data/lib/resources/postgres.rb +130 -130
- data/lib/resources/postgres_conf.rb +121 -121
- data/lib/resources/postgres_hba_conf.rb +99 -100
- data/lib/resources/postgres_ident_conf.rb +76 -78
- data/lib/resources/postgres_session.rb +71 -71
- data/lib/resources/powershell.rb +53 -57
- data/lib/resources/processes.rb +204 -204
- data/lib/resources/rabbitmq_conf.rb +52 -52
- data/lib/resources/registry_key.rb +296 -296
- data/lib/resources/security_policy.rb +180 -180
- data/lib/resources/service.rb +789 -789
- data/lib/resources/shadow.rb +146 -140
- data/lib/resources/ssh_conf.rb +102 -102
- data/lib/resources/ssl.rb +99 -99
- data/lib/resources/sys_info.rb +28 -28
- data/lib/resources/toml.rb +32 -32
- data/lib/resources/users.rb +654 -654
- data/lib/resources/vbscript.rb +68 -69
- data/lib/resources/virtualization.rb +247 -247
- data/lib/resources/windows_feature.rb +84 -84
- data/lib/resources/windows_hotfix.rb +35 -35
- data/lib/resources/windows_task.rb +102 -105
- data/lib/resources/wmi.rb +110 -113
- data/lib/resources/x509_certificate.rb +143 -143
- data/lib/resources/xinetd.rb +111 -111
- data/lib/resources/xml.rb +46 -46
- data/lib/resources/yaml.rb +47 -47
- data/lib/resources/yum.rb +180 -180
- data/lib/resources/zfs_dataset.rb +60 -60
- data/lib/resources/zfs_pool.rb +49 -49
- data/lib/source_readers/flat.rb +39 -39
- data/lib/source_readers/inspec.rb +75 -75
- data/lib/utils/command_wrapper.rb +27 -27
- data/lib/utils/convert.rb +12 -12
- data/lib/utils/database_helpers.rb +77 -77
- data/lib/utils/erlang_parser.rb +192 -192
- data/lib/utils/filter.rb +272 -272
- data/lib/utils/filter_array.rb +27 -27
- data/lib/utils/find_files.rb +44 -44
- data/lib/utils/hash.rb +41 -41
- data/lib/utils/json_log.rb +18 -18
- data/lib/utils/latest_version.rb +22 -22
- data/lib/utils/modulator.rb +12 -12
- data/lib/utils/nginx_parser.rb +85 -85
- data/lib/utils/object_traversal.rb +49 -49
- data/lib/utils/parser.rb +274 -274
- data/lib/utils/plugin_registry.rb +93 -93
- data/lib/utils/simpleconfig.rb +120 -120
- data/lib/utils/spdx.rb +13 -13
- data/lib/utils/spdx.txt +343 -343
- metadata +2 -2
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the security_policy Resource
|
|
3
|
-
platform: windows
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# security_policy
|
|
7
|
-
|
|
8
|
-
Use the `security_policy` InSpec audit resource to test security policies on the Windows platform.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
A `security_policy` resource block declares the name of a security policy and the value to be tested:
|
|
15
|
-
|
|
16
|
-
describe security_policy do
|
|
17
|
-
its('policy_name') { should eq 'value' }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
where
|
|
21
|
-
|
|
22
|
-
* `'policy_name'` must specify a security policy
|
|
23
|
-
* `{ should eq 'value' }` tests the value of `policy_name` against the value declared in the test
|
|
24
|
-
|
|
25
|
-
<br>
|
|
26
|
-
|
|
27
|
-
## Examples
|
|
28
|
-
|
|
29
|
-
The following examples show how to use this InSpec audit resource.
|
|
30
|
-
|
|
31
|
-
### Verify that only the Administrators group has remote access
|
|
32
|
-
|
|
33
|
-
describe security_policy do
|
|
34
|
-
its('SeRemoteInteractiveLogonRight') { should eq '*S-1-5-32-544' }
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
<br>
|
|
38
|
-
|
|
39
|
-
## Matchers
|
|
40
|
-
|
|
41
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
42
|
-
|
|
43
|
-
### policy_name
|
|
44
|
-
|
|
45
|
-
The `policy_name` matcher must be the name of a security policy:
|
|
46
|
-
|
|
47
|
-
its('SeNetworkLogonRight') { should eq '*S-1-5-11' }
|
|
1
|
+
---
|
|
2
|
+
title: About the security_policy Resource
|
|
3
|
+
platform: windows
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# security_policy
|
|
7
|
+
|
|
8
|
+
Use the `security_policy` InSpec audit resource to test security policies on the Windows platform.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
A `security_policy` resource block declares the name of a security policy and the value to be tested:
|
|
15
|
+
|
|
16
|
+
describe security_policy do
|
|
17
|
+
its('policy_name') { should eq 'value' }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
where
|
|
21
|
+
|
|
22
|
+
* `'policy_name'` must specify a security policy
|
|
23
|
+
* `{ should eq 'value' }` tests the value of `policy_name` against the value declared in the test
|
|
24
|
+
|
|
25
|
+
<br>
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
The following examples show how to use this InSpec audit resource.
|
|
30
|
+
|
|
31
|
+
### Verify that only the Administrators group has remote access
|
|
32
|
+
|
|
33
|
+
describe security_policy do
|
|
34
|
+
its('SeRemoteInteractiveLogonRight') { should eq '*S-1-5-32-544' }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
<br>
|
|
38
|
+
|
|
39
|
+
## Matchers
|
|
40
|
+
|
|
41
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
42
|
+
|
|
43
|
+
### policy_name
|
|
44
|
+
|
|
45
|
+
The `policy_name` matcher must be the name of a security policy:
|
|
46
|
+
|
|
47
|
+
its('SeNetworkLogonRight') { should eq '*S-1-5-11' }
|
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the service Resource
|
|
3
|
-
platform: os
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# service
|
|
7
|
-
|
|
8
|
-
Use the `service` InSpec audit resource to test if the named service is installed, running and/or enabled.
|
|
9
|
-
|
|
10
|
-
Under some circumstances, it may be necessary to specify the service manager by using one of the following service manager-specific resources: `bsd_service`, `launchd_service`, `runit_service`, `systemd_service`, `sysv_service`, or `upstart_service`. These resources are based on the `service` resource.
|
|
11
|
-
|
|
12
|
-
<br>
|
|
13
|
-
|
|
14
|
-
## Syntax
|
|
15
|
-
|
|
16
|
-
A `service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
17
|
-
|
|
18
|
-
describe service('service_name') do
|
|
19
|
-
it { should be_installed }
|
|
20
|
-
it { should be_enabled }
|
|
21
|
-
it { should be_running }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
where
|
|
25
|
-
|
|
26
|
-
* `('service_name')` must specify a service name
|
|
27
|
-
* `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource
|
|
28
|
-
|
|
29
|
-
<br>
|
|
30
|
-
|
|
31
|
-
## Examples
|
|
32
|
-
|
|
33
|
-
The following examples show how to use this InSpec audit resource.
|
|
34
|
-
|
|
35
|
-
### Test if the postgresql service is both running and enabled
|
|
36
|
-
|
|
37
|
-
describe service('postgresql') do
|
|
38
|
-
it { should be_enabled }
|
|
39
|
-
it { should be_running }
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
### Test if the mysql service is both running and enabled
|
|
43
|
-
|
|
44
|
-
describe service('mysqld') do
|
|
45
|
-
it { should be_enabled }
|
|
46
|
-
it { should be_running }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
### Test if ClamAV (an antivirus engine) is installed and running
|
|
50
|
-
|
|
51
|
-
describe package('clamav') do
|
|
52
|
-
it { should be_installed }
|
|
53
|
-
its('version') { should eq '0.98.7' }
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
describe service('clamd') do
|
|
57
|
-
it { should_not be_enabled }
|
|
58
|
-
it { should_not be_installed }
|
|
59
|
-
it { should_not be_running }
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
### Test Unix System V run levels
|
|
63
|
-
|
|
64
|
-
On targets that are using SystemV services, the existing run levels can also be checked:
|
|
65
|
-
|
|
66
|
-
describe service('sshd').runlevels do
|
|
67
|
-
its('keys') { should include(2) }
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
describe service('sshd').runlevels(2,4) do
|
|
71
|
-
it { should be_enabled }
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
### Override the service manager
|
|
75
|
-
|
|
76
|
-
Under some circumstances, it may be required to override the logic in place to select the right service manager. For example, to check a service managed by Upstart:
|
|
77
|
-
|
|
78
|
-
describe upstart_service('service') do
|
|
79
|
-
it { should_not be_enabled }
|
|
80
|
-
it { should be_installed }
|
|
81
|
-
it { should be_running }
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
This is also possible with `systemd_service`, `runit_service`, `sysv_service`, `bsd_service`, and `launchd_service`. Provide the control command when it is not to be found at the default location. For example, if the `sv` command for services managed by runit is not in the `PATH`:
|
|
85
|
-
|
|
86
|
-
describe runit_service('service', '/opt/chef/embedded/sbin/sv') do
|
|
87
|
-
it { should be_enabled }
|
|
88
|
-
it { should be_installed }
|
|
89
|
-
it { should be_running }
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
### Verify that IIS is running
|
|
93
|
-
|
|
94
|
-
describe service('W3SVC') do
|
|
95
|
-
it { should be_installed }
|
|
96
|
-
it { should be_running }
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
<br>
|
|
100
|
-
|
|
101
|
-
## Matchers
|
|
102
|
-
|
|
103
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
104
|
-
|
|
105
|
-
### be_enabled
|
|
106
|
-
|
|
107
|
-
The `be_enabled` matcher tests if the named service is enabled:
|
|
108
|
-
|
|
109
|
-
it { should be_enabled }
|
|
110
|
-
|
|
111
|
-
### be_installed
|
|
112
|
-
|
|
113
|
-
The `be_installed` matcher tests if the named service is installed:
|
|
114
|
-
|
|
115
|
-
it { should be_installed }
|
|
116
|
-
|
|
117
|
-
### be_running
|
|
118
|
-
|
|
119
|
-
The `be_running` matcher tests if the named service is running:
|
|
120
|
-
|
|
121
|
-
it { should be_running }
|
|
1
|
+
---
|
|
2
|
+
title: About the service Resource
|
|
3
|
+
platform: os
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# service
|
|
7
|
+
|
|
8
|
+
Use the `service` InSpec audit resource to test if the named service is installed, running and/or enabled.
|
|
9
|
+
|
|
10
|
+
Under some circumstances, it may be necessary to specify the service manager by using one of the following service manager-specific resources: `bsd_service`, `launchd_service`, `runit_service`, `systemd_service`, `sysv_service`, or `upstart_service`. These resources are based on the `service` resource.
|
|
11
|
+
|
|
12
|
+
<br>
|
|
13
|
+
|
|
14
|
+
## Syntax
|
|
15
|
+
|
|
16
|
+
A `service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
17
|
+
|
|
18
|
+
describe service('service_name') do
|
|
19
|
+
it { should be_installed }
|
|
20
|
+
it { should be_enabled }
|
|
21
|
+
it { should be_running }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
where
|
|
25
|
+
|
|
26
|
+
* `('service_name')` must specify a service name
|
|
27
|
+
* `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource
|
|
28
|
+
|
|
29
|
+
<br>
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
The following examples show how to use this InSpec audit resource.
|
|
34
|
+
|
|
35
|
+
### Test if the postgresql service is both running and enabled
|
|
36
|
+
|
|
37
|
+
describe service('postgresql') do
|
|
38
|
+
it { should be_enabled }
|
|
39
|
+
it { should be_running }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
### Test if the mysql service is both running and enabled
|
|
43
|
+
|
|
44
|
+
describe service('mysqld') do
|
|
45
|
+
it { should be_enabled }
|
|
46
|
+
it { should be_running }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
### Test if ClamAV (an antivirus engine) is installed and running
|
|
50
|
+
|
|
51
|
+
describe package('clamav') do
|
|
52
|
+
it { should be_installed }
|
|
53
|
+
its('version') { should eq '0.98.7' }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe service('clamd') do
|
|
57
|
+
it { should_not be_enabled }
|
|
58
|
+
it { should_not be_installed }
|
|
59
|
+
it { should_not be_running }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
### Test Unix System V run levels
|
|
63
|
+
|
|
64
|
+
On targets that are using SystemV services, the existing run levels can also be checked:
|
|
65
|
+
|
|
66
|
+
describe service('sshd').runlevels do
|
|
67
|
+
its('keys') { should include(2) }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe service('sshd').runlevels(2,4) do
|
|
71
|
+
it { should be_enabled }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
### Override the service manager
|
|
75
|
+
|
|
76
|
+
Under some circumstances, it may be required to override the logic in place to select the right service manager. For example, to check a service managed by Upstart:
|
|
77
|
+
|
|
78
|
+
describe upstart_service('service') do
|
|
79
|
+
it { should_not be_enabled }
|
|
80
|
+
it { should be_installed }
|
|
81
|
+
it { should be_running }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
This is also possible with `systemd_service`, `runit_service`, `sysv_service`, `bsd_service`, and `launchd_service`. Provide the control command when it is not to be found at the default location. For example, if the `sv` command for services managed by runit is not in the `PATH`:
|
|
85
|
+
|
|
86
|
+
describe runit_service('service', '/opt/chef/embedded/sbin/sv') do
|
|
87
|
+
it { should be_enabled }
|
|
88
|
+
it { should be_installed }
|
|
89
|
+
it { should be_running }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
### Verify that IIS is running
|
|
93
|
+
|
|
94
|
+
describe service('W3SVC') do
|
|
95
|
+
it { should be_installed }
|
|
96
|
+
it { should be_running }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
<br>
|
|
100
|
+
|
|
101
|
+
## Matchers
|
|
102
|
+
|
|
103
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
104
|
+
|
|
105
|
+
### be_enabled
|
|
106
|
+
|
|
107
|
+
The `be_enabled` matcher tests if the named service is enabled:
|
|
108
|
+
|
|
109
|
+
it { should be_enabled }
|
|
110
|
+
|
|
111
|
+
### be_installed
|
|
112
|
+
|
|
113
|
+
The `be_installed` matcher tests if the named service is installed:
|
|
114
|
+
|
|
115
|
+
it { should be_installed }
|
|
116
|
+
|
|
117
|
+
### be_running
|
|
118
|
+
|
|
119
|
+
The `be_running` matcher tests if the named service is running:
|
|
120
|
+
|
|
121
|
+
it { should be_running }
|
|
@@ -1,144 +1,146 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the shadow Resource
|
|
3
|
-
platform: linux
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# shadow
|
|
7
|
-
|
|
8
|
-
Use the `shadow` InSpec audit resource to test the contents of `/etc/shadow`, which contains password details that are only readable by the `root` user. The format for `/etc/shadow` includes:
|
|
9
|
-
|
|
10
|
-
* A username
|
|
11
|
-
* The password for that user (on newer systems passwords should be stored in `/etc/shadow` )
|
|
12
|
-
* The last time a password was changed
|
|
13
|
-
* The minimum number of days a password must exist, before it may be changed
|
|
14
|
-
* The maximum number of days after which a password must be changed
|
|
15
|
-
* The number of days a user is warned about an expiring password
|
|
16
|
-
* The number of days a user must be inactive before the user account is disabled
|
|
17
|
-
* The number of days a user account has been disabled
|
|
18
|
-
|
|
19
|
-
These entries are defined as a colon-delimited row in the file, one row per user:
|
|
20
|
-
|
|
21
|
-
dannos:Gb7crrO5CDF.:10063:0:99999:7:::
|
|
22
|
-
|
|
23
|
-
<br>
|
|
24
|
-
|
|
25
|
-
## Syntax
|
|
26
|
-
|
|
27
|
-
A `shadow` resource block declares one (or more) users and associated user information to be tested:
|
|
28
|
-
|
|
29
|
-
describe shadow do
|
|
30
|
-
its('
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
or with a single query:
|
|
34
|
-
|
|
35
|
-
describe shadow.
|
|
36
|
-
its('count') { should eq 1 }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
or with a filter:
|
|
40
|
-
|
|
41
|
-
describe shadow.filter(min_days: '0', max_days: '99999') do
|
|
42
|
-
its('count') { should eq 1 }
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
The following properties are available:
|
|
46
|
-
|
|
47
|
-
* `
|
|
48
|
-
* `
|
|
49
|
-
* `
|
|
50
|
-
* `min_days`
|
|
51
|
-
* `max_days`
|
|
52
|
-
* `warn_days`
|
|
53
|
-
* `inactive_days`
|
|
54
|
-
* `expiry_date`
|
|
55
|
-
* `reserved`
|
|
56
|
-
|
|
57
|
-
Properties can be used as a single query or can be joined together with the `.filter` method.
|
|
58
|
-
|
|
59
|
-
<br>
|
|
60
|
-
|
|
61
|
-
## Examples
|
|
62
|
-
|
|
63
|
-
The following examples show how to use this InSpec audit resource.
|
|
64
|
-
|
|
65
|
-
### Test for a forbidden user
|
|
66
|
-
|
|
67
|
-
describe shadow do
|
|
68
|
-
its('
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
### Test that a user appears one time
|
|
72
|
-
|
|
73
|
-
describe shadow.
|
|
74
|
-
its('
|
|
75
|
-
its('count') { should eq 1 }
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
<br>
|
|
79
|
-
|
|
80
|
-
## Matchers
|
|
81
|
-
|
|
82
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
83
|
-
|
|
84
|
-
### count
|
|
85
|
-
|
|
86
|
-
The `count` matcher tests the number of times the named user appears in `/etc/shadow`:
|
|
87
|
-
|
|
88
|
-
its('count') { should eq 1 }
|
|
89
|
-
|
|
90
|
-
This matcher is best used in conjunction with filters. For example:
|
|
91
|
-
|
|
92
|
-
describe shadow.
|
|
93
|
-
its('count') { should eq 1 }
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
###
|
|
97
|
-
|
|
98
|
-
The `
|
|
99
|
-
|
|
100
|
-
its('
|
|
101
|
-
|
|
102
|
-
###
|
|
103
|
-
|
|
104
|
-
The `
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
its('
|
|
133
|
-
|
|
134
|
-
###
|
|
135
|
-
|
|
136
|
-
The `
|
|
137
|
-
|
|
138
|
-
its('
|
|
139
|
-
|
|
140
|
-
###
|
|
141
|
-
|
|
142
|
-
The `
|
|
143
|
-
|
|
144
|
-
its('
|
|
1
|
+
---
|
|
2
|
+
title: About the shadow Resource
|
|
3
|
+
platform: linux
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# shadow
|
|
7
|
+
|
|
8
|
+
Use the `shadow` InSpec audit resource to test the contents of `/etc/shadow`, which contains password details that are only readable by the `root` user. The format for `/etc/shadow` includes:
|
|
9
|
+
|
|
10
|
+
* A username
|
|
11
|
+
* The password for that user (on newer systems passwords should be stored in `/etc/shadow` )
|
|
12
|
+
* The last time a password was changed
|
|
13
|
+
* The minimum number of days a password must exist, before it may be changed
|
|
14
|
+
* The maximum number of days after which a password must be changed
|
|
15
|
+
* The number of days a user is warned about an expiring password
|
|
16
|
+
* The number of days a user must be inactive before the user account is disabled
|
|
17
|
+
* The number of days a user account has been disabled
|
|
18
|
+
|
|
19
|
+
These entries are defined as a colon-delimited row in the file, one row per user:
|
|
20
|
+
|
|
21
|
+
dannos:Gb7crrO5CDF.:10063:0:99999:7:::
|
|
22
|
+
|
|
23
|
+
<br>
|
|
24
|
+
|
|
25
|
+
## Syntax
|
|
26
|
+
|
|
27
|
+
A `shadow` resource block declares one (or more) users and associated user information to be tested:
|
|
28
|
+
|
|
29
|
+
describe shadow do
|
|
30
|
+
its('user') { should_not include 'forbidden_user' }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
or with a single query:
|
|
34
|
+
|
|
35
|
+
describe shadow.user('root') do
|
|
36
|
+
its('count') { should eq 1 }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
or with a filter:
|
|
40
|
+
|
|
41
|
+
describe shadow.filter(min_days: '0', max_days: '99999') do
|
|
42
|
+
its('count') { should eq 1 }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
The following properties are available:
|
|
46
|
+
|
|
47
|
+
* `user`
|
|
48
|
+
* `password`
|
|
49
|
+
* `last_change`
|
|
50
|
+
* `min_days`
|
|
51
|
+
* `max_days`
|
|
52
|
+
* `warn_days`
|
|
53
|
+
* `inactive_days`
|
|
54
|
+
* `expiry_date`
|
|
55
|
+
* `reserved`
|
|
56
|
+
|
|
57
|
+
Properties can be used as a single query or can be joined together with the `.filter` method.
|
|
58
|
+
|
|
59
|
+
<br>
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
The following examples show how to use this InSpec audit resource.
|
|
64
|
+
|
|
65
|
+
### Test for a forbidden user
|
|
66
|
+
|
|
67
|
+
describe shadow do
|
|
68
|
+
its('user') { should_not include 'forbidden_user' }
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
### Test that a user appears one time
|
|
72
|
+
|
|
73
|
+
describe shadow.user('bin') do
|
|
74
|
+
its('password') { should cmp 'x' }
|
|
75
|
+
its('count') { should eq 1 }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
<br>
|
|
79
|
+
|
|
80
|
+
## Matchers
|
|
81
|
+
|
|
82
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
83
|
+
|
|
84
|
+
### count
|
|
85
|
+
|
|
86
|
+
The `count` matcher tests the number of times the named user appears in `/etc/shadow`:
|
|
87
|
+
|
|
88
|
+
its('count') { should eq 1 }
|
|
89
|
+
|
|
90
|
+
This matcher is best used in conjunction with filters. For example:
|
|
91
|
+
|
|
92
|
+
describe shadow.user('dannos') do
|
|
93
|
+
its('count') { should eq 1 }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
### user
|
|
97
|
+
|
|
98
|
+
The `user` matcher tests if the username exists `/etc/shadow`:
|
|
99
|
+
|
|
100
|
+
its('user') { should eq 'root' }
|
|
101
|
+
|
|
102
|
+
### password
|
|
103
|
+
|
|
104
|
+
The `password` matcher returns the encrypted password string from the shadow file. The returned string may not be an encrypted password, but rather a `*` or similar which indicates that direct logins are not allowed.
|
|
105
|
+
|
|
106
|
+
For example:
|
|
107
|
+
|
|
108
|
+
its('password') { should cmp '*' }
|
|
109
|
+
|
|
110
|
+
### last_change
|
|
111
|
+
|
|
112
|
+
The `last_change` matcher tests the last time a password was changed:
|
|
113
|
+
|
|
114
|
+
its('last_change') { should be_empty }
|
|
115
|
+
|
|
116
|
+
### min_days
|
|
117
|
+
|
|
118
|
+
The `min_days` matcher tests the minimum number of days a password must exist, before it may be changed:
|
|
119
|
+
|
|
120
|
+
its('min_days') { should eq 0 }
|
|
121
|
+
|
|
122
|
+
### max_days
|
|
123
|
+
|
|
124
|
+
The `max_days` matcher tests the maximum number of days after which a password must be changed:
|
|
125
|
+
|
|
126
|
+
its('max_days') { should eq 90 }
|
|
127
|
+
|
|
128
|
+
### warn_days
|
|
129
|
+
|
|
130
|
+
The `warn_days` matcher tests the number of days a user is warned about an expiring password:
|
|
131
|
+
|
|
132
|
+
its('warn_days') { should eq 7 }
|
|
133
|
+
|
|
134
|
+
### inactive_days
|
|
135
|
+
|
|
136
|
+
The `inactive_days` matcher tests the number of days a user must be inactive before the user account is disabled:
|
|
137
|
+
|
|
138
|
+
its('inactive_days') { should be_empty }
|
|
139
|
+
|
|
140
|
+
### expiry_date
|
|
141
|
+
|
|
142
|
+
The `expiry_date` matcher tests the number of days a user account has been disabled:
|
|
143
|
+
|
|
144
|
+
its('expiry_date') { should be_empty }
|
|
145
|
+
|
|
146
|
+
|