Kaspersky AV 로그 수집
이 문서에서는 Bindplane을 사용하여 Kaspersky Antivirus 로그를 Google Security Operations로 수집하는 방법을 설명합니다. 파서 코드는 먼저 원시 로그 메시지를 JSON으로 파싱하려고 시도합니다. 이 방법이 실패하면 정규 표현식 (grok 패턴)을 사용하여 일반적인 Kaspersky AV 로그 형식을 기반으로 메시지에서 필드를 추출합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows 2016 이상 또는 systemd가 있는 Linux 호스트
- 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있음
- Kaspersky Antivirus에 대한 액세스 권한 관리
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: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" 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: KASPERSKY_AV raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels인프라에 필요한 대로 포트와 IP 주소를 바꿉니다.
<customer_id>를 실제 고객 ID로 바꿉니다.Google SecOps 수집 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로
/path/to/ingestion-authentication-file.json를 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart bindplane-agentWindows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
Kaspersky AV에서 이벤트 내보내기 구성
- Kaspersky Security Center 콘솔에 로그인합니다.
- 이벤트를 내보낼 관리 서버를 선택합니다.
- 관리 서버 작업공간에서 이벤트 탭을 클릭합니다.
- 알림 및 이벤트 내보내기 구성 링크를 클릭합니다.
- 목록에서 SIEM 시스템으로 내보내기 구성을 선택합니다.
- 다음 구성 세부정보를 제공합니다.
- SIEM 시스템: Arcsight (CEF 형식)을 선택합니다.
- SIEM 시스템 서버 주소: Bindplane 에이전트 IP 주소를 입력합니다.
- SIEM 시스템 서버 포트: Bindplane 에이전트 포트 번호 (예: UDP의 경우
514)를 입력합니다. - 프로토콜: UDP를 선택합니다.
- 확인을 클릭합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
| 애플리케이션 | network.http.user_agent | 원시 로그의 Application 필드에서 직접 매핑됩니다. |
| 애플리케이션 경로 | target.process.file.full_path | Application path이 원시 로그에 있는 경우 Name 필드와 함께 사용하여 전체 경로를 구성합니다. |
| 구성요소 | target.resource.name | 원시 로그의 Component 필드에서 직접 매핑됩니다. |
| 콘텐츠 카테고리 | security_result.category_details | Content category이 원시 로그에 있는 경우 security_result.category_details 필드에 추가됩니다. |
| 콘텐츠 카테고리 소스 | target.resource.type | 값에 databases이 포함된 경우 UDM 필드가 DATABASE로 설정됩니다. |
| Erreur | security_result.summary | summary 필드가 비어 있는 경우 원시 로그의 Erreur 필드에서 직접 매핑됩니다. |
| et | metadata.product_event_type | product_event_type 필드가 비어 있는 경우 원시 로그의 et 필드에서 직접 매핑됩니다. |
| et | security_result.category_details | security_result.category_details 필드에 추가되었습니다. |
| etdn | extensions.vulns.vulnerabilities.description | 원시 로그의 etdn 필드에서 직접 매핑됩니다. |
| 파일 SHA256 해시 | target.process.file.sha256 | 원시 로그의 File SHA256 hash 필드에서 직접 매핑됩니다. |
| gn | security_result.about.labels | key는 GN로 설정되고 value는 gn 필드의 값으로 설정됩니다. |
| hdn | principal.hostname | 원시 로그의 hdn 필드에서 직접 매핑됩니다. |
| 엉덩이 | principal.ip | 원시 로그의 hip 필드에서 직접 매핑됩니다. |
| host_name | principal.hostname | 원시 로그의 host_name 필드에서 직접 매핑됩니다. |
| intermediary_host | intermediary.hostname | 원시 로그의 intermediary_host 필드에서 직접 매핑됩니다. |
| intermediary_hostname | intermediary.hostname | 원시 로그의 intermediary_hostname 필드에서 직접 매핑됩니다. |
| kv_data1 | 이 필드는 파싱되며 값이 다른 UDM 필드에 매핑됩니다. | |
| kv_data2 | 이 필드는 파싱되며 값이 다른 UDM 필드에 매핑됩니다. | |
| 라벨 | network.http.user_agent | 값이 User-Agent이면 UDM 필드가 description 필드의 값으로 채워집니다. |
| 라벨 | principal.hostname | 값이 Host인 경우 UDM 필드는 description 필드에서 추출된 호스트 이름으로 채워집니다. |
| 라벨 | security_result.description | 다른 값의 경우 UDM 필드는 label 및 description 필드가 포함된 문자열로 채워집니다. |
| MD5 | target.process.file.md5 | 소문자로 변환한 후 원시 로그의 MD5 필드에서 직접 매핑됩니다. |
| MD5 파일 해시 | target.process.file.md5 | 원시 로그의 MD5 file hash 필드에서 직접 매핑됩니다. |
| 메시지 | 이 필드는 파싱되며 값이 다른 UDM 필드에 매핑됩니다. | |
| method | network.http.method | HTTP 메서드 목록과 일치하는 경우 원시 로그의 method 필드에서 직접 매핑됩니다. |
| name | target.file.full_path | 원시 로그의 name 필드에서 직접 매핑됩니다. |
| 냠 | target.process.file.full_path | application_path 필드와 함께 사용하여 전체 경로를 구성합니다. |
| p1 | target.process.file.sha256 | SHA256 필드가 비어 있고 값이 16진수 문자열인 경우 원시 로그의 p1 필드에서 직접 매핑되며, 이 필드는 소문자로 변환됩니다. |
| p2 | target.process.file.full_path | 원시 로그의 p2 필드에서 직접 매핑됩니다. |
| p5 | security_result.rule_name | 원시 로그의 p5 필드에서 직접 매핑됩니다. |
| p7 | principal.user.user_display_name | User 및 user_name 필드가 비어 있는 경우 원시 로그의 p7 필드에서 직접 매핑됩니다. |
| 프로세스 ID | principal.process.pid | 원시 로그의 Process ID 필드에서 직접 매핑됩니다. |
| process_id | target.process.pid | 원시 로그의 process_id 필드에서 직접 매핑됩니다. |
| 프로토콜 | network.application_protocol | 값에 http이 포함되면 (대소문자 구분 안 함) UDM 필드가 HTTP로 설정됩니다. |
| 이유 | security_result.summary | 원시 로그의 Reason 필드에서 직접 매핑됩니다. |
| 요청된 웹페이지 | target.url | 원시 로그의 Requested web page 필드에서 직접 매핑됩니다. |
| 결과 | 값이 Allowed이면 sr_action 필드가 ALLOW로 설정됩니다. |
|
| rtid | security_result.about.labels | key는 rtid로 설정되고 value는 rtid 필드의 값으로 설정됩니다. |
| 규칙 | security_result.description | 원시 로그의 Rule 필드에서 직접 매핑됩니다. |
| SHA256 | target.process.file.sha256 | 소문자로 변환한 후 원시 로그의 SHA256 필드에서 직접 매핑됩니다. |
| sr_action | security_result.action | security_result.action 필드로 병합되었습니다. |
| 요약 | security_result.summary | 원시 로그의 summary 필드에서 직접 매핑됩니다. |
| task_name | security_result.about.labels | key는 TaskName로 설정되고 value는 task_name 필드의 값으로 설정됩니다. |
| threat_action_taken | 값이 blocked이면 security_action 필드가 BLOCK로 설정됩니다. 값이 allowed이면 security_action 필드가 ALLOW로 설정됩니다. |
|
| 타임스탬프 | metadata.event_timestamp | 이벤트 타임스탬프를 채우는 데 사용됩니다. |
| 유형 | security_result.threat_name | 원시 로그의 Type 필드에서 직접 매핑됩니다. |
| URL | network.http.referral_url | 원시 로그의 url 필드에서 직접 매핑됩니다. |
| 사용자 | principal.user.user_display_name | 사용자 이름은 이 필드에서 추출되어 UDM 필드에 매핑됩니다. |
| 사용자 | principal.administrative_domain | 도메인이 이 필드에서 추출되어 UDM 필드에 매핑됩니다. |
| user_name | principal.user.user_display_name | User 필드가 비어 있는 경우 원시 로그의 user_name 필드에서 직접 매핑됩니다. |
| metadata.event_type | Application path 및 Name이 있으면 SCAN_VULN_NETWORK로 설정하고, hdn 또는 host_name이 있으면 STATUS_UNCATEGORIZED로 설정하고, 그렇지 않으면 GENERIC_EVENT로 설정합니다. |
|
| metadata.vendor_name | 항상 KASPERSKY로 설정합니다. |
|
| metadata.product_name | 항상 KASPERSKY_AV로 설정합니다. |
|
| metadata.log_type | 항상 KASPERSKY_AV로 설정합니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.