inspec 1.0.0 → 1.35.1
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/CHANGELOG.md +933 -101
- data/Gemfile +8 -17
- data/MAINTAINERS.md +2 -1
- data/MAINTAINERS.toml +9 -4
- data/README.md +49 -28
- data/Rakefile +54 -39
- data/bin/inspec +1 -1
- data/docs/dsl_inspec.md +17 -4
- data/docs/dsl_resource.md +1 -1
- data/docs/habitat.md +192 -0
- data/docs/inspec_and_friends.md +4 -2
- data/docs/matchers.md +11 -0
- data/docs/migration.md +293 -0
- data/docs/profiles.md +124 -76
- data/docs/resources/aide_conf.md.erb +81 -0
- data/docs/resources/apache_conf.md.erb +10 -10
- data/docs/resources/apt.md.erb +13 -13
- data/docs/resources/audit_policy.md.erb +10 -10
- data/docs/resources/auditd_conf.md.erb +10 -10
- data/docs/resources/auditd_rules.md.erb +11 -11
- data/docs/resources/bash.md.erb +12 -12
- data/docs/resources/bond.md.erb +15 -15
- data/docs/resources/bridge.md.erb +11 -11
- data/docs/resources/bsd_service.md.erb +11 -11
- data/docs/resources/command.md.erb +23 -23
- data/docs/resources/crontab.md.erb +84 -0
- data/docs/resources/csv.md.erb +10 -10
- data/docs/resources/dh_params.md +191 -0
- data/docs/resources/directory.md.erb +8 -8
- data/docs/resources/docker.md.erb +160 -0
- data/docs/resources/docker_container.md.erb +89 -0
- data/docs/resources/docker_image.md.erb +86 -0
- data/docs/resources/etc_group.md.erb +16 -16
- data/docs/resources/etc_hosts.md.erb +62 -0
- data/docs/resources/file.md.erb +80 -58
- data/docs/resources/gem.md.erb +32 -13
- data/docs/resources/group.md.erb +12 -12
- data/docs/resources/grub_conf.md.erb +11 -11
- data/docs/resources/host.md.erb +27 -18
- data/docs/resources/http.md.erb +104 -0
- data/docs/resources/iis_app.md.erb +126 -0
- data/docs/resources/iis_site.md.erb +17 -17
- data/docs/resources/inetd_conf.md.erb +10 -10
- data/docs/resources/ini.md.erb +9 -9
- data/docs/resources/interface.md.erb +13 -13
- data/docs/resources/iptables.md.erb +21 -14
- data/docs/resources/json.md.erb +11 -11
- data/docs/resources/kernel_module.md.erb +73 -12
- data/docs/resources/kernel_parameter.md.erb +12 -12
- data/docs/resources/key_rsa.md.erb +70 -0
- data/docs/resources/launchd_service.md.erb +11 -11
- data/docs/resources/limits_conf.md.erb +10 -10
- data/docs/resources/login_def.md.erb +12 -12
- data/docs/resources/mount.md.erb +14 -14
- data/docs/resources/mssql_session.md.erb +62 -0
- data/docs/resources/mysql_conf.md.erb +14 -14
- data/docs/resources/mysql_session.md.erb +22 -10
- data/docs/resources/npm.md.erb +13 -13
- data/docs/resources/ntp_conf.md.erb +9 -9
- data/docs/resources/oneget.md.erb +11 -11
- data/docs/resources/oracledb_session.md.erb +53 -0
- data/docs/resources/os.md.erb +17 -17
- data/docs/resources/os_env.md.erb +12 -12
- data/docs/resources/package.md.erb +29 -16
- data/docs/resources/parse_config.md.erb +18 -18
- data/docs/resources/parse_config_file.md.erb +29 -23
- data/docs/resources/{etc_passwd.md.erb → passwd.md.erb} +17 -17
- data/docs/resources/pip.md.erb +15 -15
- data/docs/resources/port.md.erb +23 -23
- data/docs/resources/postgres_conf.md.erb +15 -13
- data/docs/resources/postgres_hba_conf.md.erb +104 -0
- data/docs/resources/postgres_ident_conf.md.erb +87 -0
- data/docs/resources/postgres_session.md.erb +28 -21
- data/docs/resources/powershell.md.erb +14 -14
- data/docs/resources/processes.md.erb +123 -0
- data/docs/resources/rabbitmq_config.md.erb +55 -0
- data/docs/resources/registry_key.md.erb +44 -21
- data/docs/resources/runit_service.md.erb +11 -11
- data/docs/resources/security_policy.md.erb +10 -10
- data/docs/resources/service.md.erb +18 -18
- data/docs/resources/{etc_shadow.md.erb → shadow.md.erb} +19 -19
- data/docs/resources/ssh_config.md.erb +13 -13
- data/docs/resources/sshd_config.md.erb +15 -15
- data/docs/resources/ssl.md.erb +13 -13
- data/docs/resources/sys_info.md.erb +10 -10
- data/docs/resources/systemd_service.md.erb +11 -11
- data/docs/resources/sysv_service.md.erb +11 -11
- data/docs/resources/upstart_service.md.erb +11 -11
- data/docs/resources/user.md.erb +20 -20
- data/docs/resources/users.md.erb +19 -19
- data/docs/resources/vbscript.md.erb +13 -13
- data/docs/resources/virtualization.md.erb +71 -0
- data/docs/resources/windows_feature.md.erb +10 -10
- data/docs/resources/windows_task.md.erb +103 -0
- data/docs/resources/wmi.md.erb +10 -10
- data/docs/resources/x509_certificate.md.erb +146 -0
- data/docs/resources/xinetd_conf.md.erb +17 -17
- data/docs/resources/xml.md.erb +75 -0
- data/docs/resources/yaml.md.erb +25 -11
- data/docs/resources/yum.md.erb +24 -16
- data/docs/resources/zfs_dataset.md.erb +63 -0
- data/docs/resources/zfs_pool.md.erb +57 -0
- data/docs/ruby_usage.md +50 -0
- data/docs/shared/matcher_cmp.md.erb +4 -6
- data/examples/inheritance/README.md +49 -3
- data/examples/inheritance/controls/example.rb +4 -1
- data/examples/inheritance/inspec.yml +3 -1
- data/examples/meta-profile/README.md +29 -3
- data/examples/meta-profile/controls/example.rb +10 -5
- data/examples/meta-profile/inspec.yml +4 -8
- data/examples/profile/README.md +1 -1
- data/examples/profile/controls/example.rb +0 -1
- data/examples/profile/controls/gordon.rb +0 -1
- data/examples/profile/inspec.yml +1 -1
- data/examples/profile-attribute/inspec.yml +1 -1
- data/examples/profile-sensitive/README.md +29 -0
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -0
- data/examples/profile-sensitive/controls/sensitive.rb +9 -0
- data/examples/profile-sensitive/inspec.yml +8 -0
- data/inspec.gemspec +10 -2
- data/lib/bundles/inspec-artifact/README.md +1 -0
- data/lib/bundles/inspec-artifact/cli.rb +284 -0
- data/lib/bundles/inspec-artifact.rb +7 -0
- data/lib/bundles/inspec-compliance/README.md +44 -15
- data/lib/bundles/inspec-compliance/api.rb +135 -29
- data/lib/bundles/inspec-compliance/cli.rb +128 -21
- data/lib/bundles/inspec-compliance/configuration.rb +8 -0
- data/lib/bundles/inspec-compliance/http.rb +26 -19
- data/lib/bundles/inspec-compliance/target.rb +50 -25
- data/lib/bundles/inspec-habitat/cli.rb +31 -0
- data/lib/bundles/inspec-habitat/log.rb +10 -0
- data/lib/bundles/inspec-habitat/profile.rb +372 -0
- data/lib/bundles/inspec-habitat.rb +12 -0
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +0 -1
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +1 -1
- data/lib/bundles/inspec-supermarket/api.rb +7 -5
- data/lib/bundles/inspec-supermarket/cli.rb +2 -2
- data/lib/fetchers/git.rb +4 -2
- data/lib/fetchers/local.rb +4 -1
- data/lib/fetchers/url.rb +64 -10
- data/lib/inspec/archive/tar.rb +1 -1
- data/lib/inspec/backend.rb +26 -3
- data/lib/inspec/base_cli.rb +44 -7
- data/lib/inspec/cached_fetcher.rb +2 -2
- data/lib/inspec/cli.rb +34 -12
- data/lib/inspec/completions/fish.sh.erb +34 -0
- data/lib/inspec/control_eval_context.rb +0 -2
- data/lib/inspec/dependencies/cache.rb +0 -1
- data/lib/inspec/dependencies/dependency_set.rb +2 -2
- data/lib/inspec/dependencies/lockfile.rb +13 -6
- data/lib/inspec/dependencies/requirement.rb +6 -6
- data/lib/inspec/dependencies/resolver.rb +4 -4
- data/lib/inspec/dsl.rb +3 -5
- data/lib/inspec/env_printer.rb +9 -1
- data/lib/inspec/exceptions.rb +8 -0
- data/lib/inspec/fetcher.rb +1 -1
- data/lib/inspec/file_provider.rb +47 -11
- data/lib/inspec/library_eval_context.rb +1 -1
- data/lib/inspec/metadata.rb +62 -18
- data/lib/inspec/method_source.rb +24 -0
- data/lib/inspec/objects/attribute.rb +21 -0
- data/lib/inspec/objects/control.rb +21 -3
- data/lib/inspec/objects/each_loop.rb +2 -1
- data/lib/inspec/objects/list.rb +1 -1
- data/lib/inspec/objects/or_test.rb +17 -2
- data/lib/inspec/objects/tag.rb +27 -0
- data/lib/inspec/objects/test.rb +9 -8
- data/lib/inspec/objects.rb +1 -0
- data/lib/inspec/plugins/fetcher.rb +4 -5
- data/lib/inspec/plugins/resource.rb +1 -2
- data/lib/inspec/plugins/source_reader.rb +3 -3
- data/lib/inspec/plugins.rb +1 -1
- data/lib/inspec/polyfill.rb +0 -1
- data/lib/inspec/profile.rb +92 -23
- data/lib/inspec/profile_context.rb +1 -1
- data/lib/inspec/profile_vendor.rb +66 -0
- data/lib/inspec/resource.rb +29 -3
- data/lib/inspec/rspec_json_formatter.rb +672 -285
- data/lib/inspec/rule.rb +12 -16
- data/lib/inspec/runner.rb +26 -15
- data/lib/inspec/runner_rspec.rb +1 -0
- data/lib/inspec/runtime_profile.rb +26 -0
- data/lib/inspec/schema.rb +185 -0
- data/lib/inspec/secrets/yaml.rb +8 -1
- data/lib/inspec/secrets.rb +1 -1
- data/lib/inspec/shell.rb +92 -22
- data/lib/inspec/source_reader.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/inspec.rb +1 -1
- data/lib/matchers/matchers.rb +67 -17
- data/lib/resources/aide_conf.rb +162 -0
- data/lib/resources/apache.rb +0 -1
- data/lib/resources/apache_conf.rb +3 -3
- data/lib/resources/apt.rb +2 -1
- data/lib/resources/audit_policy.rb +0 -1
- data/lib/resources/auditd_conf.rb +1 -2
- data/lib/resources/auditd_rules.rb +5 -5
- data/lib/resources/bond.rb +1 -1
- data/lib/resources/bridge.rb +1 -1
- data/lib/resources/command.rb +5 -3
- data/lib/resources/crontab.rb +102 -0
- data/lib/resources/csv.rb +18 -1
- data/lib/resources/dh_params.rb +84 -0
- data/lib/resources/directory.rb +7 -3
- data/lib/resources/docker.rb +198 -0
- data/lib/resources/docker_container.rb +114 -0
- data/lib/resources/docker_image.rb +96 -0
- data/lib/resources/etc_group.rb +2 -3
- data/lib/resources/etc_hosts.rb +81 -0
- data/lib/resources/file.rb +88 -30
- data/lib/resources/gem.rb +26 -6
- data/lib/resources/groups.rb +4 -5
- data/lib/resources/grub_conf.rb +3 -4
- data/lib/resources/host.rb +175 -35
- data/lib/resources/http.rb +73 -0
- data/lib/resources/iis_app.rb +103 -0
- data/lib/resources/iis_site.rb +23 -0
- data/lib/resources/inetd_conf.rb +9 -4
- data/lib/resources/interface.rb +4 -3
- data/lib/resources/json.rb +37 -14
- data/lib/resources/kernel_module.rb +77 -10
- data/lib/resources/kernel_parameter.rb +0 -1
- data/lib/resources/key_rsa.rb +67 -0
- data/lib/resources/limits_conf.rb +3 -4
- data/lib/resources/login_def.rb +2 -3
- data/lib/resources/mount.rb +34 -4
- data/lib/resources/mssql_session.rb +81 -12
- data/lib/resources/mysql.rb +0 -1
- data/lib/resources/mysql_conf.rb +1 -2
- data/lib/resources/mysql_session.rb +18 -7
- data/lib/resources/nginx_conf.rb +95 -0
- data/lib/resources/ntp_conf.rb +2 -3
- data/lib/resources/oracledb_session.rb +138 -0
- data/lib/resources/os_env.rb +7 -5
- data/lib/resources/package.rb +70 -13
- data/lib/resources/packages.rb +111 -0
- data/lib/resources/parse_config.rb +3 -4
- data/lib/resources/passwd.rb +4 -5
- data/lib/resources/pip.rb +29 -21
- data/lib/resources/port.rb +133 -14
- data/lib/resources/postgres.rb +53 -43
- data/lib/resources/postgres_conf.rb +40 -13
- data/lib/resources/postgres_hba_conf.rb +101 -0
- data/lib/resources/postgres_ident_conf.rb +79 -0
- data/lib/resources/postgres_session.rb +28 -20
- data/lib/resources/powershell.rb +2 -2
- data/lib/resources/processes.rb +61 -26
- data/lib/resources/rabbitmq_conf.rb +53 -0
- data/lib/resources/registry_key.rb +34 -11
- data/lib/resources/security_policy.rb +2 -2
- data/lib/resources/service.rb +17 -7
- data/lib/resources/ssh_conf.rb +17 -6
- data/lib/resources/ssl.rb +3 -4
- data/lib/resources/sys_info.rb +1 -1
- data/lib/resources/toml.rb +26 -0
- data/lib/resources/users.rb +41 -41
- data/lib/resources/virtualization.rb +252 -0
- data/lib/resources/windows_task.rb +106 -0
- data/lib/resources/x509_certificate.rb +143 -0
- data/lib/resources/xinetd.rb +18 -2
- data/lib/resources/xml.rb +27 -0
- data/lib/resources/yaml.rb +10 -2
- data/lib/resources/yum.rb +25 -7
- data/lib/resources/zfs_dataset.rb +60 -0
- data/lib/resources/zfs_pool.rb +49 -0
- data/lib/source_readers/flat.rb +2 -1
- data/lib/source_readers/inspec.rb +30 -11
- data/lib/utils/command_wrapper.rb +3 -3
- data/lib/utils/database_helpers.rb +77 -0
- data/lib/utils/erlang_parser.rb +192 -0
- data/lib/utils/filter.rb +2 -1
- data/lib/utils/filter_array.rb +0 -1
- data/lib/utils/find_files.rb +1 -2
- data/lib/utils/latest_version.rb +21 -0
- data/lib/utils/nginx_parser.rb +76 -0
- data/lib/utils/object_traversal.rb +5 -4
- data/lib/utils/parser.rb +23 -4
- data/lib/utils/plugin_registry.rb +3 -3
- data/lib/utils/simpleconfig.rb +25 -8
- data/lib/utils/spdx.rb +13 -0
- data/lib/utils/spdx.txt +344 -0
- metadata +168 -22
- data/docs/cli.md +0 -342
- data/docs/resources/process.md.erb +0 -73
- /data/docs/{plugin_kitchen_inspec.html.md → plugin_kitchen_inspec.md} +0 -0
|
@@ -19,7 +19,7 @@ These entries are defined as a colon-delimited row in the file, one row per user
|
|
|
19
19
|
|
|
20
20
|
dannos:Gb7crrO5CDF.:10063:0:99999:7:::
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
## Syntax
|
|
23
23
|
|
|
24
24
|
A `shadow` resource block declares one (or more) users and associated user information to be tested:
|
|
25
25
|
|
|
@@ -40,19 +40,19 @@ where
|
|
|
40
40
|
* `filter` one (or more) arguments, for example: `passwd.users(/name/)` used to define filtering; `filter` may take any of the following arguments: `count` (retrieves the number of entries), `lines` (provides raw `passwd` lines), and `params` (returns an array of maps for all entries)
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
## Matchers
|
|
44
44
|
|
|
45
45
|
This InSpec audit resource has the following matchers:
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
### be
|
|
48
48
|
|
|
49
49
|
<%= partial "/shared/matcher_be" %>
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
### cmp
|
|
52
52
|
|
|
53
53
|
<%= partial "/shared/matcher_cmp" %>
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
### count
|
|
56
56
|
|
|
57
57
|
The `count` matcher tests the number of times the named user appears in `/etc/shadow`:
|
|
58
58
|
|
|
@@ -64,49 +64,49 @@ TThis matcher is best used in conjunction with filters. For example:
|
|
|
64
64
|
its('count') { should eq 1 }
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
### eq
|
|
68
68
|
|
|
69
69
|
<%= partial "/shared/matcher_eq" %>
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
### expiry_dates
|
|
72
72
|
|
|
73
73
|
The `expiry_dates` matcher tests the number of days a user account has been disabled:
|
|
74
74
|
|
|
75
75
|
its('expiry_dates') { should eq '' }
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
### inactive_days
|
|
78
78
|
|
|
79
79
|
The `inactive_days` matcher tests the number of days a user must be inactive before the user account is disabled:
|
|
80
80
|
|
|
81
81
|
its('inactive_days') { should eq '' }
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
### include
|
|
84
84
|
|
|
85
85
|
<%= partial "/shared/matcher_include" %>
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
### last_changes
|
|
88
88
|
|
|
89
89
|
The `last_changes` matcher tests the last time a password was changed:
|
|
90
90
|
|
|
91
91
|
its('last_changes') { should eq '' }
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
### match
|
|
94
94
|
|
|
95
95
|
<%= partial "/shared/matcher_match" %>
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
### max_days
|
|
98
98
|
|
|
99
99
|
The `max_days` matcher tests the maximum number of days after which a password must be changed:
|
|
100
100
|
|
|
101
101
|
its('max_days') { should eq 90 }
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
### min_days
|
|
104
104
|
|
|
105
105
|
The `min_days` matcher tests the minimum number of days a password must exist, before it may be changed:
|
|
106
106
|
|
|
107
107
|
its('min_days') { should eq 0 }
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
### passwords
|
|
110
110
|
|
|
111
111
|
The `passwords` matcher tests if passwords are
|
|
112
112
|
|
|
@@ -119,29 +119,29 @@ For example:
|
|
|
119
119
|
its('passwords') { should eq ['x'] }
|
|
120
120
|
its('passwords') { should cmp '*' }
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
### users
|
|
123
123
|
|
|
124
124
|
The `users` matcher tests if the user name exists `/etc/shadow`:
|
|
125
125
|
|
|
126
126
|
its('users') { should eq 'root' }
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
### warn_days
|
|
129
129
|
|
|
130
130
|
The `warn_days` matcher tests the number of days a user is warned about an expiring password:
|
|
131
131
|
|
|
132
132
|
its('warn_days') { should eq 7 }
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
## Examples
|
|
135
135
|
|
|
136
136
|
The following examples show how to use this InSpec audit resource.
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
### Test for a forbidden user
|
|
139
139
|
|
|
140
140
|
describe shadow do
|
|
141
141
|
its('users') { should_not include 'forbidden_user' }
|
|
142
142
|
end
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
### Test that a user appears one time
|
|
145
145
|
|
|
146
146
|
describe shadow.users('bin') do
|
|
147
147
|
its('passwords') { should cmp 'x' }
|
|
@@ -6,7 +6,7 @@ title: About the ssh_config Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `ssh_config` InSpec audit resource to test OpenSSH client configuration data located at `/etc/ssh/ssh_config` on Linux and Unix platforms.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
An `ssh_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
12
12
|
|
|
@@ -21,31 +21,31 @@ where
|
|
|
21
21
|
* `{ should include('foo') }` tests the value of `name` as read from `ssh_config` versus the value declared in the test
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
## Matchers
|
|
25
25
|
|
|
26
26
|
This InSpec audit resource has the following matchers:
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
### be
|
|
29
29
|
|
|
30
30
|
<%= partial "/shared/matcher_be" %>
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
### cmp
|
|
33
33
|
|
|
34
34
|
<%= partial "/shared/matcher_cmp" %>
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### eq
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_eq" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### include
|
|
41
41
|
|
|
42
42
|
<%= partial "/shared/matcher_include" %>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
### match
|
|
45
45
|
|
|
46
46
|
<%= partial "/shared/matcher_match" %>
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
### name
|
|
49
49
|
|
|
50
50
|
The `name` matcher tests the value of `name` as read from `ssh_config` versus the value declared in the test:
|
|
51
51
|
|
|
@@ -55,11 +55,11 @@ or:
|
|
|
55
55
|
|
|
56
56
|
its('name') { should include('bar') }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## Examples
|
|
59
59
|
|
|
60
60
|
The following examples show how to use this InSpec audit resource.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### Test SSH configuration settings
|
|
63
63
|
|
|
64
64
|
describe ssh_config do
|
|
65
65
|
its('cipher') { should contain '3des' }
|
|
@@ -67,7 +67,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
67
67
|
its('hostname') { should include('example.com') }
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### Test which variables from the local environment are sent to the server
|
|
71
71
|
|
|
72
72
|
only_if do
|
|
73
73
|
command('sshd').exist? or command('ssh').exists?
|
|
@@ -77,14 +77,14 @@ The following examples show how to use this InSpec audit resource.
|
|
|
77
77
|
its('SendEnv') { should include('GORDON_CLIENT') }
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
### Test owner and group permissions
|
|
81
81
|
|
|
82
82
|
describe ssh_config do
|
|
83
83
|
its('owner') { should eq 'root' }
|
|
84
84
|
its('mode') { should cmp '0644' }
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
### Test SSH configuration
|
|
88
88
|
|
|
89
89
|
describe ssh_config do
|
|
90
90
|
its('Host') { should eq '*' }
|
|
@@ -4,9 +4,9 @@ title: About the sshd_config Resource
|
|
|
4
4
|
|
|
5
5
|
# sshd_config
|
|
6
6
|
|
|
7
|
-
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
|
|
7
|
+
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.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
An `sshd_config` resource block declares the client OpenSSH configuration data to be tested:
|
|
12
12
|
|
|
@@ -21,31 +21,31 @@ where
|
|
|
21
21
|
* `{ should include('foo') }` tests the value of `name` as read from `sshd_config` versus the value declared in the test
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
## Matchers
|
|
25
25
|
|
|
26
26
|
This InSpec audit resource has the following matchers:
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
### be
|
|
29
29
|
|
|
30
30
|
<%= partial "/shared/matcher_be" %>
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
### cmp
|
|
33
33
|
|
|
34
34
|
<%= partial "/shared/matcher_cmp" %>
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### eq
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_eq" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### include
|
|
41
41
|
|
|
42
42
|
<%= partial "/shared/matcher_include" %>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
### match
|
|
45
45
|
|
|
46
46
|
<%= partial "/shared/matcher_match" %>
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
### name
|
|
49
49
|
|
|
50
50
|
The `name` matcher tests the value of `name` as read from `sshd_config` versus the value declared in the test:
|
|
51
51
|
|
|
@@ -55,35 +55,35 @@ or:
|
|
|
55
55
|
|
|
56
56
|
its('name') {should include('bar') }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## Examples
|
|
59
59
|
|
|
60
60
|
The following examples show how to use this InSpec audit resource.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### Test which variables may be sent to the server
|
|
63
63
|
|
|
64
64
|
describe sshd_config do
|
|
65
65
|
its('AcceptEnv') { should include('GORDON_SERVER') }
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
### Test for IPv6-only addresses
|
|
69
69
|
|
|
70
70
|
describe sshd_config do
|
|
71
71
|
its('AddressFamily') { should cmp 'inet6' }
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
### Test the Protocol setting
|
|
75
75
|
|
|
76
76
|
describe sshd_config do
|
|
77
77
|
its('Protocol') { should cmp 2 }
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
### Test for approved, strong ciphers
|
|
81
81
|
|
|
82
82
|
describe sshd_config do
|
|
83
83
|
its('Ciphers') { should cmp('chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr') }
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
### Test SSH protocols
|
|
87
87
|
|
|
88
88
|
describe sshd_config do
|
|
89
89
|
its('Port') { should cmp 22 }
|
data/docs/resources/ssl.md.erb
CHANGED
|
@@ -6,7 +6,7 @@ title: About the ssl Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `ssl` InSpec audit resource to test SSL settings for the named port.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
An `ssl` resource block declares an SSL port, and then other properties of the test like cipher and/or protocol:
|
|
12
12
|
|
|
@@ -26,21 +26,21 @@ where
|
|
|
26
26
|
* `filter` may take any of the following arguments: `ciphers`, `protocols`, and `handshake`
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
## Matchers
|
|
30
30
|
|
|
31
31
|
This InSpec audit resource has the following matchers:
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
### be
|
|
34
34
|
|
|
35
35
|
<%= partial "/shared/matcher_be" %>
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
### be_enabled
|
|
38
38
|
|
|
39
39
|
The `be_enabled` matcher tests if SSL is enabled:
|
|
40
40
|
|
|
41
41
|
it { should be_enabled }
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
### ciphers
|
|
44
44
|
|
|
45
45
|
The `ciphers` matcher tests the named cipher:
|
|
46
46
|
|
|
@@ -52,25 +52,25 @@ or:
|
|
|
52
52
|
it { should_not be_enabled }
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
### cmp
|
|
56
56
|
|
|
57
57
|
<%= partial "/shared/matcher_cmp" %>
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
### eq
|
|
60
60
|
|
|
61
61
|
<%= partial "/shared/matcher_eq" %>
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
### include
|
|
64
64
|
|
|
65
65
|
<%= partial "/shared/matcher_include" %>
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
### match
|
|
68
68
|
|
|
69
69
|
<%= partial "/shared/matcher_match" %>
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
### protocols
|
|
72
72
|
|
|
73
|
-
The `protocols` matcher tests
|
|
73
|
+
The `protocols` matcher tests what protocol versions (SSLv3, TLSv1.1, etc) are enabled:
|
|
74
74
|
|
|
75
75
|
its('protocols') { should eq 'ssl2' }
|
|
76
76
|
|
|
@@ -80,11 +80,11 @@ or:
|
|
|
80
80
|
it { should_not be_enabled }
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
## Examples
|
|
84
84
|
|
|
85
85
|
The following examples show how to use this InSpec audit resource.
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
### Run the ssl-benchmark example profile
|
|
88
88
|
|
|
89
89
|
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.)
|
|
90
90
|
|
|
@@ -6,7 +6,7 @@ title: About the sys_info Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `sys_info` InSpec audit resource to test for operating system properties for the named host, and then returns that info as standard output.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
An `sys_info` resource block declares the hostname to be tested:
|
|
12
12
|
|
|
@@ -14,41 +14,41 @@ An `sys_info` resource block declares the hostname to be tested:
|
|
|
14
14
|
its('hostname') { should eq 'value' }
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
## Matchers
|
|
18
18
|
|
|
19
19
|
This InSpec audit resource has the following matchers:
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
### be
|
|
22
22
|
|
|
23
23
|
<%= partial "/shared/matcher_be" %>
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
### cmp
|
|
26
26
|
|
|
27
27
|
<%= partial "/shared/matcher_cmp" %>
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
### eq
|
|
30
30
|
|
|
31
31
|
<%= partial "/shared/matcher_eq" %>
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
### hostname
|
|
34
34
|
|
|
35
35
|
The `hostname` matcher tests the host for which standard output is returned:
|
|
36
36
|
|
|
37
37
|
its('hostname') { should eq 'value' }
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
### include
|
|
40
40
|
|
|
41
41
|
<%= partial "/shared/matcher_include" %>
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
### match
|
|
44
44
|
|
|
45
45
|
<%= partial "/shared/matcher_match" %>
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
## Examples
|
|
48
48
|
|
|
49
49
|
The following examples show how to use this InSpec audit resource.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
### Get system information for example.com
|
|
52
52
|
|
|
53
53
|
describe sys_info do
|
|
54
54
|
its('hostname') { should eq 'example.com' }
|
|
@@ -6,7 +6,7 @@ title: About the systemd_service Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `systemd_service` InSpec audit resource to test a service using SystemD.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `systemd_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
12
12
|
|
|
@@ -29,48 +29,48 @@ The path to the service manager's control may be specified for situations where
|
|
|
29
29
|
it { should be_running }
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
## Matchers
|
|
33
33
|
|
|
34
34
|
This InSpec audit resource has the following matchers:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### be
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_be" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### be_enabled
|
|
41
41
|
|
|
42
42
|
The `be_enabled` matcher tests if the named service is enabled:
|
|
43
43
|
|
|
44
44
|
it { should be_enabled }
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
### be_installed
|
|
47
47
|
|
|
48
48
|
The `be_installed` matcher tests if the named service is installed:
|
|
49
49
|
|
|
50
50
|
it { should be_installed }
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
### be_running
|
|
53
53
|
|
|
54
54
|
The `be_running` matcher tests if the named service is running:
|
|
55
55
|
|
|
56
56
|
it { should be_running }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
### cmp
|
|
59
59
|
|
|
60
60
|
<%= partial "/shared/matcher_cmp" %>
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### eq
|
|
63
63
|
|
|
64
64
|
<%= partial "/shared/matcher_eq" %>
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
### include
|
|
67
67
|
|
|
68
68
|
<%= partial "/shared/matcher_include" %>
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### match
|
|
71
71
|
|
|
72
72
|
<%= partial "/shared/matcher_match" %>
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
## Examples
|
|
75
75
|
|
|
76
76
|
None.
|
|
@@ -6,7 +6,7 @@ title: About the sysv_service Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `sysv_service` InSpec audit resource to test a service using SystemV.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `sysv_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
12
12
|
|
|
@@ -29,48 +29,48 @@ The path to the service manager's control may be specified for situations where
|
|
|
29
29
|
it { should be_running }
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
## Matchers
|
|
33
33
|
|
|
34
34
|
This InSpec audit resource has the following matchers:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### be
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_be" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### be_enabled
|
|
41
41
|
|
|
42
42
|
The `be_enabled` matcher tests if the named service is enabled:
|
|
43
43
|
|
|
44
44
|
it { should be_enabled }
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
### be_installed
|
|
47
47
|
|
|
48
48
|
The `be_installed` matcher tests if the named service is installed:
|
|
49
49
|
|
|
50
50
|
it { should be_installed }
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
### be_running
|
|
53
53
|
|
|
54
54
|
The `be_running` matcher tests if the named service is running:
|
|
55
55
|
|
|
56
56
|
it { should be_running }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
### cmp
|
|
59
59
|
|
|
60
60
|
<%= partial "/shared/matcher_cmp" %>
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### eq
|
|
63
63
|
|
|
64
64
|
<%= partial "/shared/matcher_eq" %>
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
### include
|
|
67
67
|
|
|
68
68
|
<%= partial "/shared/matcher_include" %>
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### match
|
|
71
71
|
|
|
72
72
|
<%= partial "/shared/matcher_match" %>
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
## Examples
|
|
75
75
|
|
|
76
76
|
None.
|
|
@@ -6,7 +6,7 @@ title: About the upstart_service Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `upstart_service` InSpec audit resource to test a service using Upstart.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
An `upstart_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
12
12
|
|
|
@@ -29,48 +29,48 @@ The path to the service manager's control may be specified for situations where
|
|
|
29
29
|
it { should be_running }
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
## Matchers
|
|
33
33
|
|
|
34
34
|
This InSpec audit resource has the following matchers:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### be
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_be" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### be_enabled
|
|
41
41
|
|
|
42
42
|
The `be_enabled` matcher tests if the named service is enabled:
|
|
43
43
|
|
|
44
44
|
it { should be_enabled }
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
### be_installed
|
|
47
47
|
|
|
48
48
|
The `be_installed` matcher tests if the named service is installed:
|
|
49
49
|
|
|
50
50
|
it { should be_installed }
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
### be_running
|
|
53
53
|
|
|
54
54
|
The `be_running` matcher tests if the named service is running:
|
|
55
55
|
|
|
56
56
|
it { should be_running }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
### cmp
|
|
59
59
|
|
|
60
60
|
<%= partial "/shared/matcher_cmp" %>
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### eq
|
|
63
63
|
|
|
64
64
|
<%= partial "/shared/matcher_eq" %>
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
### include
|
|
67
67
|
|
|
68
68
|
<%= partial "/shared/matcher_include" %>
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### match
|
|
71
71
|
|
|
72
72
|
<%= partial "/shared/matcher_match" %>
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
## Examples
|
|
75
75
|
|
|
76
76
|
None.
|