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,119 @@
1
+ ---
2
+ title: About the ssl Resource
3
+ platform: os
4
+ ---
5
+
6
+ # ssl
7
+
8
+ Use the `ssl` InSpec audit resource to test SSL settings for the named port.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `ssl` resource block declares an SSL port, and then other properties of the test like cipher and/or protocol:
15
+
16
+ describe ssl(port: #) do
17
+ it { should be_enabled }
18
+ end
19
+
20
+ or:
21
+
22
+ describe ssl(port: #).filter('value') do
23
+ it { should be_enabled }
24
+ end
25
+
26
+ where
27
+
28
+ * `ssl(port: #)` is the port number, such as `ssl(port: 443)`
29
+ * `filter` may take any of the following arguments: `ciphers`, `protocols`, and `handshake`
30
+
31
+ <br>
32
+
33
+ ## Examples
34
+
35
+ The following examples show how to use this InSpec audit resource.
36
+
37
+ ### Run the ssl-benchmark example profile
38
+
39
+ The following shows how to use the `ssl` InSpec audit resource to find all TCP ports on the system, including IPv4 and IPv6. (This is a partial example based on the `ssl_text.rb` file in the `ssl-benchmark` profile on GitHub.)
40
+
41
+ ...
42
+
43
+ control 'tls1.2' do
44
+ title 'Run TLS 1.2 whenever SSL is active on a port'
45
+ impact 0.5
46
+
47
+ sslports.each do |socket|
48
+ proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
49
+ describe ssl(port: socket.port).protocols('tls1.2') do
50
+ it(proc_desc) { should be_enabled }
51
+ it { should be_enabled }
52
+ end
53
+ end
54
+ end
55
+
56
+ ...
57
+
58
+ control 'rc4' do
59
+ title 'Disable RC4 ciphers from all exposed SSL/TLS ports and versions.'
60
+ impact 0.5
61
+
62
+ sslports.each do |socket|
63
+ proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
64
+ describe ssl(port: socket.port).ciphers(/rc4/i) do
65
+ it(proc_desc) { should_not be_enabled }
66
+ it { should_not be_enabled }
67
+ end
68
+ end
69
+ end
70
+
71
+ There are two ways to run the `ssl-benchmark` example profile to test SSL via the `ssl` resource.
72
+
73
+ Clone the profile:
74
+
75
+ $ git clone https://github.com/dev-sec/ssl-benchmark
76
+
77
+ and then run:
78
+
79
+ $ inspec exec ssl-benchmark
80
+
81
+ Or execute the profile directly via URL:
82
+
83
+ $ inspec exec https://github.com/dev-sec/ssl-benchmark
84
+
85
+ <br>
86
+
87
+ ## Matchers
88
+
89
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
90
+
91
+ ### be_enabled
92
+
93
+ The `be_enabled` matcher tests if SSL is enabled:
94
+
95
+ it { should be_enabled }
96
+
97
+ ### ciphers
98
+
99
+ The `ciphers` matcher tests the named cipher:
100
+
101
+ its('ciphers') { should_not eq '/rc4/i' }
102
+
103
+ or:
104
+
105
+ describe ssl(port: 443).ciphers(/rc4/i) do
106
+ it { should_not be_enabled }
107
+ end
108
+
109
+ ### protocols
110
+
111
+ The `protocols` matcher tests what protocol versions (SSLv3, TLSv1.1, etc) are enabled:
112
+
113
+ its('protocols') { should eq 'ssl2' }
114
+
115
+ or:
116
+
117
+ describe ssl(port: 443).protocols('ssl2') do
118
+ it { should_not be_enabled }
119
+ end
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: About the sys_info Resource
3
+ platform: os
4
+ ---
5
+
6
+ # sys_info
7
+
8
+ 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.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `sys_info` resource block declares the hostname to be tested:
15
+
16
+ describe sys_info do
17
+ its('hostname') { should eq 'value' }
18
+ end
19
+
20
+ <br>
21
+
22
+ ## Examples
23
+
24
+ The following examples show how to use this InSpec audit resource.
25
+
26
+ ### Get system information for example.com
27
+
28
+ describe sys_info do
29
+ its('hostname') { should eq 'example.com' }
30
+ end
31
+
32
+ <br>
33
+
34
+ ## Matchers
35
+
36
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
37
+
38
+ ### hostname
39
+
40
+ The `hostname` matcher tests the host for which standard output is returned:
41
+
42
+ its('hostname') { should eq 'value' }
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: About the systemd_service Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # systemd_service
7
+
8
+ Use the `systemd_service` InSpec audit resource to test a service using SystemD.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `systemd_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
15
+
16
+ describe systemd_service('service_name') do
17
+ it { should be_installed }
18
+ it { should be_enabled }
19
+ it { should be_running }
20
+ end
21
+
22
+ where
23
+
24
+ * `('service_name')` must specify a service name
25
+ * `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource; all matchers available to the `service` resource may be used
26
+
27
+ The path to the service manager's control may be specified for situations where the path isn't available in the current `PATH`. For example:
28
+
29
+ describe systemd_service('service_name', '/path/to/control') do
30
+ it { should be_enabled }
31
+ it { should be_installed }
32
+ it { should be_running }
33
+ end
34
+
35
+ <br>
36
+
37
+ ## Matchers
38
+
39
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
40
+
41
+ ### be_enabled
42
+
43
+ The `be_enabled` matcher tests if the named service is enabled:
44
+
45
+ it { should be_enabled }
46
+
47
+ ### be_installed
48
+
49
+ The `be_installed` matcher tests if the named service is installed:
50
+
51
+ it { should be_installed }
52
+
53
+ ### be_running
54
+
55
+ The `be_running` matcher tests if the named service is running:
56
+
57
+ it { should be_running }
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: About the sysv_service Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # sysv_service
7
+
8
+ Use the `sysv_service` InSpec audit resource to test a service using SystemV.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `sysv_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
15
+
16
+ describe sysv_service('service_name') do
17
+ it { should be_installed }
18
+ it { should be_enabled }
19
+ it { should be_running }
20
+ end
21
+
22
+ where
23
+
24
+ * `('service_name')` must specify a service name
25
+ * `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource; all matchers available to the `service` resource may be used
26
+
27
+ The path to the service manager's control may be specified for situations where the path isn't available in the current `PATH`. For example:
28
+
29
+ describe sysv_service('service_name', '/path/to/control') do
30
+ it { should be_enabled }
31
+ it { should be_installed }
32
+ it { should be_running }
33
+ end
34
+
35
+ <br>
36
+
37
+ ## Matchers
38
+
39
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
40
+
41
+ ### be_enabled
42
+
43
+ The `be_enabled` matcher tests if the named service is enabled:
44
+
45
+ it { should be_enabled }
46
+
47
+ ### be_installed
48
+
49
+ The `be_installed` matcher tests if the named service is installed:
50
+
51
+ it { should be_installed }
52
+
53
+ ### be_running
54
+
55
+ The `be_running` matcher tests if the named service is running:
56
+
57
+ it { should be_running }
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: About the upstart_service Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # upstart_service
7
+
8
+ Use the `upstart_service` InSpec audit resource to test a service using Upstart.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `upstart_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
15
+
16
+ describe upstart_service('service_name') do
17
+ it { should be_installed }
18
+ it { should be_enabled }
19
+ it { should be_running }
20
+ end
21
+
22
+ where
23
+
24
+ * `('service_name')` must specify a service name
25
+ * `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource; all matchers available to the `service` resource may be used
26
+
27
+ The path to the service manager's control may be specified for situations where the path isn't available in the current `PATH`. For example:
28
+
29
+ describe upstart_service('service_name', '/path/to/control') do
30
+ it { should be_enabled }
31
+ it { should be_installed }
32
+ it { should be_running }
33
+ end
34
+
35
+ <br>
36
+
37
+ ## Matchers
38
+
39
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
40
+
41
+ ### be_enabled
42
+
43
+ The `be_enabled` matcher tests if the named service is enabled:
44
+
45
+ it { should be_enabled }
46
+
47
+ ### be_installed
48
+
49
+ The `be_installed` matcher tests if the named service is installed:
50
+
51
+ it { should be_installed }
52
+
53
+ ### be_running
54
+
55
+ The `be_running` matcher tests if the named service is running:
56
+
57
+ it { should be_running }
@@ -0,0 +1,140 @@
1
+ ---
2
+ title: About the user Resource
3
+ platform: os
4
+ ---
5
+
6
+ # user
7
+
8
+ Use the `user` InSpec audit resource to test user profiles for a single, known/expected local user, including the groups to which that user belongs, the frequency of required password changes, and the directory paths to home and shell.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `user` resource block declares a user name, and then one (or more) matchers:
15
+
16
+ describe user('root') do
17
+ it { should exist }
18
+ its('uid') { should eq 1234 }
19
+ its('gid') { should eq 1234 }
20
+ its('group') { should eq 'root' }
21
+ its('groups') { should eq ['root', 'other']}
22
+ its('home') { should eq '/root' }
23
+ its('shell') { should eq '/bin/bash' }
24
+ its('mindays') { should eq 0 }
25
+ its('maxdays') { should eq 90 }
26
+ its('warndays') { should eq 8 }
27
+ end
28
+
29
+ where
30
+
31
+ * `('root')` is the user to be tested
32
+ * `it { should exist }` tests if the user exists
33
+ * `gid`, `group`, `groups`, `home`, `maxdays`, `mindays`, `shell`, `uid`, and `warndays` are valid matchers for this resource
34
+
35
+ <br>
36
+
37
+ ## Examples
38
+
39
+ The following examples show how to use this InSpec audit resource.
40
+
41
+ ### Verify available users for the MySQL server
42
+
43
+ describe user('root') do
44
+ it { should exist }
45
+ its('uid') { should eq 0 }
46
+ its('groups') { should eq ['root'] }
47
+ end
48
+
49
+ describe user('mysql') do
50
+ it { should_not exist }
51
+ end
52
+
53
+ ### Test users on multiple platforms
54
+
55
+ The `nginx` user is typically `www-data`, but on CentOS it's `nginx`. The following example shows how to test for the `nginx` user with a single test, but accounting for all platforms:
56
+
57
+ web_user = 'www-data'
58
+ web_user = 'nginx' if os[:family] == 'centos'
59
+
60
+ describe user(web_user) do
61
+ it { should exist }
62
+ end
63
+
64
+ <br>
65
+
66
+ ## Matchers
67
+
68
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
69
+
70
+ ### exist
71
+
72
+ The `exist` matcher tests if the named user exists:
73
+
74
+ it { should exist }
75
+
76
+ ### gid
77
+
78
+ The `gid` matcher tests the group identifier:
79
+
80
+ its('gid') { should eq 1234 }
81
+
82
+ where `1234` represents the user identifier.
83
+
84
+ ### group
85
+
86
+ The `group` matcher tests the group to which the user belongs:
87
+
88
+ its('group') { should eq 'root' }
89
+
90
+ where `root` represents the group.
91
+
92
+ ### groups
93
+
94
+ The `groups` matcher tests two (or more) groups to which the user belongs:
95
+
96
+ its('groups') { should eq ['root', 'other'] }
97
+
98
+ ### home
99
+
100
+ The `home` matcher tests the home directory path for the user:
101
+
102
+ its('home') { should eq '/root' }
103
+
104
+ ### maxdays
105
+
106
+ The `maxdays` matcher tests the maximum number of days between password changes:
107
+
108
+ its('maxdays') { should eq 99 }
109
+
110
+ where `99` represents the maximum number of days.
111
+
112
+ ### mindays
113
+
114
+ The `mindays` matcher tests the minimum number of days between password changes:
115
+
116
+ its('mindays') { should eq 0 }
117
+
118
+ where `0` represents the maximum number of days.
119
+
120
+ ### shell
121
+
122
+ The `shell` matcher tests the path to the default shell for the user:
123
+
124
+ its('shell') { should eq '/bin/bash' }
125
+
126
+ ### uid
127
+
128
+ The `uid` matcher tests the user identifier:
129
+
130
+ its('uid') { should eq 1234 }
131
+
132
+ where `1234` represents the user identifier.
133
+
134
+ ### warndays
135
+
136
+ The `warndays` matcher tests the number of days a user is warned before a password must be changed:
137
+
138
+ its('warndays') { should eq 5 }
139
+
140
+ where `5` represents the number of days a user is warned.