
Linux ホスト、コンテナ、Kubernetes を対象に、コンプライアンス評価と自動ハードニングのための SCAP、Ansible、Bash、CEL セキュリティコンテンツを生成します。
このプロジェクトの目的は、さまざまなプラットフォーム — Red Hat Enterprise Linux、Fedora、Ubuntu、Debian、SUSE Linux Enterprise Server (SLES)、... — および製品 — Firefox、... 向けの セキュリティポリシーコンテンツ を作成することです。私たちは、一般的に使用されるすべての形式で、新しいセキュリティコンテンツの作成と既存のセキュリティコンテンツの保守をできるだけ簡単にすることを目指しています。

"SCAP コンテンツ" とは、XCCDF、OVAL、SCAP ソースデータストリーム 形式のドキュメントを指します。これらのドキュメントは、セキュリティ自動化と技術実装のニーズを満たすために、さまざまな形式やさまざまな組織によって提供されます。一般的な使用では、マシンを評価してコンプライアンス準拠させるために必要なすべてのデータが含まれているため、SCAP ソースデータストリーム を推奨します。データストリームはリリース ZIP アーカイブの一部です。
"Ansible コンテンツ" は、セキュリティプロファイルから生成された Ansible プレイブックを指します。これらは、コンプライアンスを評価するチェックモードと、マシンをコンプライアンス準拠させる実行モードの両方で使用できます。これらは Ansible Galaxy とリリース ZIP アーカイブで公開しています。
"Bash 修正ファイル" は、セキュリティプロファイルから生成された Bash スクリプトを指します。これらはマシン上で実行してコンプライアンス準拠させるためのものです。他の形式の使用を推奨しますが、一部の展開シナリオでは bash が唯一の選択肢であることも理解しています。
"CEL コンテンツ" は、Kubernetes および OpenShift プラットフォーム向けに Common Expression Language (CEL) を使用したコンプライアンスコンテンツを指します。CEL コンテンツは YAML ファイルとして生成され、ノードへのシェルアクセスを必要とせずに、compliance-operator を通じてネイティブな Kubernetes リソース評価を行うように設計されています。この形式は、コンテナオーケストレーションシステムのプラットフォームレベルのコンプライアンスチェックに使用されます。
私たちは、複数の組織がセキュリティコンテンツを効率的に開発できるようにしたいと考えています。このプロジェクトの強力なビルドシステムを活用することで、冗長性を可能な限り回避します。
ビルドシステムは、編集しやすい YAML ルールファイルと、OVAL チェック、Ansible タスクスニペット、Bash 修正、その他のファイルを組み合わせます。ボイラープレートを避けるために、すべてのステップでテンプレート化が提供されます。セキュリティ識別子 (CCE、NIST ID、STIG、...) は、すべての出力形式に含まれますが、すべて YAML ルールファイルから取得されます。
組織のニーズに応じて、特定のセキュリティコンテンツ形式を使用する必要がある場合があることを理解しています。お選びいただけます。
入力には、OpenControl に着想を得た YAML ルール形式を使用します。一度記述すれば、XCCDF、Ansible、その他の形式でセキュリティコンテンツを生成できます。
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"
当社のセキュリティコンテンツは、ベアメタルマシン、仮想マシン、仮想マシンイメージ (qcow2 など)、コンテナ (Docker を含む)、コンテナイメージのスキャンに使用できます。
一部のルールを評価すべきかどうかを検出するために、プラットフォームチェックを使用します。例: 個別のパーティションチェックはベアメタルマシンでは非常に理にかなっていますが、コンテナでは推奨プラクティスに反します。
推奨されるインストール方法は、ディストリビューションのパッケージマネージャーを使用することです。Red Hat Enterprise Linux および Fedora では、次を使用できます:
yum install scap-security-guide
Debian (sid) では、次を使用できます:
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.)
リリースページ からビルド済みの SSG zip アーカイブをダウンロードしてください。各 zip ファイルは、既製の SCAP ソースデータストリームを含むアーカイブです。
ComplianceAsCode がディストリビューションにパッケージされていない場合 (scap-security-guide パッケージとして存在する場合もあります)、またはパッケージ化されたバージョンが古すぎる場合は、コンテンツを自分でビルドし、make install でインストールする必要があります。詳細については、開発者ガイド ドキュメントを参照してください。また、関心を示すために、そのディストリビューションのバグトラッカーに issue を開くこともお勧めします。
前のセクションの指示に従って、ComplianceAsCode を現在のアップストリームソースからシステム全体の標準的な場所にインストール済みであることを前提としています。
ComplianceAsCode コンテンツを利用するにはいくつかの方法がありますが、ここではその一部のみを説明します。
oscap ツールoscap ツールは、OpenSCAP プロジェクトに由来する低レベルのコマンドラインインターフェースです。ローカルマシンのスキャンに使用できます。
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
評価後、arf.xml ファイルには再利用可能な 結果データストリーム (ARF) 形式のすべての結果が含まれ、report.html にはブラウザで開くことができる人間が読めるレポートが含まれます。
プロファイルを任意の他のプロファイルに置き換えてください。選択可能なすべてのプロファイルは、次を使用して表示できます:
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
詳細については、OpenSCAP の Web サイトを参照してください。
SCAP Workbench は、SCAP 評価とカスタマイズのためのグラフィカルユーザーインターフェースです。ローカルまたはリモート (SSH 経由) の単一マシンのスキャンに適しています。新しいバージョンの SCAP Workbench には SSG 統合が含まれており、アプリケーションの起動時に自動的に提供されます。
詳細については、SCAP Workbench の Web サイトを参照してください。
oscap-ssh ツールoscap-ssh は OpenSCAP 1.2.3 以降に同梱されています。oscap ツールに似たインターフェースで、SSH を介してリモートマシンをスキャンできます。
次のコマンドは、ローカルマシンに保存されたコンテンツを使用して、IP 192.168.1.123 のマシンを評価します。oscap はリモートマシンにインストールされている必要がありますが、SSG コンテンツはインストールされている必要がないことに注意してください。
oscap-ssh [email protected] 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 プレイブックのリストを表示するには、次を実行します:
ls /usr/share/scap-security-guide/ansible/
これらの Ansible プレイブックは、製品で利用可能な SCAP プロファイルから生成されます。
ローカルマシンにプレイブックを適用するには、次を実行します: (これによりマシンの設定が変更されます!)
ansible-playbook -i "localhost," -c local /usr/share/scap-security-guide/ansible/rhel9-playbook-ospp.yml
各 Ansible プレイブックには、展開方法の手順が含まれています。以下は手順の抜粋です:
...
# 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 スクリプトのリストを表示するには、次を実行します:
# ls /usr/share/scap-security-guide/bash/
...
rhel8-script-hipaa.sh
rhel8-script-ospp.sh
rhel8-script-pci-dss.sh
...
これらの Bash スクリプトは、製品で利用可能な SCAP プロファイルから生成されます。Ansible プレイブックと同様に、各 Bash スクリプトには展開方法の手順が含まれています。
SSG メーリングリストは https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide にあります。
OpenSCAP または SCAP Workbench で問題が発生した場合は、https://www.redhat.com/mailman/listinfo/open-scap-list を使用してください。
コミュニティともっとインタラクティブに連絡を取りたい場合は、Gitter と IRC で参加できます:
libera.chat の #openscap IRC チャンネルに参加してください。このプロジェクトは、2011 年に米国政府機関と商用オペレーティングシステムベンダーとのコラボレーションとして始まりました。元の名前は SCAP Security Guide で、一般に SSG と略されていました。当初の範囲は SCAP データストリームを作成することでした。時が経つにつれ、SCAP を超えた最大のオープンソースコンテンツプロジェクトに成長しました。
その後数年間で、政府固有のセキュリティプロファイルだけでなく、PCI-DSS や CIS などの商用プロファイルも導入されました。
その後、業界は Ansible、Puppet、Chef InSpec などのさまざまなセキュリティコンテンツ形式に移行し始めました。コミュニティはツールを進化させることで対応し、SSG をより汎用的なセキュリティコンテンツプロジェクトに変えるのに貢献しました。この変更は 2017 年から 2018 年にかけて行われました。2018 年 9 月、混乱を避けるためにプロジェクト名を ComplianceAsCode に変更することを決定しました。
私たちは、将来はフォーマットに依存しないことを構想しています。そのため、入力形式に XCCDF を使用するのではなく、抽象化を選択しました。
このプロジェクトは新しいコントリビューターを歓迎します。私たちは、誰にとっても貢献をより簡単で楽しいものにするために、複雑さを取り除く努力を続けています。これは素晴らしいプロジェクトであり、フレンドリーなコミュニティです。
貢献する方法はたくさんあります。詳細はドキュメントを確認してください: https://complianceascode.readthedocs.io/en/latest/manual/developer/01_introduction.html
更新されたコントリビューターのリストを確認してください。