Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

AWS GuardDuty와 vSRX 가상 방화벽 통합

솔루션 개요

Amazon Web Services(AWS) GuardDuty는 AWS 환경 내에서 예기치 않은 활동, 잠재적으로 승인되지 않은 활동, 악의적인 활동을 식별하는 지속적인 보안 모니터링 서비스입니다. AWS GuardDuty에서 탐지한 위협은 AWS 환경의 vSRX 가상 방화벽에 보안 피드로 전송됩니다. vSRX 가상 방화벽은 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 목록으로 변환합니다. 결과 목록은 vSRX 가상 방화벽에서 수집할 수 있는 형식으로 구성된 AWS S3 버킷에 저장됩니다. AWS S3 버킷에서 위협 피드를 주기적으로 다운로드하도록 vSRX 가상 방화벽을 구성해야 합니다. 또한 트래픽이 SecIntel 정책에 도달하도록 방화벽 디바이스에서 침입 탐지 및 방지(IDP) 서명 패키지를 이미 사용할 수 있는지 확인해야 합니다.

    그림 1: vSRX 가상 방화벽 Direct Ingestion of threat feeds by vSRX Virtual Firewall 을 통한 위협 피드 직접 수집
  • ATP 클라우드를 사용하여 AWS GuardDuty와 vSRX 가상 방화벽 통합

    이 구축을 위해 SRX 시리즈 방화벽 및 vSRX 가상 방화벽에 주니퍼 ATP 클라우드 라이선스를 설치해야 합니다. 자세한 내용은 ATP 클라우드용 소프트웨어 라이선스를 참조하십시오. AWS GuardDuty의 위협 피드는 AWS Lambda 함수를 통해 처리됩니다. Lambda 함수를 구성 및 구축하고 vSRX 가상 방화벽에서 ATP 클라우드를 활성화해야 합니다. AWS Lambda 함수는 OpenAPI를 사용하여 위협 피드를 ATP 클라우드로 전송(C&C 범주에 피드 업로드)합니다. 위협 피드는 ATP 클라우드 보안 인텔리전스(SecIntel) 피드와 함께 등록된 모든 vSRX 가상 방화벽에 푸시됩니다.

    그림 2: ATP 클라우드 Ingestion of threat feeds through 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. Block all public access(모든 공용 액세스 차단) 옵션의 선택을 취소합니다.
  4. 나머지 옵션은 기본 상태로 두고 Create bucket(버킷 생성)을 클릭합니다.
    상단의 녹색 경고는 새 버킷을 확인합니다.
  5. 새로 생성된 버킷을 클릭하면 더 많은 옵션을 볼 수 있습니다.
  6. Objects( 개체 ) 탭에서 Upload(업로드 )를 클릭한 다음 Add Files(파일 추가)를 클릭하여 이전에 검색한 두 개의 파일을 업로드합니다.
  7. cc_schema 및 매니페스트 파일로 이동한 다음 Upload(업로드)를 클릭합니다.
  8. 이제 Objects(개체) 탭에 나열된 두 파일을 선택한 다음 Actions(작업 ) 드롭다운 목록을 클릭합니다.
  9. [Make Public]을 선택합니다.
    이 작업을 수행하면 모든 사용자가 파일에 액세스하고 읽을 수 있습니다.
  10. 공개를 클릭합니다.
    모범 사례:
    • 나중에 참조할 수 있도록 S3 버킷 이름을 기록해 둡니다.

    • SRX 시리즈 방화벽이 S3 버킷에서 파일 및 피드를 다운로드할 수 있도록 S3 버킷 액세스는 항상 퍼블릭이어야 합니다.
    • 다운로드 또는 읽기 작업에 API 키가 필요하지 않도록 S3 버킷을 구성합니다.

    • S3 버킷에 대한 쓰기 액세스는 Lambda 함수에서만 사용할 수 있습니다.

    • S3 구성에 대한 자세한 내용은 Amazon S3 설정 섹션을 참조하세요.

GuardDuty 구성

GuardDuty 결과는 S3 버킷 또는 CloudWatch 이벤트로 내보낼 수 있습니다. 이 솔루션에서는 결과를 CloudWatch 이벤트로 내보냅니다. 결국 CloudWatch 이벤트 규칙은 결과를 vSRX 가상 방화벽과 호환되는 형식으로 변환하고 AWS S3 버킷으로 푸시하도록 Lambda 함수를 트리거합니다.

