Skip to content
Security automation content in SCAP, OSCAL, Bash, Ansible, and other formats
Python Shell XSLT CMake HTML Go Other
Branch: master
Clone or download

Latest commit

jan-cerny Merge pull request #5818 from matejak/robust_crypto_update
Add error message to the crypto policy remediation
Latest commit 8913161 Jun 11, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add Pull Request Template Sep 28, 2017
Dockerfiles Add RHEL content to quay_publish container image Jun 4, 2020
apple_os Add initial macOS content Mar 23, 2020
applications Change ocp_data_root from /tmp to /kubernetes-api-resources Jun 10, 2020
build-scripts Merge pull request #5824 from JAORMX/ocp4 Jun 10, 2020
build Added build/.gitkeep and added build/ to .gitignores Feb 20, 2017
chromium Move common variables to the single place Mar 7, 2020
cmake Update CMake file to use correct dir options when building rule playb… Jun 9, 2020
debian10 add ntp and chrony cpes Mar 17, 2020
debian8 add ntp and chrony cpes Mar 17, 2020
debian9 add ntp and chrony cpes Mar 17, 2020
docs Add add_platform_rule.py section to dev guide Jun 9, 2020
eap6 Move common variables to the single place Mar 7, 2020
example Removed sles15_product.sh per request Mar 17, 2020
fedora add ntp and chrony cpes Mar 17, 2020
firefox Move common variables to the single place Mar 7, 2020
fuse6 Move common variables to the single place Mar 7, 2020
jre Move common variables to the single place Mar 7, 2020
linux_os/guide Merge pull request #5818 from matejak/robust_crypto_update Jun 11, 2020
macos1015 macOS build fixes Mar 25, 2020
ocp-resources enable build_ds_container.sh script to build all relevant ocp4 content Jun 3, 2020
ocp3 Move common variables to the single place Mar 7, 2020
ocp4 Remove unnecessary profiles and add dummy rule to existing profiles Jun 10, 2020
ol7 Add DISA STIG OL7 v1r1 stig_overlay Apr 22, 2020
ol8 Add html tables for ol7 and ol8 Apr 17, 2020
opensuse add ntp and chrony cpes Mar 17, 2020
release_tools
rhcos4 Update CoreOS profile to short name Jun 9, 2020
rhel6 add ntp and chrony cpes Mar 17, 2020
rhel7 Add dev_shm rules to rhel7 stig profile Jun 9, 2020
rhel8 fix test to use default value, remove rule from stig Jun 3, 2020
rhosp10 Move common variables to the single place Mar 7, 2020
rhosp13 Move common variables to the single place Mar 7, 2020
rhv4 Revert "Add xwindows runlevel target to STIG profile" Apr 30, 2020
shared Merge pull request #5824 from JAORMX/ocp4 Jun 10, 2020
sle11 add ntp and chrony cpes Mar 17, 2020
sle12 add ntp and chrony cpes Mar 17, 2020
sle15 Added more checks to CIS profile Jun 9, 2020
ssg Merge pull request #5824 from JAORMX/ocp4 Jun 10, 2020
tests ocp4: Generalize e2e tests Jun 11, 2020
ubuntu1404 add ntp and chrony cpes Mar 17, 2020
ubuntu1604 add ntp and chrony cpes Mar 17, 2020
ubuntu1804 Modify ubuntu 19.08 to 18.04 May 13, 2020
utils Change regex to match 1.2 datastreams on compare_generated script. Jun 9, 2020
wrlinux1019 add ntp and chrony cpes Mar 17, 2020
wrlinux8 add ntp and chrony cpes Mar 17, 2020
.all-contributorsrc docs: update .all-contributorsrc [skip ci] Apr 17, 2020
.cico.yaml Fixes small issues and code style, added unit tests. Jun 8, 2018
.dockerignore Ignore .git Dec 2, 2016
.gitignore Ignore release data Jan 13, 2020
.pep8speaks.yml Allow over 80 chars-long lines in Python scripts. Apr 6, 2018
.pyenv.sh Update .pyenv.sh to support non-sourced callings Aug 10, 2018
.travis.yml Per discussion + failures, remove linkchecker from travis gating Jul 31, 2018
CMakeLists.txt Add RHCOS4 product Jun 3, 2020
Contributors.md update contributors for 0.1.50 May 15, 2020
Contributors.xml
DISCLAIMER https://iase.disa.mil/ reports "This website is no longer being updat… Jun 17, 2019
LICENSE Update license to BSD-3 Oct 10, 2017
README.md docs: update README.md [skip ci] Apr 17, 2020
build_config.yml.in Include documentation_complete=false yaml in case Debug content Aug 13, 2018
build_product Add RHCOS4 product Jun 3, 2020

README.md

Welcome!

All Contributors

