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,80 +1,80 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the ssh_config Resource
|
|
3
|
-
platform: linux
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ssh_config
|
|
7
|
-
|
|
8
|
-
Use the `ssh_config` InSpec audit resource to test OpenSSH client configuration data located at `/etc/ssh/ssh_config` on Linux and Unix platforms.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
An `ssh_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
15
|
-
|
|
16
|
-
describe ssh_config('path') do
|
|
17
|
-
its('name') { should include('foo') }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
where
|
|
21
|
-
|
|
22
|
-
* `name` is a configuration setting in `ssh_config`
|
|
23
|
-
* `('path')` is the non-default `/path/to/ssh_config`
|
|
24
|
-
* `{ should include('foo') }` tests the value of `name` as read from `ssh_config` versus the value declared in the test
|
|
25
|
-
|
|
26
|
-
<br>
|
|
27
|
-
|
|
28
|
-
## Examples
|
|
29
|
-
|
|
30
|
-
The following examples show how to use this InSpec audit resource.
|
|
31
|
-
|
|
32
|
-
### Test SSH configuration settings
|
|
33
|
-
|
|
34
|
-
describe ssh_config do
|
|
35
|
-
its('cipher') { should contain '3des' }
|
|
36
|
-
its('port') { should eq '22' }
|
|
37
|
-
its('hostname') { should include('example.com') }
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
### Test which variables from the local environment are sent to the server
|
|
41
|
-
|
|
42
|
-
only_if do
|
|
43
|
-
command('sshd').exist? or command('ssh').exists?
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe ssh_config do
|
|
47
|
-
its('SendEnv') { should include('GORDON_CLIENT') }
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
### Test owner and group permissions
|
|
51
|
-
|
|
52
|
-
describe ssh_config do
|
|
53
|
-
its('owner') { should eq 'root' }
|
|
54
|
-
its('mode') { should cmp '0644' }
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
### Test SSH configuration
|
|
58
|
-
|
|
59
|
-
describe ssh_config do
|
|
60
|
-
its('Host') { should eq '*' }
|
|
61
|
-
its('Tunnel') { should eq nil }
|
|
62
|
-
its('SendEnv') { should eq 'LANG LC_*' }
|
|
63
|
-
its('HashKnownHosts') { should eq 'yes' }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
<br>
|
|
67
|
-
|
|
68
|
-
## Matchers
|
|
69
|
-
|
|
70
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
71
|
-
|
|
72
|
-
### name
|
|
73
|
-
|
|
74
|
-
The `name` matcher tests the value of `name` as read from `ssh_config` versus the value declared in the test:
|
|
75
|
-
|
|
76
|
-
its('name') { should eq 'foo' }
|
|
77
|
-
|
|
78
|
-
or:
|
|
79
|
-
|
|
80
|
-
its('name') { should include('bar') }
|
|
1
|
+
---
|
|
2
|
+
title: About the ssh_config Resource
|
|
3
|
+
platform: linux
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ssh_config
|
|
7
|
+
|
|
8
|
+
Use the `ssh_config` InSpec audit resource to test OpenSSH client configuration data located at `/etc/ssh/ssh_config` on Linux and Unix platforms.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
An `ssh_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
15
|
+
|
|
16
|
+
describe ssh_config('path') do
|
|
17
|
+
its('name') { should include('foo') }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
where
|
|
21
|
+
|
|
22
|
+
* `name` is a configuration setting in `ssh_config`
|
|
23
|
+
* `('path')` is the non-default `/path/to/ssh_config`
|
|
24
|
+
* `{ should include('foo') }` tests the value of `name` as read from `ssh_config` versus the value declared in the test
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
The following examples show how to use this InSpec audit resource.
|
|
31
|
+
|
|
32
|
+
### Test SSH configuration settings
|
|
33
|
+
|
|
34
|
+
describe ssh_config do
|
|
35
|
+
its('cipher') { should contain '3des' }
|
|
36
|
+
its('port') { should eq '22' }
|
|
37
|
+
its('hostname') { should include('example.com') }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
### Test which variables from the local environment are sent to the server
|
|
41
|
+
|
|
42
|
+
only_if do
|
|
43
|
+
command('sshd').exist? or command('ssh').exists?
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe ssh_config do
|
|
47
|
+
its('SendEnv') { should include('GORDON_CLIENT') }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
### Test owner and group permissions
|
|
51
|
+
|
|
52
|
+
describe ssh_config do
|
|
53
|
+
its('owner') { should eq 'root' }
|
|
54
|
+
its('mode') { should cmp '0644' }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
### Test SSH configuration
|
|
58
|
+
|
|
59
|
+
describe ssh_config do
|
|
60
|
+
its('Host') { should eq '*' }
|
|
61
|
+
its('Tunnel') { should eq nil }
|
|
62
|
+
its('SendEnv') { should eq 'LANG LC_*' }
|
|
63
|
+
its('HashKnownHosts') { should eq 'yes' }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
<br>
|
|
67
|
+
|
|
68
|
+
## Matchers
|
|
69
|
+
|
|
70
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
71
|
+
|
|
72
|
+
### name
|
|
73
|
+
|
|
74
|
+
The `name` matcher tests the value of `name` as read from `ssh_config` versus the value declared in the test:
|
|
75
|
+
|
|
76
|
+
its('name') { should eq 'foo' }
|
|
77
|
+
|
|
78
|
+
or:
|
|
79
|
+
|
|
80
|
+
its('name') { should include('bar') }
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the sshd_config Resource
|
|
3
|
-
platform: linux
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# sshd_config
|
|
7
|
-
|
|
8
|
-
Use the `sshd_config` InSpec audit resource to test configuration data for the OpenSSH daemon located at `/etc/ssh/sshd_config` on Linux and Unix platforms. sshd---the OpenSSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command execution, and data exchanges.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
An `sshd_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
15
|
-
|
|
16
|
-
describe sshd_config('path') do
|
|
17
|
-
its('name') { should include('foo') }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
where
|
|
21
|
-
|
|
22
|
-
* `name` is a configuration setting in `sshd_config`
|
|
23
|
-
* `('path')` is the non-default `/path/to/sshd_config`
|
|
24
|
-
* `{ should include('foo') }` tests the value of `name` as read from `sshd_config` versus the value declared in the test
|
|
25
|
-
|
|
26
|
-
<br>
|
|
27
|
-
|
|
28
|
-
## Examples
|
|
29
|
-
|
|
30
|
-
The following examples show how to use this InSpec audit resource.
|
|
31
|
-
|
|
32
|
-
### Test which variables may be sent to the server
|
|
33
|
-
|
|
34
|
-
describe sshd_config do
|
|
35
|
-
its('AcceptEnv') { should include('GORDON_SERVER') }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
### Test for IPv6-only addresses
|
|
39
|
-
|
|
40
|
-
describe sshd_config do
|
|
41
|
-
its('AddressFamily') { should cmp 'inet6' }
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
### Test the Protocol setting
|
|
45
|
-
|
|
46
|
-
describe sshd_config do
|
|
47
|
-
its('Protocol') { should cmp 2 }
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
### Test for approved, strong ciphers
|
|
51
|
-
|
|
52
|
-
describe sshd_config do
|
|
53
|
-
its('Ciphers') { should cmp('chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr') }
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
### Test SSH protocols
|
|
57
|
-
|
|
58
|
-
describe sshd_config do
|
|
59
|
-
its('Port') { should cmp 22 }
|
|
60
|
-
its('UsePAM') { should eq 'yes' }
|
|
61
|
-
its('ListenAddress') { should eq nil }
|
|
62
|
-
its('HostKey') { should eq [
|
|
63
|
-
'/etc/ssh/ssh_host_rsa_key',
|
|
64
|
-
'/etc/ssh/ssh_host_dsa_key',
|
|
65
|
-
'/etc/ssh/ssh_host_ecdsa_key',
|
|
66
|
-
] }
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
<br>
|
|
70
|
-
|
|
71
|
-
## Matchers
|
|
72
|
-
|
|
73
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
74
|
-
|
|
75
|
-
### name
|
|
76
|
-
|
|
77
|
-
The `name` matcher tests the value of `name` as read from `sshd_config` versus the value declared in the test:
|
|
78
|
-
|
|
79
|
-
its('name') { should cmp 'foo' }
|
|
80
|
-
|
|
81
|
-
or:
|
|
82
|
-
|
|
83
|
-
its('name') {should include('bar') }
|
|
1
|
+
---
|
|
2
|
+
title: About the sshd_config Resource
|
|
3
|
+
platform: linux
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# sshd_config
|
|
7
|
+
|
|
8
|
+
Use the `sshd_config` InSpec audit resource to test configuration data for the OpenSSH daemon located at `/etc/ssh/sshd_config` on Linux and Unix platforms. sshd---the OpenSSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command execution, and data exchanges.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
An `sshd_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
15
|
+
|
|
16
|
+
describe sshd_config('path') do
|
|
17
|
+
its('name') { should include('foo') }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
where
|
|
21
|
+
|
|
22
|
+
* `name` is a configuration setting in `sshd_config`
|
|
23
|
+
* `('path')` is the non-default `/path/to/sshd_config`
|
|
24
|
+
* `{ should include('foo') }` tests the value of `name` as read from `sshd_config` versus the value declared in the test
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
The following examples show how to use this InSpec audit resource.
|
|
31
|
+
|
|
32
|
+
### Test which variables may be sent to the server
|
|
33
|
+
|
|
34
|
+
describe sshd_config do
|
|
35
|
+
its('AcceptEnv') { should include('GORDON_SERVER') }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
### Test for IPv6-only addresses
|
|
39
|
+
|
|
40
|
+
describe sshd_config do
|
|
41
|
+
its('AddressFamily') { should cmp 'inet6' }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
### Test the Protocol setting
|
|
45
|
+
|
|
46
|
+
describe sshd_config do
|
|
47
|
+
its('Protocol') { should cmp 2 }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
### Test for approved, strong ciphers
|
|
51
|
+
|
|
52
|
+
describe sshd_config do
|
|
53
|
+
its('Ciphers') { should cmp('chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr') }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
### Test SSH protocols
|
|
57
|
+
|
|
58
|
+
describe sshd_config do
|
|
59
|
+
its('Port') { should cmp 22 }
|
|
60
|
+
its('UsePAM') { should eq 'yes' }
|
|
61
|
+
its('ListenAddress') { should eq nil }
|
|
62
|
+
its('HostKey') { should eq [
|
|
63
|
+
'/etc/ssh/ssh_host_rsa_key',
|
|
64
|
+
'/etc/ssh/ssh_host_dsa_key',
|
|
65
|
+
'/etc/ssh/ssh_host_ecdsa_key',
|
|
66
|
+
] }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
<br>
|
|
70
|
+
|
|
71
|
+
## Matchers
|
|
72
|
+
|
|
73
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
74
|
+
|
|
75
|
+
### name
|
|
76
|
+
|
|
77
|
+
The `name` matcher tests the value of `name` as read from `sshd_config` versus the value declared in the test:
|
|
78
|
+
|
|
79
|
+
its('name') { should cmp 'foo' }
|
|
80
|
+
|
|
81
|
+
or:
|
|
82
|
+
|
|
83
|
+
its('name') {should include('bar') }
|
data/docs/resources/ssl.md.erb
CHANGED
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the ssl Resource
|
|
3
|
-
platform: os
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ssl
|
|
7
|
-
|
|
8
|
-
Use the `ssl` InSpec audit resource to test SSL settings for the named port.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
An `ssl` resource block declares an SSL port, and then other properties of the test like cipher and/or protocol:
|
|
15
|
-
|
|
16
|
-
describe ssl(port: #) do
|
|
17
|
-
it { should be_enabled }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
or:
|
|
21
|
-
|
|
22
|
-
describe ssl(port: #).filter('value') do
|
|
23
|
-
it { should be_enabled }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
where
|
|
27
|
-
|
|
28
|
-
* `ssl(port: #)` is the port number, such as `ssl(port: 443)`
|
|
29
|
-
* `filter` may take any of the following arguments: `ciphers`, `protocols`, and `handshake`
|
|
30
|
-
|
|
31
|
-
<br>
|
|
32
|
-
|
|
33
|
-
## Examples
|
|
34
|
-
|
|
35
|
-
The following examples show how to use this InSpec audit resource.
|
|
36
|
-
|
|
37
|
-
### Run the ssl-benchmark example profile
|
|
38
|
-
|
|
39
|
-
The following shows how to use the `ssl` InSpec audit resource to find all TCP ports on the system, including IPv4 and IPv6. (This is a partial example based on the `ssl_text.rb` file in the `ssl-benchmark` profile on GitHub.)
|
|
40
|
-
|
|
41
|
-
...
|
|
42
|
-
|
|
43
|
-
control 'tls1.2' do
|
|
44
|
-
title 'Run TLS 1.2 whenever SSL is active on a port'
|
|
45
|
-
impact 0.5
|
|
46
|
-
|
|
47
|
-
sslports.each do |socket|
|
|
48
|
-
proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
|
|
49
|
-
describe ssl(port: socket.port).protocols('tls1.2') do
|
|
50
|
-
it(proc_desc) { should be_enabled }
|
|
51
|
-
it { should be_enabled }
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
...
|
|
57
|
-
|
|
58
|
-
control 'rc4' do
|
|
59
|
-
title 'Disable RC4 ciphers from all exposed SSL/TLS ports and versions.'
|
|
60
|
-
impact 0.5
|
|
61
|
-
|
|
62
|
-
sslports.each do |socket|
|
|
63
|
-
proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
|
|
64
|
-
describe ssl(port: socket.port).ciphers(/rc4/i) do
|
|
65
|
-
it(proc_desc) { should_not be_enabled }
|
|
66
|
-
it { should_not be_enabled }
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
There are two ways to run the `ssl-benchmark` example profile to test SSL via the `ssl` resource.
|
|
72
|
-
|
|
73
|
-
Clone the profile:
|
|
74
|
-
|
|
75
|
-
$ git clone https://github.com/dev-sec/ssl-benchmark
|
|
76
|
-
|
|
77
|
-
and then run:
|
|
78
|
-
|
|
79
|
-
$ inspec exec ssl-benchmark
|
|
80
|
-
|
|
81
|
-
Or execute the profile directly via URL:
|
|
82
|
-
|
|
83
|
-
$ inspec exec https://github.com/dev-sec/ssl-benchmark
|
|
84
|
-
|
|
85
|
-
<br>
|
|
86
|
-
|
|
87
|
-
## Matchers
|
|
88
|
-
|
|
89
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
90
|
-
|
|
91
|
-
### be_enabled
|
|
92
|
-
|
|
93
|
-
The `be_enabled` matcher tests if SSL is enabled:
|
|
94
|
-
|
|
95
|
-
it { should be_enabled }
|
|
96
|
-
|
|
97
|
-
### ciphers
|
|
98
|
-
|
|
99
|
-
The `ciphers` matcher tests the named cipher:
|
|
100
|
-
|
|
101
|
-
its('ciphers') { should_not eq '/rc4/i' }
|
|
102
|
-
|
|
103
|
-
or:
|
|
104
|
-
|
|
105
|
-
describe ssl(port: 443).ciphers(/rc4/i) do
|
|
106
|
-
it { should_not be_enabled }
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
### protocols
|
|
110
|
-
|
|
111
|
-
The `protocols` matcher tests what protocol versions (SSLv3, TLSv1.1, etc) are enabled:
|
|
112
|
-
|
|
113
|
-
its('protocols') { should eq 'ssl2' }
|
|
114
|
-
|
|
115
|
-
or:
|
|
116
|
-
|
|
117
|
-
describe ssl(port: 443).protocols('ssl2') do
|
|
118
|
-
it { should_not be_enabled }
|
|
119
|
-
end
|
|
1
|
+
---
|
|
2
|
+
title: About the ssl Resource
|
|
3
|
+
platform: os
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ssl
|
|
7
|
+
|
|
8
|
+
Use the `ssl` InSpec audit resource to test SSL settings for the named port.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
An `ssl` resource block declares an SSL port, and then other properties of the test like cipher and/or protocol:
|
|
15
|
+
|
|
16
|
+
describe ssl(port: #) do
|
|
17
|
+
it { should be_enabled }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
or:
|
|
21
|
+
|
|
22
|
+
describe ssl(port: #).filter('value') do
|
|
23
|
+
it { should be_enabled }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
where
|
|
27
|
+
|
|
28
|
+
* `ssl(port: #)` is the port number, such as `ssl(port: 443)`
|
|
29
|
+
* `filter` may take any of the following arguments: `ciphers`, `protocols`, and `handshake`
|
|
30
|
+
|
|
31
|
+
<br>
|
|
32
|
+
|
|
33
|
+
## Examples
|
|
34
|
+
|
|
35
|
+
The following examples show how to use this InSpec audit resource.
|
|
36
|
+
|
|
37
|
+
### Run the ssl-benchmark example profile
|
|
38
|
+
|
|
39
|
+
The following shows how to use the `ssl` InSpec audit resource to find all TCP ports on the system, including IPv4 and IPv6. (This is a partial example based on the `ssl_text.rb` file in the `ssl-benchmark` profile on GitHub.)
|
|
40
|
+
|
|
41
|
+
...
|
|
42
|
+
|
|
43
|
+
control 'tls1.2' do
|
|
44
|
+
title 'Run TLS 1.2 whenever SSL is active on a port'
|
|
45
|
+
impact 0.5
|
|
46
|
+
|
|
47
|
+
sslports.each do |socket|
|
|
48
|
+
proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
|
|
49
|
+
describe ssl(port: socket.port).protocols('tls1.2') do
|
|
50
|
+
it(proc_desc) { should be_enabled }
|
|
51
|
+
it { should be_enabled }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
control 'rc4' do
|
|
59
|
+
title 'Disable RC4 ciphers from all exposed SSL/TLS ports and versions.'
|
|
60
|
+
impact 0.5
|
|
61
|
+
|
|
62
|
+
sslports.each do |socket|
|
|
63
|
+
proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
|
|
64
|
+
describe ssl(port: socket.port).ciphers(/rc4/i) do
|
|
65
|
+
it(proc_desc) { should_not be_enabled }
|
|
66
|
+
it { should_not be_enabled }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
There are two ways to run the `ssl-benchmark` example profile to test SSL via the `ssl` resource.
|
|
72
|
+
|
|
73
|
+
Clone the profile:
|
|
74
|
+
|
|
75
|
+
$ git clone https://github.com/dev-sec/ssl-benchmark
|
|
76
|
+
|
|
77
|
+
and then run:
|
|
78
|
+
|
|
79
|
+
$ inspec exec ssl-benchmark
|
|
80
|
+
|
|
81
|
+
Or execute the profile directly via URL:
|
|
82
|
+
|
|
83
|
+
$ inspec exec https://github.com/dev-sec/ssl-benchmark
|
|
84
|
+
|
|
85
|
+
<br>
|
|
86
|
+
|
|
87
|
+
## Matchers
|
|
88
|
+
|
|
89
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
90
|
+
|
|
91
|
+
### be_enabled
|
|
92
|
+
|
|
93
|
+
The `be_enabled` matcher tests if SSL is enabled:
|
|
94
|
+
|
|
95
|
+
it { should be_enabled }
|
|
96
|
+
|
|
97
|
+
### ciphers
|
|
98
|
+
|
|
99
|
+
The `ciphers` matcher tests the named cipher:
|
|
100
|
+
|
|
101
|
+
its('ciphers') { should_not eq '/rc4/i' }
|
|
102
|
+
|
|
103
|
+
or:
|
|
104
|
+
|
|
105
|
+
describe ssl(port: 443).ciphers(/rc4/i) do
|
|
106
|
+
it { should_not be_enabled }
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
### protocols
|
|
110
|
+
|
|
111
|
+
The `protocols` matcher tests what protocol versions (SSLv3, TLSv1.1, etc) are enabled:
|
|
112
|
+
|
|
113
|
+
its('protocols') { should eq 'ssl2' }
|
|
114
|
+
|
|
115
|
+
or:
|
|
116
|
+
|
|
117
|
+
describe ssl(port: 443).protocols('ssl2') do
|
|
118
|
+
it { should_not be_enabled }
|
|
119
|
+
end
|