AWS GuardDutyとvSRX仮想ファイアウォールの統合

ソリューションの概要

AWS GuardDuty は、AWS 環境内の予期しないアクティビティ、許可されていない可能性のあるアクティビティ、および悪意のあるアクティビティを特定する継続的なセキュリティ監視サービスです。AWS GuardDutyによって検出された脅威は、セキュリティフィードとしてAWS環境内のvSRXに送信されます。vSRXは、次の2つの方法でフィードにアクセスできます。

  • AWS S3バケットからフィードを直接ダウンロードする

  • ファイアウォールデバイスがジュニパー ATP クラウドに登録されている場合、フィードはATPクラウドセキュリティインテリジェンス(SecIntel)フィードとともにファイアウォールデバイスにプッシュされます。

次に、vSRXを使用すると、フィードに対してアクションを実行し、フィードで特定された脅威ソースへの接続をブロックまたはログに記録できます。AWS コンポーネントの詳細については、「 AWS ドキュメント」を参照してください。

このソリューションでサポートされている展開シナリオは次のとおりです。

  • AWS GuardDutyとvSRXの直接統合

    この導入には、ジュニパー ATP クラウド ライセンスは必要ありません。AWS GuardDuty からの脅威フィードは、AWS Lambda 関数を通じて処理され、AWS S3 バケットに保存されます。AWS Lambda 関数を設定してデプロイする必要があります。デプロイされると、Lambda 関数は AWS GuardDuty の検出結果からのデータを悪意のある IP アドレスと URL のリストに変換します。結果のリストは、設定済みのAWS S3バケットに、vSRXで取り込める形式で保存されます。AWS S3バケットから脅威フィードを定期的にダウンロードするようにvSRXを設定する必要があります。また、トラフィックがSecIntelポリシーにヒットするように、IDPシグネチャパッケージがファイアウォールデバイスですでに利用可能であることを確認する必要があります。

    図1:vSRX仮想ファイアウォールFlowchart of AWS security monitoring architecture: GuardDuty finds threats, CloudWatch logs them, Lambda processes them, IAM manages access, S3 stores data, vSRX instances receive feeds for action.による脅威フィードの直接取り込み
  • ATPクラウドを使用したAWS GuardDutyとvSRXの統合

    この導入では、SRXシリーズファイアウォールとvSRXにジュニパーATPクラウドライセンスをインストールする必要があります。詳細については、 ATPクラウドのソフトウェアライセンスを参照してください。AWS GuardDuty からの脅威フィードは、AWS Lambda 関数を通じて処理されます。Lambda関数を設定してデプロイし、vSRXでATPクラウドを有効にする必要があります。AWS Lambda関数は、OpenAPIを使用して脅威フィードをATPクラウドに送信します(フィードをC&Cカテゴリにアップロードします)。脅威フィードは、ATP Cloud SecIntelフィードとともに、登録されているすべてのvSRXにプッシュされます。

    図2:ATP Cloud Workflow diagram showing integration of AWS security services with Juniper ATP Cloud and vSRX firewalls. AWS CloudStack includes GuardDuty for threat detection, CloudWatch for monitoring, and Lambda for processing. Juniper ATP Cloud receives data via Sky Open APIs for threat analysis. vSRX firewalls enforce security policies using threat intelligence from Juniper ATP Cloud.を介した脅威フィードの取り込み

AWS GuardDutyとvSRX仮想ファイアウォールを統合するためのワークフロー

GitHubリポジトリから必要なファイルを取得する

必要なファイルを取得するには:

  1. GitHubリポジトリ https://github.com/Juniper/vSRX-AWS に移動します。
  2. コードドロップダウンリストをクリックします。
  3. ZIPのダウンロードをクリックします。

    vSRX-AWS-master.zipファイルがシステムにダウンロードされます。SRX-GD-Threatfeedフォルダ内にあるmanifest.xmlファイルとcc_schemaファイルが必要です。

S3バケットの設定