Release Nightly ZIP Status Nightly 5.10 ZIP Status Link-checker Status CentOS CI Status Travis CI Build Status Scrutinizer Code Quality Profile Statistics

Evaluation report sample

The purpose of this project is to create security policy content for various platforms -- Red Hat Enterprise Linux, Fedora, Ubuntu, Debian, ... -- as well as products -- Firefox, Chromium, JRE, ... Our aim is to make it as easy as possible to write new and maintain existing security content in all the commonly used formats.

We build security content in various formats

NIST logo     Ansible logo     Bash logo

"SCAP content" refers to documents in the XCCDF, OVAL and Source DataStream formats. These documents can be presented in different forms and by different organizations to meet their security automation and technical implementation needs. For general use we recommend Source DataStreams because they contain all the data you need to evaluate and put machines into compliance. The datastreams are part of our release ZIP archives.

"Ansible content" refers to Ansible playbooks generated from security profiles. These can be used both in check-mode to evaluate compliance, as well as run-mode to put machines into compliance. We publish these on Ansible Galaxy as well as in release ZIP archives.

"Bash fix files" refers to Bash scripts generate from security profiles. These are meant to be run on machines to put them into compliance. We recommend using other formats but understand that for some deployment scenarios bash is the only option.

Why?

We want multiple organizations to be able to efficiently develop security content. By taking advantage of the powerful build system of this project, we avoid as much redundancy as possible.

The build system combines the easy-to-edit YAML rule files with OVAL checks, Ansible task snippets, Bash fixes and other files. Templating is provided at every step to avoid boilerplate. Security identifiers (CCE, NIST ID, STIG, ...) appear in all of our output formats but are all sourced from the YAML rule files.

We understand that depending on your organization's needs you may need to use a specific security content format. We let you choose.

Build system schema


We use an OpenControl-inspired YAML rule format for input. Write once and generate security content in XCCDF, Ansible and others.

prodtype: rhel7

title: 'Configure The Number of Allowed Simultaneous Requests'

description: |-
    The <tt>MaxKeepAliveRequests</tt> directive should be set and configured to
    <sub idref="var_max_keepalive_requests" /> or greater by setting the following
    in <tt>/etc/httpd/conf/httpd.conf</tt>:
    <pre>MaxKeepAliveRequests <sub idref="var_max_keepalive_requests" /></pre>

rationale: |-
    Resource exhaustion can occur when an unlimited number of concurrent requests
    are allowed on a web site, facilitating a denial of service attack. Mitigating
    this kind of attack will include limiting the number of concurrent HTTP/HTTPS
    requests per IP address and may include, where feasible, limiting parameter
    values associated with keepalive, (i.e., a parameter used to limit the amount of
    time a connection may be inactive).

severity: medium

identifiers:
    cce: "80551-5"

Scan targets

Our security content can be used to scan bare-metal machines, virtual machines, virtual machine images (qcow2 and others), containers (including Docker) and container images.

We use platform checks to detect whether we should or should not evaluate some of the rules. For example: separate partition checks make perfect sense on bare-metal machines but go against recommended practices on containers.

Installation

From packages

The preferred method of installation is via the package manager of your distribution. On Red Hat Enterprise Linux and Fedora you can use:

yum install scap-security-guide

On Debian (sid), you can use:

apt install ssg-debian  # for Debian guides
apt install ssg-debderived  # for Debian-based distributions (e.g. Ubuntu) guides
apt install ssg-nondebian  # for other distributions guides (RHEL, Fedora, etc.)
apt install ssg-applications  # for application-oriented guides (Firefox, JBoss, etc.)

From release ZIP files

Download pre-built SSG zip archive from the release page. Each zip file is an archive with ready-made SCAP source datastreams.

From COPR

We maintain a COPR repository that provides unofficial builds of latest versions of openscap, scap-security-guide, scap-workbench and openscap-daemon. The packages are suitable for use on Red Hat Enterprise Linux 6 and 7 and CentOS 6 and 7.

See https://copr.fedorainfracloud.org/coprs/openscapmaint/openscap-latest/ for detailed instructions.

From source

If ComplianceAsCode is not packaged in your distribution (it may be present there as scap-security-guide package), or if the version that is packaged is too old, you need to build the content yourself and install it via make install. Please see the Developer Guide document for more info. We also recommend opening an issue on that distributions bug tracker to voice interest.

Usage

We assume you have installed ComplianceAsCode system-wide into a standard location from current upstream sources as instructed in the previous section.

There are several ways to consume ComplianceAsCode content, we will only go through a few of them here.

oscap tool

The oscap tool is a low-level command line interface that comes from the OpenSCAP project. It can be used to scan the local machine.

oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results-arf arf.xml --report report.html --oval-results /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml

