CrowdStrike Falcon Stream 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 CrowdStrike Falcon Stream 로그를 수집하는 방법을 설명합니다. 파서는 키-값 쌍을 추출하여 통합 데이터 모델 (UDM)에 매핑하고, 다양한 구분자를 처리하며, 심각도 및 이벤트 유형과 같은 추가 컨텍스트로 데이터를 보강합니다. 또한 사용자 로그인 및 보안 결과와 같은 특정 이벤트 유형 및 필드에 대해 특정 변환을 실행합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd가 설치된 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • CrowdStrike Falcon 콘솔에 대한 권한 액세스 권한이 있는지 확인합니다.
  • Falcon Stream의 API 사용자 인증 정보 (클라이언트 ID 및 클라이언트 보안 비밀번호)를 가져옵니다.

Google SecOps 수집 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.

Bindplane 에이전트 설치

Windows 설치

  1. 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
  2. 다음 명령어를 실행합니다.

    msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 설치

  1. 루트 또는 sudo 권한으로 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/Bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

추가 설치 리소스

Syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성

  1. 구성 파일에 액세스합니다.

    • config.yaml 파일을 찾습니다. 일반적으로 Linux에서는 /etc/Bindplane-agent/ 디렉터리에 있고 Windows에서는 설치 디렉터리에 있습니다.
    • 텍스트 편집기 (예: nano, vi, 메모장)를 사용하여 파일을 엽니다.
  2. 다음과 같이 config.yaml 파일을 수정합니다.

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: SYSLOG
                namespace: cs_stream
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    
  • 인프라에 필요한 대로 포트와 IP 주소를 바꿉니다.
  • <customer_id>를 실제 고객 ID로 바꿉니다.
  • Google SecOps 수집 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 /path/to/ingestion-authentication-file.json를 업데이트합니다.

변경사항을 적용하려면 Bindplane 에이전트를 다시 시작하세요.

  • Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.

    sudo systemctl restart Bindplane-agent
    
  • Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.

    net stop BindplaneAgent && net start BindplaneAgent
    

CrowdStrike API 키 구성 및 가져오기

  1. 권한이 있는 계정으로 CrowdStrike Falcon에 로그인합니다.
  2. 메뉴 > 지원으로 이동합니다.
  3. API 클라이언트> 키 선택을 클릭합니다.
  4. 새 API 클라이언트 추가를 클릭합니다.
  5. API 범위 섹션에서 이벤트 스트림을 선택한 다음 읽기 옵션을 사용 설정합니다.
  6. 추가를 클릭합니다.
  7. 클라이언트 ID, 클라이언트 보안 비밀번호, 기본 URL을 복사하여 저장합니다.

Falcon SIEM 커넥터 설치

  1. 운영체제에 맞는 RPM 설치 프로그램 패키지를 다운로드합니다.
  2. 패키지 설치:

    • CentOS 운영체제:

      sudo rpm -Uvh <installer package>
      
    • Ubuntu 운영체제:

      sudo dpkg -i <installer package>
      
  3. 기본 설치 디렉터리:

    • Falcon SIEM 커넥터 - /opt/crowdstrike/
    • 서비스 - /etc/init.d/cs.falconhoseclientd/

