本番稼働直前の「セキュリティ監査」という悪夢
本番環境へのリリース(Go-live)直前に、何千行もの設定ファイルを一晩中チェックしたことはありませんか?私はかつて、ある銀行のために秒間5,000件以上のトランザクションを処理する20台のCentOS 7サーバー群を監査するという任務を任されたことがあります。要求は非常に厳しく、PCI-DSSに100%準拠することでした。
当時、私は最も原始的な方法で作業を始めました。SSH設定、パスワードポリシー、権限設定などのチェックリストを一つずつ照らし合わせたのです。16時間の過酷な作業の後、ようやく2台のサーバーを終えたところで、頭がふらつき、このままではミスが避けられないと悟りました。幸運なことに、シニアの同僚が**OpenSCAP**を紹介してくれました。
このツールは、私の運用スタイルを根底から変えました。CentOS 8의 サポート終了に伴い、1週間で5台のサーバーを急遽Rocky Linuxに移行しなければならなかった時も、OpenSCAPのおかげで、多大な労力をかけずに一貫したセキュリティ基準を維持することができました。
なぜ手動のセキュリティチェックは失敗するのか?
Linuxシステム(古いCentOSや、Rocky/Almaなどのフォーク版)の管理には、単にFirewallやSELinuxを導入する以上のことが求められます。従来の手動による方法が失敗する主な理由は3つあります。
- 巨大なルールマトリックス: STIGなどの基準には300以上の厳格なルールがあります。どのファイルをchmodし、どのサービスを停止すべきか、記憶力だけでカバーするのは不可能です。
- 構成のドリフト(Configuration Drift): エンジニアがデバッグのために一時的にポート22を全開放し、そのまま閉じ忘れることがあります。こうした小さな不注意が、サーバーをハッカーに「開放」してしまう原因となります。
- 非専門的なレポート: パートナー企業からセキュリティの証明を求められた際、寄せ集めのテキストファイルを渡すわけにはいきません。具体的な数値やグラフが必要です。
OpenSCAP (Open Security Content Automation Protocol) は、こうした混乱を解決するために設計されたオープンソースのフレームワークです。脆弱性スキャン、コンプライアンス管理、国際基準に基づくシステム評価を正確に自動化します。
適切なセキュリティスキャンツールの選択
市場には多くの選択肢がありますが、私は主に3つのカテゴリーに分けて考えています。
- 自作スクリプト: 手軽ですが場当たり的で、システムの拡張に伴う維持が難しく、ミスを見逃すリスクが非常に高いです。
- 有料ソリューション (Nessus, Qualys): 非常に強力で洗練されたUIを備えていますが、コストは年間数千ドルに達することもあります。これはスタートアップや検証環境にとっては大きな壁となります。
- OpenSCAP (OSCAP): RHELエコシステムにおける「ゴールドスタンダード」です。無料で提供され、標準で組み込まれており、NISTの公式なOVAL/XCCDFデータを使用します。
OpenSCAPは、ライセンス料を払うことなく最新のCVE(脆弱性情報)を常に把握できるため、最適な選択肢であると断言できます。
OpenSCAP의 具体的な導入手順
ここからは、まっさらなCentOSサーバーをセキュリティの要塞に変える手順を見ていきましょう。
1. 構成パッケージのインストール
スキャナ本体であるopenscap-scannerと、セキュリティルールライブラリであるscap-security-guideをインストールする必要があります。
sudo yum install openscap-scanner scap-security-guide -y
インストール後、すべてのセキュリティ基準データは/usr/share/xml/scap/ssg/content/に配置されます。シンプルなlsコマンドで確認できます。
2. ターゲットプロファイルの決定
サーバーの種類によって、必要なセキュリティレベルは異なります。社内用Webサーバーは、クレジットカード情報を扱うサーバーほど厳格である必要はありません。CentOS 7でサポートされているプロファイルの一覧を確認するには、以下のコマンドを実行します。
oscap info /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
画面には、PCI-DSS v3 Control BaselineやStandard System Security Profileといったオプションが表示されます。ニーズに合ったプロファイルIDを選択してください。
3. システムスキャンの実行
システムをStandard(標準)基準でスキャンし、プロフェッショナルなHTML形式のレポートを出力するには、次のコマンドを使用します。
oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_standard \
--report report.html \
/usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
このコマンドはシステム全体を精査します。結果はreport.htmlファイルにまとめられ、上司への報告も容易になります。
4. 分析とエラーの修正
ブラウザでreport.htmlを開くと、Pass(緑)とFail(赤)の項目が表示されます。OpenSCAPの素晴らしい点は、失敗した各項目に対して修正用のBashスクリプトやAnsibleプレイブック(Remediation)が用意されていることです。基本的にはコピー&ペーストするだけで対応可能です。
自動修正 (Remediation):諸刃の剣
時間を節約したい場合は、--remediateパラメータを追加することで、スキャンと同時に自動的にエラーを修正できます。ただし、これには細心の注意が必要です。
# 警告:本番環境でこのコマンドを直接実行しないでください!
oscap xccdf eval --remediate \
--profile xccdf_org.ssgproject.content_profile_standard \
/usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
例えば、あるセキュリティルールはSSH経由のRootアクセスを自動的に無効化します。もしsudo権限を持つユーザーをまだ作成していなかった場合、即座にサーバーからロックアウトされてしまいます。私の経験上、本番環境に適用する前に必ずステージング環境で試すことをお勧めします。
実戦から学んだ教訓
長年OpenSCAPを使用してきた中で、覚えておくべき3つの重要なポイントがあります。
- 100%という数字に固執しない:
/var/logに専用のパーティションを要求するような一部のルールは、既存のサーバーでは実施が困難な場合があります。まずは「High Severity(重要度:高)」の脆弱性や、SSH、パスワードに関連するエラーの解決に集中しましょう。 - ライブラリを常に最新に保つ: ハッカーは日々新しい手法を見つけ出します。
yum updateを定期的に実行し、scap-security-guideパッケージを常に最新の状態に保ってください。 - CI/CDパイプラインへの組み込み: システムをクリーンに保つ最善の方法は、イメージビルドの段階でセキュリティスキャンを行うことです。これにより、すべてのサーバーが「スタートライン」の時点で基準を満たしていることが保証されます。
OpenSCAPを使いこなすことは、システムの安全性を高めるだけでなく、あらゆる監査に対して自信を持つことにもつながります。今日、自分のサーバーをスキャンしてみてください。これまで見過ごしていた危険な脆弱性が見つかるかもしれません。

