Cisco Stealthwatch 로그 수집
이 문서에서는 Bindplane을 사용하여 Cisco Secure Network Analytics (이전 Stealthwatch) 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 클라이언트/서버 IP 및 패킷 정보가 포함된 Cisco Stealthwatch 로그와 기기 ID 및 바이트 수가 포함된 Cisco Stealthwatch 로그 등 두 가지 형식을 처리합니다. 필드를 추출하고, 적절한 데이터 유형으로 변환하고, UDM에 매핑하고, 로그 콘텐츠와 형식을 기반으로 공급업체, 제품, 이벤트 유형과 같은 메타데이터 필드를 설정합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Windows 2016 이상 또는
systemd
가 설치된 Linux 호스트를 사용하고 있는지 확인합니다. - 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
- Cisco Stealthwatch에 대한 권한 액세스 권한이 있는지 확인합니다.
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: CISCO_STEALTHWATCH 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-agent
Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
Cisco Secure Network Analytics (이전 명칭: Stealthwatch) Syslog 구성
- 관리 콘솔 웹 UI에 로그인합니다.
- 구성 > 응답 관리로 이동합니다.
Syslog 형식 수정:
- 이름: syslog 형식의 이름을 입력합니다.
- 설명: 형식에 대한 설명을 제공합니다.
- 시설:
Local 0
로 설정 - 심각도:
Informational
로 설정합니다. - 메시지 필드에 다음 형식을 붙여넣습니다.
Lancope|StealthWatch|time|{time}|target_hostname|{target_hostname}|alarm_severity_id|{alarm_severity_id}|alarm_type_id|{alarm_type_id}|alarm_type_description|{alarm_type_description}|port|{port}|target_ip|{target_ip}|target_mac_address|{target_mac_address}|target_label|{target_label}|alarm_type_name|{alarm_type_name}|source_hostname|{source_hostname}|source_ip|{source_ip}|source_mac_address|{source_mac_address}|source_username|{source_username}|device_ip|{device_ip}|device_name|{device_name}|details|{details}|protocol|{protocol}|alarm_id|{alarm_id}|alarm_category_name|{alarm_category_name}|start_active_time|{start_active_time}| end_active_time|{end_active_time}
확인을 클릭합니다.
응답 관리 > 작업 > Syslog 메시지 추가로 이동합니다.
Syslog 전달자 구성:
- 이름: Google SecOps Bindplane 포워더의 이름을 입력합니다.
- 설명: Google SecOps Bindplane 포워더에 대한 설명을 입력합니다.
- IP 주소: Bindplane 에이전트 IP 주소를 입력합니다.
- 포트: Bindplane 에이전트 포트 번호를 입력합니다(예:
514
). - 형식: 3단계에서 만든 형식을 선택합니다.
확인을 클릭합니다.
Cisco Secure Network Analytics (이전 명칭: Stealthwatch)의 규칙 이름 구성
- 구성 > 응답 관리로 이동합니다.
- 규칙 > 추가 > SMC 시스템 알람을 선택합니다.
- 확인을 클릭합니다.
- 규칙 유형 대화상자에서 규칙을 선택합니다.
- 확인을 클릭합니다.
- 규칙 대화상자에서 다음을 수행합니다.
- 이름: 규칙의 이름을 입력합니다.
- 다음의 경우 이 규칙이 트리거됨: 각 목록에서 모두, 심각도, 정보를 선택합니다.
- 확인을 클릭합니다.
- 작업 > 추가를 선택합니다.
- 이전에 만든 작업을 선택합니다.
- 확인을 클릭한 다음 확인을 클릭합니다.
- 이전 단계를 반복하여 규칙 섹션에서 다음 세 가지 옵션의 이름을 바꿉니다.
- 지원되는 로그 수집 메커니즘 - Syslog
- 기본 로그 수집 메커니즘 - Syslog
- 이벤트 흐름 논리 다이어그램 - SMC 원격 Syslog 서버
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
Alarm_ID |
additional.fields[?key=='Alarm_ID'].value.string_value |
원시 로그의 Alarm_ID 값은 Alarm_ID 키 아래의 중첩된 additional.fields 구조 내에 배치됩니다. |
ClientBytes |
network.sent_bytes |
원시 로그의 ClientBytes 이 부호 없는 정수로 변환되고 매핑됩니다. |
ClientIP |
principal.ip |
ClientIP 이 원시 로그에서 매핑됩니다. |
ClientPort |
principal.port |
원시 로그의 ClientPort 이 정수로 변환되어 매핑됩니다. |
CPayload |
매핑되지 않음 | 이 필드는 최종 UDM에서 사용되지 않습니다. |
DestIPv4Address |
target.ip |
DestIPv4Address 이 원시 로그에서 매핑됩니다. |
DestPort |
target.port |
원시 로그의 DestPort 이 정수로 변환되어 매핑됩니다. |
details |
security_result.summary |
따옴표가 삭제된 원시 로그의 details 값이 매핑됩니다. |
FC |
intermediary.ip |
FC 이 원시 로그에서 매핑됩니다. |
host.country |
principal.location.country_or_region |
host.country 이 원시 로그에서 매핑됩니다. |
host.hostGroupNames |
about.group.group_display_name |
원시 로그의 host.hostGroupNames 배열에 있는 각 요소에는 host: 이 추가되고 별도의 about 객체로 매핑됩니다. |
host.ipAddress |
principal.ip |
host.ipAddress 이 원시 로그에서 매핑됩니다. |
hostBytes |
network.sent_bytes |
원시 로그의 hostBytes 이 부호 없는 정수로 변환되고 매핑됩니다. |
InPackets |
additional.fields[?key=='InPackets'].value.string_value |
원시 로그의 InPackets 값은 InPackets 키 아래의 중첩된 additional.fields 구조 내에 배치됩니다. |
inputSNMPIface |
additional.fields[?key=='inputSNMPIface'].value.string_value |
원시 로그의 inputSNMPIface 값은 inputSNMPIface 키 아래의 중첩된 additional.fields 구조 내에 배치됩니다. |
LastTime |
매핑되지 않음 | 이 필드는 경우에 따라 이벤트 타임스탬프에 대해 파싱되지만 UDM에 직접 매핑되지는 않습니다. |
MessageSourceAddress |
principal.ip |
MessageSourceAddress 이 원시 로그에서 매핑됩니다. |
method |
network.http.method |
method 이 원시 로그에서 매핑됩니다. |
outputSNMPIface |
additional.fields[?key=='outputSNMPIface'].value.string_value |
원시 로그의 outputSNMPIface 값은 outputSNMPIface 키 아래의 중첩된 additional.fields 구조 내에 배치됩니다. |
PAAppID |
매핑되지 않음 | 이 필드는 최종 UDM에서 사용되지 않습니다. |
peer.country |
target.location.country_or_region |
peer.country 이 원시 로그에서 매핑됩니다. |
peer.hostGroupNames |
about.group.group_display_name |
원시 로그의 peer.hostGroupNames 배열에 있는 각 요소에는 peer: 이 추가되고 별도의 about 객체로 매핑됩니다. |
peer.ipAddress |
target.ip |
peer.ipAddress 이 원시 로그에서 매핑됩니다. |
peerBytes |
network.received_bytes |
원시 로그의 peerBytes 이 부호 없는 정수로 변환되고 매핑됩니다. |
peerPackets |
매핑되지 않음 | 이 필드는 최종 UDM에서 사용되지 않습니다. |
Protocol |
매핑되지 않음 | 이 필드는 network.ip_protocol 를 결정하기 위해 파싱되지만 직접 매핑되지는 않습니다. |
ProtocolIdentifier |
매핑되지 않음 | 이 필드는 network.ip_protocol 를 파생하는 데 사용되지만 직접 매핑되지는 않습니다. |
reportName |
metadata.product_event_type |
reportName 이 원시 로그에서 매핑됩니다. |
ServerBytes |
network.received_bytes |
원시 로그의 ServerBytes 이 부호 없는 정수로 변환되고 매핑됩니다. |
ServerIP |
target.ip |
ServerIP 이 원시 로그에서 매핑됩니다. |
ServerPort |
target.port |
원시 로그의 ServerPort 이 정수로 변환되어 매핑됩니다. |
Service |
매핑되지 않음 | 이 필드는 최종 UDM에서 사용되지 않습니다. |
sid |
target.user.windows_sid |
sid 이 원시 로그에서 매핑됩니다. |
SourceModuleName |
target.resource.name |
SourceModuleName 이 원시 로그에서 매핑됩니다. |
SourceModuleType |
observer.application |
SourceModuleType 이 원시 로그에서 매핑됩니다. |
SourcePort |
principal.port |
원시 로그의 SourcePort 이 정수로 변환되어 매핑됩니다. |
sourceIPv4Address |
principal.ip |
sourceIPv4Address 이 원시 로그에서 매핑됩니다. |
SPayload |
매핑되지 않음 | 이 필드는 최종 UDM에서 사용되지 않습니다. |
src_ip |
principal.ip |
src_ip 이 원시 로그에서 매핑됩니다. |
StartTime |
매핑되지 않음 | 이 필드는 경우에 따라 이벤트 타임스탬프에 대해 파싱되지만 UDM에 직접 매핑되지는 않습니다. |
time |
매핑되지 않음 | 이 필드는 경우에 따라 이벤트 타임스탬프에 대해 파싱되지만 UDM에 직접 매핑되지는 않습니다. |
timestamp |
매핑되지 않음 | 이 필드는 이벤트 타임스탬프에 대해 파싱되지만 UDM에 직접 매핑되지는 않습니다. |
UserName |
principal.user.user_display_name |
UserName 이 원시 로그에서 매핑됩니다. |
Version |
metadata.product_version |
원시 로그의 Version 이 문자열로 변환되고 매핑됩니다. |
해당 사항 없음 | metadata.event_timestamp |
이벤트 타임스탬프는 로그 형식에 따라 다양한 필드 (LastTime , time , timestamp , StartTime )에서 파생되거나 다른 타임스탬프를 사용할 수 없는 경우 create_time 필드에서 파생됩니다. |
해당 사항 없음 | metadata.log_type |
항상 CISCO_STEALTHWATCH 로 설정합니다. |
해당 사항 없음 | metadata.vendor_name |
항상 Cisco 로 설정합니다. |
해당 사항 없음 | metadata.event_type |
로그 콘텐츠를 기반으로 파서 로직에 의해 결정됩니다. NETWORK_CONNECTION , USER_STATS , USER_UNCATEGORIZED , FILE_OPEN , FILE_DELETION , 또는 FILE_UNCATEGORIZED 일 수 있습니다. |
해당 사항 없음 | network.ip_protocol |
Protocol 또는 ProtocolIdentifier 필드를 기반으로 파서 로직에 의해 결정됩니다. TCP , UDP , ICMP 일 수 있습니다. |
action |
security_result.action_details |
원시 로그의 action 값이 매핑됩니다. |
action |
security_result.action |
action 필드에서 파생됩니다. action 이 SUCCESS 이면 이 필드는 ALLOW 로 설정되고, 그렇지 않으면 BLOCK 로 설정됩니다. |
category |
security_result.category_details |
원시 로그의 category 값이 매핑됩니다. |
description |
security_result.description |
description 와 file_type 이 원시 로그에 모두 있으면 연결되고 매핑됩니다. |
desc |
metadata.description |
따옴표가 삭제된 원시 로그의 desc 값이 매핑됩니다. |
failuer_reason |
security_result.summary |
failuer_reason 와 file_type 이 원시 로그에 모두 있으면 연결되고 매핑됩니다. |
file_path |
target.file.full_path |
file_path 이 원시 로그에서 매핑됩니다. |
file_type |
target.file.mime_type |
file_type 이 원시 로그에서 매핑됩니다. |
hostname |
principal.hostname |
hostname 이 원시 로그에서 매핑됩니다. |
ip |
principal.ip |
ip 이 원시 로그에서 매핑됩니다. |
ipf |
intermediary.ip |
ipf 이 원시 로그에서 매핑됩니다. |
ipt |
target.ip |
ipt 이 원시 로그에서 매핑됩니다. |
process_id |
target.process.pid |
process_id 이 원시 로그에서 매핑됩니다. |
protocol |
network.application_protocol |
protocol 이 원시 로그에서 매핑됩니다. |
security_res.severity |
security_result.severity |
severity 가 Minor 이면 이 필드는 INFORMATIONAL 로 설정되고 severity 가 Major 이면 ERROR 로 설정됩니다. |
session_id |
network.session_id |
session_id 이 원시 로그에서 매핑됩니다. |
severity |
매핑되지 않음 | 이 필드는 security_result.severity 를 파생하는 데 사용되지만 직접 매핑되지는 않습니다. |
Source_HG |
principal.location.country_or_region |
Source_HG 이 원시 로그에서 매핑됩니다. |
Source_HostSnapshot |
principal.url |
Source_HostSnapshot 이 원시 로그에서 매핑됩니다. |
Target_HostSnapshot |
target.url |
Target_HostSnapshot 이 원시 로그에서 매핑됩니다. |
user_name |
principal.user.userid |
user_name 이 원시 로그에서 매핑됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.