取引先からの「セキュリティ監査」を乗り切る:OpenSCAPを使ったシステム設定の自動監査とコンプライアンス準拠

中小企業のIT担当者にとって、取引先から送られてくる「セキュリティチェックシート」や「監査対応」は、終わりの見えない悪夢のような業務ではないでしょうか。

「パスワードの有効期限は設定されているか?」 「不要なサービスは停止されているか?」 「SSHのRootログインは無効化されているか?」

数百項目に及ぶExcelシートに対し、一つ一つサーバーにログインして設定ファイルを目視確認し、スクリーンショットを貼り付け、回答を作成する……。この作業に費やす時間は、本来のIT戦略や改善業務を圧迫する最大の要因の一つです。しかも、その確認は「回答した時点」のものであり、翌週に設定変更が行われていれば、回答は嘘になってしまうリスクも孕んでいます。

本記事では、こうした属人的かつ非効率な監査対応から脱却するための強力な武器、 「OpenSCAP」を紹介します。

OpenSCAPは、NIST(米国国立標準技術研究所)が推進するセキュリティ自動化プロトコル「SCAP(Security Content Automation Protocol)」のオープンソース実装です。これを使えば、 「自社のシステムがセキュリティ基準(CISベンチマークなど)に準拠しているか」をコマンド一発で自動診断し、詳細なHTMLレポートを出力できます。

あなたの代わりに、24時間365日、文句も言わずに数千項目の設定値をチェックしてくれる「デジタル監査員」を雇う方法を見ていきましょう。

OpenSCAPとは?なぜ今選ばれるのか

OpenSCAPは、Red Hat社を中心に開発が進められているLinux向けのセキュリティコンプライアンスツールです。以下の特徴があります。

  1. 国際標準への準拠: SCAPという標準規格に則っているため、特定のベンダーにロックインされません。
  2. 豊富なポリシー定義: 「SSG (SCAP Security Guide)」というパッケージには、PCI-DSS、HIPAA、CIS Benchmarkなど、主要なセキュリティ基準に対応したチェックリスト(プロファイル)があらかじめ含まれています。
  3. 自動修正 (Remediation): 診断で見つかった不備を、 Ansible PlaybookBashスクリプトとして自動生成し、修正まで行わせることが可能です(※取扱注意)。

商用の脆弱性スキャナや構成管理ツール(Tenable Nessusなど)は非常に高額ですが、OpenSCAPはRHEL、CentOS、Fedora、Ubuntu、Debianなどの主要ディストリビューションで 標準リポジトリから無料で利用可能です。予算の限られる中小企業にとって、これほど強力な味方はありません。

実践:Dockerで試す自動監査

いきなり本番サーバーに入れるのは怖いという方のために、Dockerを使って安全にOpenSCAPの威力を体験してみましょう。ここでは、 「Ubuntu 24.04のコンテナをターゲットに見立てて、セキュリティ監査を実行する」 シナリオを構築します。

1. 環境構築 (Docker Compose)

以下の docker-compose.yml を作成します。 この構成では、target(監査対象のUbuntuサーバー)と、audit-runner(監査を実行するマシン)を用意し、SSH経由ではなく コンテナ内部でローカルスキャンを模擬する形をとります(最もシンプルに試せるため)。

services:
  # 監査対象のサーバー(今回はUbuntu 24.04)
  # 実際にはここにOpenSCAPをインストールしてスキャンします
  audit-target:
    image: ubuntu:24.04
    container_name: demo-audit-target
    command: tail -f /dev/null
    volumes:
      - ./reports:/var/www/html/reports # レポート出力先

2. インストールとプロファイルの確認

まずコンテナを起動します。

docker compose up -d

次に、コンテナ内に入り、OpenSCAPとセキュリティガイド(SSG)をインストールします。

docker exec -it demo-audit-target bash

コンテナ内で以下を実行します。

apt-get update
# OpenSCAP本体と、セキュリティポリシー集(ssg)をインストール
apt-get install -y libopenscap8 ssg-base ssg-deb ssg-applications ssg-nondebian

インストールが終わったら、利用可能な「ポリシー(プロファイル)」を確認します。Ubuntu向けの定義ファイルは /usr/share/xml/scap/ssg/content/ 以下に配置されます。

# Ubuntu 24.04用の定義ファイルを確認
oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2404-ds.xml

出力の中に Profiles: というセクションがあり、利用可能な基準一覧が表示されます。

Profiles:
    xccdf_org.ssgproject.content_profile_cis_level1_server
        Title: CIS Ubuntu Linux 24.04 LTS Benchmark Level 1 - Server
    xccdf_org.ssgproject.content_profile_cis_level2_server
        Title: CIS Ubuntu Linux 24.04 LTS Benchmark Level 2 - Server
    ...

今回は、広く利用されている 「CISベンチマーク レベル1(サーバー向け)」を使って監査してみましょう。これは「セキュリティを確保しつつ、利便性を大きく損なわない」基準です(レベル2はより厳格で、一部機能制限を伴います)。

3. 監査の実行とレポート生成

