LoginSignup
0
0

serverspecをコンテナに格納してお手軽インフラテスト自動化 #STIG #PCI-DSS #CISベンチマーク

Last updated at Posted at 2023-12-18

まとめ

InSpecコマンドとテストコードをコンテナイメージに入れて、いつでもどこでもインフラテストを実行できるようにします。

Docker Hubで公開されているchef/inspecは、CPUアーキテクチャのARM対応していないなど不具合が発生しがちなので、Dockerfileで自前でInSpecコンテナを用意するのが近道です。

Dockerfile

FROM ubuntu

# Mixlib-install gem で InSpecをインストール
RUN apt update -yq && apt install -yq ruby git nginx
RUN gem install -N mixlib-install && mixlib-install download inspec -v 5 
RUN dpkg -i inspec*

## ライセンス回避
RUN echo 'export CHEF_LICENSE_KEY=free-f0d0da72-8424-4323-ab09-43f625915690-580' >> /root/.bashrc
RUN echo 'export CHEF_LICENSE="accept"' >> /root/.bashrc

# 必要なInSPecテストコードの取得
RUN git clone https://github.com/dev-sec/linux-baseline.git
RUN git clone https://github.com/dev-sec/ssh-baseline.git
docker build -t inspec .

InSpec 実行

構文:

docker run inspec /bin/bash -c 'inspec exec [InSpecプロファイル] -t [ターゲットサーバー] '

実行例:

docker run inspec /bin/bash -c 'inspec exec ssh-baseline -t ssh://[USER_NAME]@[IP] --password '[PASSWORD]''

InSpec

InSpecは、RSpecやServerspecライクなコードを元にセキュリティテスト・スキャンを行います。

ゼロベースから必要なテストコードを自分で書くこともできますが、InSpecを開発/メンテナンスしているProgress社[^1]が無料公開しているテストコードを活用できます。(リンク) 
今回使用したLinuxOS BaselineとSSH Baselineは、その一例です。

他にも、脆弱性管理データベースとして有名なCVEを管理するMITRE Corporationが無料公開しているテストコードも活用できます。(リンク

MITREは、CISベンチマークSTIGsに対応したテストコードを無料公開しています。
高いセキュリティ要件を必要とする環境に合わせたセキュリティスキャンを行うことができます。

上記以外のすべてのOSやアプリケーションに対応するCISベンチマークSTIGsに対応するセキュリティテスト・スキャンが必要な場合、有償ではありますが、Progress社から購入することが可能です。

テストコード

describe sshd_config do
  its('PermitRootLogin') { should_not cmp 'yes' }
end

describe package('telnetd') do
  it { should_not be_installed }
end 

describe inetd_conf do
  its("telnet") { should eq nil }
end

上記のテストコードで「ROOTログインが無効化されていること」「telnetが使われていないこと」をテストします。

InSpecとSTIGとCISベンチマーク

InSpecのよりセキュリティに特化した活用方法については、こちら↓↓↓↓を参照ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0