1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
|
# Welcome!
[](https://complianceascode.readthedocs.io/en/latest/)
[](https://github.com/ComplianceAsCode/content/releases/latest)
[](https://nightly.link/ComplianceAsCode/content/workflows/nightly_build/master/Nightly%20Build.zip)
[](https://complianceascode.github.io/content-pages/)
[](https://gitter.im/Compliance-As-Code-The/content?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
The purpose of this project is to create *security policy content* for various
platforms — *Red Hat Enterprise Linux*, *Fedora*, *Ubuntu*, *Debian*, *SUSE Linux Enterprise Server (SLES)*,... —
as well as products — *Firefox*,...
We aim to make it as easy as possible to write new and maintain existing
security content in all the commonly used formats.
* [ComplianceAsCode Documentation](https://complianceascode.readthedocs.io/)
* [ComplianceAsCode Blog](https://complianceascode.github.io/)
* [Online Workshops](docs/workshop/README.adoc) - Perfect as a starting point
* [Profiles in ComplianceAsCode](https://complianceascode.github.io/content-pages/guides/index.html) - online HTML guides for each profile
## We build security content in various formats
  
*"SCAP content"* refers to documents in the *XCCDF*, *OVAL* and
*SCAP source data stream* 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 *SCAP source data streams* because they contain all the data you
need to evaluate and put machines into compliance. The data streams 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 generated 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.

---
We use an OpenControl-inspired YAML rule format for input. Write once and
generate security content in XCCDF, Ansible, and others.
```YAML
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 {{{ xccdf_value("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:
```bash
yum install scap-security-guide
```
On Debian (sid), you can use:
```bash
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](https://github.com/ComplianceAsCode/content/releases/latest).
Each zip file is an archive with ready-made SCAP source data streams.
### 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](https://complianceascode.readthedocs.io/en/latest/manual/developer/02_building_complianceascode.html)
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.
```bash
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ospp --results-arf arf.xml --report report.html --oval-results /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
```
<a href="docs/readme_images/report_sample.png"><img align="right" width="250" src="docs/readme_images/report_sample.png" alt="Evaluation report sample"></a>
After evaluation, the `arf.xml` file will contain all results in a reusable
*result data stream* (ARF) 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:
```bash
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
```
Please see the [OpenSCAP](https://www.open-scap.org/) website for more information.
### 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](https://www.open-scap.org/tools/scap-workbench/) website for more information.
### `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 a machine with IP `192.168.1.123` with content
stored on the local machine. Keep in mind that `oscap` has to be installed on the
remote machine but the SSG content doesn't need to be.
```bash
oscap-ssh root@192.168.1.123 22 xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf arf.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
```
### Ansible
To see a list of available Ansible Playbooks, run:
```bash
ls /usr/share/scap-security-guide/ansible/
```
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!*)
```bash
ansible-playbook -i "localhost," -c local /usr/share/scap-security-guide/ansible/rhel9-playbook-ospp.yml
```
Each of the Ansible Playbooks contains instructions on how to deploy them. Here
is a snippet of the instructions:
```YAML
...
# This file was generated by OpenSCAP 1.2.16 using:
# $ oscap xccdf generate fix --profile rht-ccp --fix-type 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:
```bash
# ls /usr/share/scap-security-guide/bash/
...
rhel8-script-hipaa.sh
rhel8-script-ospp.sh
rhel8-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](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](https://www.redhat.com/mailman/listinfo/open-scap-list)
If you prefer more interactive contact with the community, you can join us on Gitter and IRC:
- Gitter: https://gitter.im/Compliance-As-Code-The/content
- IRC: join the `#openscap` IRC channel on `libera.chat`.
## A little bit of history
This project started in 2011 as a collaboration between United States Government agencies and commercial operating system vendors.
The original name was SCAP Security Guide, commonly abbreviated as SSG.
The original scope was to create SCAP data streams. 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 and CIS.
Later, the industry starts 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 `ComplianceAsCode`, in order 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.
## Contributors
This project is welcome to new contributors. We are continually trying to remove the complexities to make contributions easier and more enjoyable for everyone. This is a nice project and a friendly community.
There are many ways to contribute. Check the documentation for more details:
https://complianceascode.readthedocs.io/en/latest/manual/developer/01_introduction.html
Check the updated list of [Contributors](Contributors.md).
|