第5章 OpenSCAPを使用した脆弱性のスキャン
この章では、OpenSCAPを使用してセキュリティ脆弱性のためにOracle Linuxシステムをスキャンする方法について説明します。
5.1 SCAPについて
Security Content Automation Protocol (SCAP)は、システム脆弱性の測定および管理と連邦情報セキュリティ・マネジメント法(FISMA)などのセキュリティ標準に対するポリシー・コンプライアンスの評価を含むシステム・セキュリティを管理するための自動化および標準化された方法を提供します。 SCAP標準の米国政府のコンテンツ・リポジトリは、アメリカ国立標準技術研究所(NIST)によって管理される脆弱性情報データベース(NVD)です。
Oracle Linuxでは、Oracle Linux 7用の次のSCAPパッケージを提供します。
-
openscap-utils
-
openscap-utils
パッケージには、OpenSCAPライブラリを使用するコマンドライン・ツールが含まれます。 このパッケージには以前にoscapコマンドライン構成および脆弱性スキャナが含まれましたが、openscap-scanner
パッケージで個別に使用できるようになりました。openscap-utils
パッケージをインストールすると、依存関係としてopenscap-scanner
パッケージがインストールされます。 -
openscap-scanner
-
SCAP Security Guideを含むSCAPコンテンツに対するコンプライアンス・チェックを実行できるoscapコマンドライン構成および脆弱性スキャナを提供します。 これは
openscap-utils
パッケージの依存関係です。 このパッケージには、chroot環境内のオフライン・ファイル・システムをスキャンできるoscap-chrootユーティリティも含まれています。 -
openscap-containers
-
openscap-containers
パッケージには、コンテナおよびコンテナ・イメージのスキャンに使用できるoscap-dockerユーティリティが含まれています。 このパッケージの依存関係の一部がol7_addons
yumリポジトリに含まれていることに注意してください。 -
openscap
-
SCAPコンプライアンス・ドキュメントを生成するためのOpenSCAPオープンソース・ライブラリを提供します。 OpenSCAPは2014年4月にNISTからSCAP 1.2認証を受け取りました。
-
scap-security-guide
-
政府要件へのリンクを含むSCAP形式のシステム強化ガイダンスを提供します。 ガイドでは、サイトに確立したセキュリティ・ポリシーに準拠するために変更できるセキュリティ・プロファイルを提供します。 バージョン v0.1.46-11.0.2.el7以降では、https://public.cyber.mil/stigs/で公開されているOracle Linux 7 V1R1用DISA STIGに合わせてこのパッケージにstigプロファイルが含まれています。 第5.6項「使用可能なプロファイルの表示」を参照してください。
5.2 SCAPパッケージのインストール
yumコマンドを使用して、ULNにあるol7_
チャネル、またはOracle Linux yumサーバーにある<arch>
_latestol7_latest
リポジトリからSCAPパッケージをインストールします。
# yum install scap-security-guide
なお、コンテナおよびコンテナ・イメージをスキャンするためにopenscap-containers
パッケージをインストールする場合は、ULNにあるol7_
チャネル、またはOracle Linux yumサーバーにある<arch>
_addonsol7_addons
リポジトリも有効にする必要があります。
5.3 oscapコマンドについて
oscapコマンドの一般的な構文は次のようになります。
#oscap
[options
]module
operation
[operation_options_and_arguments
]
oscapは次のモジュール・タイプをサポートします。
- cpe
-
共通プラットフォーム一覧(CPE)ファイルを使用して、操作を実行します。
- cve
-
共通脆弱性識別子(CVE)ファイルを使用して、操作を実行します。
- cvss
-
共通脆弱性評価システム(CVSS)ファイルを使用して、操作を実行します。
- ds
-
SCAPデータ・ストリーム(DS)を使用して、操作を実行します。
- info
-
ファイルのタイプを決定し、ファイルの情報を出力します。
- oval
-
Open Vulnerability and Assessment Language (OVAL)ファイルを使用して、操作を実行します。
- xccdf
-
セキュリティ設定チェックリスト記述形式(XCCDF)のファイルを使用して、操作を実行します。
info、ovalおよびxccdfモジュールは、Oracle Linuxシステムをスキャンするために最も一般的に役立ちます。
oscapが実行できる操作はモジュール・タイプに依存します。 次の操作は、Oracle Linuxシステムのovalおよびxccdfモジュールで最も一般的に役立ちます。
- eval
-
OVALファイルの場合、oscapはシステムを精査し、ファイルの各定義を評価し、結果を標準出力に出力します。
XCCDFファイルの指定されたプロファイルの場合、oscapはファイルの各ルールに対してシステムをテストし、結果を標準出力に出力します。
- generate
-
OVAL XML結果ファイルの場合、generate reportは指定されたファイルをHTMLレポートに変換します。
XCCDFファイルの場合、generate guideは指定されたプロファイルの完全セキュリティ・ガイドを出力します。
- validate
-
エラーを確認するためにXMLスキーマに対してOVALまたはXCCDFファイルを検証します。
詳細は、oscap(8)
マニュアル・ページを参照してください。
5.4 使用可能なSCAP情報の表示
サポートされているSCAP仕様、ロードされたプラグイン機能、スキーマの場所、共通プラットフォーム一覧(CPE)、プローブ・ファイル、組込みCPE名、サポートされているOpen Vulnerability and Assessment Language (OVAL)オブジェクトと関連付けられたSCAPプローブを表示するには、次のようなoscap -Vコマンドを使用します。
# oscap -V
OpenSCAP command line tool (oscap) 1.2.10
Copyright 2009--2016 Red Hat Inc., Durham, North Carolina.
==== Supported specifications ====
XCCDF Version: 1.2
OVAL Version: 5.11.1
CPE Version: 2.3
CVSS Version: 2.0
CVE Version: 2.0
Asset Identification Version: 1.1
Asset Reporting Format Version: 1.1
==== Capabilities added by auto-loaded plugins ====
No plugins have been auto-loaded...
==== Paths ====
Schema files: /usr/share/openscap/schemas
Default CPE files: /usr/share/openscap/cpe
Probes: /usr/libexec/openscap
==== Inbuilt CPE names ====
Red Hat Enterprise Linux - cpe:/o:redhat:enterprise_linux
Red Hat Enterprise Linux 5 - cpe:/o:redhat:enterprise_linux:5
Red Hat Enterprise Linux 6 - cpe:/o:redhat:enterprise_linux:6
Red Hat Enterprise Linux 7 - cpe:/o:redhat:enterprise_linux:7
Community Enterprise Operating System 5 - cpe:/o:centos:centos:5
Community Enterprise Operating System 6 - cpe:/o:centos:centos:6
Community Enterprise Operating System 7 - cpe:/o:centos:centos:7
Scientific Linux 5 - cpe:/o:scientificlinux:scientificlinux:5
Scientific Linux 6 - cpe:/o:scientificlinux:scientificlinux:6
Scientific Linux 7 - cpe:/o:scientificlinux:scientificlinux:7
Fedora 16 - cpe:/o:fedoraproject:fedora:16
Fedora 17 - cpe:/o:fedoraproject:fedora:17
Fedora 18 - cpe:/o:fedoraproject:fedora:18
Fedora 19 - cpe:/o:fedoraproject:fedora:19
Fedora 20 - cpe:/o:fedoraproject:fedora:20
Fedora 21 - cpe:/o:fedoraproject:fedora:21
Fedora 22 - cpe:/o:fedoraproject:fedora:22
Fedora 23 - cpe:/o:fedoraproject:fedora:23
Fedora 24 - cpe:/o:fedoraproject:fedora:24
Fedora 25 - cpe:/o:fedoraproject:fedora:25
SUSE Linux Enterprise all versions - cpe:/o:suse:sle
SUSE Linux Enterprise Server 10 - cpe:/o:suse:sles:10
SUSE Linux Enterprise Desktop 10 - cpe:/o:suse:sled:10
SUSE Linux Enterprise Server 11 - cpe:/o:suse:sles:11
SUSE Linux Enterprise Desktop 11 - cpe:/o:suse:sled:11
SUSE Linux Enterprise Server 12 - cpe:/o:suse:sles:12
SUSE Linux Enterprise Desktop 12 - cpe:/o:suse:sled:12
openSUSE 11.4 - cpe:/o:opensuse:opensuse:11.4
openSUSE 13.1 - cpe:/o:opensuse:opensuse:13.1
openSUSE 13.2 - cpe:/o:opensuse:opensuse:13.2
openSUSE 42.1 - cpe:/o:novell:leap:42.1
openSUSE All Versions - cpe:/o:opensuse:opensuse
Red Hat Enterprise Linux Optional Productivity Applications - cpe:/a:redhat:rhel_productivity
Red Hat Enterprise Linux Optional Productivity Applications 5 - cpe:/a:redhat:rhel_productivity:5
Oracle Linux 5 - cpe:/o:oracle:linux:5
Oracle Linux 6 - cpe:/o:oracle:linux:6
Oracle Linux 7 - cpe:/o:oracle:linux:7
==== Supported OVAL objects and associated OpenSCAP probes ====
system_info probe_system_info
family probe_family
filehash probe_filehash
environmentvariable probe_environmentvariable
textfilecontent54 probe_textfilecontent54
textfilecontent probe_textfilecontent
variable probe_variable
xmlfilecontent probe_xmlfilecontent
environmentvariable58 probe_environmentvariable58
filehash58 probe_filehash58
inetlisteningservers probe_inetlisteningservers
rpminfo probe_rpminfo
partition probe_partition
iflisteners probe_iflisteners
rpmverify probe_rpmverify
rpmverifyfile probe_rpmverifyfile
rpmverifypackage probe_rpmverifypackage
selinuxboolean probe_selinuxboolean
selinuxsecuritycontext probe_selinuxsecuritycontext
systemdunitproperty probe_systemdunitproperty
systemdunitdependency probe_systemdunitdependency
file probe_file
interface probe_interface
password probe_password
process probe_process
runlevel probe_runlevel
shadow probe_shadow
uname probe_uname
xinetd probe_xinetd
sysctl probe_sysctl
process58 probe_process58
fileextendedattribute probe_fileextendedattribute
routingtable probe_routingtable
symlink probe_symlink
5.5 SCAPファイルの情報の表示
SCAPファイルの情報を表示するには、次のようなoscap infoコマンドを使用します。
# oscap info com.oracle.elsa-2017.xml
Document type: OVAL Definitions
OVAL version: 5.3
Generated: 2017-06-01T00:00:00
Imported: 2017-06-13T23:12:06
この出力は、ファイルcom.oracle.elsa-2017.xml
がOVAL定義ファイルであることを示します。
5.6 使用可能なプロファイルの表示
次のようにoscap infoコマンドを使用して、SCAP Security Guideなどのチェックリスト・ファイルでサポートされているプロファイルを表示できます。
# oscap info "/usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml"
Document type: XCCDF Checklist
Checklist version: 1.1
Imported: 2020-04-21T19:46:55
Status: draft
Generated: 2020-04-21
Resolved: true
Profiles:
Title: DISA STIG for Oracle Linux 7
Id: stig
Referenced check files:
ssg-ol7-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-ol7-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
https://linux.oracle.com/security/oval/com.oracle.elsa-all.xml.bz2
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
[vagrant@localhost ~]$
その他のプロファイルも使用可能であり、それらはssg-rhel7-*
ファイルなどの別のファイル・セットに含まれています。 たとえば、その他のプロファイルを表示するには、このコマンド内のssg-ol7-xccdf.xml
をssg-rhel7-xccdf.xml
に置き換えます。
この出力は、ssg-ol7-xccdf.xml
でOracle Linux 7用DISA STIG (stig
)が提供されることを示しています。 プロファイルには、すべてのOracle Linuxインストールに適用される一般的なセキュリティ推奨事項と、意図されているシステム使用方法に固有のその他のセキュリティ推奨事項が含まれています。
特定のプロファイルに関する情報を取得するには、--profile
オプションを指定します。
# oscap info --profile stig /usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml
Document type: XCCDF Checklist
Profile
Title: DISA STIG for Oracle Linux 7
Id: stig
Description: This profile contains configuration checks that align to
the DISA STIG for Oracle Linux V1R1.
このDISA STIGプロファイルは、公開されている、国防情報システム局(DISA)のOracle Linux向けセキュリティ技術導入ガイド(STIG)への準拠を確認するために使用できます。 詳細は、https://public.cyber.mil/stigs/を参照してください。
バージョンv0.1.46-11.0.2.el7以降、DISA STIGプロファイルおよびそのチェックリスト定義は、ssg-rhel7-xccdf.xml
ファイルとssg-rhel7-ds.xml
ファイルでは非推奨になりました。 scap-security-guide
パッケージでは、Oracle Linux V1R1用DISA STIGに合わせたプロファイルが提供されるようになりました。このプロファイルは、ssg-ol7-xccdf.xml
ファイルとssg-ol7-ds.xml
ファイルにあります。
Oracle Linux 7で提供されるプロファイルすべてがご使用のシステムに適しているとはかぎらないということを覚えておいてください。 ただし、それらのプロファイルを使用して、サイトのセキュリティ・ポリシーのコンプライアンスをテストする新しいプロファイルを作成できます。
5.7 OVALおよびXCCDFファイルの検証
スキーマに対してOVALまたはXCCDFファイルを検証するには、次のようにoscap validateコマンドを使用して終了コードを調査します。
#oscap oval validate com.oracle.elsa-2017.xml
\&& echo "ok" || echo "exit code = $? not ok"
ok #oscap xccdf validate /usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml
\&& echo "ok" || echo "exit code = $? not ok"
ok
終了コード0はファイルが有効であることを示し、1はエラーが検証を妨げていることを示し、2はファイルが無効であることを示します。 エラー・メッセージは、標準エラー出力に書き込まれます。
5.8 プロファイルに対するスキャンの実行
XCCDFプロファイルに対してシステムをスキャンするには、次のようにoscap xccdf evalコマンドを使用します。
#oscap xccdf eval --profile stig
\--results /tmp/`hostname`-ssg-results.xml
\--report /var/www/html/`hostname`-ssg-results.html
\--cpe /usr/share/xml/scap/ssg/content/ssg-ol7-cpe-dictionary.xml
\/usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml
WARNING: This content points out to the remote resources. Use `--fetch-remote-resources' option to download them. WARNING: Skipping https://linux.oracle.com/security/oval/com.oracle.elsa-all.xml.bz2 file which is referenced from XCCDF content Title Remove User Host-Based Authentication Files Rule no_user_host_based_files Result pass Title Remove Host-Based Authentication Files Rule no_host_based_files Result pass Title Uninstall rsh-server Package Rule package_rsh-server_removed Result pass Title Uninstall telnet-server Package Rule package_telnet-server_removed Result pass ...
この例では、ssg-ol7-cpe-dictionary.xml
CPEディクショナリを使用してssg-ol7-xccdf.xml
チェックリストのstig
プロファイルに対してスキャンを実行し、XML結果およびHTMLレポート・ファイルを/tmp
および/var/www/html
にそれぞれ出力します。 fail
になるプロファイルのルールでは、システムを再構成する必要がある場合があります。
図5.1に示すように、ブラウザでHTMLレポートを表示できます。
5.9 完全セキュリティ・ガイドの生成
XCCDFプロファイルに基づいてシステムの完全セキュリティ・ガイドを作成するには、次のようにoscap xccdf generate guideコマンドを使用します。
#oscap xccdf generate guide --profile stig
\--cpe /usr/share/xml/scap/ssg/content/ssg-ol7-cpe-dictionary.xml
\/usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml > /var/www/html/security_guide.html
図5.2に示すように、ブラウザでセキュリティ・ガイドを表示できます。
5.10 OVAL監査スキャンの実行
ULNのすべての更新情報のOVAL定義が提供されます。 これらの定義を使用して、すべての適用される更新情報がOracle Linuxシステムにインストールされていることを確認できます。 たとえば、Spacewalkにより、通常の監査スキャンをスケジュールできます。
次のOVAL定義ファイルを使用できます。
-
com.oracle.elsa-
cve
.xml -
単一のELSAセキュリティ・パッチのOVAL定義ファイル。 たとえば、
com.oracle.elsa-20150377.xml
はELSA-2015-0377に関連します。 -
com.oracle.elsa-
year
.xml.bz2 -
特定の
year
にリリースされたすべてのELSAパッチのOVAL定義ファイルの圧縮されたアーカイブ。 -
com.oracle.else-all.xml.bz2
-
すべての使用可能なELSAパッチのすべての適用されるOVAL定義ファイルの圧縮されたアーカイブ。
OVAL定義ファイルをダウンロードしてシステムの監査を実行するには:
-
次のようにwgetまたは類似したコマンドを使用して、https://linux.oracle.com/securityから定義ファイルをダウンロードします。
#
wget https://linux.oracle.com/security/oval/com.oracle.elsa-2017.xml.bz2
-
圧縮された
bz2
アーカイブの定義ファイルで、bzip2を使用してOVAL定義ファイルを抽出します。#
bzip2 -d com.oracle.elsa-2017.xml.bz2
-
次のようにoscap oval evalを使用し、OVAL定義ファイルを使用してシステムを監査します。
#
oscap oval eval --results /tmp/elsa-results-oval.xml
\--report /var/www/html/elsa-report-oval.html
\/tmp/com.oracle.elsa-2017.xml
Definition oval:com.oracle.elsa:def:20173580: false Definition oval:com.oracle.elsa:def:20173579: true Definition oval:com.oracle.elsa:def:20173576: false Definition oval:com.oracle.elsa:def:20173575: false Definition oval:com.oracle.elsa:def:20173574: true Definition oval:com.oracle.elsa:def:20173567: false Definition oval:com.oracle.elsa:def:20173566: false Definition oval:com.oracle.elsa:def:20173565: true Definition oval:com.oracle.elsa:def:20173539: true Definition oval:com.oracle.elsa:def:20173538: false Definition oval:com.oracle.elsa:def:20173537: false ... Evaluation done.この例のスキャンでは、
com.oracle.elsa-2017.xml
のOVAL定義を使用し、XML結果およびHTMLレポート・ファイルを/tmp
および/var/www/html
にそれぞれ出力します。 パッチに対してtrue
の結果はシステムに適用されていないことを意味します。false
の結果は適用されていることを意味します。XML結果ファイルを生成し、HTMLレポートを生成しない場合、次のようにoscap oval generate reportを使用して、結果ファイルをHTMLレポートに変換できます。
#
oscap oval generate report /tmp/elsa-results-oval.xml
\> /var/www/html/elsa-report-oval.html
図5.3に示すように、ブラウザでHTMLレポートを表示できます。
5.11 コンテナ、コンテナ・イメージおよびオフライン・ファイル・システムのスキャン
OpenSCAPには、oscap-dockerコマンドの使用によりDockerコンテナまたはコンテナ・イメージをスキャンできるユーティリティ、またはoscap-chrootコマンドの使用によりオペレーティング・システムをホストするオフライン・ファイル・システムをスキャンできるユーティリティが含まれています。 なお、これらのスキャンの実行に使用されるメカニズムが原因で、これらのツールが対応しているのは、Oracle Linux 7ベースのシステムに対するスキャンの場合のみとなります。
コンテナ・イメージおよびコンテナのスキャン
oscap-dockerコマンドを使用して、Dockerコンテナまたはコンテナ・イメージをスキャンします。 このツールでは、oscapコマンドと同様に、コンテナまたはイメージの脆弱性が評価され、セキュリティ・ポリシーへの準拠が確認されます。 このツールでは、オフライン・スキャンにより、コンテナまたはイメージ・ファイル・システムの一時的な読取り専用マウントを実行することですべての評価およびチェックが実行されます。 コンテナまたはイメージに変更が加えられることはなく、コンテナ内またはイメージ内にその他のツールが必要になることはありません。
イメージの脆弱性を、そのイメージ・バリアントに適したCVEストリームを使用してスキャンし、この情報をHTML形式で出力するには、次を実行します。
$ oscap-docker --disable-atomic image-cve ol7-image
--report report.html
このコマンドを実行するときは--disable-atomic
オプションを使用する必要があることを覚えておいてください。 アトミック・コンテナはOracle Linuxではサポートされていません。
XCCDFチェックリストで指定されているセキュリティ・ポリシーにイメージが準拠しているかどうかをスキャンし、結果をHTML形式で出力するには、次を実行します。
$ oscap-docker --disable-atomic image ol7-image
xccdf eval \
--fetch-remote-resources \
--profile <profile> \
--results results.xml \
--report report.html \
--cpe /usr/share/xml/scap/ssg/content/ssg-ol7-cpe-dictionary.xml \
/usr/share/xml/scap/ssg/content/ssg-ol7-xccdf.xml
特定のコンテナをスキャンするには、サブコマンドをimageまたはimage-cveからcontainerまたはcontainer-cveに変更します。 このコマンドを実行するときは--disable-atomic
オプションを使用する必要があることを覚えておいてください。 アトミック・コンテナはOracle Linuxではサポートされていません。
詳細は、oscap-docker(8)
マニュアル・ページを参照してください。
オフライン・ファイル・システムのスキャン
oscap-chrootコマンドを使用して、指定したパスにマウントされているファイル・システムのオフライン・スキャンを実行します。 このツールは、Dockerとは異なる式を使用するコンテナや、仮想マシン・ディスク・ファイルなど、oscap-dockerでサポートされていないカスタム・オブジェクトのスキャンに使用できます。 このツールのオプションは、oscapコマンドに似ています。
たとえば、/mnt
にマウントされたファイル・システムを、OVAL定義ファイルを使用して監査するには、次を実行します。
$ oscap-chroot /mnt
oval eval --results /tmp/elsa-results-oval.xml
\
--report elsa-report-oval.html
\
/tmp/com.oracle.elsa-2021.xml
詳細は、oscap-chroot(8)
マニュアル・ページを参照してください。