inspec-core 2.1.67

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.
Files changed (412) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3136 -0
  3. data/Gemfile +56 -0
  4. data/LICENSE +14 -0
  5. data/MAINTAINERS.md +33 -0
  6. data/MAINTAINERS.toml +52 -0
  7. data/README.md +453 -0
  8. data/bin/inspec +12 -0
  9. data/docs/.gitignore +2 -0
  10. data/docs/README.md +40 -0
  11. data/docs/dev/control-eval.md +62 -0
  12. data/docs/dsl_inspec.md +258 -0
  13. data/docs/dsl_resource.md +100 -0
  14. data/docs/glossary.md +99 -0
  15. data/docs/habitat.md +192 -0
  16. data/docs/inspec_and_friends.md +114 -0
  17. data/docs/matchers.md +169 -0
  18. data/docs/migration.md +293 -0
  19. data/docs/platforms.md +119 -0
  20. data/docs/plugin_kitchen_inspec.md +50 -0
  21. data/docs/profiles.md +378 -0
  22. data/docs/reporters.md +105 -0
  23. data/docs/resources/aide_conf.md.erb +76 -0
  24. data/docs/resources/apache.md.erb +67 -0
  25. data/docs/resources/apache_conf.md.erb +68 -0
  26. data/docs/resources/apt.md.erb +71 -0
  27. data/docs/resources/audit_policy.md.erb +47 -0
  28. data/docs/resources/auditd.md.erb +79 -0
  29. data/docs/resources/auditd_conf.md.erb +68 -0
  30. data/docs/resources/bash.md.erb +75 -0
  31. data/docs/resources/bond.md.erb +90 -0
  32. data/docs/resources/bridge.md.erb +57 -0
  33. data/docs/resources/bsd_service.md.erb +67 -0
  34. data/docs/resources/chocolatey_package.md.erb +58 -0
  35. data/docs/resources/command.md.erb +138 -0
  36. data/docs/resources/cpan.md.erb +79 -0
  37. data/docs/resources/cran.md.erb +64 -0
  38. data/docs/resources/crontab.md.erb +89 -0
  39. data/docs/resources/csv.md.erb +54 -0
  40. data/docs/resources/dh_params.md.erb +205 -0
  41. data/docs/resources/directory.md.erb +30 -0
  42. data/docs/resources/docker.md.erb +219 -0
  43. data/docs/resources/docker_container.md.erb +103 -0
  44. data/docs/resources/docker_image.md.erb +94 -0
  45. data/docs/resources/docker_service.md.erb +114 -0
  46. data/docs/resources/elasticsearch.md.erb +242 -0
  47. data/docs/resources/etc_fstab.md.erb +125 -0
  48. data/docs/resources/etc_group.md.erb +75 -0
  49. data/docs/resources/etc_hosts.md.erb +78 -0
  50. data/docs/resources/etc_hosts_allow.md.erb +74 -0
  51. data/docs/resources/etc_hosts_deny.md.erb +74 -0
  52. data/docs/resources/file.md.erb +526 -0
  53. data/docs/resources/filesystem.md.erb +41 -0
  54. data/docs/resources/firewalld.md.erb +107 -0
  55. data/docs/resources/gem.md.erb +79 -0
  56. data/docs/resources/group.md.erb +61 -0
  57. data/docs/resources/grub_conf.md.erb +101 -0
  58. data/docs/resources/host.md.erb +86 -0
  59. data/docs/resources/http.md.erb +197 -0
  60. data/docs/resources/iis_app.md.erb +122 -0
  61. data/docs/resources/iis_site.md.erb +135 -0
  62. data/docs/resources/inetd_conf.md.erb +94 -0
  63. data/docs/resources/ini.md.erb +76 -0
  64. data/docs/resources/interface.md.erb +58 -0
  65. data/docs/resources/iptables.md.erb +64 -0
  66. data/docs/resources/json.md.erb +63 -0
  67. data/docs/resources/kernel_module.md.erb +120 -0
  68. data/docs/resources/kernel_parameter.md.erb +53 -0
  69. data/docs/resources/key_rsa.md.erb +85 -0
  70. data/docs/resources/launchd_service.md.erb +57 -0
  71. data/docs/resources/limits_conf.md.erb +75 -0
  72. data/docs/resources/login_defs.md.erb +71 -0
  73. data/docs/resources/mount.md.erb +69 -0
  74. data/docs/resources/mssql_session.md.erb +60 -0
  75. data/docs/resources/mysql_conf.md.erb +99 -0
  76. data/docs/resources/mysql_session.md.erb +74 -0
  77. data/docs/resources/nginx.md.erb +79 -0
  78. data/docs/resources/nginx_conf.md.erb +138 -0
  79. data/docs/resources/npm.md.erb +60 -0
  80. data/docs/resources/ntp_conf.md.erb +60 -0
  81. data/docs/resources/oneget.md.erb +53 -0
  82. data/docs/resources/oracledb_session.md.erb +52 -0
  83. data/docs/resources/os.md.erb +141 -0
  84. data/docs/resources/os_env.md.erb +91 -0
  85. data/docs/resources/package.md.erb +120 -0
  86. data/docs/resources/packages.md.erb +67 -0
  87. data/docs/resources/parse_config.md.erb +103 -0
  88. data/docs/resources/parse_config_file.md.erb +138 -0
  89. data/docs/resources/passwd.md.erb +141 -0
  90. data/docs/resources/pip.md.erb +67 -0
  91. data/docs/resources/port.md.erb +137 -0
  92. data/docs/resources/postgres_conf.md.erb +79 -0
  93. data/docs/resources/postgres_hba_conf.md.erb +93 -0
  94. data/docs/resources/postgres_ident_conf.md.erb +76 -0
  95. data/docs/resources/postgres_session.md.erb +69 -0
  96. data/docs/resources/powershell.md.erb +102 -0
  97. data/docs/resources/processes.md.erb +109 -0
  98. data/docs/resources/rabbitmq_config.md.erb +41 -0
  99. data/docs/resources/registry_key.md.erb +158 -0
  100. data/docs/resources/runit_service.md.erb +57 -0
  101. data/docs/resources/security_policy.md.erb +47 -0
  102. data/docs/resources/service.md.erb +121 -0
  103. data/docs/resources/shadow.md.erb +146 -0
  104. data/docs/resources/ssh_config.md.erb +73 -0
  105. data/docs/resources/sshd_config.md.erb +83 -0
  106. data/docs/resources/ssl.md.erb +119 -0
  107. data/docs/resources/sys_info.md.erb +42 -0
  108. data/docs/resources/systemd_service.md.erb +57 -0
  109. data/docs/resources/sysv_service.md.erb +57 -0
  110. data/docs/resources/upstart_service.md.erb +57 -0
  111. data/docs/resources/user.md.erb +140 -0
  112. data/docs/resources/users.md.erb +127 -0
  113. data/docs/resources/vbscript.md.erb +55 -0
  114. data/docs/resources/virtualization.md.erb +57 -0
  115. data/docs/resources/windows_feature.md.erb +47 -0
  116. data/docs/resources/windows_hotfix.md.erb +53 -0
  117. data/docs/resources/windows_task.md.erb +95 -0
  118. data/docs/resources/wmi.md.erb +81 -0
  119. data/docs/resources/x509_certificate.md.erb +151 -0
  120. data/docs/resources/xinetd_conf.md.erb +156 -0
  121. data/docs/resources/xml.md.erb +85 -0
  122. data/docs/resources/yaml.md.erb +69 -0
  123. data/docs/resources/yum.md.erb +98 -0
  124. data/docs/resources/zfs_dataset.md.erb +53 -0
  125. data/docs/resources/zfs_pool.md.erb +47 -0
  126. data/docs/ruby_usage.md +203 -0
  127. data/docs/shared/matcher_be.md.erb +1 -0
  128. data/docs/shared/matcher_cmp.md.erb +43 -0
  129. data/docs/shared/matcher_eq.md.erb +3 -0
  130. data/docs/shared/matcher_include.md.erb +1 -0
  131. data/docs/shared/matcher_match.md.erb +1 -0
  132. data/docs/shell.md +217 -0
  133. data/examples/README.md +8 -0
  134. data/examples/inheritance/README.md +65 -0
  135. data/examples/inheritance/controls/example.rb +14 -0
  136. data/examples/inheritance/inspec.yml +15 -0
  137. data/examples/kitchen-ansible/.kitchen.yml +25 -0
  138. data/examples/kitchen-ansible/Gemfile +19 -0
  139. data/examples/kitchen-ansible/README.md +53 -0
  140. data/examples/kitchen-ansible/files/nginx.repo +6 -0
  141. data/examples/kitchen-ansible/tasks/main.yml +16 -0
  142. data/examples/kitchen-ansible/test/integration/default/default.yml +5 -0
  143. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -0
  144. data/examples/kitchen-chef/.kitchen.yml +20 -0
  145. data/examples/kitchen-chef/Berksfile +3 -0
  146. data/examples/kitchen-chef/Gemfile +19 -0
  147. data/examples/kitchen-chef/README.md +27 -0
  148. data/examples/kitchen-chef/metadata.rb +7 -0
  149. data/examples/kitchen-chef/recipes/default.rb +6 -0
  150. data/examples/kitchen-chef/recipes/nginx.rb +30 -0
  151. data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -0
  152. data/examples/kitchen-puppet/.kitchen.yml +23 -0
  153. data/examples/kitchen-puppet/Gemfile +20 -0
  154. data/examples/kitchen-puppet/Puppetfile +25 -0
  155. data/examples/kitchen-puppet/README.md +53 -0
  156. data/examples/kitchen-puppet/manifests/site.pp +33 -0
  157. data/examples/kitchen-puppet/metadata.json +11 -0
  158. data/examples/kitchen-puppet/modules/.gitkeep +0 -0
  159. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -0
  160. data/examples/meta-profile/README.md +37 -0
  161. data/examples/meta-profile/controls/example.rb +13 -0
  162. data/examples/meta-profile/inspec.yml +13 -0
  163. data/examples/profile-attribute.yml +2 -0
  164. data/examples/profile-attribute/README.md +14 -0
  165. data/examples/profile-attribute/controls/example.rb +11 -0
  166. data/examples/profile-attribute/inspec.yml +8 -0
  167. data/examples/profile-sensitive/README.md +29 -0
  168. data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -0
  169. data/examples/profile-sensitive/controls/sensitive.rb +9 -0
  170. data/examples/profile-sensitive/inspec.yml +8 -0
  171. data/examples/profile/README.md +48 -0
  172. data/examples/profile/controls/example.rb +23 -0
  173. data/examples/profile/controls/gordon.rb +36 -0
  174. data/examples/profile/controls/meta.rb +34 -0
  175. data/examples/profile/inspec.yml +10 -0
  176. data/examples/profile/libraries/gordon_config.rb +59 -0
  177. data/inspec-core.gemspec +43 -0
  178. data/lib/bundles/README.md +3 -0
  179. data/lib/bundles/inspec-artifact.rb +7 -0
  180. data/lib/bundles/inspec-artifact/README.md +1 -0
  181. data/lib/bundles/inspec-artifact/cli.rb +277 -0
  182. data/lib/bundles/inspec-compliance.rb +16 -0
  183. data/lib/bundles/inspec-compliance/.kitchen.yml +20 -0
  184. data/lib/bundles/inspec-compliance/README.md +193 -0
  185. data/lib/bundles/inspec-compliance/api.rb +360 -0
  186. data/lib/bundles/inspec-compliance/api/login.rb +193 -0
  187. data/lib/bundles/inspec-compliance/bootstrap.sh +41 -0
  188. data/lib/bundles/inspec-compliance/cli.rb +260 -0
  189. data/lib/bundles/inspec-compliance/configuration.rb +103 -0
  190. data/lib/bundles/inspec-compliance/http.rb +125 -0
  191. data/lib/bundles/inspec-compliance/images/cc-token.png +0 -0
  192. data/lib/bundles/inspec-compliance/support.rb +36 -0
  193. data/lib/bundles/inspec-compliance/target.rb +106 -0
  194. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -0
  195. data/lib/bundles/inspec-habitat.rb +12 -0
  196. data/lib/bundles/inspec-habitat/cli.rb +36 -0
  197. data/lib/bundles/inspec-habitat/log.rb +10 -0
  198. data/lib/bundles/inspec-habitat/profile.rb +391 -0
  199. data/lib/bundles/inspec-init.rb +8 -0
  200. data/lib/bundles/inspec-init/README.md +31 -0
  201. data/lib/bundles/inspec-init/cli.rb +97 -0
  202. data/lib/bundles/inspec-init/templates/profile/README.md +3 -0
  203. data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -0
  204. data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -0
  205. data/lib/bundles/inspec-init/templates/profile/libraries/.gitkeep +0 -0
  206. data/lib/bundles/inspec-supermarket.rb +13 -0
  207. data/lib/bundles/inspec-supermarket/README.md +45 -0
  208. data/lib/bundles/inspec-supermarket/api.rb +84 -0
  209. data/lib/bundles/inspec-supermarket/cli.rb +73 -0
  210. data/lib/bundles/inspec-supermarket/target.rb +34 -0
  211. data/lib/fetchers/git.rb +163 -0
  212. data/lib/fetchers/local.rb +74 -0
  213. data/lib/fetchers/mock.rb +35 -0
  214. data/lib/fetchers/url.rb +247 -0
  215. data/lib/inspec.rb +24 -0
  216. data/lib/inspec/archive/tar.rb +29 -0
  217. data/lib/inspec/archive/zip.rb +19 -0
  218. data/lib/inspec/backend.rb +93 -0
  219. data/lib/inspec/base_cli.rb +368 -0
  220. data/lib/inspec/cached_fetcher.rb +66 -0
  221. data/lib/inspec/cli.rb +292 -0
  222. data/lib/inspec/completions/bash.sh.erb +45 -0
  223. data/lib/inspec/completions/fish.sh.erb +34 -0
  224. data/lib/inspec/completions/zsh.sh.erb +61 -0
  225. data/lib/inspec/control_eval_context.rb +179 -0
  226. data/lib/inspec/dependencies/cache.rb +72 -0
  227. data/lib/inspec/dependencies/dependency_set.rb +92 -0
  228. data/lib/inspec/dependencies/lockfile.rb +115 -0
  229. data/lib/inspec/dependencies/requirement.rb +123 -0
  230. data/lib/inspec/dependencies/resolver.rb +86 -0
  231. data/lib/inspec/describe.rb +27 -0
  232. data/lib/inspec/dsl.rb +66 -0
  233. data/lib/inspec/dsl_shared.rb +33 -0
  234. data/lib/inspec/env_printer.rb +157 -0
  235. data/lib/inspec/errors.rb +14 -0
  236. data/lib/inspec/exceptions.rb +12 -0
  237. data/lib/inspec/expect.rb +45 -0
  238. data/lib/inspec/fetcher.rb +45 -0
  239. data/lib/inspec/file_provider.rb +275 -0
  240. data/lib/inspec/formatters.rb +3 -0
  241. data/lib/inspec/formatters/base.rb +259 -0
  242. data/lib/inspec/formatters/json_rspec.rb +20 -0
  243. data/lib/inspec/formatters/show_progress.rb +12 -0
  244. data/lib/inspec/library_eval_context.rb +58 -0
  245. data/lib/inspec/log.rb +11 -0
  246. data/lib/inspec/metadata.rb +247 -0
  247. data/lib/inspec/method_source.rb +24 -0
  248. data/lib/inspec/objects.rb +14 -0
  249. data/lib/inspec/objects/attribute.rb +75 -0
  250. data/lib/inspec/objects/control.rb +61 -0
  251. data/lib/inspec/objects/describe.rb +92 -0
  252. data/lib/inspec/objects/each_loop.rb +36 -0
  253. data/lib/inspec/objects/list.rb +15 -0
  254. data/lib/inspec/objects/or_test.rb +40 -0
  255. data/lib/inspec/objects/ruby_helper.rb +15 -0
  256. data/lib/inspec/objects/tag.rb +27 -0
  257. data/lib/inspec/objects/test.rb +87 -0
  258. data/lib/inspec/objects/value.rb +27 -0
  259. data/lib/inspec/plugins.rb +60 -0
  260. data/lib/inspec/plugins/cli.rb +24 -0
  261. data/lib/inspec/plugins/fetcher.rb +86 -0
  262. data/lib/inspec/plugins/resource.rb +135 -0
  263. data/lib/inspec/plugins/secret.rb +15 -0
  264. data/lib/inspec/plugins/source_reader.rb +40 -0
  265. data/lib/inspec/polyfill.rb +12 -0
  266. data/lib/inspec/profile.rb +513 -0
  267. data/lib/inspec/profile_context.rb +208 -0
  268. data/lib/inspec/profile_vendor.rb +66 -0
  269. data/lib/inspec/reporters.rb +60 -0
  270. data/lib/inspec/reporters/automate.rb +76 -0
  271. data/lib/inspec/reporters/base.rb +25 -0
  272. data/lib/inspec/reporters/cli.rb +356 -0
  273. data/lib/inspec/reporters/json.rb +116 -0
  274. data/lib/inspec/reporters/json_min.rb +48 -0
  275. data/lib/inspec/reporters/junit.rb +78 -0
  276. data/lib/inspec/require_loader.rb +33 -0
  277. data/lib/inspec/resource.rb +190 -0
  278. data/lib/inspec/rule.rb +280 -0
  279. data/lib/inspec/runner.rb +345 -0
  280. data/lib/inspec/runner_mock.rb +41 -0
  281. data/lib/inspec/runner_rspec.rb +175 -0
  282. data/lib/inspec/runtime_profile.rb +26 -0
  283. data/lib/inspec/schema.rb +213 -0
  284. data/lib/inspec/secrets.rb +19 -0
  285. data/lib/inspec/secrets/yaml.rb +30 -0
  286. data/lib/inspec/shell.rb +220 -0
  287. data/lib/inspec/shell_detector.rb +90 -0
  288. data/lib/inspec/source_reader.rb +29 -0
  289. data/lib/inspec/version.rb +8 -0
  290. data/lib/matchers/matchers.rb +339 -0
  291. data/lib/resources/aide_conf.rb +151 -0
  292. data/lib/resources/apache.rb +48 -0
  293. data/lib/resources/apache_conf.rb +149 -0
  294. data/lib/resources/apt.rb +149 -0
  295. data/lib/resources/audit_policy.rb +63 -0
  296. data/lib/resources/auditd.rb +231 -0
  297. data/lib/resources/auditd_conf.rb +46 -0
  298. data/lib/resources/bash.rb +35 -0
  299. data/lib/resources/bond.rb +69 -0
  300. data/lib/resources/bridge.rb +122 -0
  301. data/lib/resources/chocolatey_package.rb +78 -0
  302. data/lib/resources/command.rb +73 -0
  303. data/lib/resources/cpan.rb +58 -0
  304. data/lib/resources/cran.rb +64 -0
  305. data/lib/resources/crontab.rb +169 -0
  306. data/lib/resources/csv.rb +56 -0
  307. data/lib/resources/dh_params.rb +77 -0
  308. data/lib/resources/directory.rb +25 -0
  309. data/lib/resources/docker.rb +236 -0
  310. data/lib/resources/docker_container.rb +89 -0
  311. data/lib/resources/docker_image.rb +83 -0
  312. data/lib/resources/docker_object.rb +57 -0
  313. data/lib/resources/docker_service.rb +90 -0
  314. data/lib/resources/elasticsearch.rb +169 -0
  315. data/lib/resources/etc_fstab.rb +94 -0
  316. data/lib/resources/etc_group.rb +154 -0
  317. data/lib/resources/etc_hosts.rb +66 -0
  318. data/lib/resources/etc_hosts_allow_deny.rb +112 -0
  319. data/lib/resources/file.rb +298 -0
  320. data/lib/resources/filesystem.rb +31 -0
  321. data/lib/resources/firewalld.rb +143 -0
  322. data/lib/resources/gem.rb +70 -0
  323. data/lib/resources/groups.rb +215 -0
  324. data/lib/resources/grub_conf.rb +227 -0
  325. data/lib/resources/host.rb +306 -0
  326. data/lib/resources/http.rb +253 -0
  327. data/lib/resources/iis_app.rb +101 -0
  328. data/lib/resources/iis_site.rb +148 -0
  329. data/lib/resources/inetd_conf.rb +54 -0
  330. data/lib/resources/ini.rb +29 -0
  331. data/lib/resources/interface.rb +129 -0
  332. data/lib/resources/iptables.rb +80 -0
  333. data/lib/resources/json.rb +111 -0
  334. data/lib/resources/kernel_module.rb +107 -0
  335. data/lib/resources/kernel_parameter.rb +58 -0
  336. data/lib/resources/key_rsa.rb +63 -0
  337. data/lib/resources/limits_conf.rb +46 -0
  338. data/lib/resources/login_def.rb +57 -0
  339. data/lib/resources/mount.rb +88 -0
  340. data/lib/resources/mssql_session.rb +101 -0
  341. data/lib/resources/mysql.rb +82 -0
  342. data/lib/resources/mysql_conf.rb +127 -0
  343. data/lib/resources/mysql_session.rb +85 -0
  344. data/lib/resources/nginx.rb +96 -0
  345. data/lib/resources/nginx_conf.rb +226 -0
  346. data/lib/resources/npm.rb +48 -0
  347. data/lib/resources/ntp_conf.rb +51 -0
  348. data/lib/resources/oneget.rb +71 -0
  349. data/lib/resources/oracledb_session.rb +139 -0
  350. data/lib/resources/os.rb +36 -0
  351. data/lib/resources/os_env.rb +86 -0
  352. data/lib/resources/package.rb +370 -0
  353. data/lib/resources/packages.rb +111 -0
  354. data/lib/resources/parse_config.rb +112 -0
  355. data/lib/resources/passwd.rb +76 -0
  356. data/lib/resources/pip.rb +130 -0
  357. data/lib/resources/platform.rb +109 -0
  358. data/lib/resources/port.rb +771 -0
  359. data/lib/resources/postgres.rb +131 -0
  360. data/lib/resources/postgres_conf.rb +114 -0
  361. data/lib/resources/postgres_hba_conf.rb +90 -0
  362. data/lib/resources/postgres_ident_conf.rb +79 -0
  363. data/lib/resources/postgres_session.rb +71 -0
  364. data/lib/resources/powershell.rb +67 -0
  365. data/lib/resources/processes.rb +204 -0
  366. data/lib/resources/rabbitmq_conf.rb +51 -0
  367. data/lib/resources/registry_key.rb +297 -0
  368. data/lib/resources/security_policy.rb +180 -0
  369. data/lib/resources/service.rb +794 -0
  370. data/lib/resources/shadow.rb +159 -0
  371. data/lib/resources/ssh_conf.rb +97 -0
  372. data/lib/resources/ssl.rb +99 -0
  373. data/lib/resources/sys_info.rb +28 -0
  374. data/lib/resources/toml.rb +32 -0
  375. data/lib/resources/users.rb +654 -0
  376. data/lib/resources/vbscript.rb +68 -0
  377. data/lib/resources/virtualization.rb +247 -0
  378. data/lib/resources/windows_feature.rb +84 -0
  379. data/lib/resources/windows_hotfix.rb +35 -0
  380. data/lib/resources/windows_task.rb +102 -0
  381. data/lib/resources/wmi.rb +110 -0
  382. data/lib/resources/x509_certificate.rb +137 -0
  383. data/lib/resources/xinetd.rb +106 -0
  384. data/lib/resources/xml.rb +46 -0
  385. data/lib/resources/yaml.rb +43 -0
  386. data/lib/resources/yum.rb +180 -0
  387. data/lib/resources/zfs_dataset.rb +60 -0
  388. data/lib/resources/zfs_pool.rb +49 -0
  389. data/lib/source_readers/flat.rb +39 -0
  390. data/lib/source_readers/inspec.rb +75 -0
  391. data/lib/utils/command_wrapper.rb +27 -0
  392. data/lib/utils/convert.rb +12 -0
  393. data/lib/utils/database_helpers.rb +77 -0
  394. data/lib/utils/enumerable_delegation.rb +9 -0
  395. data/lib/utils/erlang_parser.rb +192 -0
  396. data/lib/utils/file_reader.rb +25 -0
  397. data/lib/utils/filter.rb +273 -0
  398. data/lib/utils/filter_array.rb +27 -0
  399. data/lib/utils/find_files.rb +47 -0
  400. data/lib/utils/hash.rb +41 -0
  401. data/lib/utils/json_log.rb +18 -0
  402. data/lib/utils/latest_version.rb +22 -0
  403. data/lib/utils/modulator.rb +12 -0
  404. data/lib/utils/nginx_parser.rb +105 -0
  405. data/lib/utils/object_traversal.rb +49 -0
  406. data/lib/utils/parser.rb +274 -0
  407. data/lib/utils/pkey_reader.rb +15 -0
  408. data/lib/utils/plugin_registry.rb +93 -0
  409. data/lib/utils/simpleconfig.rb +120 -0
  410. data/lib/utils/spdx.rb +13 -0
  411. data/lib/utils/spdx.txt +344 -0
  412. metadata +713 -0
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: About the filesystem Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # filesystem
7
+
8
+ Use the `filesystem` InSpec resource to audit filesystem disk space usage.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `filesystem` resource block declares tests for disk space in a partition:
15
+
16
+ describe filesystem('/') do
17
+ its('size') { should be >= 32000 }
18
+ end
19
+
20
+ where
21
+
22
+ * `filesystem('/')` states that the resource will look at the root (/) partition.
23
+ * `size` is measured in kilobytes (KB).
24
+
25
+ <br>
26
+
27
+ ## Resource Property Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test if the root partition is greater than 32000 KB
32
+
33
+ describe filesystem('/') do
34
+ its('size') { should be >= 32000 }
35
+ end
36
+
37
+ <br>
38
+
39
+ ## Matchers
40
+
41
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: About the firewalld Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # firewalld
7
+
8
+ Use the `firewalld` InSpec audit resource to test that firewalld is configured to allow and deny access to specific hosts, services and ports on a system.
9
+
10
+ A firewalld has a number of zones that can be configured to allow and deny access to specific hosts, services, and ports.
11
+
12
+ <br>
13
+
14
+ ## Syntax
15
+
16
+ describe firewalld do
17
+ it { should be_running }
18
+ its('default_zone') { should eq 'public' }
19
+ it { should have_service_enabled_in_zone('ssh', 'public') }
20
+ it { should have_rule_enabled('family=ipv4 source address=192.168.0.14 accept', 'public') }
21
+ end
22
+
23
+ Use the where clause to test open interfaces, sources, and services in active zones.
24
+
25
+ describe firewalld.where { zone == 'public' } do
26
+ its('interfaces') { should cmp ['enp0s3', 'eno2'] }
27
+ its('sources') { should cmp ['192.168.1.0/24', '192.168.1.2'] }
28
+ its('services') { should cmp ['ssh', 'icmp'] }
29
+ end
30
+
31
+ <br>
32
+
33
+ ## Properties
34
+
35
+ ### interfaces
36
+
37
+ The `interfaces` property is used in conjunction with the where class to display open interfaces in an active zone.
38
+
39
+ describe firewalld.where { zone == 'public' } do
40
+ its('interfaces') { should cmp ['enp0s3', 'eno2'] }
41
+ end
42
+
43
+ ### sources
44
+
45
+ The `sources` property is used in conjunction with the where class to display open sources in an active zone.
46
+
47
+ describe firewalld.where { zone == 'public' } do
48
+ its('sources') { should cmp ['192.168.1.0/24', '192.168.1.2'] }
49
+ end
50
+
51
+ ### services
52
+
53
+ The `services` property is used in conjunction with the where class to display open services in an active zone.
54
+
55
+ describe firewalld.where { zone == 'public' } do
56
+ its('services') { should cmp ['ssh', 'icmp'] }
57
+ end
58
+
59
+ ### default_zone
60
+
61
+ The `default_zone` property displays the default active zone to be used.
62
+
63
+ its('default_zone') { should eq 'public' }
64
+
65
+ <br>
66
+
67
+ ## Matchers
68
+
69
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
70
+
71
+ ### `be_installed`
72
+
73
+ The `be_installed` matcher tests if the firewalld service is installed:
74
+
75
+ it { should be_installed }
76
+
77
+ ### `be_running`
78
+
79
+ The `be_running` matcher tests if the firewalld service is running:
80
+
81
+ it { should be_running }
82
+
83
+ ### have_zone
84
+
85
+ `have_zone` returns true or false if the zone is set on firewalld. It does not mean the zone is active.
86
+
87
+ it { should have_zone('public') }
88
+
89
+ ### `have_service_enabled_in_zone`
90
+
91
+ `have_service_enabled_in_zone` returns true or false if the service is allowed in the specified zone.
92
+
93
+ it { should have_service_enabled_in_zone('ssh', 'public') }
94
+
95
+ ### `have_port_enabled_in_zone`
96
+
97
+ `have_port_enabled_in_zone` returns true or false if the port is allowed in the specified zone.
98
+
99
+ it { should have_port_enabled_in_zone('22/tcp', 'public') }
100
+
101
+ ### `have_rule_enabled`
102
+
103
+ `have_rule_enabled` returns true or false if the rich-rule has been specified in the zone.
104
+
105
+ it { should have_rule_enabled('family=ipv4 source address=192.168.0.14 accept', 'public') }
106
+
107
+ It is not necessary to add the "rule" string, and you can start with the optional flags that are used in firewalld and end with the action
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: About the gem Resource
3
+ platform: os
4
+ ---
5
+
6
+ # gem
7
+
8
+ Use the `gem` InSpec audit resource to test if a global Gem package is installed.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `gem` resource block declares a package and (optionally) a package version:
15
+
16
+ describe gem('gem_package_name', 'gem_binary') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `('gem_package_name')` must specify a Gem package, such as `'rubocop'`
23
+ * `('gem_binary')` can specify the path to a non-default gem binary, defaults to `'gem'`
24
+ * `be_installed` is a valid matcher for this resource
25
+
26
+ <br>
27
+
28
+ ## Resource Property Examples
29
+
30
+ The following examples show how to use this InSpec audit resource.
31
+
32
+ ### Verify that a gem package is installed, with a specific version
33
+
34
+ describe gem('rubocop') do
35
+ it { should be_installed }
36
+ its('version') { should eq '0.33.0' }
37
+ end
38
+
39
+ ### Verify that a gem package is not installed
40
+
41
+ describe gem('rubocop') do
42
+ it { should_not be_installed }
43
+ end
44
+
45
+ ### Verify that a gem package is installed in an omnibus environment
46
+
47
+ describe gem('pry', '/opt/ruby-2.3.1/embedded/bin/gem') do
48
+ it { should be_installed }
49
+ end
50
+
51
+ ### Verify that a gem package is installed in a chef omnibus environment
52
+
53
+ describe gem('chef-sugar', :chef) do
54
+ it { should be_installed }
55
+ end
56
+
57
+ ### Verify that a gem package is installed in a chef-server omnibus environment
58
+
59
+ describe gem('knife-backup', :chef_server) do
60
+ it { should be_installed }
61
+ end
62
+
63
+ <br>
64
+
65
+ ## Matchers
66
+
67
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
68
+
69
+ ### be_installed
70
+
71
+ The `be_installed` matcher tests if the named Gem package is installed:
72
+
73
+ it { should be_installed }
74
+
75
+ ### version
76
+
77
+ The `version` matcher tests if the named package version is on the system:
78
+
79
+ its('version') { should eq '0.33.0' }
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: About the group Resource
3
+ platform: os
4
+ ---
5
+
6
+ # group
7
+
8
+ Use the `group` InSpec audit resource to test groups on the system.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `group` resource block declares a group, and then the details to be tested, such as if the group is a local group, the group identifier, or if the group exists:
15
+
16
+ describe group('group_name') do
17
+ it { should exist }
18
+ its('gid') { should eq 0 }
19
+ end
20
+
21
+ where
22
+
23
+ * `'group_name'` must specify the name of a group on the system
24
+ * `exist` and `'gid'` are valid matchers for this resource
25
+
26
+ <br>
27
+
28
+ ## Examples
29
+
30
+ The following examples show how to use this InSpec audit resource.
31
+
32
+ ### Test the group identifier for the root group
33
+
34
+ describe group('root') do
35
+ it { should exist }
36
+ its('gid') { should eq 0 }
37
+ end
38
+
39
+ <br>
40
+
41
+ ## Matchers
42
+
43
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
44
+
45
+ ### be_local
46
+
47
+ The `be_local` matcher tests if the group is a local group:
48
+
49
+ it { should be_local }
50
+
51
+ ### exist
52
+
53
+ The `exist` matcher tests if the named user exists:
54
+
55
+ it { should exist }
56
+
57
+ ### gid
58
+
59
+ The `gid` matcher tests the named group identifier:
60
+
61
+ its('gid') { should eq 1234 }
@@ -0,0 +1,101 @@
1
+ ---
2
+ title: About the grub_conf Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # grub_conf
7
+
8
+ Grub is a boot loader on the Linux platform used to load and then transfer control to an operating system kernel, after which that kernel initializes the rest of the operating system. Use the `grub_conf` InSpec audit resource to test boot loader configuration settings that are defined in the `grub.conf` configuration file.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `grub_conf` resource block declares a list of settings in a `grub.conf` file:
15
+
16
+ describe grub_conf('path', 'kernel') do
17
+ its('setting') { should eq 'value' }
18
+ end
19
+
20
+ or:
21
+
22
+ describe grub_conf('path') do
23
+ its('default') { should eq '0' } #
24
+ its('setting') { should eq 'value' }
25
+ end
26
+
27
+ where
28
+
29
+ * `'service_name'` is a service listed in the `grub.conf` file
30
+ * `'path'` is the path to the `grub.conf` file
31
+ * `'kernel'` specifies the default kernel (by using `'default'`) or a specific kernel; `'default'` defines the position in the list of kernels at which the default kernel is defined, i.e. `should eq '0'` for the first kernel listed or `'path', 'default'` to use the default kernel as specified in the `grub.conf` file
32
+ * `'value'` is the value that is expected
33
+
34
+ <br>
35
+
36
+ ## Examples
37
+
38
+ The following examples show how to use this InSpec audit resource.
39
+
40
+ ### Test a grub.conf file
41
+
42
+ A Grub configuration file located at `/etc/grub.conf` is similar to the following:
43
+
44
+ # grub.conf generated by anaconda
45
+ #
46
+ # Note: You do not need to rerun grub after making changes to this file
47
+ # NOTICE: You have a /boot partition. This means that
48
+ # all kernel and initrd paths are relative to /boot/, eg.
49
+ # root (hd0,0)
50
+ # kernel /vmlinuz-version ro root=/dev/hda6
51
+ # initrd /initrd-version.img
52
+ #boot=/dev/hda
53
+ default=0
54
+ timeout=10
55
+ splashimage=(hd0,0)/grub/splash.xpm.gz
56
+ title Red Hat Enterprise Linux ES (2.6.32-573.7.1.el6.x86_64)
57
+ root (hd0,0)
58
+ kernel /vmlinuz-2.6.32-573.7.1.el6.x86_64 ro root=/dev/hda6
59
+ initrd /initrd-2.6.32-573.7.1.el6.x86_64.img
60
+ title Red Hat Enterprise Linux ES (2.6.32-358.14.1.el6.x86_64)
61
+ root (hd0,0)
62
+ kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/hda6 ramdisk_size=400000
63
+ initrd /initrd-2.6.32-358.14.1.el6.x86_64.img
64
+
65
+ This file defines two versions of RedHat Enterprise Linux, with version `2.6.32-573.7.1.el6.x86_64` specified as the default.
66
+
67
+ The following test verifies the kernel, ensures that kernel is the default kernel, its initial RAM disk (`initrd`), and the timeout:
68
+
69
+ describe grub_conf('/etc/grub.conf', 'default') do
70
+ its('kernel') { should include '/vmlinuz-2.6.32-573.7.1.el6.x86_64' }
71
+ its('initrd') { should include '/initrd-2.6.32-573.7.1.el6.x86_64.img' }
72
+ its('default') { should_not eq '1' }
73
+ its('timeout') { should eq '10' }
74
+ end
75
+
76
+ The following test verifies the `ramdisk_size` for the non-default kernel:
77
+
78
+ describe grub_conf('/etc/grub.conf', 'Red Hat Enterprise Linux ES (2.6.32-358.14.1.el6.x86_64)') do
79
+ its('kernel') { should include 'ramdisk_size=400000' }
80
+ end
81
+
82
+ ### Test a configuration file and boot configuration
83
+
84
+ describe grub_conf('/etc/grub.conf', 'default') do
85
+ its('kernel') { should include '/vmlinuz-2.6.32-573.7.1.el6.x86_64' }
86
+ its('initrd') { should include '/initramfs-2.6.32-573.el6.x86_64.img=1' }
87
+ its('default') { should_not eq '1' }
88
+ its('timeout') { should eq '5' }
89
+ end
90
+
91
+ ### Test a specific kernel
92
+
93
+ grub_conf('/etc/grub.conf', 'CentOS (2.6.32-573.12.1.el6.x86_64)') do
94
+ its('kernel') { should include 'audit=1' }
95
+ end
96
+
97
+ <br>
98
+
99
+ ## Matchers
100
+
101
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: About the host Resource
3
+ platform: os
4
+ ---
5
+
6
+ # host
7
+
8
+ Use the `host` InSpec audit resource to test the name used to refer to a specific host and its availability, including the Internet protocols and ports over which that host name should be available.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `host` resource block declares a host name, and then (depending on what is to be tested) a port and/or a protocol:
15
+
16
+ describe host('example.com', port: 80, protocol: 'tcp') do
17
+ it { should be_reachable }
18
+ it { should be_resolvable }
19
+ its('ipaddress') { should include '12.34.56.78' }
20
+ end
21
+
22
+ where
23
+
24
+ * `host()` must specify a host name and may specify a port number and/or a protocol
25
+ * `'example.com'` is the host name
26
+ * `port:` is the port number
27
+ * `protocol: 'name'` is the Internet protocol: TCP (`protocol: 'tcp'`), UDP (`protocol: 'udp'` or ICMP (`protocol: 'icmp'`))
28
+
29
+ <br>
30
+
31
+ ## Resource Properties
32
+
33
+ * `connection`, `ipaddress`, `protocol`, `socket`
34
+
35
+ <br>
36
+
37
+ ## Resource Examples
38
+
39
+ The following examples show how to use this InSpec audit resource.
40
+
41
+ ### ipaddress
42
+
43
+ The `ipaddress` matcher tests if a host name is resolvable to a specific IP address:
44
+
45
+ describe host('example.com') do
46
+ its('ipaddress') { should include '93.184.216.34' }
47
+ end
48
+
49
+ ### Verify host name is reachable over a specific protocol and port number
50
+
51
+ describe host('example.com', port: 80, protocol: 'tcp') do
52
+ it { should be_reachable }
53
+ end
54
+
55
+ ### Verify that a specific IP address can be resolved
56
+
57
+ describe host('example.com') do
58
+ it { should be_resolvable }
59
+ its('ipaddress') { should include '93.184.216.34' }
60
+ end
61
+
62
+ ### Review the connection setup and socket contents when checking reachability
63
+
64
+ describe host('example.com', port: 12345, protocol: 'tcp') do
65
+ it { should be_reachable }
66
+ its('connection') { should_not match /connection refused/ }
67
+ its('socket') { should match /STATUS_OK/ }
68
+ end
69
+
70
+ <br>
71
+
72
+ ## Matchers
73
+
74
+ This InSpec audit resource has the following special matchers. For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
75
+
76
+ ### be_reachable
77
+
78
+ The `be_reachable` matcher tests if the host name is available:
79
+
80
+ it { should be_reachable }
81
+
82
+ ### be_resolvable
83
+
84
+ The `be_resolvable` matcher tests for host name resolution, i.e. "resolvable to an IP address":
85
+
86
+ it { should be_resolvable }