inspec-core 4.3.2 → 4.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +37 -21
- data/etc/deprecations.json +10 -0
- data/etc/plugin_filters.json +8 -0
- data/lib/bundles/inspec-compliance/api.rb +1 -1
- data/lib/bundles/inspec-compliance/configuration.rb +1 -1
- data/lib/bundles/inspec-compliance/http.rb +1 -1
- data/lib/bundles/inspec-compliance/support.rb +1 -1
- data/lib/bundles/inspec-compliance/target.rb +1 -1
- data/lib/bundles/inspec-supermarket.rb +3 -7
- data/lib/bundles/inspec-supermarket/api.rb +10 -13
- data/lib/bundles/inspec-supermarket/cli.rb +12 -15
- data/lib/bundles/inspec-supermarket/target.rb +7 -11
- data/lib/fetchers/git.rb +14 -15
- data/lib/fetchers/local.rb +6 -10
- data/lib/fetchers/mock.rb +3 -5
- data/lib/fetchers/url.rb +42 -44
- data/lib/inspec.rb +23 -24
- data/lib/inspec/archive/tar.rb +2 -6
- data/lib/inspec/archive/zip.rb +3 -7
- data/lib/inspec/backend.rb +8 -9
- data/lib/inspec/base_cli.rb +64 -65
- data/lib/inspec/cached_fetcher.rb +2 -3
- data/lib/inspec/cli.rb +136 -97
- data/lib/inspec/config.rb +71 -61
- data/lib/inspec/control_eval_context.rb +22 -18
- data/lib/inspec/dependencies/cache.rb +2 -3
- data/lib/inspec/dependencies/dependency_set.rb +2 -3
- data/lib/inspec/dependencies/lockfile.rb +8 -9
- data/lib/inspec/dependencies/requirement.rb +7 -8
- data/lib/inspec/dependencies/resolver.rb +5 -7
- data/lib/inspec/describe.rb +2 -6
- data/lib/inspec/dist.rb +20 -0
- data/lib/inspec/dsl.rb +4 -7
- data/lib/inspec/dsl_shared.rb +1 -2
- data/lib/inspec/env_printer.rb +11 -12
- data/lib/inspec/errors.rb +0 -4
- data/lib/inspec/exceptions.rb +0 -1
- data/lib/inspec/expect.rb +5 -8
- data/lib/inspec/fetcher.rb +7 -10
- data/lib/inspec/file_provider.rb +24 -24
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +8 -8
- data/lib/inspec/globals.rb +2 -2
- data/lib/inspec/impact.rb +5 -7
- data/lib/inspec/input_registry.rb +84 -33
- data/lib/inspec/library_eval_context.rb +3 -6
- data/lib/inspec/log.rb +1 -5
- data/lib/inspec/metadata.rb +17 -16
- data/lib/inspec/method_source.rb +5 -9
- data/lib/inspec/objects.rb +10 -12
- data/lib/inspec/objects/control.rb +7 -9
- data/lib/inspec/objects/describe.rb +9 -11
- data/lib/inspec/objects/each_loop.rb +1 -3
- data/lib/inspec/objects/input.rb +24 -26
- data/lib/inspec/objects/list.rb +4 -6
- data/lib/inspec/objects/or_test.rb +2 -4
- data/lib/inspec/objects/ruby_helper.rb +3 -5
- data/lib/inspec/objects/tag.rb +0 -2
- data/lib/inspec/objects/test.rb +9 -11
- data/lib/inspec/objects/value.rb +3 -5
- data/lib/inspec/plugin/v1.rb +2 -2
- data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
- data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
- data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
- data/lib/inspec/plugin/v1/plugins.rb +15 -19
- data/lib/inspec/plugin/v1/registry.rb +0 -4
- data/lib/inspec/plugin/v2.rb +8 -8
- data/lib/inspec/plugin/v2/activator.rb +1 -1
- data/lib/inspec/plugin/v2/config_file.rb +6 -6
- data/lib/inspec/plugin/v2/filter.rb +13 -13
- data/lib/inspec/plugin/v2/installer.rb +36 -24
- data/lib/inspec/plugin/v2/loader.rb +28 -28
- data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
- data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
- data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
- data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
- data/lib/inspec/plugin/v2/registry.rb +7 -7
- data/lib/inspec/polyfill.rb +0 -3
- data/lib/inspec/profile.rb +55 -63
- data/lib/inspec/profile_context.rb +27 -30
- data/lib/inspec/profile_vendor.rb +6 -9
- data/lib/inspec/reporters.rb +24 -24
- data/lib/inspec/reporters/automate.rb +17 -19
- data/lib/inspec/reporters/base.rb +1 -1
- data/lib/inspec/reporters/cli.rb +88 -91
- data/lib/inspec/reporters/json.rb +2 -4
- data/lib/inspec/reporters/json_automate.rb +1 -3
- data/lib/inspec/reporters/json_min.rb +1 -3
- data/lib/inspec/reporters/junit.rb +26 -28
- data/lib/inspec/reporters/yaml.rb +1 -3
- data/lib/inspec/require_loader.rb +0 -4
- data/lib/inspec/resource.rb +4 -125
- data/lib/inspec/resources.rb +121 -0
- data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
- data/lib/{resources → inspec/resources}/apache.rb +13 -14
- data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
- data/lib/{resources → inspec/resources}/apt.rb +17 -17
- data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
- data/lib/{resources → inspec/resources}/auditd.rb +62 -64
- data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
- data/lib/{resources → inspec/resources}/bash.rb +6 -8
- data/lib/{resources → inspec/resources}/bond.rb +15 -14
- data/lib/{resources → inspec/resources}/bridge.rb +8 -8
- data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
- data/lib/{resources → inspec/resources}/command.rb +11 -10
- data/lib/{resources → inspec/resources}/cpan.rb +12 -12
- data/lib/{resources → inspec/resources}/cran.rb +9 -9
- data/lib/{resources → inspec/resources}/crontab.rb +47 -48
- data/lib/{resources → inspec/resources}/csv.rb +5 -5
- data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
- data/lib/{resources → inspec/resources}/directory.rb +5 -7
- data/lib/{resources → inspec/resources}/docker.rb +63 -63
- data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
- data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
- data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
- data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
- data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
- data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
- data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
- data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
- data/lib/{resources → inspec/resources}/file.rb +80 -79
- data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
- data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
- data/lib/{resources → inspec/resources}/gem.rb +12 -12
- data/lib/{resources → inspec/resources}/groups.rb +28 -27
- data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
- data/lib/{resources → inspec/resources}/host.rb +31 -29
- data/lib/{resources → inspec/resources}/http.rb +24 -24
- data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
- data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
- data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
- data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/ini.rb +7 -8
- data/lib/{resources → inspec/resources}/interface.rb +30 -30
- data/lib/{resources → inspec/resources}/iptables.rb +8 -8
- data/lib/{resources → inspec/resources}/json.rb +8 -10
- data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
- data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
- data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
- data/lib/{resources → inspec/resources}/ksh.rb +6 -8
- data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
- data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
- data/lib/{resources → inspec/resources}/mount.rb +6 -8
- data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
- data/lib/inspec/resources/mysql.rb +81 -0
- data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
- data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
- data/lib/{resources → inspec/resources}/nginx.rb +16 -17
- data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
- data/lib/{resources → inspec/resources}/npm.rb +9 -10
- data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/oneget.rb +8 -8
- data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
- data/lib/{resources → inspec/resources}/os.rb +6 -8
- data/lib/{resources → inspec/resources}/os_env.rb +11 -12
- data/lib/{resources → inspec/resources}/package.rb +66 -65
- data/lib/{resources → inspec/resources}/packages.rb +13 -13
- data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
- data/lib/{resources → inspec/resources}/passwd.rb +18 -19
- data/lib/{resources → inspec/resources}/pip.rb +19 -19
- data/lib/{resources → inspec/resources}/platform.rb +9 -11
- data/lib/{resources → inspec/resources}/port.rb +134 -136
- data/lib/{resources → inspec/resources}/postgres.rb +40 -32
- data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
- data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
- data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
- data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
- data/lib/{resources → inspec/resources}/powershell.rb +17 -13
- data/lib/{resources → inspec/resources}/processes.rb +29 -29
- data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
- data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
- data/lib/inspec/resources/script.rb +1 -0
- data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
- data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
- data/lib/{resources → inspec/resources}/service.rb +74 -75
- data/lib/{resources → inspec/resources}/shadow.rb +44 -45
- data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
- data/lib/{resources → inspec/resources}/ssl.rb +28 -29
- data/lib/inspec/resources/sys_info.rb +30 -0
- data/lib/{resources → inspec/resources}/toml.rb +5 -7
- data/lib/{resources → inspec/resources}/users.rb +65 -65
- data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
- data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
- data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
- data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
- data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
- data/lib/{resources → inspec/resources}/wmi.rb +7 -8
- data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
- data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
- data/lib/{resources → inspec/resources}/xml.rb +7 -7
- data/lib/{resources → inspec/resources}/yaml.rb +5 -6
- data/lib/{resources → inspec/resources}/yum.rb +10 -10
- data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
- data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
- data/lib/inspec/rspec_extensions.rb +24 -8
- data/lib/inspec/rule.rb +14 -15
- data/lib/inspec/runner.rb +28 -28
- data/lib/inspec/runner_mock.rb +1 -5
- data/lib/inspec/runner_rspec.rb +18 -20
- data/lib/inspec/runtime_profile.rb +2 -5
- data/lib/inspec/schema.rb +142 -143
- data/lib/inspec/secrets.rb +3 -7
- data/lib/inspec/secrets/yaml.rb +3 -5
- data/lib/inspec/shell.rb +11 -15
- data/lib/inspec/shell_detector.rb +6 -7
- data/lib/inspec/source_reader.rb +4 -8
- data/lib/inspec/ui.rb +33 -39
- data/lib/inspec/ui_table_helper.rb +12 -0
- data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
- data/lib/{utils → inspec/utils}/convert.rb +0 -4
- data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
- data/lib/inspec/utils/deprecation.rb +6 -0
- data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
- data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
- data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
- data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
- data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
- data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
- data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
- data/lib/{utils → inspec/utils}/filter.rb +30 -33
- data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
- data/lib/{utils → inspec/utils}/find_files.rb +9 -12
- data/lib/{utils → inspec/utils}/hash.rb +1 -5
- data/lib/inspec/utils/json_log.rb +15 -0
- data/lib/inspec/utils/latest_version.rb +13 -0
- data/lib/{utils → inspec/utils}/modulator.rb +0 -3
- data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
- data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
- data/lib/{utils → inspec/utils}/parser.rb +45 -45
- data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
- data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
- data/lib/{utils → inspec/utils}/spdx.rb +1 -4
- data/lib/{utils → inspec/utils}/spdx.txt +0 -0
- data/lib/inspec/utils/telemetry.rb +3 -3
- data/lib/inspec/utils/telemetry/collector.rb +30 -9
- data/lib/inspec/utils/telemetry/data_series.rb +3 -1
- data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/matchers/matchers.rb +22 -25
- data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
- data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
- data/lib/plugins/inspec-habitat/Berksfile +2 -2
- data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
- data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
- data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
- data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
- data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
- data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
- data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
- data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
- data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
- data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
- data/lib/source_readers/flat.rb +6 -10
- data/lib/source_readers/inspec.rb +8 -12
- metadata +139 -140
- data/lib/resources/mysql.rb +0 -82
- data/lib/resources/sys_info.rb +0 -28
- data/lib/utils/deprecation.rb +0 -6
- data/lib/utils/json_log.rb +0 -18
- data/lib/utils/latest_version.rb +0 -22
@@ -1,14 +1,13 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# copyright: 2015, Vulcano Security GmbH
|
3
2
|
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "inspec/utils/simpleconfig"
|
4
|
+
require "inspec/utils/file_reader"
|
6
5
|
|
7
6
|
module Inspec::Resources
|
8
7
|
class InetdConf < Inspec.resource(1)
|
9
|
-
name
|
10
|
-
supports platform:
|
11
|
-
desc
|
8
|
+
name "inetd_conf"
|
9
|
+
supports platform: "unix"
|
10
|
+
desc "Use the inetd_conf InSpec audit resource to test if a service is enabled in the inetd.conf file on Linux and UNIX platforms. inetd---the Internet service daemon---listens on dedicated ports, and then loads the appropriate program based on a request. The inetd.conf file is typically located at /etc/inetd.conf and contains a list of Internet services associated to the ports on which that service will listen. Only enabled services may handle a request; only services that are required by the system should be enabled."
|
12
11
|
example <<~EXAMPLE
|
13
12
|
describe inetd_conf do
|
14
13
|
its('shell') { should eq nil }
|
@@ -20,14 +19,14 @@ module Inspec::Resources
|
|
20
19
|
include FileReader
|
21
20
|
|
22
21
|
def initialize(path = nil)
|
23
|
-
@conf_path = path ||
|
22
|
+
@conf_path = path || "/etc/inetd.conf"
|
24
23
|
@content = read_file_content(@conf_path)
|
25
24
|
end
|
26
25
|
|
27
26
|
# overwrite exec to ensure it works with its
|
28
27
|
# TODO: this needs to be fixed in RSpec
|
29
28
|
def exec
|
30
|
-
read_params[
|
29
|
+
read_params["exec"]
|
31
30
|
end
|
32
31
|
|
33
32
|
def method_missing(name)
|
@@ -42,13 +41,13 @@ module Inspec::Resources
|
|
42
41
|
@content,
|
43
42
|
assignment_regex: /^\s*(\S+?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s*$/,
|
44
43
|
key_values: 6,
|
45
|
-
multiple_values: false
|
44
|
+
multiple_values: false
|
46
45
|
)
|
47
46
|
@params = conf.params
|
48
47
|
end
|
49
48
|
|
50
49
|
def to_s
|
51
|
-
|
50
|
+
"inetd.conf"
|
52
51
|
end
|
53
52
|
end
|
54
53
|
end
|
@@ -1,13 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'utils/simpleconfig'
|
1
|
+
require "inspec/resources/json"
|
2
|
+
require "inspec/utils/simpleconfig"
|
4
3
|
|
5
4
|
module Inspec::Resources
|
6
5
|
class IniConfig < JsonConfig
|
7
|
-
name
|
8
|
-
supports platform:
|
9
|
-
supports platform:
|
10
|
-
desc
|
6
|
+
name "ini"
|
7
|
+
supports platform: "unix"
|
8
|
+
supports platform: "windows"
|
9
|
+
desc "Use the ini InSpec audit resource to test data in a INI file."
|
11
10
|
example <<~EXAMPLE
|
12
11
|
descibe ini do
|
13
12
|
its('auth_protocol') { should eq 'https' }
|
@@ -23,7 +22,7 @@ module Inspec::Resources
|
|
23
22
|
# used by JsonConfig to build up a full to_s method
|
24
23
|
# based on whether a file path, content, or command was supplied.
|
25
24
|
def resource_base_name
|
26
|
-
|
25
|
+
"INI"
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
require "inspec/resources/command"
|
2
|
+
require "inspec/utils/convert"
|
3
|
+
require "inspec/utils/simpleconfig"
|
4
4
|
|
5
5
|
module Inspec::Resources
|
6
6
|
class NetworkInterface < Inspec.resource(1)
|
7
|
-
name
|
8
|
-
supports platform:
|
9
|
-
supports platform:
|
10
|
-
desc
|
7
|
+
name "interface"
|
8
|
+
supports platform: "unix"
|
9
|
+
supports platform: "windows"
|
10
|
+
desc "Use the interface InSpec audit resource to test basic network adapter properties, such as name, status, and link speed (in MB/sec)."
|
11
11
|
example <<~EXAMPLE
|
12
12
|
describe interface('eth0') do
|
13
13
|
it { should exist }
|
@@ -26,7 +26,7 @@ module Inspec::Resources
|
|
26
26
|
elsif inspec.os.windows?
|
27
27
|
@interface_provider = WindowsInterface.new(inspec)
|
28
28
|
else
|
29
|
-
return skip_resource
|
29
|
+
return skip_resource "The `interface` resource is not supported on your OS yet."
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -52,15 +52,15 @@ module Inspec::Resources
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def ipv4_addresses
|
55
|
-
ipv4_cidrs.map { |i| i.split(
|
55
|
+
ipv4_cidrs.map { |i| i.split("/")[0] }
|
56
56
|
end
|
57
57
|
|
58
58
|
def ipv6_addresses
|
59
|
-
ipv6_cidrs.map { |i| i.split(
|
59
|
+
ipv6_cidrs.map { |i| i.split("/")[0] }
|
60
60
|
end
|
61
61
|
|
62
62
|
def ipv4_addresses_netmask
|
63
|
-
ipv4_cidrs.map { |i| i.split(
|
63
|
+
ipv4_cidrs.map { |i| i.split("/") }.map do |addr, netlen|
|
64
64
|
binmask = "#{'1' * netlen.to_i}#{'0' * (32 - netlen.to_i)}".to_i(2)
|
65
65
|
netmask = []
|
66
66
|
(1..4).each do |_byte|
|
@@ -113,15 +113,15 @@ module Inspec::Resources
|
|
113
113
|
|
114
114
|
# parse state
|
115
115
|
state = false
|
116
|
-
if params.key?(
|
117
|
-
operstate, _value = params[
|
118
|
-
state = operstate ==
|
116
|
+
if params.key?("operstate")
|
117
|
+
operstate, _value = params["operstate"].first
|
118
|
+
state = operstate == "up"
|
119
119
|
end
|
120
120
|
|
121
121
|
# parse speed
|
122
122
|
speed = nil
|
123
|
-
if params.key?(
|
124
|
-
speed, _value = params[
|
123
|
+
if params.key?("speed")
|
124
|
+
speed, _value = params["speed"].first
|
125
125
|
speed = convert_to_i(speed)
|
126
126
|
end
|
127
127
|
|
@@ -130,19 +130,19 @@ module Inspec::Resources
|
|
130
130
|
name: iface,
|
131
131
|
up: state,
|
132
132
|
speed: speed,
|
133
|
-
ipv4_addresses: family_addresses[
|
134
|
-
ipv6_addresses: family_addresses[
|
133
|
+
ipv4_addresses: family_addresses["inet"],
|
134
|
+
ipv6_addresses: family_addresses["inet6"],
|
135
135
|
}
|
136
136
|
end
|
137
137
|
|
138
138
|
private
|
139
139
|
|
140
140
|
def addresses(iface)
|
141
|
-
addrs_by_family = {
|
141
|
+
addrs_by_family = { "inet6" => [], "inet" => [] }
|
142
142
|
[4, 6].each do |v|
|
143
143
|
cmd = inspec.command("/sbin/ip -br -#{v} address show dev #{iface}")
|
144
144
|
next unless cmd.exit_status.to_i == 0
|
145
|
-
family = v == 6 ?
|
145
|
+
family = v == 6 ? "inet6" : "inet"
|
146
146
|
|
147
147
|
cmd.stdout.each_line do |line|
|
148
148
|
_dev, _state, *addrs = line.split(/\s+/)
|
@@ -156,11 +156,11 @@ module Inspec::Resources
|
|
156
156
|
class WindowsInterface < InterfaceInfo
|
157
157
|
def interface_info(iface)
|
158
158
|
# gather all network interfaces
|
159
|
-
cmd = inspec.command(
|
160
|
-
|
159
|
+
cmd = inspec.command("Get-NetAdapter | Select-Object -Property Name, InterfaceDescription, Status, State, " \
|
160
|
+
"MacAddress, LinkSpeed, ReceiveLinkSpeed, TransmitLinkSpeed, Virtual | ConvertTo-Json")
|
161
161
|
|
162
|
-
addr_cmd = inspec.command(
|
163
|
-
|
162
|
+
addr_cmd = inspec.command("Get-NetIPAddress | Select-Object -Property IPv6Address, IPv4Address, InterfaceAlias," \
|
163
|
+
" PrefixLength | ConvertTo-Json")
|
164
164
|
|
165
165
|
# filter network interface
|
166
166
|
begin
|
@@ -178,11 +178,11 @@ module Inspec::Resources
|
|
178
178
|
adapters = net_adapter.each_with_object([]) do |adapter, adapter_collection|
|
179
179
|
# map object
|
180
180
|
info = {
|
181
|
-
name: adapter[
|
182
|
-
up: adapter[
|
183
|
-
speed: adapter[
|
184
|
-
ipv4_addresses: addresses_for_proto(addresses, adapter[
|
185
|
-
ipv6_addresses: addresses_for_proto(addresses, adapter[
|
181
|
+
name: adapter["Name"],
|
182
|
+
up: adapter["State"] == 2,
|
183
|
+
speed: adapter["ReceiveLinkSpeed"] / 1000,
|
184
|
+
ipv4_addresses: addresses_for_proto(addresses, adapter["Name"], "IPv4"),
|
185
|
+
ipv6_addresses: addresses_for_proto(addresses, adapter["Name"], "IPv6"),
|
186
186
|
}
|
187
187
|
adapter_collection.push(info) if info[:name].casecmp(iface) == 0
|
188
188
|
end
|
@@ -195,7 +195,7 @@ module Inspec::Resources
|
|
195
195
|
private
|
196
196
|
|
197
197
|
def addresses_for_proto(all_addresses, iface, proto)
|
198
|
-
all_addresses.select { |i| i[
|
198
|
+
all_addresses.select { |i| i["InterfaceAlias"] == iface }
|
199
199
|
.map { |i| "#{i["#{proto}Address"]}/#{i['PrefixLength']}" unless i["#{proto}Address"].nil? }
|
200
200
|
.compact
|
201
201
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require "inspec/resources/command"
|
2
2
|
|
3
3
|
# Usage:
|
4
4
|
# describe iptables do
|
@@ -21,9 +21,9 @@
|
|
21
21
|
# @see https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
|
22
22
|
module Inspec::Resources
|
23
23
|
class IpTables < Inspec.resource(1)
|
24
|
-
name
|
25
|
-
supports platform:
|
26
|
-
desc
|
24
|
+
name "iptables"
|
25
|
+
supports platform: "linux"
|
26
|
+
desc "Use the iptables InSpec audit resource to test rules that are defined in iptables, which maintains tables of IP packet filtering rules. There may be more than one table. Each table contains one (or more) chains (both built-in and custom). A chain is a list of rules that match packets. When the rule matches, the rule defines what target to assign to the packet."
|
27
27
|
example <<~EXAMPLE
|
28
28
|
describe iptables do
|
29
29
|
it { should have_rule('-P INPUT ACCEPT') }
|
@@ -39,7 +39,7 @@ module Inspec::Resources
|
|
39
39
|
|
40
40
|
# ensures, all calls are aborted for non-supported os
|
41
41
|
@iptables_cache = []
|
42
|
-
skip_resource
|
42
|
+
skip_resource "The `iptables` resource is not supported on your OS yet."
|
43
43
|
end
|
44
44
|
|
45
45
|
def has_rule?(rule = nil, _table = nil, _chain = nil)
|
@@ -54,7 +54,7 @@ module Inspec::Resources
|
|
54
54
|
# construct iptables command to read all rules
|
55
55
|
bin = find_iptables_or_error
|
56
56
|
table_cmd = "-t #{@table}" if @table
|
57
|
-
iptables_cmd = format(
|
57
|
+
iptables_cmd = format("%s %s -S %s", bin, table_cmd, @chain).strip
|
58
58
|
|
59
59
|
cmd = inspec.command(iptables_cmd)
|
60
60
|
return [] if cmd.exit_status.to_i != 0
|
@@ -64,7 +64,7 @@ module Inspec::Resources
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def to_s
|
67
|
-
format(
|
67
|
+
format("Iptables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
|
68
68
|
end
|
69
69
|
|
70
70
|
private
|
@@ -74,7 +74,7 @@ module Inspec::Resources
|
|
74
74
|
return cmd if inspec.command(cmd).exist?
|
75
75
|
end
|
76
76
|
|
77
|
-
raise Inspec::Exceptions::ResourceFailed,
|
77
|
+
raise Inspec::Exceptions::ResourceFailed, "Could not find `iptables`"
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
@@ -1,13 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require 'utils/enumerable_delegation'
|
5
|
-
require 'utils/file_reader'
|
1
|
+
require "inspec/utils/object_traversal"
|
2
|
+
require "inspec/utils/enumerable_delegation"
|
3
|
+
require "inspec/utils/file_reader"
|
6
4
|
|
7
5
|
module Inspec::Resources
|
8
6
|
class JsonConfig < Inspec.resource(1)
|
9
|
-
name
|
10
|
-
desc
|
7
|
+
name "json"
|
8
|
+
desc "Use the json InSpec audit resource to test data in a JSON file."
|
11
9
|
example <<~EXAMPLE
|
12
10
|
describe json('policyfile.lock.json') do
|
13
11
|
its(['cookbook_locks','omnibus','version']) { should eq('2.2.0') }
|
@@ -67,7 +65,7 @@ module Inspec::Resources
|
|
67
65
|
private
|
68
66
|
|
69
67
|
def parse(content)
|
70
|
-
require
|
68
|
+
require "json"
|
71
69
|
JSON.parse(content)
|
72
70
|
rescue => e
|
73
71
|
raise Inspec::Exceptions::ResourceFailed, "Unable to parse JSON: #{e.message}"
|
@@ -86,7 +84,7 @@ module Inspec::Resources
|
|
86
84
|
elsif opts.key?(:content)
|
87
85
|
opts[:content]
|
88
86
|
else
|
89
|
-
raise Inspec::Exceptions::ResourceFailed,
|
87
|
+
raise Inspec::Exceptions::ResourceFailed, "No JSON content; must specify a file, command, or raw JSON content"
|
90
88
|
end
|
91
89
|
end
|
92
90
|
|
@@ -104,7 +102,7 @@ module Inspec::Resources
|
|
104
102
|
# for resources the subclass JsonConfig, this allows specification of the resource
|
105
103
|
# base name in each subclass so we can build a good to_s method
|
106
104
|
def resource_base_name
|
107
|
-
|
105
|
+
"JSON"
|
108
106
|
end
|
109
107
|
end
|
110
108
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
require "inspec/resources/command"
|
2
2
|
|
3
3
|
module Inspec::Resources
|
4
4
|
class KernelModule < Inspec.resource(1)
|
5
|
-
name
|
6
|
-
supports platform:
|
5
|
+
name "kernel_module"
|
6
|
+
supports platform: "unix"
|
7
7
|
desc 'Use the kernel_module InSpec audit resource to test kernel modules on
|
8
8
|
Linux platforms. These parameters are located under /lib/modules. Any submodule
|
9
9
|
may be tested using this resource.
|
@@ -36,14 +36,14 @@ module Inspec::Resources
|
|
36
36
|
def initialize(modulename = nil)
|
37
37
|
@module = modulename
|
38
38
|
# this resource is only supported on Linux
|
39
|
-
return skip_resource
|
39
|
+
return skip_resource "The `kernel_parameter` resource is not supported on your OS." if !inspec.os.linux?
|
40
40
|
end
|
41
41
|
|
42
42
|
def loaded?
|
43
|
-
if inspec.os.redhat? || inspec.os.name ==
|
44
|
-
lsmod_cmd =
|
43
|
+
if inspec.os.redhat? || inspec.os.name == "fedora"
|
44
|
+
lsmod_cmd = "/sbin/lsmod"
|
45
45
|
else
|
46
|
-
lsmod_cmd =
|
46
|
+
lsmod_cmd = "lsmod"
|
47
47
|
end
|
48
48
|
|
49
49
|
# get list of all modules
|
@@ -51,7 +51,7 @@ module Inspec::Resources
|
|
51
51
|
return false if cmd.exit_status != 0
|
52
52
|
|
53
53
|
# check if module is loaded
|
54
|
-
re = Regexp.new(
|
54
|
+
re = Regexp.new("^" + Regexp.quote(@module) + '\s')
|
55
55
|
found = cmd.stdout.match(re)
|
56
56
|
!found.nil?
|
57
57
|
end
|
@@ -66,7 +66,7 @@ module Inspec::Resources
|
|
66
66
|
|
67
67
|
def version
|
68
68
|
cmd = inspec.command("#{modinfo_cmd_for_os} -F version #{@module}")
|
69
|
-
cmd.exit_status
|
69
|
+
cmd.exit_status == 0 ? cmd.stdout.delete("\n") : nil
|
70
70
|
end
|
71
71
|
|
72
72
|
def to_s
|
@@ -80,18 +80,18 @@ module Inspec::Resources
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def modinfo_cmd_for_os
|
83
|
-
if inspec.os.redhat? || inspec.os.name ==
|
84
|
-
|
83
|
+
if inspec.os.redhat? || inspec.os.name == "fedora"
|
84
|
+
"/sbin/modinfo"
|
85
85
|
else
|
86
|
-
|
86
|
+
"modinfo"
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
def modprobe_cmd_for_os
|
91
|
-
if inspec.os.redhat? || inspec.os.name ==
|
92
|
-
|
91
|
+
if inspec.os.redhat? || inspec.os.name == "fedora"
|
92
|
+
"/sbin/modprobe"
|
93
93
|
else
|
94
|
-
|
94
|
+
"modprobe"
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
require "inspec/resources/command"
|
2
2
|
|
3
3
|
module Inspec::Resources
|
4
4
|
class KernelParameter < Inspec.resource(1)
|
5
|
-
name
|
6
|
-
supports platform:
|
7
|
-
desc
|
5
|
+
name "kernel_parameter"
|
6
|
+
supports platform: "unix"
|
7
|
+
desc "Use the kernel_parameter InSpec audit resource to test kernel parameters on Linux platforms."
|
8
8
|
example <<~EXAMPLE
|
9
9
|
describe kernel_parameter('net.ipv4.conf.all.forwarding') do
|
10
10
|
its('value') { should eq 0 }
|
@@ -15,7 +15,7 @@ module Inspec::Resources
|
|
15
15
|
@parameter = parameter
|
16
16
|
|
17
17
|
# this resource is only supported on Linux
|
18
|
-
return skip_resource
|
18
|
+
return skip_resource "The `kernel_parameter` resource is not supported on your OS." if !inspec.os.linux?
|
19
19
|
end
|
20
20
|
|
21
21
|
def value
|
@@ -34,15 +34,15 @@ module Inspec::Resources
|
|
34
34
|
end
|
35
35
|
|
36
36
|
class LinuxKernelParameter < KernelParameter
|
37
|
-
name
|
37
|
+
name "linux_kernel_parameter"
|
38
38
|
|
39
39
|
def initialize(parameter)
|
40
|
-
Inspec.deprecate(:resource_linux_kernel_parameter,
|
40
|
+
Inspec.deprecate(:resource_linux_kernel_parameter, "The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`")
|
41
41
|
super(parameter)
|
42
42
|
end
|
43
43
|
|
44
44
|
def value
|
45
|
-
Inspec.deprecate(:resource_linux_kernel_parameter,
|
45
|
+
Inspec.deprecate(:resource_linux_kernel_parameter, "The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`")
|
46
46
|
super()
|
47
47
|
end
|
48
48
|
|
@@ -1,16 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require 'utils/file_reader'
|
6
|
-
require 'utils/pkey_reader'
|
1
|
+
require "openssl"
|
2
|
+
require "hashie/mash"
|
3
|
+
require "inspec/utils/file_reader"
|
4
|
+
require "inspec/utils/pkey_reader"
|
7
5
|
|
8
6
|
module Inspec::Resources
|
9
7
|
class RsaKey < Inspec.resource(1)
|
10
|
-
name
|
11
|
-
supports platform:
|
12
|
-
supports platform:
|
13
|
-
desc
|
8
|
+
name "key_rsa"
|
9
|
+
supports platform: "unix"
|
10
|
+
supports platform: "windows"
|
11
|
+
desc "public/private RSA key pair test"
|
14
12
|
example <<~EXAMPLE
|
15
13
|
describe key_rsa('/etc/pki/www.mywebsite.com.key') do
|
16
14
|
its('public_key') { should match /BEGIN RSA PUBLIC KEY/ }
|