CentOS 7でOpenSCAPを使ったセキュリティチェックを行う

今回は、OpenSCAPというツールをCentOSにインストールして、パッケージの脆弱性やセキュリティ設定のスキャンを行わせてみる。
OpenSCAPというツールに関する概要は、以下が詳しい。

その他、Spacewalkなどで統合管理をしつつ、定期的なスキャンを行わせることもできるようだ(クライアントとなるサーバにパッケージが必要みたいだが)。
というわけで、今回はこのOpenSCAPをCentOS 7にインストールして、一通りのスキャンを行わせてみる。
なお、当たり前ではあるがrpmなどを用いてのパッケージしかスキャンはできないので、自前でコンパイルしたようなプログラムについては確認できないので注意。可能な限りrpmファイルを作ってインストールするようにするか、個別管理するのがいいだろう。

1.インストール

まずは、以下のコマンドでOpenSCAPのインストールをする。

yum install -y openscap-utils openscap-content

これで、OpenSCAPはインストールができた。

2.セキュリティスキャンを行う

OpenSCAPでは、スキャンに利用するセキュリティ情報ファイルが必要になる。
Redhatの提供しているOVAL・XCCDFファイルがあるので、それをダウンロードしてくる。

wget http://www.redhat.com/security/data/metrics/com.redhat.rhsa-all.xccdf.xml
wget http://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml

取得したファイルを元に、脆弱性の確認を行う。
コンソール上でだけで確認する場合は以下。

oscap xccdf eval ~.xml # XCCDF形式のファイルを使用する場合
oscap oval eval ~.xml # OVAL形式のファイルを使用する場合

出力結果はこんな感じ。

とはいえ、このままだと読みにくい。
以下のオプションを付与することで、スキャン結果をxmlやhtml形式に出力してくれる。
その他oscapコマンドの使い方については、こちらのRedhatの提供しているドキュメントが詳しい。

  • --results <file_path> … 結果をxml形式で出力
  • --report <file_path> … 結果をhtml形式で出力

html形式のレポートの場合、以下のような出力が得られる。

エージェントが必要、問題のあるパッケージのみを取得できないという意味ではVulsの方がいい感じなのだが、OpenSCAPの場合は使用するポリシーファイルに応じていろいろなチェックができるのがよさそうだ。
今回はRedhatの提供しているポリシーを使ったが、The SCAP Security Guide project(SSG)というプロジェクトで提供しているポリシーもあるので、状況に応じてポリシーを使い分けてやるといいだろう。