Imperva SecureSphere Management 로그 수집
이 문서에서는 Bindplane을 사용하여 Imperva SecureSphere Management 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 CEF 또는 JSON 형식으로 로그에서 필드를 추출합니다. 그로크 패턴과 키-값 파싱을 사용하여 원시 로그 필드를 UDM에 매핑하고, 표준 CEF 필드와 맞춤 JSON 구조를 모두 처리하며, JSON 데이터를 사용할 수 있는 경우 JSON 데이터에 우선순위를 부여합니다. Imperva SecureSphere는 온프레미스 및 클라우드 배포를 위한 포괄적인 웹 애플리케이션 방화벽, 데이터베이스 보안, 파일 보안 기능을 제공합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows 2016 이상 또는
systemd
가 설치된 Linux 호스트 - 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
- Imperva SecureSphere Management 콘솔에 대한 권한 액세스
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_file_path: '/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 log_type: 'IMPERVA_SECURESPHERE' raw_log_field: body ingestion_labels: 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
Imperva SecureSphere Management에서 Syslog 전달 구성
- Imperva SecureSphere 관리 콘솔에 로그인합니다.
- 구성 > 작업 세트로 이동합니다.
- 추가를 클릭하여 새 작업 세트를 만듭니다.
- 다음 구성 세부정보를 제공합니다.
- 이름: 설명이 포함된 이름을 입력합니다 (예:
Google SecOps Syslog
).
- 이름: 설명이 포함된 이름을 입력합니다 (예:
보안 이벤트 작업 구성
- 작업 추가를 클릭하고 다음을 구성합니다.
- 작업 유형: Syslog를 선택합니다.
- 호스트: Bindplane 에이전트 IP 주소를 입력합니다.
- 포트: Bindplane 에이전트 포트 번호 (기본값
514
)를 입력합니다. - 프로토콜: UDP 또는 TCP를 선택합니다.
- Syslog 로그 수준: DEBUG를 선택합니다.
- Syslog Facility(Syslog 기능): LOCAL0을 선택합니다.
- 메시지 형식: CEF 표준을 사용하는 게이트웨이 로그 - 보안 이벤트 - 시스템 로그 (syslog)를 선택합니다.
시스템 이벤트 작업 구성
- 작업 추가를 클릭하고 다음을 구성합니다.
- 작업 유형: 시스템 로그를 선택합니다.
- 호스트: BindPlane 에이전트 IP 주소를 입력합니다.
- 포트: BindPlane 에이전트 포트 번호를 입력합니다.
- 프로토콜: UDP 또는 TCP를 선택합니다.
- 메시지 형식: CEF 표준을 사용하여 시스템 로그 (syslog)에 시스템 이벤트 로깅을 선택합니다.
정책에 작업 집합 적용
- 정책 > 보안 정책으로 이동합니다.
- 관련 정책마다 후속 작업을 구성하여 작업 세트를 사용합니다.
- 정책 > 시스템 이벤트 정책으로 이동합니다.
- 포괄적인 모니터링을 위해 작업 세트를 사용하도록 시스템 이벤트 정책을 구성합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
action |
security_result.action_details |
action 필드의 값이 security_result.action_details 필드에 할당됩니다. |
application-name |
target.application |
application-name 필드의 값이 target.application 필드에 할당됩니다. |
cat |
security_result.category_details |
cat 필드의 값이 security_result.category_details 필드에 할당됩니다. |
class |
security_result.detection_fields.value |
class 필드의 값이 security_result.detection_fields 내의 value 필드에 할당됩니다. 이에 해당하는 key 은 'class'입니다. |
collection_time.seconds |
metadata.event_timestamp.seconds |
원시 로그의 collection_time.seconds 값이 metadata.event_timestamp 의 초 값으로 사용됩니다. |
create-time |
metadata.event_timestamp.seconds |
create-time 값이 파싱되고 초 값이 metadata.event_timestamp 의 초 값으로 사용됩니다. |
cs1 |
security_result.rule_name |
cs1 필드의 값이 security_result.rule_name 필드에 할당됩니다. |
cs10 |
target.resource.attribute.labels.value |
cs10 필드의 값이 target.resource.attribute.labels 내의 value 필드에 할당됩니다. |
cs10Label |
target.resource.attribute.labels.key |
cs10Label 필드의 값이 target.resource.attribute.labels 내의 key 필드에 할당됩니다. |
cs11 |
principal.application |
cs11 필드의 값이 principal.application 필드에 할당됩니다. |
cs12 |
security_result.description |
중괄호와 달러 기호를 삭제한 후의 cs12 필드 값이 security_result.description 필드에 할당됩니다. |
cs14 |
target.resource.attribute.labels.value |
cs14 필드의 값이 target.resource.attribute.labels 내의 value 필드에 할당됩니다. |
cs14Label |
target.resource.attribute.labels.key |
cs14Label 필드의 값이 target.resource.attribute.labels 내의 key 필드에 할당됩니다. |
cs15 |
security_result.summary |
cs15 필드의 값이 security_result.summary 필드에 할당됩니다. |
cs16 |
principal.process.command_line |
cs16 필드의 값이 principal.process.command_line 필드에 할당됩니다. |
cs17 |
target.resource.resource_subtype |
cs17 필드의 값이 target.resource.resource_subtype 필드에 할당됩니다. |
cs2 |
principal.group.group_display_name |
cs2 필드의 값이 principal.group.group_display_name 필드에 할당됩니다. |
cs3 |
principal.hostname , principal.asset.hostname |
cs3 필드의 값이 principal.hostname 및 principal.asset.hostname 필드에 모두 할당됩니다. |
cs4 |
target.application |
값이 'ProcessWitness'가 아닌 경우 cs4 필드의 값이 target.application 필드에 할당됩니다. |
cs5 |
metadata.description |
cs5 필드의 값이 metadata.description 필드에 할당됩니다. |
cs6 |
target.resource_ancestors.name |
cs6 필드의 값이 target.resource_ancestors.name 필드에 할당됩니다. |
cs7 |
target.resource_ancestors.resource_subtype |
cs7 필드의 값이 target.resource_ancestors.resource_subtype 필드에 할당됩니다. |
cs8 |
target.resource.name , target.resource.resource_type |
cs8 필드의 값이 target.resource.name 필드에 할당되고 target.resource.resource_type 는 'DATABASE'로 설정됩니다. |
cs9 |
principal.user.userid |
cs9 필드의 값이 principal.user.userid 필드에 할당됩니다. |
description |
security_result.description |
description 필드의 값이 security_result.description 필드에 할당됩니다. |
dest-ip |
target.ip , target.asset.ip |
dest-ip 필드에서 추출된 IP 주소는 target.ip 및 target.asset.ip 필드에 모두 할당됩니다. |
dest-port |
target.port |
정수로 변환된 dest-port 필드의 값이 target.port 필드에 할당됩니다. |
deviceExternalId |
intermediary.hostname |
deviceExternalId 필드의 값이 intermediary.hostname 필드에 할당됩니다. |
dpt |
target.port |
정수로 변환된 dpt 필드의 값이 target.port 필드에 할당됩니다. |
dst |
target.ip , target.asset.ip |
dst 필드의 값이 target.ip 및 target.asset.ip 필드에 모두 할당됩니다. |
duser |
target.user.userid |
duser 필드의 값이 target.user.userid 필드에 할당됩니다. |
eventId |
metadata.product_log_id |
eventId 필드의 값이 metadata.product_log_id 필드에 할당됩니다. |
gateway-name |
security_result.detection_fields.value |
gateway-name 필드의 값이 security_result.detection_fields 내의 value 필드에 할당됩니다. 해당 key 은 'gateway-name'입니다. |
http.request.method |
network.http.method |
http.request.method 필드의 값이 network.http.method 필드에 할당됩니다. |
http.request.user-agent |
network.http.user_agent |
http.request.user_agent 필드의 값이 network.http.user_agent 필드에 할당됩니다. |
http.response.code |
network.http.response_code |
정수로 변환된 http.response.code 필드의 값이 network.http.response_code 필드에 할당됩니다. |
http.session-id |
network.session_id |
http.session-id 필드의 값이 network.session_id 필드에 할당됩니다. |
http.user-name |
principal.user.userid |
http.user-name 필드의 값(따옴표 제외)이 principal.user.userid 필드에 할당됩니다. |
log_type |
metadata.log_type |
원시 로그의 log_type 필드 값이 metadata.log_type 필드에 할당됩니다. |
mx-ip |
intermediary.ip |
mx-ip 필드의 값이 intermediary.ip 필드에 할당됩니다. |
MxIP |
intermediary.ip |
MxIP 필드의 값이 intermediary.ip 필드에 할당됩니다. |
OSUser |
principal.user.userid |
OSUser 필드의 값이 principal.user.userid 필드에 할당됩니다. |
policy-name |
security_result.detection_fields.value |
policy-name 필드의 값이 security_result.detection_fields 내의 value 필드에 할당됩니다. 해당 key 은 'policy-name'입니다. |
pquery |
target.resource.name , target.process.command_line |
pquery 가 비어 있지 않고 'from'이라는 단어가 포함되어 있으면 테이블 이름이 추출되어 target.resource.name 에 할당되고, target.resource.resource_type 는 'TABLE'로 설정되며, 전체 pquery 값이 target.process.command_line 에 할당됩니다. 그렇지 않으면 전체 pquery 값이 target.resource.name 에 할당됩니다. |
pro |
security_result.description |
pro 필드의 값이 security_result.description 필드에 할당됩니다. |
product |
metadata.product_name |
product 필드의 값이 metadata.product_name 필드에 할당됩니다. |
product_type |
metadata.product_event_type |
product_type 필드의 값이 metadata.product_event_type 필드에 할당됩니다. |
protocol |
network.ip_protocol |
protocol 필드 값이 'TCP' 또는 'UDP'인 경우 network.ip_protocol 필드에 할당됩니다. |
proto |
network.ip_protocol |
proto 필드의 값이 network.ip_protocol 필드에 할당됩니다. |
reason |
security_result.rule_name |
reason 필드의 값이 security_result.rule_name 필드에 할당됩니다. |
rt |
metadata.event_timestamp.seconds |
rt 값이 파싱되고 초 값이 metadata.event_timestamp 의 초 값으로 사용됩니다. |
server-group-name |
target.resource.attribute.labels.value |
server-group-name 필드의 값이 target.resource.attribute.labels 내의 value 필드에 할당됩니다. 해당 key 은 'server-group-name'입니다. |
server-group-simulation-mode |
target.resource.attribute.labels.value |
server-group-simulation-mode 필드의 값이 target.resource.attribute.labels 내의 value 필드에 할당됩니다. 상응하는 key 는 'server-group-simulation-mode'입니다. |
service-name |
target.resource.attribute.labels.value |
service-name 필드의 값이 target.resource.attribute.labels 내의 value 필드에 할당됩니다. 해당 key 은 'service-name'입니다. |
ServiceName |
target.application |
ApplicationName 이 비어 있지 않고 ServiceName 이 비어 있으면 ApplicationName 값이 ServiceName 에 할당됩니다. 그런 다음 ServiceName 값이 target.application 에 할당됩니다. |
severity |
security_result.severity , security_result.severity_details |
severity 필드의 값이 대문자로 변환됩니다. 'LOW', 'MEDIUM', 'HIGH', 'CRITICAL' 중 하나인 경우 security_result.severity 에 할당됩니다. 'INFORMATIVE' 또는 'INFO'인 경우 security_result.severity 가 'INFORMATIONAL'로 설정됩니다. 원래 값도 security_result.severity_details 에 할당됩니다. |
severity_data |
security_result.severity |
severity_data 필드의 값이 대문자로 변환됩니다. 'HIGH', 'LOW', 'MEDIUM', 'CRITICAL', 'ERROR', 'INFORMATIONAL' 중 하나인 경우 security_result.severity 에 할당됩니다. |
source-ip |
principal.ip , principal.asset.ip |
source-ip 필드의 값이 principal.ip 및 principal.asset.ip 필드에 모두 할당됩니다. |
source-port |
principal.port |
정수로 변환된 source-port 필드의 값이 principal.port 필드에 할당됩니다. |
spt |
principal.port |
정수로 변환된 spt 필드의 값이 principal.port 필드에 할당됩니다. |
src |
principal.ip , principal.asset.ip |
src 필드의 값이 principal.ip 및 principal.asset.ip 필드에 모두 할당됩니다. |
srcapp |
principal.application |
srcapp 필드의 값이 principal.application 필드에 할당됩니다. |
srchost |
principal.hostname , principal.asset.hostname |
srchost 필드의 값이 principal.hostname 및 principal.asset.hostname 필드에 모두 할당됩니다. |
vendor |
metadata.vendor_name |
vendor 필드의 값이 metadata.vendor_name 필드에 할당됩니다. |
version |
metadata.product_version |
version 필드의 값이 metadata.product_version 필드에 할당됩니다. |
violation-id |
security_result.detection_fields.value |
violation-id 필드의 값이 security_result.detection_fields 내의 value 필드에 할당됩니다. 해당 key 은 'violation-id'입니다. |
violation-type |
security_result.detection_fields.value |
violation-type 필드의 값이 security_result.detection_fields 내의 value 필드에 할당됩니다. 해당 key 은 '위반 유형'입니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.