After evaluation, the arf.xml file will contain all results in a reusable Result DataStream format, report.html will contain a human readable report that can be opened in a browser.

Replace the profile with other profile of your choice, you can display all possible choices using:

oscap info /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml

Please see the OpenSCAP User Manual for more info.

SCAP Workbench

The SCAP Workbench is a graphical user interface for SCAP evaluation and customization. It is suitable for scanning a single machine, either local or remote (via SSH). New versions of SCAP Workbench have SSG integration and will automatically offer it when the application is started.

Please see the SCAP Workbench User Manual for more info.

oscap-ssh tool

oscap-ssh comes bundled with OpenSCAP 1.2.3 and later. It allows scanning a remote machine via SSH with an interface resembling the oscap tool.

The following command evaluates machine with IP 192.168.1.123 with content stored on local machine. Keep in mind that oscap has to be installed on the remote machine but the SSG content doesn't need to be.

oscap-ssh root@192.168.1.123 22 xccdf eval --profile xccdf_org.ssgproject.content_profile_usgcb-rhel6-server --results-arf arf.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-rhel6-ds.xml

Ansible

To see a list of available Ansible Playbooks, run:

# ls /usr/share/scap-security-guide/ansible/
...
rhel6-playbook-standard.yml
rhel6-playbook-stig-rhel6-server-upstream.yml
rhel6-playbook-usgcb-rhel6-server.yml
rhel7-playbook-C2S.yml
rhel7-playbook-cjis-rhel7-server.yml
rhel7-playbook-common.yml
rhel7-playbook-docker-host.yml
rhel7-playbook-cui.yml
...

These Ansible Playbooks are generated from SCAP profiles available for the products.

To apply the playbook on your local machine run: (THIS WILL CHANGE CONFIGURATION OF THE MACHINE!)

ansible-playbook -i "localhost," -c local /usr/share/scap-security-guide/ansible/rhel7-playbook-rht-ccp.yml

Each of the Ansible Playbooks contain instructions on how to deploy them. Here is a snippet of the instructions:

...
# This file was generated by OpenSCAP 1.2.16 using:
#   $ oscap xccdf generate fix --profile rht-ccp --template urn:xccdf:fix:script:ansible sds.xml
#
# This script is generated from an OpenSCAP profile without preliminary evaluation.
# It attempts to fix every selected rule, even if the system is already compliant.
#
# How to apply this remediation role:
# $ ansible-playbook -i "192.168.1.155," playbook.yml
# $ ansible-playbook -i inventory.ini playbook.yml
...

Bash

To see a list of available Bash scripts, run:

# ls /usr/share/scap-security-guide/bash/
...
rhel7-script-hipaa.sh
rhel7-script-ospp.sh
rhel7-script-pci-dss.sh
...

These Bash scripts are generated from SCAP profiles available for the products. Similar to Ansible Playbooks, each of the Bash scripts contain instructions on how to deploy them.

Support

The SSG mailing list can be found at https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide.

If you encounter issues with OpenSCAP or SCAP Workbench, use https://www.redhat.com/mailman/listinfo/open-scap-list

You can also join the #openscap IRC channel on chat.freenode.net.

A little bit of history

This project started in 2011 as a collaboration between government agencies and commercial operating system vendors. The original name was SCAP Security Guide. The original scope was to create SCAP datastreams. Over time, it grew into the biggest open-source beyond-SCAP content project.

The next few years saw the introduction of not just government-specific security profiles but also commercial, such as PCI-DSS.

Later, the industry starting moving towards different security content formats, such as Ansible, Puppet and Chef InSpec. The community reacted by evolving the tooling and helped transform SSG into a more general-purpose security content project. This change happened over time in 2017 and 2018. In September 2018, we decided to change the name of the project to avoid confusion.

We envision that the future will be format-agnostic. That's why opted for an abstraction instead of using XCCDF for the input format.

Further reading

The SSG homepage is https://www.open-scap.org/security-policies/scap-security-guide/.

Contributors

Thanks goes to these wonderful people (emoji key):


Gabe Alford

💻 🐛 📝 💼 🖋 📖 🎨 💡 📋 🔍 🤔 🚇 🚧 📦 📆 💬 👀 🔧 ⚠️ 📢 📓 📹

Šimon Lukašík

💻 ⚠️ 🐛 📝 🖋 📖 💡 🤔 🚇 🚧 📦 🔌 💬 👀 🔧 📢 📓 📹

Ilya Okomin

💻

lsteinke

💻

Alexander Bergmann

💻

Jayson Cofell

💻

Watson Yuuma Sato

💻

Jan Lieskovsky

💻 🐛 🖋 📝 💡 📋 🤔 🚧 📦 👀 🔧 📢

Jan Černý

🐛 📝 💻 🖋 📖 💡 🤔 🚧 📦 💬 👀 🔧 ⚠️ 📢

