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,94 @@
1
+ ---
2
+ title: About the inetd_conf Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # inetd_conf
7
+
8
+ Use the `inetd_conf` InSpec audit resource to test if a service is listed 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.`
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `inetd_conf` resource block declares the list of services that are enabled in the `inetd.conf` file:
15
+
16
+ describe inetd_conf('path') do
17
+ its('service_name') { should eq 'value' }
18
+ end
19
+
20
+ where
21
+
22
+ * `'service_name'` is a service listed in the `inetd.conf` file
23
+ * `('path')` is the non-default path to the `inetd.conf` file
24
+ * `should eq 'value'` is the value that is expected
25
+
26
+ <br>
27
+
28
+ ## Properties
29
+
30
+ This resource supports any of the properties listed as services in the `inetd.conf` file. You may want to ensure that specific services do not listen via `inetd.conf`.
31
+
32
+ <br>
33
+
34
+ ## Examples
35
+
36
+ The following examples show how to use this InSpec audit resource.
37
+
38
+ ### Basic tests for inetd_conf services:
39
+
40
+ its('shell') { should eq nil }
41
+
42
+ or:
43
+
44
+ its('netstat') { should eq nil }
45
+
46
+ or:
47
+
48
+ its('systat') { should eq nil }
49
+
50
+ For example:
51
+
52
+ describe inetd_conf do
53
+ its('shell') { should eq nil }
54
+ its('login') { should eq nil }
55
+ its('exec') { should eq nil }
56
+ end
57
+
58
+ ### Verify that FTP is disabled
59
+
60
+ The contents if the `inetd.conf` file contain the following:
61
+
62
+ #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
63
+ #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
64
+
65
+ and the following test is defined:
66
+
67
+ describe inetd_conf do
68
+ its('ftp') { should eq nil }
69
+ its('telnet') { should eq nil }
70
+ end
71
+
72
+ Because both the `ftp` and `telnet` Internet services are commented out (`#`), both services are disabled. Consequently, both tests will return `true`. However, if the `inetd.conf` file is set as follows:
73
+
74
+ ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
75
+ #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
76
+
77
+ then the same test will return `false` for `ftp` and the entire test will fail.
78
+
79
+ ### Test if telnet is installed
80
+
81
+ describe package('telnetd') do
82
+ it { should_not be_installed }
83
+ end
84
+
85
+ describe inetd_conf do
86
+ its('telnet') { should eq nil }
87
+ end
88
+
89
+ <br>
90
+
91
+ ## Matchers
92
+
93
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
94
+
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: About the ini Resource
3
+ platform: os
4
+ ---
5
+
6
+ # ini
7
+
8
+ Use the `ini` InSpec audit resource to test settings in an INI file.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `ini` resource block declares the configuration settings to be tested:
15
+
16
+ describe ini('path') do
17
+ its('setting_name') { should eq 'value' }
18
+ end
19
+
20
+ where
21
+
22
+ * `'setting_name'` is a setting key defined in the INI file
23
+ * `('path')` is the path to the INI file
24
+ * `{ should eq 'value' }` is the value that is expected
25
+
26
+ For example:
27
+
28
+ describe ini('path/to/ini_file.ini') do
29
+ its('port') { should eq '143' }
30
+ its('server') { should eq '192.0.2.62' }
31
+ end
32
+
33
+ Settings inside of sections, such as the following:
34
+
35
+ [section_name]
36
+ setting_name = 123
37
+
38
+ ... can be retrieved by prefixing the setting_name with the section.
39
+
40
+ its('section_name.setting_name') { should cmp 123 }
41
+
42
+ In the event a section or setting name has a period in it, the alternate syntax can be used:
43
+
44
+ its(['section.with.a.dot.in.it', 'setting.name.with.dots']) { should cmp 'lotsadots' }
45
+
46
+ <br>
47
+
48
+ ## Properties
49
+
50
+ This resource supports any of the settings listed in an INI file as properties.
51
+
52
+ <br>
53
+
54
+ ## Examples
55
+
56
+ The following examples show how to use this InSpec audit resource.
57
+
58
+ ### Test SMTP settings in a PHP INI file
59
+
60
+ For example, a PHP INI file located at contains the following settings:
61
+
62
+ [mail function]
63
+ SMTP = smtp.gmail.com
64
+ smtp_port = 465
65
+
66
+ and can be tested like this:
67
+
68
+ describe ini('/etc/php5/apache2/php.ini') do
69
+ its('mail function.smtp_port') { should eq('465') }
70
+ end
71
+
72
+ <br>
73
+
74
+ ## Matchers
75
+
76
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: About the interface Resource
3
+ platform: os
4
+ ---
5
+
6
+ # interface
7
+
8
+ Use the `interface` InSpec audit resource to test basic network adapter properties, such as name, status, and link speed (in MB/sec).
9
+
10
+ * On Linux platforms, `/sys/class/net/#{iface}` is used as source
11
+ * On the Windows platform, the `Get-NetAdapter` cmdlet is used as source
12
+
13
+ <br>
14
+
15
+ ## Syntax
16
+
17
+ An `interface` resource block declares network interface properties to be tested:
18
+
19
+ describe interface('eth0') do
20
+ it { should be_up }
21
+ its('speed') { should eq 1000 }
22
+ its('name') { should eq eth0 }
23
+ end
24
+
25
+ <br>
26
+
27
+ ## Properties
28
+
29
+ `name`, `speed`
30
+
31
+ <br>
32
+
33
+ ## Resource Property Examples
34
+
35
+ ### name
36
+
37
+ The `name` matcher tests if the named network interface exists:
38
+
39
+ its('name') { should eq eth0 }
40
+
41
+ ### speed
42
+
43
+ The `speed` matcher tests the speed of the network interface, in MB/sec:
44
+
45
+ its('speed') { should eq 1000 }
46
+
47
+ <br>
48
+
49
+ ## Matchers
50
+
51
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
52
+
53
+ ### be_up
54
+
55
+ The `be_up` matcher tests if the network interface is available:
56
+
57
+ it { should be_up }
58
+
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: About the iptables Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # iptables
7
+
8
+ 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.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `iptables` resource block declares tests for rules in IP tables:
15
+
16
+ describe iptables(rule:'name', table:'name', chain: 'name') do
17
+ it { should have_rule('RULE') }
18
+ end
19
+
20
+ where
21
+
22
+ * `iptables()` may specify any combination of `rule`, `table`, or `chain`
23
+ * `rule:'name'` is the name of a rule that matches a set of packets
24
+ * `table:'name'` is the packet matching table against which the test is run
25
+ * `chain: 'name'` is the name of a user-defined chain or one of `ACCEPT`, `DROP`, `QUEUE`, or `RETURN`
26
+ * `have_rule('RULE')` tests that rule in the iptables list. This must match the entire line taken from `iptables -S CHAIN`.
27
+
28
+ <br>
29
+
30
+ ## Examples
31
+
32
+ The following examples show how to use this InSpec audit resource.
33
+
34
+ ### Test if the INPUT chain is in default ACCEPT mode
35
+
36
+ describe iptables do
37
+ it { should have_rule('-P INPUT ACCEPT') }
38
+ end
39
+
40
+ ### Test if the INPUT chain from the mangle table is in ACCEPT mode
41
+
42
+ describe iptables(table:'mangle', chain: 'INPUT') do
43
+ it { should have_rule('-P INPUT ACCEPT') }
44
+ end
45
+
46
+ ### Test if there is a rule allowing Postgres (5432/TCP) traffic
47
+
48
+ describe iptables do
49
+ it { should have_rule('-A INPUT -p tcp -m tcp -m multiport --dports 5432 -m comment --comment "postgres" -j ACCEPT') }
50
+ end
51
+
52
+ Note that the rule specification must exactly match what's in the output of `iptables -S INPUT`, which will depend on how you've built your rules.
53
+
54
+ <br>
55
+
56
+ ## Matchers
57
+
58
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
59
+
60
+ ### have_rule
61
+
62
+ The `have_rule` matcher tests the named rule against the information in the `iptables` file:
63
+
64
+ it { should have_rule('RULE') }
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: About the json Resource
3
+ platform: os
4
+ ---
5
+
6
+ # json
7
+
8
+ Use the `json` InSpec audit resource to test data in a JSON file.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `json` resource block declares the data to be tested. Assume the following JSON file:
15
+
16
+ {
17
+ "name" : "hello",
18
+ "meta" : {
19
+ "creator" : "John Doe"
20
+ },
21
+ "array": [
22
+ "zero",
23
+ "one"
24
+ ]
25
+ }
26
+
27
+ This file can be queried using:
28
+
29
+ describe json('/path/to/name.json') do
30
+ its('name') { should eq 'hello' }
31
+ its(['meta','creator']) { should eq 'John Doe' }
32
+ its(['array', 1]) { should eq 'one' }
33
+ end
34
+
35
+ where
36
+
37
+ * `name` is a configuration setting in a JSON file
38
+ * `should eq 'foo'` tests a value of `name` as read from a JSON file versus the value declared in the test
39
+
40
+ <br>
41
+
42
+ ## Examples
43
+
44
+ The following examples show how to use this InSpec audit resource.
45
+
46
+ ### name
47
+
48
+ The `name` matcher tests the value of the filename as read from a JSON file versus the value declared in the test:
49
+
50
+ its('name') { should eq '/tmp/example.json' }
51
+
52
+ ### Test a cookbook version in a policyfile.lock.json file
53
+
54
+ describe json('policyfile.lock.json') do
55
+ its(['cookbook_locks', 'omnibus', 'version']) { should eq('2.2.0') }
56
+ end
57
+
58
+ <br>
59
+
60
+ ## Matchers
61
+
62
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
63
+
@@ -0,0 +1,120 @@
1
+ ---
2
+ title: About the kernel_module Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # kernel_module
7
+
8
+ Use the `kernel_module` InSpec audit resource to test kernel modules on Linux
9
+ platforms. These parameters are located under `/lib/modules`. Any submodule may
10
+ be tested using this resource.
11
+
12
+ The `kernel_module` resource can also verify if a kernel module is `blacklisted`
13
+ or if a module is disabled via a fake install using the `bin_true` or `bin_false`
14
+ method.
15
+
16
+ <br>
17
+
18
+ ## Syntax
19
+
20
+ A `kernel_module` resource block declares a module name, and then tests if that
21
+ module is a loaded kernel module, if it is enabled, disabled or if it is
22
+ blacklisted:
23
+
24
+ describe kernel_module('module_name') do
25
+ it { should be_loaded }
26
+ it { should_not be_disabled }
27
+ it { should_not be_blacklisted }
28
+ end
29
+
30
+ where
31
+
32
+ * `'module_name'` must specify a kernel module, such as `'bridge'`
33
+ * `{ should be_loaded }` tests if the module is a loaded kernel module
34
+ * `{ should be_blacklisted }` tests if the module is blacklisted or if the module is disabled via a fake install using /bin/false or /bin/true
35
+ * `{ should be_disabled }` tests if the module is disabled via a fake install using /bin/false or /bin/true
36
+
37
+ <br>
38
+
39
+ ## Examples
40
+
41
+ The following examples show how to use this InSpec audit resource.
42
+
43
+ ### version
44
+
45
+ The `version` property tests if the kernel module on the system has the correct version:
46
+
47
+ its('version') { should eq '3.2.2' }
48
+
49
+ ### Test a kernel module's 'version'
50
+
51
+ describe kernel_module('bridge') do
52
+ it { should be_loaded }
53
+ its('version') { should cmp >= '2.2.2' }
54
+ end
55
+
56
+ ### Test if a kernel module is loaded, not disabled, and not blacklisted
57
+
58
+ describe kernel_module('video') do
59
+ it { should be_loaded }
60
+ it { should_not be_disabled }
61
+ it { should_not be_blacklisted }
62
+ end
63
+
64
+ ### Check if a kernel module is blacklisted
65
+
66
+ describe kernel_module('floppy') do
67
+ it { should be_blacklisted }
68
+ end
69
+
70
+ ### Check if a kernel module is *not* blacklisted and is loaded
71
+
72
+ describe kernel_module('video') do
73
+ it { should_not be_blacklisted }
74
+ it { should be_loaded }
75
+ end
76
+
77
+ ### Check if a kernel module is disabled via 'bin_false'
78
+
79
+ describe kernel_module('sstfb') do
80
+ it { should_not be_loaded }
81
+ it { should be_disabled }
82
+ end
83
+
84
+ ### Check if a kernel module is 'blacklisted'/'disabled' via 'bin_true'
85
+
86
+ describe kernel_module('nvidiafb') do
87
+ it { should_not be_loaded }
88
+ it { should be_blacklisted }
89
+ end
90
+
91
+ ### Check if a kernel module is not loaded
92
+
93
+ describe kernel_module('dhcp') do
94
+ it { should_not be_loaded }
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/).
102
+
103
+
104
+ ### be_blacklisted
105
+
106
+ The `be_blacklisted` matcher tests if the kernel module is a blacklisted module:
107
+
108
+ it { should be_blacklisted }
109
+
110
+ ### be_disabled
111
+
112
+ The `be_disabled` matcher tests if the kernel module is disabled:
113
+
114
+ it { should be_disabled }
115
+
116
+ ### be_loaded
117
+
118
+ The `be_loaded` matcher tests if the kernel module is loaded:
119
+
120
+ it { should be_loaded }