インフラにテスト/セキュリティスキャンは必要か?

IaC (Terraform や Ansible)で自動構築後に、意図しない設定ミスや Config Drift は必ず起きてしまいます。ですから、継続的かつ定期的な監査を行う必要があります。

初期構築時には満たせていたセキュリティ基準が、サービス稼働中に様々な変更やアップデートが追加され、いつの間にか基準から逸れてしまうことは避けられません。そのため、継続的かつ定期的なインフラの監査を行なっていく必要があるのです。

InSpec とは?

Chef InSpec とは、インフラストラクチャやアプリケーションを自動テストするために使用されるオープンソースツールです。コンプライアンス、セキュリティ、およびその他のポリシー要件が満たされていることをテストすることができます。テストはコードで記述されるため、CI/CD パイプラインに簡単に統合できます。つまり、InSpec を Infrastructure as Code(IaC)に組み入れることで、インフラ構築をテスト駆動型の DevSecOps にすることができるようになります。

さらに、InSpec には、CIS ベンチマークSTIG に準ずる、カスタマイズ可能な監査コードが用意されています。カスタマイズすることで、各環境に適したテストを行うことができます。CIS ベンチマークSTIG を上回る堅牢な環境を作ることも、CIS ベンチマークSTIG のすべてを必要としない環境に合わせてカスタマイズすることも可能です。

本記事では、仮想サーバーの SSH 設定まわりのセキュリティテストを行う例を取り上げます。

InSpecセキュリティスキャン実行手順

1. InSpec をダウンロードする。

パッケージをこちらからダウンロードし、InSpec をインストールします。
ターミナルからインストールする方法は、こちらです。

Docker コンテナでInSpec実行する場合の手順はこちら

2. InSpec を実行する。

$ inspec exec https://github.com/dev-sec/ssh-baseline.git -t ssh://対象サーバー

上記コマンドは、無料のテストコード「ssh-baseline」を使っています。
対象サーバーの SSH 設定にセキュリティリスクがないかを監査します。コードは、Github上で公開されています。(リンク
公開されているテストコードは、次のようなものです。必要に応じて過不足のカスタマイズができます。

# ルートログインが許可されていないかをチェック
control 'sshd-06' do
  describe sshd_config("#{sshd_custom_path}/sshd_config") do
    its('PermitRootLogin') { should match(/no|without-password|prohibit-password/) }
  end 
end

# パスワードログインが許可されていないかをチェック
control 'sshd-27' do
    describe sshd_config("#{sshd_custom_path}/sshd_config") do
    its('PasswordAuthentication') { should eq('no') }
  end
end

3. 結果を確認する。
以下の実行結果から対象サーバーの SSH 設定に、いくつかのセキュリティ上の問題があることを確認することができます。

<ターミナルの実行結果>


Automate UI 上の実行結果>


CISベンチマーク・STIG 準拠のセキュリティスキャンと自動修正

前述の例では、一般的なセキュリティ規範に基づいたテストコードを使いサーバーのセキュリティ監査を行いました。より堅牢で、非常に高いセキュリティ基準やより厳格なコンプライアンス要件を遵守する必要のある環境である場合、CISベンチマーク・STIG 準拠のテストコードを用意する必要が生じます。

自社でそうしたテストコードを実装することは、高いコストが発生してしまいます。そうした問題を解消するために、Progress Chef が提供する「プレミアムコンテンツ」 を活用することができます。

カスタマイズ可能なCISベンチマーク・STIG 準拠テストコードが提供されます。
使い方は、前述の「ssh-baseline」と同様です。提供されるコードを指定し、監査対象のサーバーに対してテストを実行します。

対応OSとアプリケーションのリスト

次のリストに、提供される CIS・STIG 準拠のテストコードがまとめられています。

*リスト内の「AUDIT」は監査コードの提供有無を表し、 「REMEDIATION」は修正コードの提供有無を表しています。監査コードで問題を検知し、修正コードで自動修正を行います。どちらも必要に合わせてカスタマイズ可能です。
🔶サーバーOS


🔶サーバー OS だけではなく、CISベンチマーク準拠のアプリケーション監査コードも提供されています。

🔶プライベートクラウドのアカウント設定もセキュリティ保護の観点で非常に重要になります。
各クラウドに対応する CISベンチマーク準拠の監査コードが提供されています。

🔶サーバー、クラウド、そして作業用ノートPCの監査コードも提供されています。

お問い合わせください

Progress Chef が提供するサービスについて詳しくは、下記よりお気兼ねなくお問い合わせください。