jeffblank

🐛 💼 💻 🖋 📖 💡 📋 💵 🔍 📢 📹

Alexander Scheel

💻 📝

Matěj Týč

🐛 📝 💻 🖋 📖 💡 📋 🤔 🚧 📦 👀 🔧 ⚠️ 📢

Shawn Wells

🐛 📝 💼 💻 🖋 📖 💡 📋 💵 🔍 🤔 🚧 📆 💬 👀 🔧 ⚠️ 📢 📓 📹

Gabriel Gaspar Becker

🐛 💻 🖋 📖 🚧 💬 👀 🔧 ⚠️

vojtapolasek

💻 ⚠️ 🐛 👀 💬

Marek Haičman

🐛 💻 📆 ⚠️ 📢

Jan Pazdziora

💻

Matus Marhefka

💻 ⚠️ 👀 💬

Maura Dailey

💻

Philippe Thierry

💻

Milan Lysonek

💻 ⚠️

Robert McAllister

💻

Jakub Hrozek

💻

Xirui Yang

💻

Thomas Sjögren

💻

maltek

💻

Keith Jackson

💻

MollyJoBault

💻

Jon Thompson

💻

Jean-Baptiste DONNETTE

💻

Juan Osorio Robles

💻 ⚠️ 🤔 👀 📢

Eric Christensen

💻

Olivier Bonhomme

💻

Martin Preisler

🐛 📝 💼 💻 🖋 📖 🎨 💡 📋 🔍 🤔 🚇 🚧 📦 📆 💬 👀 🔧 ⚠️ 📢 📓 📹

lukek1

💻

Dave Smith

🐛 📝 💼 💻 🖋 📖 🎨 💡 📋 🔍 🤔 🚇 🚧 📦 📆 💬 👀 🔧 ⚠️ 📢 📓 📹

Trey Henefield

💻 ⚠️

Pat Riehecky

💻

Lucy Kerner

📝 💼 📋 🔍 🤔 📢 📹

James Cassell

💻

Dominique Blaze

💻

Justin Stephenson

💻

Evgeny Kolesnikov

💻 🤔

tedbrunell

💻 💼 🔍 📢 📹

Mike Palmiotto

💻 ⚠️ 🔧 📦

Chris Reynolds

💻

dehuo0

💻

brianmillett

💻

Gautam Satish

🐛 💻

cyarbrough76

💻

lfisher47

💻

Khary Mendez

💻 📢

Alijohn Ghassemlouei

💻

Mixer9

💻

Joshua Roys

💻

hex2a

💻

Axel Nennker

💻

Paul

💻

Kenneth Peeples

💻

Kenyon Ralph

💻

Chuck Atkins

💻

Chris Ruffalo

💻

Nick Carboni

💻

Caitlin

💻

jiatianzhen

💻

rwilmoth

💻 🤔 📢 💼

rprice

💻 📢 💼

Robin Price II

💻 📢 📹

Nathan Kinder

💻 💼

neo-aeon

💻

k-stailey

💻

Jesse Roland

💻

Stephan Joerrens

💻

cooper-ornl

💻

rodneymercer

💻

Joe Nall

💻 ⚠️ 🐛

agilmore2

💻

Jibzzz

💻

Steve Grubb

💻

shaneboulden

💻 💼

sdunne

💻 💼

Rick Renshaw

💻

Peter Vrabec

🐛 📝 💼 💻 🔍 🤔 📆 💬 👀 🔧 ⚠️ 📢 📹

Bryan Schneiders

💻

Orion Poplawski

💻

Matt Rogers

💻

mralph-rh

💻

Max P

💻

Joshua Glemza

💻

Frank lin Piat

💻

Derek Thurston

💻 💼

dhanushkar-wso2

💻

VadimDor

💻

Firas AlShafei

💻

Yasir Imam

💻 💼 📢

RCHAYES

💻

Mark Shoger

💻 💼

jstookey

💻

ghylock

💻

angystardust

💻

Klaas

💻

NoSLZZP

💻 💼 🤔

Ajay Chenampara

💻

Kazuki Omo

💻

J. Alexander Jacocks

💻 💼 📢 📹

Greg Elin

💻 📢 📹

Frank Caviggia

💻

Jared Hocutt

💼 📝 🤔 📢 📹

Brad

💼 🤔 📢 📹

matmille

💼 🤔 📢

Jason Dudash

🤔 📢

Donny Davis

🤔 📢

Bill Hirsch

🤔 📢 📹

rlucente-se-jboss

💻 🤔 📢

Lee Kinser

💻 🤔 📢

Michal Šrubař

💻

Lucas Yamanishi

💻

pekramp

💻

Nick

💻

Christopher Lee

💻

anixon-rh

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

You can’t perform that action at this time.