이벤트를 Bindplane으로 전달하도록 SIEM 커넥터 구성

  1. SIEM 커넥터가 설치된 머신에 sudo 사용자로 로그인합니다.
  2. /opt/crowdstrike/etc/ 디렉터리로 이동합니다.
  3. cs.falconhoseclient.leef.cfgcs.falconhoseclient.cfg으로 바꿉니다.
    • SIEM 커넥터는 기본적으로 cs.falconhoseclient.cfg 구성을 사용합니다.
  4. cs.falconhoseclient.cfg 파일을 수정하고 다음 매개변수를 수정하거나 설정합니다.
    • api_url: - 이전 단계에서 복사한 CrowdStrike Falcon 기본 URL입니다.
    • app_id: - Falcon Streaming API에 연결하기 위한 식별자로 모든 문자열입니다. 예를 들어 app_id: SECOPS-LEEF로 설정합니다.
    • client_id: - 이전 단계에서 복사한 client_id 값입니다.
    • client_secret: - 이전 단계에서 복사한 client_secret 값입니다.
    • send_to_syslog_server: true - Syslog 서버로 푸시를 사용 설정합니다.
    • host: - Bindplane 에이전트의 IP 또는 호스트 이름입니다.
    • port: - Bindplane 에이전트의 포트입니다.
  5. cs.falconhoseclient.cfg 파일을 저장합니다.
  6. SIEM 커넥터 서비스를 시작합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd start
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl start cs.falconhoseclientd.service
      
  7. 선택사항: SIEM 커넥터 서비스를 중지합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd stop
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl stop cs.falconhoseclientd.service
      
  8. 선택사항: SIEM 커넥터 서비스를 다시 시작합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd restart
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl restart cs.falconhoseclientd.service
      

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
cat security_result.category_details cat 필드의 값이 security_result.category_details 필드에 직접 매핑됩니다.
commandLine target.process.command_line commandLine 필드의 값이 target.process.command_line 필드에 직접 매핑됩니다.
cs1 security_result.summary cs1Label이 'incidentType'인 경우 cs1 값이 security_result.summary에 매핑됩니다. 그렇지 않으면 cs1Label의 키와 cs1의 값으로 security_result.detection_fields에 키-값 쌍으로 매핑됩니다.
cs1Label security_result.detection_fields.key cs1이 인시던트 유형이 아닌 경우 security_result.detection_fields에서 키로 사용됩니다.
cs2 security_result.detection_fields.value cs2Label의 키와 cs2의 값으로 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
cs2Label security_result.detection_fields.key cs2와 함께 security_result.detection_fields의 키로 사용됩니다.
cs3 security_result.detection_fields.value cs3Label의 키와 cs3의 값으로 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
cs3Label security_result.detection_fields.key cs3와 함께 security_result.detection_fields의 키로 사용됩니다.
cs4 security_result.about.url cs4Label이 'falconHostLink'인 경우 cs4 값이 security_result.about.url에 매핑됩니다. 그렇지 않으면 cs4Label의 키와 cs4의 값으로 security_result.detection_fields에 키-값 쌍으로 매핑됩니다.
cs4Label security_result.detection_fields.key cs4이 falconHostLink가 아닌 경우 security_result.detection_fields에서 키로 사용됩니다.
description metadata.description description 필드의 값이 metadata.description 필드에 직접 매핑됩니다. 비어 있으면 incidentDescription 또는 msg 또는 serviceName가 대신 사용됩니다.
devTime metadata.event_timestamp devTime 필드의 값이 파싱되어 metadata.event_timestamp 필드에 매핑됩니다.
deviceCustomDate1 metadata.event_timestamp devTime이 없으면 deviceCustomDate1 필드의 값이 파싱되어 metadata.event_timestamp 필드에 매핑됩니다.
domain principal.administrative_domain 정규 표현식을 사용하여 userName 필드에서 추출하고 principal.administrative_domain에 매핑했습니다.
duser principal.user.userid 값이 있으면 duser 값이 usrName 필드를 덮어쓰고 사용자 필드를 채우는 데 사용됩니다.
endpointName security_result.detection_fields.value 키가 'endpointName'인 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
eventType metadata.product_event_type eventType 필드의 값이 metadata.product_event_type 필드에 직접 매핑됩니다.
falconHostLink security_result.about.url falconHostLink 필드의 값이 security_result.about.url 필드에 직접 매핑됩니다.
filePath target.process.file.full_path filePath 필드의 값이 target.process.file.full_path 필드에 직접 매핑됩니다.
identityProtectionIncidentId security_result.detection_fields.value 키가 'identityProtectionIncidentId'인 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
incidentDescription metadata.description description가 비어 있으면 incidentDescription 필드의 값이 metadata.description 필드에 매핑됩니다.
incidentType security_result.summary incidentType 필드의 값이 security_result.summary 필드에 직접 매핑됩니다.
log_type metadata.log_type log_type 필드의 값이 metadata.log_type 필드에 직접 매핑됩니다.
msg metadata.description descriptionincidentDescription이 비어 있으면 msg 필드의 값이 metadata.description 필드에 매핑됩니다.
numbersOfAlerts security_result.detection_fields.value 키가 'numbersOfAlerts'인 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
numberOfCompromisedEntities security_result.detection_fields.value 키가 'numberOfCompromisedEntities'인 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
product metadata.product_name product 필드의 값이 metadata.product_name 필드에 직접 매핑됩니다.
resource target.resource.name resource 필드의 값이 target.resource.name 필드에 직접 매핑됩니다.
serviceName target.application serviceName 필드의 값이 target.application 필드에 직접 매핑됩니다. metadata.description의 대체로도 사용됩니다.
severityName security_result.severity severityName 필드의 값은 대문자로 변환된 후 security_result.severity 필드에 매핑됩니다. 매핑 로직에는 심각도 이름별로 다른 변환이 포함됩니다.
sha256 target.file.sha256 sha256 필드의 값이 target.file.sha256 필드에 직접 매핑됩니다.
src principal.ip src 필드의 값이 principal.ip 필드에 직접 매핑됩니다.
srcMAC principal.mac srcMAC 필드의 값은 하이픈을 콜론으로 바꾼 후 principal.mac 필드에 직접 매핑됩니다.
state security_result.detection_fields.value 키가 'state'인 security_result.detection_fields의 키-값 쌍으로 매핑됩니다.
success security_result.action success가 'true'이면 security_result.action이 'ALLOW'로 설정됩니다. success가 'false'인 경우 security_result.action이 'BLOCK'으로 설정됩니다.
userName principal.user.userid usrName이 없으면 userName 필드의 값이 사용자 필드를 채우는 데 사용됩니다. 도메인이 있는 경우 추출됩니다.
usrName principal.user.userid/target.user.userid eventType에 따라 usrName 필드의 값이 principal.user.userid 또는 target.user.userid에 매핑됩니다. 이메일 주소인 경우 해당 email_addresses 필드에도 추가됩니다.
vendor metadata.vendor_name vendor 필드의 값이 metadata.vendor_name 필드에 직접 매핑됩니다.
version metadata.product_version version 필드의 값이 metadata.product_version 필드에 직접 매핑됩니다.
(파서 로직) extensions.auth.mechanism eventType이 'saml2Assert' 또는 'twoFactorAuthenticate'인 경우 'USERNAME_PASSWORD'로 설정합니다.
(파서 로직) extensions.auth.type eventType이 'assert' 또는 'userAuthenticate'인 경우 'AUTHTYPE_UNSPECIFIED'로 설정합니다.
(파서 로직) metadata.event_timestamp 원시 로그의 collection_time 또는 timestamp 필드의 타임스탬프가 이벤트 타임스탬프로 사용됩니다.
(파서 로직) metadata.event_type eventType 및 기타 필드를 기반으로 결정됩니다. 기본값은 'GENERIC_EVENT'이며 'USER_LOGIN', 'GROUP_MODIFICATION', 'GROUP_DELETION', 'SERVICE_STOP', 'SERVICE_START' 또는 'USER_UNCATEGORIZED'로 변경할 수 있습니다.
(파서 로직) target.resource.type eventType이 'remove_group', 'update_group' 또는 'delete_group'인 경우 'GROUP'으로 설정됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.