この手順は、脅威フィードがvSRX仮想ファイアウォールによって直接取り込まれている場合にのみ必要です。脅威フィードの取り込みがATPクラウドを経由する場合、S3バケットを設定する必要はありません。

  1. AWS Management Console にログインし、[ Create Bucket] ページに移動します。
  2. 名前とリージョンを S3 バケットに割り当てます。
  3. すべてのパブリックアクセスをブロックオプションのチェックを外します。
  4. 残りのオプションはデフォルトの状態のままにして、 バケットの作成をクリックします。
    上部の緑色のアラートは、新しいバケットを確認します。
  5. 新しく作成されたバケットをクリックすると、その他のオプションが表示されます。
  6. [ オブジェクト] タブで、[ アップロード] 、[ ファイルの追加]の順にクリックして、前に取得した2つのファイルをアップロードします。
  7. cc_schemaファイルとマニフェストファイルに移動し、 アップロードをクリックします。
  8. オブジェクトタブに表示されている2つのファイルを選択し、 アクション ドロップダウンリストをクリックします。
  9. [公開] を選択します。
    このアクションにより、誰でもファイルにアクセスして読み取ることができます。
  10. 公開をクリックします。
    ベストプラクティス:
    • 後で参照できるように、S3バケット名をメモしておきます。

    • SRXシリーズファイアウォールがS3バケットからファイルとフィードをダウンロードできるように、S3バケットへのアクセスは常にSRXシリーズパブリックにする必要があります。
    • ダウンロードまたは読み取り操作にAPIキーを必要としないように、S3バケットを設定します。

    • S3 バケットへの書き込みアクセスは、Lambda 関数でのみ使用できます。

    • S3 設定の詳細については、「 Amazon S3 の設定」を参照してください。

GuardDutyを設定する

GuardDuty の結果は、S3 バケットまたは CloudWatch イベントのいずれかにエクスポートできます。このソリューションでは、結果を CloudWatch イベントにエクスポートします。最終的には、CloudWatch イベントルールが Lambda 関数をトリガーして、検出結果を vSRX仮想ファイアウォールと互換性のある形式に変換し、AWS S3 バケットにプッシュします。

AWS guardduty を設定するには:

  1. AWS アカウントにログインします。
  2. [サービス] タブをクリックし、GuardDuty を検索します。
  3. [GuardDuty サービス] を選択します。

    [GuardDuty の検出結果] ページが表示され、GuardDuty によって生成されたイベントのリストが表示されます。

  4. 左側のペインで 設定 をクリックします。

    [About GuardDuty] ページが表示されます。

  5. [結果のエクスポートオプション] セクションで、結果が更新される頻度を選択します。使用可能なオプションは次のとおりです。
    • CWEとS3を6時間ごとに更新(デフォルト)

    • CWEとS3を1時間ごとに更新

    • CWEとS3を15分ごとに更新

  6. オプションを選択し、 保存をクリックします。

    選択した頻度に基づいて、GuardDuty サービスは定期的にイベントを生成し、イベントを Cloud Watch Events (CWE) サービスと共有します。

Lambda関数を設定する

AWS Lambda 関数は、ATP Cloud OpenAPI を使用して GuardDuty の結果を ATP Cloud にアップロードします。Lambda 関数は、標準の SRX マニフェストファイル形式のフィード情報で AWS S3 バケットを更新します。Lambdaは、ATP Cloud Webポータルで組織ごとに生成されたアプリケーショントークンで設定する必要があります。脅威フィードは、C&Cカテゴリで利用できます。

