5分でつくるNessus Scanner on AWS

以前、マネジメントコンソールよりNessus ScannerをAWS上に構築しました。 マネジメントコンソールで構築したときは、少々時間がかったので、CloudFormationを利用してさくっと構築できるようにしました。
2018.09.03

こんにちは、坂巻です。

以前、マネジメントコンソールよりNessus ScannerをAWS上に構築しました。

Tenable.ioを使って脆弱性診断を15分で試してみた

マネジメントコンソールで構築したときは、少々時間がかったので、CloudFormationを利用してさくっと構築できるようにしました。 既にスキャン対象の環境がある場合は、本環境と既存の環境をVPCピアリング等で接続してください。

普段、CloudFormationのテンプレートを作成するときは、 管理しやすい単位でテンプレートを分けているので、普段通りテンプレートを分けて作成しています。

Nessus Scannerを検証してみたい時にご利用ください。

目次

  • 前提
  • 構成図
  • スタック作成
  • さいごに

前提

  • AWS CLIが利用可能であること
  • Tenable.ioアカウントを取得済みであること
    • アカウントがない場合はコチラよりトライアルアカウントの作成が可能です

構成図

以下の環境をCloudFormationより作成します。

1

スタック作成

こちらにテンプレートをアップしました。スタック作成にはこちらのテンプレートを利用しています。

テンプレートの内容は、以下マニュアルの通りに作成しています。

事前準備

AWS CLIを利用してスタックを作成していくので、必要な情報を変数に代入しておきます。

  • TRMPLATE_DIR…CloudFormationテンプレート格納ディレクトリを指定
  • LINKING_KEY…Tennableのリンクキーを指定
    • Linking Keyの確認についてはLink a Scannerを確認ください

以下に例を記載しますが、環境にあわせて値は変更してください。

TRMPLATE_DIR="~/Downloads/AWS-master/CloudFormation/Tenable/"
LINKING_KEY="b6dce4b7b6f.........."

変数代入後に設定を確認します。

cat << EOF
  TRMPLATE_DIR:  ${TRMPLATE_DIR}
  LINKING_KEY:   ${LINKING_KEY}
EOF

Identity

以下のコマンドを実行し、IAMロールを作成します。

aws cloudformation create-stack \
  --stack-name Tenable-Test-Identity \
  --template-body file://"${TRMPLATE_DIR}/01_Tenable-Identity.yml" \
  --parameters ParameterKey=EnvType,ParameterValue=dev \
  --capabilities 'CAPABILITY_NAMED_IAM'

スタックの状況が[CREATE_COMPLETE]になった事を確認します。

2

IAMロールが作成されました。

3

BaseNetwork

VPCとインターネットゲートウェイを作成します。

aws cloudformation create-stack \
  --stack-name Tenable-Test-BaseNetwork \
  --template-body file://"${TRMPLATE_DIR}/02_Tenable-BaseNetwork.yml" \
  --parameters ParameterKey=EnvType,ParameterValue=dev

スタックの状況が[CREATE_COMPLETE]になった事を確認します。

4

VPCが作成されました。

5

インターネットゲートウェイが作成されました。

6

SharedServices

サブネットとルートテーブルを作成します。

aws cloudformation create-stack \
  --stack-name Tenable-Test-SharedServices \
  --template-body file://"${TRMPLATE_DIR}/03_Tenable-SharedServices.yml" \
  --parameters ParameterKey=EnvType,ParameterValue=dev \
               ParameterKey=BaseNetworkStackName,ParameterValue=Tenable-Test-BaseNetwork

スタックの状況が[CREATE_COMPLETE]になった事を確認します。

7

サブネットが作成されました。

8

ルートテーブルが作成されました。

9

SecurityGroup

セキュリティグループを作成します。

aws cloudformation create-stack \
  --stack-name Tenable-Test-SecurityGroup \
  --template-body file://"${TRMPLATE_DIR}/04_Tenable-SecurityGroup.yml" \
  --parameters ParameterKey=EnvType,ParameterValue=dev \
               ParameterKey=BaseNetworkStackName,ParameterValue=Tenable-Test-BaseNetwork

スタックの状況が[CREATE_COMPLETE]になった事を確認します。

10

セキュリティグループが作成されました。

11

tenable-dev-scanner-sgは、この後構築しますEC2(Nessus Scanner)にアタッチします。tenable-dev-target-sgはスキャン対象のサーバにアタッチして利用します。

EC2(Nessus Scanner)

EC2(Nessus Scanner)を作成します。

aws cloudformation create-stack \
  --stack-name Tenable-Test-EC2 \
  --template-body file://"${TRMPLATE_DIR}/05_Tenable-EC2.yml" \
  --parameters ParameterKey=EnvType,ParameterValue=dev \
               ParameterKey=IdentityStackName,ParameterValue=Tenable-Test-Identity \
               ParameterKey=SharedServicesStackName,ParameterValue=Tenable-Test-SharedServices \
               ParameterKey=SecurityGroupStackName,ParameterValue=Tenable-Test-SecurityGroup \
               ParameterKey=LinkingKey,ParameterValue="${LINKING_KEY}" \
               ParameterKey=EC2InstanceType,ParameterValue=t2.medium

スタックの状況が[CREATE_COMPLETE]になった事を確認します。

12

EC2が作成されました。

13

tenable.ioのコンソールより、スキャンが作成された事が確認できました。

14

さいごに

本エントリのテンプレート、コマンドを利用すればNessus ScannerをAWS上にさくっと構築することができます。 Nessus Scannerを検証してみたい時にご利用ください。