AWS guardduty를 구성하려면:

  1. AWS 계정에 로그인합니다.
  2. 서비스 탭을 클릭하고 GuardDuty를 검색합니다.
  3. GuardDuty 서비스를 선택합니다.

    GuardDuty Findings(GuardDuty 결과) 페이지가 나타나 GuardDuty에서 생성된 이벤트 목록을 표시합니다.

  4. 왼쪽 창에서 설정을 클릭합니다.

    GuardDuty 정보 페이지가 나타납니다.

  5. Finding export options(찾기 내보내기 옵션) 섹션에서 업데이트된 결과의 빈도를 선택합니다. 사용 가능한 옵션은 다음과 같습니다.
    • 6시간마다 CWE 및 S3 업데이트(기본값)

    • 1시간마다 CWE 및 S3 업데이트

    • 15분마다 CWE 및 S3 업데이트

  6. 옵션을 선택하고 저장을 클릭합니다.

    선택한 빈도에 따라 GuardDuty 서비스는 정기적으로 이벤트를 생성하고 Cloud Watch Events(CWE) 서비스와 이벤트를 공유합니다.

Lambda 함수 구성

AWS Lambda 함수는 ATP 클라우드 OpenAPI를 사용하여 GuardDuty 결과를 ATP 클라우드에 업로드합니다. Lambda 함수는 표준 SRX 매니페스트 파일 형식의 피드 정보로 AWS S3 버킷을 업데이트합니다. Lambda는 ATP 클라우드 웹 포털에서 영역별로 생성된 애플리케이션 토큰으로 구성해야 합니다. 위협 피드는 C&C 범주에서 사용할 수 있습니다.

Lambda 함수를 생성하려면:

  1. 서비스 > Lambda로 이동합니다.
  2. Create Function(함수 생성)을 클릭합니다.
  3. Lambda 함수에 이름을 할당합니다.
  4. 함수를 작성할 런타임 언어를 선택합니다. 예를 들어 런타임 python 3.6입니다.
  5. 실행 역할(Execution role) 섹션에서 기존 역할 사용(Use an existing role)을 선택합니다.
  6. 기존 역할(Existing role) 드롭다운 목록에서 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 Lambda 파일을 다운로드합니다.
    2. Lambda > 함수 > your_lambda_function_name로 이동합니다.
    3. Actions(작업) > Upload a .zip file( 파일 업로드)을 클릭합니다. 함수 코드 섹션에서 SRX-GD-ThreatFeed.zip 파일을 업로드합니다.
    4. 확인을 클릭합니다.

      Lambda 구성이 환경 변수(Environment variables) 섹션에 표시됩니다. 표 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-integration-test

      SEVERITY_LEVEL

      AWS Guardduty 이벤트 IP/URL이 피드 파일에 추가되는 수준입니다.

      메모:

      심각도 수준은 ATP 클라우드 위협 수준과 일대일로 매핑됩니다.

      기본값: 8

      범위: 1-10

      예: 4

      SKY_APPLICATION_TOKEN

      ATP 클라우드 OpenAPI에 항목을 업로드하는 데 사용됩니다. 주니퍼 ATP 클라우드 웹 포털에 로그인하여 애플리케이션 토큰을 생성해야 합니다. 응용 프로그램 토큰을 생성하려면 프리미엄 라이선스로 구성된 장치가 하나 이상 있어야 합니다. 자세한 내용은 ATP 클라우드용 소프트웨어 라이선스를 참조하십시오.

      예: TOKEN_VALUE

      SKY_OPENAPI_BASE_PATH

      Lambda 함수에서 ATP 클라우드로 피드를 업로드하는 데 사용되는 Sky Open API의 기본 경로입니다.

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

      FEED_TTL

      TTL(Time to Live)을 사용하여 피드가 활성화되는 일수를 지정합니다. 피드 항목이 TTL 내에서 업데이트되지 않으면 SRX 시리즈 방화벽에서 만료됩니다.

      기본값: 3456000

      범위: 86400-31556952

      FEED_UPDATE_INTERVAL

      피드에 대한 업데이트 간격입니다.

      기본값: 300

      범위: 300-86400

      메모:
      • vSRX 방화벽이 위협 피드를 직접 수집하는 경우 SKY_APPLICATION_TOKEN 및 SKY_OPENAPI_BASE_PATH 매개 변수를 정의할 필요가 없습니다. 이러한 파라미터가 구성되지 않은 경우 피드는 AWS S3 버킷에 직접 업로드됩니다.

      • ATP 클라우드를 통해 위협 피드를 수집하는 경우 SKY_APPLICATION_TOKEN 및 SKY_OPENAPI_BASE_PATH 매개 변수를 정의해야 합니다. AWS Lambda에서 ATP 클라우드로 피드를 업로드하려면 이러한 파라미터를 구성해야 합니다. S3_BUCKET 매개 변수를 정의할 필요가 없습니다.

  10. 시간 제한 설정을 구성합니다. Lambda > 함수(Lambda Functions) > your_lambda_function_name > 기본 설정(Basic settings )으로 이동하고 제한 시간(Timeout )을 10초로 업데이트합니다.
  11. 저장을 클릭합니다.

