CrowdStrike Falcon Stream 로그 수집
이 문서에서는 Bindplane을 사용하여 CrowdStrike Falcon Stream 로그를 수집하는 방법을 설명합니다. 파서는 키-값 쌍을 추출하여 통합 데이터 모델 (UDM)에 매핑하고, 다양한 구분자를 처리하고, 심각도 및 이벤트 유형과 같은 추가 컨텍스트로 데이터를 보강합니다. 또한 사용자 로그인 및 보안 결과와 같은 특정 이벤트 유형 및 필드에 대해 특정 변환을 실행합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Windows 2016 이상 또는
systemd
를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다. - 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
- CrowdStrike Falcon 콘솔에 대한 액세스 권한이 있는지 확인합니다.
- Falcon Stream의 API 사용자 인증 정보 (클라이언트 ID 및 클라이언트 보안 비밀번호)를 가져옵니다.
Google SecOps 처리 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 처리 인증 파일을 다운로드합니다. Bindplane가 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
Windows 설치
- 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/Bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
추가 설치 리소스
- 추가 설치 옵션은 이 설치 가이드를 참고하세요.
Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일에 액세스합니다.
config.yaml
파일을 찾습니다. 일반적으로 Linux의/etc/Bindplane-agent/
디렉터리 또는 Windows의 설치 디렉터리에 있습니다.- 텍스트 편집기 (예:
nano
,vi
, 메모장)를 사용하여 파일을 엽니다.
다음과 같이
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로 바꿉니다./path/to/ingestion-authentication-file.json
를 Google SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart Bindplane-agent
Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindplaneAgent && net start BindplaneAgent
CrowdStrike API 키 구성 및 가져오기
- 권한이 있는 계정으로 CrowdStrike Falcon에 로그인합니다.
- 메뉴 > 지원으로 이동합니다.
- API 클라이언트 > KeysSelect를 클릭합니다.
- 새 API 클라이언트 추가를 클릭합니다.
- API 범위 섹션에서 이벤트 스트림을 선택한 다음 읽기 옵션을 사용 설정합니다.
- 추가를 클릭합니다.
- 클라이언트 ID, 클라이언트 보안 비밀번호, 기본 URL을 복사하여 저장합니다.
Falcon SIEM 커넥터 설치
- 운영체제용 RPM 설치 프로그램 패키지를 다운로드합니다.
패키지 설치:
CentOS 운영체제:
sudo rpm -Uvh <installer package>
Ubuntu 운영체제:
sudo dpkg -i <installer package>
기본 설치 디렉터리:
- Falcon SIEM 커넥터 -
/opt/crowdstrike/
- 서비스 -
/etc/init.d/cs.falconhoseclientd/
- Falcon SIEM 커넥터 -
이벤트를 Bindplane으로 전달하도록 SIEM 커넥터 구성
- SIEM 커넥터가 설치된 머신에
sudo
사용자로 로그인합니다. /opt/crowdstrike/etc/
디렉터리로 이동합니다.cs.falconhoseclient.leef.cfg
의 이름을cs.falconhoseclient.cfg
로 바꿉니다.- SIEM 커넥터는 기본적으로
cs.falconhoseclient.cfg
구성을 사용합니다.
- SIEM 커넥터는 기본적으로
cs.falconhoseclient.cfg
파일을 수정하고 다음 매개변수를 수정하거나 설정합니다.api_url:
- 이전 단계에서 복사한 CrowdStrike Falcon Base 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 에이전트의 포트입니다.
cs.falconhoseclient.cfg
파일을 저장합니다.SIEM 커넥터 서비스를 시작합니다.
CentOS 운영체제:
sudo service cs.falconhoseclientd start
Ubuntu 16.04 이상 운영체제:
sudo systemctl start cs.falconhoseclientd.service
선택사항: SIEM 커넥터 서비스를 중지합니다.
CentOS 운영체제:
sudo service cs.falconhoseclientd stop
Ubuntu 16.04 이상 운영체제:
sudo systemctl stop cs.falconhoseclientd.service
선택사항: 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 |
security_result.detection_fields 에서 cs2Label 의 키와 cs2 의 값으로 키-값 쌍으로 매핑됩니다. |
cs2Label |
security_result.detection_fields.key |
cs2 와 함께 security_result.detection_fields 의 키로 사용됩니다. |
cs3 |
security_result.detection_fields.value |
security_result.detection_fields 에서 cs3Label 의 키와 cs3 의 값으로 키-값 쌍으로 매핑됩니다. |
cs3Label |
security_result.detection_fields.key |
cs3 와 함께 security_result.detection_fields 의 키로 사용됩니다. |
cs4 |
security_result.about.url |
cs4Label 가 'falconHostLink'인 경우 cs4 값이 security_result.about.url 에 매핑됩니다. 그렇지 않으면 security_result.detection_fields 에서 cs4Label 의 키와 cs4 의 값으로 키-값 쌍으로 매핑됩니다. |
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 |
security_result.detection_fields 에서 'endpointName' 키로 키-값 쌍으로 매핑됩니다. |
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 |
security_result.detection_fields 에서 'identityProtectionIncidentId' 키를 사용하여 키-값 쌍으로 매핑됩니다. |
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 |
description 및 incidentDescription 가 비어 있으면 msg 필드의 값이 metadata.description 필드에 매핑됩니다. |
numbersOfAlerts |
security_result.detection_fields.value |
security_result.detection_fields 에서 'numbersOfAlerts' 키로 키-값 쌍으로 매핑됩니다. |
numberOfCompromisedEntities |
security_result.detection_fields.value |
security_result.detection_fields 에서 'numberOfCompromisedEntities' 키와 함께 키-값 쌍으로 매핑됩니다. |
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 |
security_result.detection_fields 에서 'state' 키를 사용하여 키-값 쌍으로 매핑됩니다. |
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 |
있는 경우 usrName 필드의 값은 eventType 에 따라 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'으로 설정합니다. |
변경사항
2025-01-10
개선사항:
- 'OperationBlocked'가 'true'인 경우 'security_result.action'이 'BLOCK'에 매핑되었습니다.
- 'OperationBlocked'가 'false'인 경우 'security_result.action'이 'ALLOW'에 매핑되었습니다.
- 'event_type'이 'IdentityProtectionEvent'인 경우 'event_data.IncidentDescription'이 'security_result.summary'에 매핑되었습니다.
- 'event_type'이 'IdentityProtectionEvent'인 경우 'event_data.SeverityName'이 'security_result.severity'에 매핑되었습니다.
2025-01-09
개선사항:
- 'event_data.Technique'가 'security_result.rule_name'에 매핑되었습니다.
- 'event_data.CommandLine'이 'target.process.command_line'에 매핑되었습니다.
- 'event_data.IOCType'이 'ipv4'인 경우 'event_data.IOCValue'가 'target.ip' 및 'target.asset.ip'에 매핑되었습니다.
- 'event_data.IOCType'이 'hash_sha256'인 경우 'event_data.IOCValue'가 'target.file.sha256'에 매핑되었습니다.
2024-12-12
개선사항:
- 'event.SeverityName'이 'security_result.severity'에 매핑되었습니다.
- 'event.Description'이 'security_result.summary'에 매핑되었습니다.
- 'event.PatternDispositionFlags.OperationBlocked'를 기반으로 'security_result.action'을 매핑했습니다.
2024-10-29
개선사항:
- 로그의 JSON 형식 지원을 추가했습니다.
- 'request'가 'network.http.referral_url'에 매핑되었습니다.
- 'networkDetectionType'이 'security_result.detection_fields'에 매핑되었습니다.
2022-07-18
개선사항:
- LEEF 형식 로그에 다음 매핑이 추가되었습니다.
- 'version' 필드가 'metadata.product_version'에 매핑되었습니다.
- 'usrName' 및 'userName' 필드는 이메일인 경우 'principal.user.email_addresses'에 매핑되고 그 밖의 경우에는 'principal.user.userid'에 매핑됩니다.
- 'severityName' 필드가 'security_result.severity'에 매핑되었습니다.
- 'cat' 필드가 'security_result.category_details'에 매핑되었습니다.
- 'incidentType' 필드가 'security_result.summary'에 매핑되었습니다.
- 'falconHostLink' 필드가 'security_result.about.url'에 매핑되었습니다.
- 'numberOfCompromisedEntities' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'identityProtectionIncidentId' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'numbersOfAlerts' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'state' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- CEF 형식 로그에 다음 매핑을 추가했습니다.
- 'version' 필드가 'metadata.product_version'에 매핑되었습니다.
- 'deviceCustomDate1' 필드가 'metadata.event_type'에 매핑되었습니다.
- 'msg' 필드가 'metadata.description'에 매핑되었습니다.
- 'cs1Label'의 값이 'incidentType'인 경우 'cs1' 필드가 'security_result.summary'에 매핑되고, 그렇지 않은 경우에는 'security_result.detection_fields[n]'에 매핑됩니다.
- 'cs2' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'cs3' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'cs4Label'의 값이 'falconHostLink'인 경우 'cs1' 필드가 'security_result.about.url'에 매핑되고 그 밖의 경우에는 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'cn1' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'cn2' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'cn3' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
- 'duser' 필드는 이메일인 경우 'principal.user.email_addresses'에 매핑되고 그 밖의 경우에는 'principal.user.userid'에 매핑됩니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.