いよいよスキャンを実行します。以下のコマンドをコンテナ内で叩くだけです。

# CIS Level 1 Server プロファイルでスキャンを実行し、レポートをHTMLで出力
oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  --results /var/www/html/reports/results.xml \
  --report /var/www/html/reports/report.html \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2404-ds.xml

コマンドが走ると、大量のチェック項目に対して pass(合格)、fail(不合格)、notapplicable(対象外)などの判定が流れます。初期状態のUbuntuコンテナであれば、多くの項目で fail が出るはずです。これは、Dockerコンテナが軽量化のために多くの設定を省略していることや、セキュリティ設定がデフォルトのままであるためです。

4. レポートの確認

コマンド完了後、ホストマシンの ./reports/report.html をブラウザで開いてみてください。

そこには、驚くほど詳細なセキュリティレポートが生成されているはずです。

  • コンプライアンススコア: 100点満点中のスコア
  • 失敗した項目: 赤色でハイライト
  • 詳細な解説: 各項目をクリックすると、「なぜこの設定が必要なのか」「どうやって設定を確認するか」「どうやって修正するか(コマンド付き)」が記載されています。

このHTMLレポート自体が、そのまま「セキュリティ監査のエビデンス」として提出できるレベルの品質です。

自社運用への展開:自動化と監視

Dockerでの実験で感覚を掴んだら、実運用へ展開しましょう。

エージェントレスか、エージェントか

  1. 各サーバーにインストール(エージェント方式
    • 最も確実で詳細な情報が取れます。cronに oscap コマンドを登録し、週次で実行してレポートをファイルサーバーに転送するのが一般的です。
  2. SSH経由でスキャン(リモート方式
    • OpenSCAP Workbench というGUIツールや、oscap-ssh コマンドを使うと、SSH経由で対象サーバーをスキャンできます。対象サーバーへのツールインストールを最小限にしたい場合に有効ですが、root権限でのSSH接続が必要になるケースが多く、逆にリスクになる可能性も考慮も必要です。

「Remediation(自動修正)」の光と影

OpenSCAPの強力な機能に「Remediation(修復)」があります。これは、不合格だった項目を合格させるための修正スクリプト(Bash/Ansible)を生成・実行する機能です。

# 警告:これは設定を書き換えます!
oscap xccdf eval \
  --remediate \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  ...

しかし、 本番環境でいきなり --remediate を実行するのは絶対に避けてください。 セキュリティ強化のために「SSHのRootログイン禁止」や「パーティション設定の変更」「特定のカーネルモジュール無効化」などが自動で行われた結果、 「サービスが動かなくなった」「管理者がログインできなくなった」という事故が多発します。

まずはレポートを出力し、失敗項目の中から「自社のポリシーとして適用すべきもの」を選別し、手動または自社の構成管理ツール(Ansible/Chefなど)で適用していく「診断→計画的修正」のサイクルを推奨します。

まとめ:攻めのITのための「守りの自動化」

OpenSCAPを導入することで、以下のメリットが得られます。

  • 監査工数の激減: チェックシート作成にかかる時間を90%以上削減できます。
  • 継続的なセキュリティ: 「監査の時だけ頑張る」のではなく、毎週・毎日自動チェックすることで、設定ミスや意図しない変更(ドリフト)を即座に検知できます。
  • 客観的な証明: 「担当者が目で見てヨシと言った」ではなく、「国際基準に基づくツールが合格判定を出した」という事実は、取引先に対する最強の信頼材料になります。

「人間にできること」と「機械が得意なこと」を分けましょう。設定値のチェックのような退屈でミスしやすい作業は機械に任せ、IT担当者は「その設定が自社のビジネスにどう影響するか」を判断する、より高度な業務に集中すべきです。


AIへのプロンプト例

今回の記事内容をもとに、自社の環境に合わせた具体的な手順や、トラブルシューティングをAIに相談するためのプロンプトです。

あなたはLinuxのセキュリティ専門家であり、OpenSCAPのエキスパートです。
以下の要件に基づき、具体的なアドバイスをください。

1. **対象環境 **:
   - OS: [RHEL 9 / Ubuntu 24.04 / Amazon Linux 2023 など]
   - 用途: [Webサーバー / DBサーバー / 社内ファイルサーバー]

2. **やりたいこと **:
   OpenSCAPを使って、[CIS Benchmark Level 1] 相当の監査を行いたいです。
   特に [SSHの設定 / パスワードポリシー / ファイルシステムの権限] について重点的にチェックしたいと考えています。

3. **質問 **:
   - このOSでOpenSCAPとSSG(SCAP Security Guide)をインストールする正確なコマンドを教えてください。
   - 利用可能なプロファイル一覧を表示し、上記の目的に合うプロファイルIDを特定する方法を教えてください。
   - 監査を実行し、結果をHTMLファイルだけでなく、機械処理しやすいJSONまたはXMLでも出力するコマンドライン例を提示してください。
   - もし監査で「Fail」が出た場合、その項目が業務に影響を与えるかどうか(誤検知や過剰な制限でないか)を判断するための視点をいくつか教えてください。