Skip to content

Commit

Permalink
Merge pull request #2 from mitre/rhel8-vagrant-hardening
Browse files Browse the repository at this point in the history
Rhel8 vagrant hardening
  • Loading branch information
em-c-rod authored May 26, 2022
2 parents 9e6d676 + b849bc1 commit 5ea658f
Show file tree
Hide file tree
Showing 28 changed files with 9,933 additions and 66 deletions.
12 changes: 11 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
source 'https://rubygems.org'

gem 'inspec'
gem "test-kitchen"
gem 'highline'
gem 'inspec-bin'
gem 'inspec_tools'
gem 'kitchen-ansible'
gem 'kitchen-docker'
gem 'kitchen-ec2'
gem 'kitchen-inspec'
gem 'kitchen-sync'
gem 'kitchen-vagrant'
gem 'rake'
gem 'rubocop'
2 changes: 1 addition & 1 deletion hardened.threshold.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
---
compliance.min: 75
error.total.max: 0
error.total.max: 0
3 changes: 3 additions & 0 deletions kitchen.inputs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---

disable_slow_controls: true
53 changes: 26 additions & 27 deletions kitchen.vagrant.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,33 @@

---
driver:
name: vagrant
# driver_config:
# ssl_verify_mode: ":verify_none"
# customize:
# cpus: 4
# memory: 8192
# accelerate3d: "off"
# accelerate2dvideo: "off"
# audio: "none"
# usbcardreader: "off"
# vrde: "off"
# usb: "off"
# nictype1: "82540EM"
# clipboard: "disabled"
driver_config:
ssl_verify_mode: ":verify_none"
customize:
cpus: 4
memory: 8192
accelerate3d: "off"
accelerate2dvideo: "off"
audio: "none"
usbcardreader: "off"
vrde: "off"
usb: "off"
nictype1: "82540EM"
clipboard: "disabled"
#nestedpaging: "off

# provisioner:
# name: ansible_playbook
# hosts: all
# # require_ansible_repo: false
# # require_ansible_omnibus: false
# require_chef_for_busser: false
# require_ruby_for_busser: false
# ansible_binary_path: /usr/local/bin
# require_pip3: true
# ansible_verbose: true
# roles_path: spec/ansible/roles
# galaxy_ignore_certs: true
provisioner:
name: ansible_playbook
hosts: all
# require_ansible_repo: false
# require_ansible_omnibus: false
require_chef_for_busser: false
require_ruby_for_busser: false
ansible_binary_path: /usr/local/bin
require_pip3: true
ansible_verbose: true
roles_path: spec/ansible/roles
galaxy_ignore_certs: true

platforms:
- name: rhel-8
Expand All @@ -46,4 +45,4 @@ lifecycle:
echo "NOTICE - Updating root passwd"
echo 'password' | sudo passwd --stdin root
echo "NOTICE - updating vagrant sudo config"
sudo chmod 600 /etc/sudoers && sudo sed -i'' "/vagrant/d" /etc/sudoers && sudo chmod 400 /etc/sudoers
sudo chmod 600 /etc/sudoers && sudo sed -i'' "/vagrant/d" /etc/sudoers && sudo chmod 400 /etc/sudoers
48 changes: 12 additions & 36 deletions kitchen.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,24 @@
provisioner:
name: dummy

platforms:
- name: rhel8-ec2
driver:
name: ec2
aws_ssh_key_id: <%= ENV['AWS_SSH_KEY_ID'] %>
user_data: ./user_data.sh
tags:
POC: <%= ENV['POC_TAG'] %>
security_group_ids: <%= ENV['SECURITY_GROUP_IDS'] %>
region: <%= ENV['AWS_REGION'] %>
subnet_id: <%= ENV['SUBNET_ID'] %>
instance_type: t2.large
associate_public_ip: true
transport:
username: ec2-user
ssh_key: ./ssh_key
connection_timeout: 10
connection_retries: 5
- name: rhel8-ubi
driver:
name: dokken
pull_platform_image: false
transport:
name: dokken