Lambda関数を作成するには:

  1. [Services > Lambda] に移動します。
  2. 「関数の作成」をクリックします。
  3. Lambda 関数に名前を割り当てます。
  4. 関数を記述するランタイム言語を選択します。例えば、 ランタイムpython 3.6です。
  5. [Execution role] (実行ロール) セクションで、[ Use an existing role] (既存のロールを使用) を選択します。
  6. 既存のロールドロップダウンリストで、guardduty-lambdarole-testオプションを選択します。

    ドロップダウンリストの下に表示されたリンクを開き、ロールの詳細を確認します。

    注:

    適切な Identity and Access Management(IAM)ロールを指定する必要があります。新しい IAM ロールを作成し、そのロールを Lambda 関数に割り当てます。これにより、Lambda 関数が S3 バケットとの間でオブジェクトをアップロードまたは書き込み/読み取りできるようになります。詳細については、「IAM ユーザーの作成」を参照してください。

  7. ロールの詳細を順番に入力したら、Lambdaページに戻り、[ Create Function] をクリックします。
  8. Lambdaファイルをアップロードします。
    1. GitHubリポジトリ https://github.com/Juniper/vSRX-AWS にログインし、 SRX-GD-ThreatFeed フォルダに移動して、 SRX-GD-ThreatFeed.zip ラムダファイルをダウンロードします。
    2. Lambda > Functions > your_lambda_function_nameに移動します。
    3. アクション>.zipファイルをアップロードをクリックします。関数コードセクションからSRX-GD-ThreatFeed.zipファイルをアップロードします。
    4. OKをクリックします。

      Lambda の設定は [環境変数] セクションに表示されます。 表 1 のガイドラインに従って Lambda を設定します。

  9. Lambda関数を設定します。
    1. [Lambda > Functions] に移動し> your_lambda_function_name > [Edit Environment variables] に移動します。
    2. 表1に示されているガイドラインに従って設定を完了します。
      表1:AWS Lambdaの設定

      パラメータ

      説明

      MAX_ENTRIES

      対応するデータファイルに保持されるエントリーの最大数を定義します。この制限に達すると、古いエントリは期限切れになります。

      デフォルト値:10000

      範囲:1000-100000

      例:1000

      IP_FEED_NAME

      S3データファイルのキー名でもあるCC IPフィード名を定義します。削除する必要がある誤報エントリがある場合。IP_FEED_NAMEパラメーターから派生した対応するキーから手動で削除する必要があります。

      例:custom_cc_(content_type)_data

      DNS_FEED

      S3データファイルのキー名でもあるCC DNSフィード名を定義します。削除する必要がある誤報エントリがある場合。DNS_FEEDパラメーターから派生した対応するキーから手動で削除する必要があります。

      例:custom_cc_dns_(content_type)_data

      S3_BUCKET

      S3バケットの名前。バケット名は、S3 URL名でも使用されます。

      例:guardduty-統合テスト

      SEVERITY_LEVEL

      AWS GuarddutyイベントIP/URLがフィードファイルに追加されるレベル。

      注:

      重大度レベルは、ATPクラウド脅威レベルと1対1でマッピングされます。

      デフォルト値:8

      範囲:1-10

      例:4

      SKY_APPLICATION_TOKEN

      ATP Cloud OpenAPIにエントリをアップロードするために使用します。ジュニパー ATP クラウド Web ポータルにログインし、アプリケーション トークンを生成する必要があります。アプリケーショントークンを生成するには、少なくとも1つのデバイスにプレミアムライセンスが設定されている必要があります。詳細については、 ATPクラウドのソフトウェアライセンスを参照してください。

      例:TOKEN_VALUE

      SKY_OPENAPI_BASE_PATH

      Lambda関数からATP Cloudにフィードをアップロードするために使用されるSky Open APIのベースパス。

      例:https://threat-api.sky.junipersecurity.net/v1/cloudfeeds

      FEED_TTL

      有効期限(TTL)を使用して、フィードがアクティブになる日数を指定します。フィードエントリーは、TTL内で更新されない場合、SRXシリーズファイアウォールで期限切れになります。

      デフォルト値: 3456000

      範囲:86400-31556952

      FEED_UPDATE_INTERVAL

      フィードの更新間隔。

      デフォルト値:300

      範囲:300-86400

      注:
      • vSRXファイアウォールによる脅威フィードの直接取り込みの場合、SKY_APPLICATION_TOKENおよびSKY_OPENAPI_BASE_PATHパラメーターを定義する必要はありません。これらのパラメーターが設定されていない場合、フィードはAWS S3バケットに直接アップロードされます。

      • ATP Cloudを介して脅威フィードを取り込む場合は、SKY_APPLICATION_TOKENパラメーターとSKY_OPENAPI_BASE_PATHパラメーターを定義する必要があります。これらのパラメーターは、AWS LambdaからATP Cloudにフィードをアップロードするために設定する必要があります。パラメータを定義する必要はありませんS3_BUCKET。

  10. タイムアウト設定を構成します。 [Lambda > Functions] > your_lambda_function_name > [Basic] 設定 に移動し、 タイムアウト を 10 秒に更新します。
  11. 「保存」をクリックします。

CloudWatch の設定

ルールを作成し、イベントソース (GuardDuty) とイベントターゲット (Lambda 関数) を指定します。

