The InSpec profiles present in this repository are being developed and maintained as part of the SIMP project.
That said, it is our goal to make them valid for general purpose usage and hopefully hand them off to a more structured body as time progresses.
Presently, this repository is being built as a monolithic repo but the structure may change over time to better reflect our acceptance test methodology.
The profiles themselves are housed individually under the profiles
directory. Eventually, these will probably become their own repositories with
this repository hosting a central testing capability.
This repository uses either Beaker to run tests or the KitchenCI framework to run tests on the various profiles. Please see the documentation below on how to use each of the frameworks.
To run the tests, perform the following actions:
- Have Ruby 2.3.0 or later installed
- Run
bundle install
- Run
rake beaker:suites
If you need to debug your systems, you can run Beaker with a couple of options:
-
Preserve the VM unconditionally
BEAKER_destroy=no rake beaker:suites
-
Preserve the VM unless the tests pass
BEAKER_destroy=onpass rake beaker:suites
You can then access the VM by going to the root level of the repository and
navigating to .vagrant/beaker_vagrant_files/<automatic directory>
.
You should find a Vagrantfile
at that location and can use any standard
Vagrant CLI Commands.
The most useful of these will be vagrant status
and vagrant ssh <vm name>
.
The tests are housed under the spec/acceptance
directory and use the
profiles in spec/fixtures/inspec_profiles
during testing.
- Ruby 2.3.0 or later
- Virtualbox
- Vagrant
-
An installation of ChefDK may generate conflicts when combined with the installed kitchen gems. Recommend NOT installing ChefDK before testing with this repo.
-
If you run into errors when running
bundle install
, use the following commands to install gems:
gem install kitchen-puppet
gem install librarian-puppet
gem install kitchen-vagrant
-
If the tests are not found when running
kitchen verify
, open.kitchen.yml
and consultinspec_tests
under thesuites
section. -
You may also experience an error when running
kitchen converge
where a folder is unable to be created due to the length of the path. In this case, you may need to edit a registry key as explained here.
- Clone the repo via
git clone -b dev https://github.com/simp/inspec_profiles.git
- cd to
inspec_profiles
- Run
bundle install
- Run
kitchen list
- you should see the following choice:default-centos-7
- Run
kitchen converge default-centos-7
- Run
kitchen list
- your should see your host with status "converged"
Note: Once the open issues are resolved in InSpec and kitchen-inspec these
steps will not really be needed but for now we have to do a few things a bit
more manually. Once resolved fully, you will only need to run kitchen verify (machine name)
and everything will be taken care of.
- cd
.kitchen/
- vi default-centos-7.yml
- copy the
ssh_key:
value for later - note the mapped port value ( usually
2222
) and use in the next steps
-
On the terminal:
export SSH_KEY=(value from before)
-
cd to
inspec_profiles
- (optional) run an
inspec check profiles/disa_stig-rhel7-baseline
, and ensure there are no errors in the baseline.
- (optional) run an
-
run:
inspec exec profiles/disa_stig-rhel7-baseline -i $SSH_KEY -t ssh://[email protected]:2222 ( or the port mapped from step '4' above )
- (optional) `inspec exec profiles/disa_stig-rhel7-baseline/controls/V-#####
- -i $SSH_KEY -t ssh://[email protected]:2222` to just test a single control
- (optional)
inspec exec profiles/disa_stig-rhel7-baseline -i $SSH_KEY --controls=V-#####,V-##### -t ssh://[email protected]:2222
to just test a small set of controls
If you are going to be working on the ansible scripts you can continue to run
kitchen converge
and it will rerun your ansible scripts without going through
the entire machine creations process etc.
-
Making Changes and Testing
- run
kitchen converge (machine name)
- runs any changes to your hardening scripts - run
kitchen verify (machine name)
- runs the inspec tests
- run
-
Starting Clean:
- run
kitchen destroy (machine name)
kitchen will drop your box and you can start clean
- run
-
Going through the entire process ( create, build, configure, verify, destroy )
- run
kitchen test (machine name)
or to test all defined machineskitchen test
- run
-
Just running the validation scripts
- run
kitchen verify (machine name)
- run
-
just run one or more controls in the validation
- edit the .kitchen.yml file in the
controls:
section add thecontrol id(s)
to the list
- edit the .kitchen.yml file in the
- To save your output just use
> output.txt
In the tools
directory there are a few useful scripts for getting a little
better output for general display and demo, to use them see the README.md
file in the tools
directory or as an example:
kitchen converge (machine name) | ./tools/ansi2html.sh --bg=dark > kitchen-run.html
inspec exec . -i $SSH_KEY -t ssh://[email protected]:2222 | ./tools/ansi2html.sh --bg=dark > inspec-validation-run.html