---
verifier:
name: inspec
sudo: true
reporter:
- cli
- json:reports/raw/%{suite}/%{platform}.json
- json:spec/results/%{platform}_%{suite}.json
inspec_tests:
- name: RedHat Enterprise Linux 8 STIG
- name: Red Hat 8 STIG
path: .
input_files:
- kitchen.inputs.yml
load_plugins: true

platforms:
- name: rhel-8

suites:
- name: vanilla
driver:
image_id: <%= ENV['VANILLA_AMI_ID'] %>
image: <%= ENV['VANILLA_CONTAINER_IMAGE'] %>
provisioner:
playbook: spec/ansible/roles/ansible-role-rhel-vanilla.yml
- name: hardened
driver:
image_id: <%= ENV['HARDENED_AMI_ID'] %>
image: <%= ENV['HARDENED_CONTAINER_IMAGE'] %>
provisioner:
playbook: spec/ansible/roles/ansible-role-rhel-hardened.yml
Binary file added spec/.DS_Store
Binary file not shown.
10 changes: 10 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-hardened.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
- hosts:
- localhost
roles:
- roles/ansible-role-rhel-vanilla
- roles/rhel8STIG
serial: 50
become: yes
#vars:
# - deployment_task: configure_apps.yml
8 changes: 8 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- hosts:
- localhost
roles:
- roles/ansible-role-rhel-vanilla
serial: 50
#vars:
# - deployment_task: configure_apps.yml
29 changes: 29 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
language: python
python: "2.7"

# Use the new container infrastructure
sudo: false

# Install ansible
addons:
apt:
packages:
- python-pip

install:
# Install ansible
- pip install ansible

# Check ansible version
- ansible --version

# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg

script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
38 changes: 38 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
Role Name
=========

A brief description of the role goes here.

Requirements
------------

Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.

Role Variables
--------------

A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.

Dependencies
------------

A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.

Example Playbook
----------------

Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:

- hosts: servers
roles:
- { role: username.rolename, x: 42 }

License
-------

BSD

Author Information
------------------

An optional section for the role authors to include contact information, or a website (HTML is not allowed).
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
# defaults file for ansible-role-rhel-stig-vanilla
10 changes: 10 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
- name: Reboot the box if kernel updated
reboot:
msg: "Reboot initiated by Ansible for kernel updates"
connect_timeout: 5
reboot_timeout: 600
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: whoami
when: reboot_required_file.stat.exists
52 changes: 52 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
galaxy_info:
author: Will Dower
description: Ansible Role for RHEL 8 Vanilla install
company: MITRE

# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker

# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license Apache-2.0

min_ansible_version: 2.1

# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:

#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99

galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.

dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.
Empty file.
13 changes: 13 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/tasks/_packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
- name: Upgrade all packages
yum:
name: '*'
state: latest
- name: Install required packages
yum:
name:
- jq
- vim
- bc
state: latest

3 changes: 3 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
- include_tasks: _packages.yml
- include_tasks: _config.yml
2 changes: 2 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/tests/inventory
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
localhost

5 changes: 5 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/tests/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- ansible-role-rhel-stig-vanilla
6 changes: 6 additions & 0 deletions spec/ansible/roles/ansible-role-rhel-vanilla/vars/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
– hosts: all
sudo: yes
roles:
– { role: “ansible-role-rhel-stig-vanilla”}

2 changes: 2 additions & 0 deletions spec/ansible/roles/rhel8STIG/ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[defaults]
callback_whitelist = stig_xml
1 change: 1 addition & 0 deletions spec/ansible/roles/rhel8STIG/enforce.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ansible-playbook -v -b -i /dev/null site.yml
Loading

0 comments on commit 5ea658f

Please sign in to comment.