OpenSCAP を使ってみる


LPIC 303 の勉強記録。

SCAP

ecurity Content Automation Protocol:セキュリティ設定共通化手順
各システム管理者ごとにセキュリティ設定を考えていては非効率。そこで、NIST(アメリカ国立標準技術研究所)が制定したセキュリティ関連の標準仕様。
よく聞く CVE も SCAP の一環で定義されたものである。

OpenSCAP

脆弱性の診断や、その修正を行えるツール。

OpenSCAP を使ってみる

以下、対象 OS は RHEL8。

使い方は以下の RedHat のドキュメントに書いてあることで全てだが、本ページはもう少し初心者にもわかりやすい説明を目的とする。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/vulnerability-scanning_scanning-the-system-for-configuration-compliance-and-vulnerabilities

インストール

以下でインストール

# dnf install openscap-scanner openscap-utils scap-security-guide bzip2

脆弱性のチェック

RedHat では、新しいRHSA(セキュリティアドバイザリ。要はセキュリティパッチ)がリリースされるたび、その情報をまとめた OVAL 情報が公開される。
その情報をもとに、自身のサーバに未適用のセキュリティアドバイザリがないか確認できる。
以下で OVAL 定義をダウンロード、展開。

wget -O - https://www.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2 | bzip2 --decompress > rhel-8.oval.xml

以下でレポートを生成。/var/www/html 配下において httpd で公開しておくと簡単に見れて良いだろう。

oscap oval eval --report /var/www/html/vulnerability.html rhel-8.oval.xml

以下のような html ファイルが作成される。
未適用のものはオレンジ、適用済みのものは緑色で表示されている。
また、RHSA のページや CVE のページへのリンクもあり便利。

cron か anacron で定期的に自動生成するようにすると楽かも。

/etc/cron.daily/openscap
#!/bin/bash
tmpfile=$(mktemp)
wget -O - https://www.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2 | bzip2 --decompress > $tmpfile
oscap oval eval --report /var/www/html/vulnerability.html $tmpfile
rm $tmpfile

cron や anacron では標準出力に出力された内容をメールで送信する。
未適用のアドバイザリがあった場合のみメールを送るようにしたりすると更に便利かも。

セキュリティ基準のチェック

世の中には様々な団体が様々なセキュリティ基準をOSごとに制定している。
米国政府の基準である OSPP であったり、支払い事業者のための基準である PCI-DSS であったり。
OpenSCAP でこれらの要件を満たしているかを確認でき、満たしていない場合は自動で是正することもできる。

例えば、OSPP の要件を満たしているかどうかを確認するには以下のコマンドを実行する。

# oscap xccdf eval --report /var/www/html/report.html --profile ospp /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml

以下のようなレポートが生成される。
138 のルールを満たしていない。全然だめだめな感じ。

満たしていないルール一覧は以下の様に表示される。

ルールをクリックすると、どのような要件なのか、なぜそうすべきなのかの説明がみれる。
[Remediation XXX] をクリックすると設定を是正するためのシェルスクリプトや Ansible のタスクが表示される。便利。

これを一括で是正したい場合は、オプションに --remediate をつける。
これで可能な範囲で設定を是正してくれる。
なお、これは OS インストール直後の状態でしか動くことを保証されていないので、実行するならインスコ直後のみにするべき。
また、切り戻しのための方法は用意されていない。念の為スナップショットを取っておくといいかも。

# oscap xccdf eval --profile ospp --remediate /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml

上記を実行したあとのレポートは以下。
NG は 35 件まで減った。残っている NG は、パーティションなど(/var/log は別パーティションにするとか)、あとからではどうしようもないやつ。

参考

https://www.ipa.go.jp/security/vuln/SCAP.html
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/vulnerability-scanning_scanning-the-system-for-configuration-compliance-and-vulnerabilities