ルールを作成するには:

  1. イベント>ルールを選択します。

    ルールページが表示されます。

  2. ルールの作成をクリックします。
  3. [Event Source] (イベントソース) セクションで、サービス名を GuardDuty として、イベントタイプを GuardDuty Finding として選択します。
  4. [ターゲット] セクションで、[ターゲットの追加] をクリックし、[Lambda] 関数が選択されていることを確認します。

    GuardDuty と Lambda 関数をイベントソースとターゲットとして指定することで、CloudWatch Logs Insights でログを検索および分析できるようになります。

  5. 詳細の設定をクリックします。
  6. ルール定義ページで、ルールの名前を指定します。
  7. ルールの作成をクリックします。

vSRX仮想ファイアウォールとAWS GuardDutyの直接統合の設定

次のセクションでは、vSRX仮想ファイアウォールに必要なCLI設定を示しています。

この例では、プロファイル名、プロファイルルール、脅威レベルスコアを設定します。これらの脅威レベルスコアに一致するものはすべてマルウェアまたは感染ホストとみなされます。ATPクラウドの脅威レベルは、AWS GuardDutyの重大度レベルと1対1でマッピングされます。

注:

AWS GuardDutyの重大度レベルはいつでも変更できますが、重大度レベルは、vSRX仮想ファイアウォールで設定した脅威レベルと常に一致する必要があります。

AWS GuardDutyでvSRX仮想ファイアウォールを設定するには(ATPクラウドを使用しない場合):

  1. コンソールウィンドウを開き、vSRX仮想ファイアウォールにログインします。

    login as: root@user-vsrx

    % cli

  2. show configurationコマンドを発行して、既存のSecIntelの詳細を表示します。

    root@user-vsrx> show configuration | display set | match security-intel

  3. IDPセキュリティパッケージがvSRX仮想ファイアウォールにダウンロードされていることを確認します。ジュニパー セキュリティ EngineeringポータルからIDPセキュリティパッケージを手動でダウンロードしてインストールするには、次のコマンドを使用します

    root@user-vsrx> request security idp security-package download

    root@user-vsrx> request security idp security-package download status

    root@user-vsrx> request security idp security-package install

    root@user-vsrx> request security idp security-package install status

  4. 構成モードにします。

    root@user-vsrx> configure

  5. セキュリティインテリジェンスURLを設定します。

    root@user-vsrx# set services security-intelligence url https://guardduty-integration-test.s3-us-west-2.amazonaws.com/manifest.xml

  6. セキュリティインテリジェンスのプロファイルとポリシーを設定します。この例では、プロファイル名は secintel_profile で、脅威レベル8以上はブロックされています。
  7. セキュリティポリシーを設定し、セキュリティインテリジェンスポリシーをセキュリティポリシーに割り当てます。

    root@user-vsrx# set security policies from-zone trust to-zone untrust policy 1 match source-address any

    root@user-vsrx# set security policies from-zone trust to-zone untrust policy 1 match destination-address any

    root@user-vsrx# set security policies from-zone trust to-zone untrust policy 1 match application any

    root@user-vsrx# set security policies from-zone trust to-zone untrust policy 1 then permit application-services security-intelligence-policy secintel_policy

  8. request services security-intelligence download statusコマンドを実行して、SecIntelフィードのダウンロードステータスを確認します。

    root@user-vsrx# request services security-intelligence download status

    vSRX仮想ファイアウォールで、先ほどLambda関数で設定したCCカテゴリのDNSフィードとIPフィードの両方のチェックが開始されました。

  9. 次のコマンドを実行して、SecIntelカテゴリの詳細を表示します。
    root@user-vsrx# show services security-intelligence category detail category-name CC feed-name cc_guardduty_ip count 10 start 0 all-logical-systems-tenants
  10. run show security dynamic-address category-name CCコマンドを発行して、一致するエントリーを表示します。

    IPアドレスから、vSRX仮想ファイアウォールがフィードを受信し、AWS GuardDutyと直接統合されていることがわかります。

セキュリティインテリジェンス統計情報を確認するには、 show services security-intelligence statistics コマンドを使用します。

ATPクラウドを使用してAWS GuardDutyでvSRX仮想ファイアウォールを構成