CloudWatch 구성

규칙을 생성하고 이벤트 소스(GuardDuty) 및 이벤트 대상(Lambda 함수)을 지정합니다.

규칙을 만들려면:

  1. Events > Rules(규칙)를 선택합니다.

    규칙 페이지가 나타납니다.

  2. Create Rule(규칙 생성)을 클릭합니다.
  3. Event Source(이벤트 소스) 섹션에서 서비스 이름을 GuardDuty 로 선택하고 이벤트 유형을 GuardDuty Finding으로 선택합니다.
  4. [Targets] 섹션에서 [Add Targets ]를 클릭하고 [Lambda function]이 선택되어 있는지 확인합니다.

    GuardDuty 및 Lambda 함수를 이벤트 소스 및 대상으로 지정하면 CloudWatch Logs Insights에서 로그를 검색하고 분석할 수 있습니다.

  5. 세부 정보 구성을 클릭합니다.
  6. Rule Definition(규칙 정의) 페이지에서 규칙의 이름을 지정합니다.
  7. Create Rule(규칙 생성)을 클릭합니다.

vSRX 가상 방화벽과 AWS GuardDuty의 직접 통합 구성

다음 섹션에는 vSRX 가상 방화벽에 필요한 CLI 구성이 나열되어 있습니다.

이 예제에서는 프로필 이름, 프로필 규칙 및 위협 수준 점수를 구성합니다. 이러한 위협 수준 점수와 일치하는 모든 것은 멀웨어 또는 감염된 호스트로 간주됩니다. ATP 클라우드 위협 수준은 AWS GuardDuty의 심각도 수준과 일대일로 매핑됩니다.

메모:

AWS GuardDuty에서 언제든지 심각도 수준을 변경할 수 있지만, 심각도 수준은 항상 vSRX 가상 방화벽에서 구성한 위협 수준과 일치해야 합니다.

ATP 클라우드를 사용하지 않고 AWS GuardDuty를 사용하여 vSRX 가상 방화벽을 구성하려면:

  1. 콘솔 창을 열고 vSRX 가상 방화벽에 로그인합니다.

    login as: root@user-vsrx

    % cli

  2. 기존 SecIntel 세부 정보를 보려면 show configuration 명령을 실행합니다.

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

  3. 침입 탐지 및 방지(IDP) 보안 패키지가 vSRX 가상 방화벽에 다운로드되었는지 확인합니다. 주니퍼 보안 엔지니어링 포털에서 침입 탐지 및 방지(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. ATP 클라우드에 vSRX 가상 방화벽을 등록합니다. 주니퍼 ATP 클라우드 웹 포털을 사용하여 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.xml set 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 클라우드와 통합된 경우 ATP 클라우드 웹 포털에서 추가 구성이 필요하지 않습니다. SecIntel 구성을 포함한 모든 설정은 ATP 클라우드에 vSRX 가상 방화벽을 등록하는 동안 자동으로 생성됩니다.

AWS GuardDuty 사용 사례

이 예시에서는 위협 피드를 다운로드하도록 vSRX 가상 방화벽을 구성해 보겠습니다.

  1. vSRX 가상 방화벽에 로그인합니다.

    login as: root@user-vsrx

    % cli

  2. 기존 SecIntel 세부 정보를 보려면 show configuration 명령을 실행합니다.
    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 .