ATPクラウドを使用してAWS GuardDutyでvSRX仮想ファイアウォールを設定するには:

  1. ATPクラウドライセンスをインストールします。
  2. vSRX仮想ファイアウォールをATPクラウドに登録します。「 ジュニパー ATP クラウド Web ポータルを使用して SRXシリーズ ファイアウォールを登録する」を参照してください。

    root@user-vsrx# request services advanced-anti-malware enroll https://amer.sky.junipersecurity.net/v2/skyatp/ui_api/bootstrap/enroll/HASH/HASH.slax

    登録スクリプトは、ステップ3で使用するaamw-ssl tlsプロファイルを生成します。
  3. セキュリティインテリジェンスURLを設定します。
    set services security-intelligence url https://cloudfeeds.argonqa.junipersecurity.net/api/manifest.xmlset services security-intelligence authentication tls-profile aamw-ssl
  4. セキュリティインテリジェンスのプロファイルとポリシーを設定します。この例では、プロファイル名は secintel_profile で、脅威レベル8以上はブロックされています。

    set services security-intelligence profile secintel_profile category CC

    set services security-intelligence profile secintel_profile rule secintel_rule match threat-level 8

    set services security-intelligence profile secintel_profile rule secintel_rule match threat-level 9

    set services security-intelligence profile secintel_profile rule secintel_rule match threat-level 10

    set services security-intelligence profile secintel_profile rule secintel_rule then action block drop

    set services security-intelligence profile secintel_profile rule secintel_rule then log

    set services security-intelligence profile ih_profile category Infected-Hosts

    set services security-intelligence profile ih_profile rule ih_rule match threat-level 8

    set services security-intelligence profile ih_profile rule ih_rule match threat-level 9

    set services security-intelligence profile ih_profile rule ih_rule match threat-level 10

    set services security-intelligence profile ih_profile rule ih_rule then action block drop

    set services security-intelligence profile ih_profile rule ih_rule then log

    set services security-intelligence policy secintel_policy Infected-Hosts ih_profile

    set services security-intelligence policy secintel_policy CC secintel_profile

  5. セキュリティポリシーを設定し、セキュリティインテリジェンスポリシーをセキュリティポリシーに割り当てます。

    set security policies from-zone trust to-zone untrust policy 1 then permit application-services security-intelligence-policy secintel_policy

    commit

セキュリティインテリジェンスのステータスを確認するには、 show services security-intelligence update status コマンドを使用します。

セキュリティインテリジェンス統計情報を確認するには、 show services security-intelligence statistics コマンドを使用します。

vSRX仮想ファイアウォールをATP Cloudと統合する場合、ATP Cloud Webポータルでの追加設定は必要ありません。SecIntel設定を含むすべての設定は、ATPクラウドでvSRX仮想ファイアウォールを登録する際に自動的に作成されます。

AWS GuardDutyのユースケース

この例では、脅威フィードをダウンロードするようにvSRX仮想ファイアウォールを設定しましょう。

  1. vSRX仮想ファイアウォールにログインします。

    login as: root@user-vsrx

    % cli

  2. show configurationコマンドを発行して、既存のSecIntelの詳細を表示します。
    root@user-vsrx> show configuration | display set | match security-intel
  3. 構成モードにします。
    root@user-vsrx> configure
  4. SRXシリーズファイアウォールでSecIntel URLを設定します。

    root@user-vsrx> set services security-intelligence url guardduty-url

  5. 設定をコミットします。
    root@user-vsrx> commit
  6. シェルから cat /var/db/secinteld/tmp/manifest.xml を実行し、マニフェストファイルが正常にダウンロードされたことを確認します。
  7. そうでない場合は、次のコマンドを実行します。
    root@user-vsrx> request services security-intelligence download
  8. マニフェストファイルが正常にダウンロードされたかどうかを確認します。
  9. マニフェストファイルがダウンロードされたら、次のコマンドを実行します。

    root@user-vsrx> show services security-intelligence category detail category-name CC feed-name feed_name_gd

  10. CLIから次のコマンドを実行して、動的アドレスの下にフィードが存在するかどうかを確認します。

    root@user-vsrx> show security dynamic-address category-name CC

  11. リストから任意のIPアドレス(例:1.0.210.98)を選択し、クライアントからpingテストを実行し、secIntel CCブロックドロップカウンターが増加していることを確認します。

    ping の応答を取得できるはずです。クライアントから通過するトラフィックが、SRXシリーズファイアウォールのSecIntelポリシーに当てはまっていることを確認します。

    注:

    トラフィックSecIntelポリシーにヒットするためにシグネチャパッケージIDP必要です。シグネチャパッケージがまだお持ちでない場合は、 request security idp security-package download コマンドを実行してください。

    root@user-vsrx> show security flow session source-prefix Client_IPコマンドを実行します。