Varonis 로그 수집
이 문서에서는 Bindplane 에이전트를 사용하여 Varonis 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
Varonis는 파일 액세스 이벤트, 권한 변경, 인증 활동, DatAlert 보안 알림에 대해 CEF 및 LEEF 형식의 syslog 메시지를 생성하는 데이터 보안 및 분석 플랫폼입니다. 파서는 CEF, LEEF, 키-값 형식 로그에서 필드를 추출하여 통합 데이터 모델 (UDM)에 매핑합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows Server 2016 이상 또는
systemd가 있는 Linux 호스트 - Bindplane 에이전트와 Varonis 서버 간의 네트워크 연결
- 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
- Varonis에 대한 액세스 권한 관리
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트 로 이동합니다.
- 수집 인증 파일 을 다운로드합니다.
Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필 로 이동합니다.
조직 세부정보 섹션에서 고객 ID 를 복사하여 저장합니다.
Bindplane 에이전트 설치
다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.
Windows 설치
- 관리자 권한으로 명령 프롬프트 또는 PowerShell 을 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sc query observiq-otel-collector서비스가 RUNNING 으로 표시됩니다.
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sudo systemctl status observiq-otel-collector서비스가 active (running) 으로 표시됩니다.
추가 설치 리소스
추가 설치 옵션 및 문제 해결은 Bindplane 에이전트 설치 가이드를 참조하세요.
syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일 찾기
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
구성 파일 수정
config.yaml의 전체 콘텐츠를 다음 구성으로 바꿉니다.receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/varonis: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VARONIS raw_log_field: body service: pipelines: logs/varonis_to_chronicle: receivers: - udplog exporters: - chronicle/varonis
구성 매개변수
다음 자리표시자를 바꿉니다.
수신 도구 구성:
listen_address: 리슨할 IP 주소 및 포트:- 모든 인터페이스에서 리슨하려면
0.0.0.0(권장) - 포트
514는 표준 syslog 포트입니다 (Linux에서 루트 필요, 비루트의 경우1514사용).
- 모든 인터페이스에서 리슨하려면
내보내기 구성:
creds_file_path: 수집 인증 파일의 전체 경로:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps 콘솔에서 복사한 고객 IDendpoint: 리전 엔드포인트 URL:- 미국:
malachiteingestion-pa.googleapis.com - 유럽:
europe-malachiteingestion-pa.googleapis.com - 아시아:
asia-southeast1-malachiteingestion-pa.googleapis.com - 전체 목록은 리전 엔드포인트를 참조하세요.
- 미국:
구성 파일 저장
- 수정 후 파일을 저장합니다.
- Linux:
Ctrl+O를 누른 다음Enter,Ctrl+X를 누릅니다. - Windows: 파일 > 저장을 클릭합니다.
- Linux:
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart observiq-otel-collector서비스가 실행 중인지 확인합니다.
sudo systemctl status observiq-otel-collector로그에서 오류를 확인합니다.
sudo journalctl -u observiq-otel-collector -f
Windows에서 Bindplane 에이전트를 다시 시작하려면 다음 옵션 중 하나를 선택합니다.
관리자 권한으로 명령 프롬프트 또는 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector서비스 콘솔:
Win+R을 누르고services.msc를 입력한 후 Enter 키를 누릅니다.- observIQ OpenTelemetry Collector 를 찾습니다.
- 마우스 오른쪽 버튼을 클릭하고 다시 시작 을 선택합니다.
서비스가 실행 중인지 확인합니다.
sc query observiq-otel-collector로그에서 오류를 확인합니다.
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Varonis에서 syslog 내보내기 구성
- Varonis 웹 UI에 로그인합니다.
- 도구 > DatAlert > DatAlert 선택으로 이동합니다.
- 구성 을 선택합니다.
- 다음 구성 세부정보를 제공합니다.
- Syslog 메시지 IP 주소: Bindplane 에이전트 IP 주소를 입력합니다.
- 포트: Bindplane 에이전트 포트 번호를 입력합니다 (예: UDP의 경우
514). - 시설 이름: 시설을 선택합니다.
- 적용 을 클릭합니다.
Varonis에서 syslog 형식 구성
- 도구 > DatAlert > 알림 템플릿으로 이동합니다.
- 알림 템플릿 수정 을 클릭하고 외부 시스템 기본 템플릿 을 선택합니다.
- 알림 메서드에 적용 목록에서 Syslog 메시지를 선택합니다.
- 메뉴에서 규칙 > 알림 메서드 를 선택합니다.
- Syslog 메시지 를 선택합니다.
- 확인 을 클릭합니다.
UDM 매핑 표
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
act |
security_result.summary |
CEF 메시지의 act 필드 값입니다. |
cn1 |
security_result.rule_id |
CEF 메시지의 cn1 필드 값입니다. |
cs1 |
network.email.to |
CEF 메시지의 cs1 필드 값입니다(특히 이메일 수신자). |
cs2 |
security_result.rule_name |
CEF 메시지의 cs2 필드 값입니다. |
device_version |
metadata.product_version |
CEF 메시지의 device_version 필드 값입니다. |
dhost |
principal.hostname |
CEF 메시지의 dhost 필드 값으로, 주 호스트 이름을 나타냅니다. file_server가 있고 'DirectoryServices'가 아닌 경우 이 값을 덮어씁니다. |
duser |
target.user.userid |
CEF 메시지의 duser 필드 값입니다. 백슬래시를 삭제하고 target.user.userid 및 target.administrative_domain으로 분할하기 위해 gsub 변환을 거칩니다. |
dvchost |
target.hostname |
CEF 메시지의 dvchost 필드 값입니다. |
filePath |
target.file.full_path |
CEF 메시지의 filePath 필드 값입니다. |
rt |
metadata.event_timestamp |
CEF 메시지의 rt 필드 값으로, 타임스탬프로 파싱됩니다. |
severity |
security_result.severity |
CEF 메시지 또는 LEEF 메시지의 severity 필드 값입니다. 대문자로 변환됩니다. 숫자 값 또는 키워드를 기반으로 UDM 심각도 값 (LOW, INFORMATIONAL, MEDIUM, HIGH, CRITICAL)에 매핑됩니다. |
Acting Object |
target.user.user_display_name |
키-값 데이터의 Acting Object 필드 값입니다. 표시 이름을 추출하기 위해 '\'로 분할됩니다. |
Acting Object SAM Account Name |
target.user.userid |
키-값 데이터의 Acting Object SAM Account Name 필드 값입니다. |
Device hostname |
target.hostname |
키-값 데이터의 Device hostname 필드 값입니다. |
Device IP address |
target.ip |
키-값 데이터의 Device IP address 필드 값입니다. |
Event Time |
metadata.event_timestamp |
키-값 데이터의 Event Time 필드 값으로, 타임스탬프로 파싱됩니다. |
Event Type |
target.application, metadata.event_type |
키-값 데이터의 Event Type 필드 값입니다. metadata.event_type (FILE_OPEN, USER_CHANGE_PERMISSIONS, USER_CHANGE_PASSWORD, USER_UNCATEGORIZED)을 파생하는 데 사용됩니다. |
File Server/Domain |
principal.hostname |
키-값 데이터의 File Server/Domain 필드 값입니다. 'DirectoryServices'가 아닌 경우 dhost에서 파생된 principal.hostname을 덮어씁니다. |
Path |
target.file.full_path |
키-값 데이터의 Path 필드 값입니다. |
Rule Description |
metadata.description |
키-값 데이터의 Rule Description 필드 값입니다. |
Rule ID |
security_result.rule_id |
키-값 데이터의 Rule ID 필드 값입니다. |
Rule Name |
security_result.rule_name |
키-값 데이터의 Rule Name 필드 값입니다. |
intermediary_host |
intermediary.hostname |
중간 호스트 이름을 나타내는 grok에서 추출한 값입니다. |
log_type |
metadata.log_type |
VARONIS로 하드코딩됩니다. |
metadata.event_type |
metadata.event_type |
evt_typ, act, filepath의 값을 기반으로 파생됩니다. event_type이 GENERIC_EVENT이고 principal_hostname이 있는 경우 기본값은 STATUS_UPDATE입니다. |
metadata.product_name |
metadata.product_name |
VARONIS로 하드코딩되지만 LEEF 메시지의 product_name 필드로 덮어쓸 수 있습니다. |
metadata.vendor_name |
metadata.vendor_name |
VARONIS로 하드코딩되지만 LEEF 메시지의 vendor 필드로 덮어쓸 수 있습니다. |
prin_host |
principal.hostname |
주 호스트 이름을 나타내는 grok에서 추출한 값입니다. |
product_name |
metadata.product_name |
LEEF 메시지의 값입니다. |
security_result.action |
security_result.action |
result 또는 Event Status 필드에서 파생됩니다. 결과가 Success이면 'ALLOW'로 설정하고, 그렇지 않으면 BLOCK으로 설정합니다. |
timestamp |
timestamp, metadata.event_timestamp |
이벤트 타임스탬프는 사용 가능 여부에 따라 다양한 필드 (datetime1, event_time, start_datetime, datetime2)에서 파생됩니다. 다른 타임스탬프 필드를 사용할 수 없는 경우 원시 로그의 create_time이 대체로 사용되며 timestamp와 metadata.event_timestamp 모두에 매핑됩니다. |
vendor |
metadata.vendor_name |
LEEF 메시지의 값입니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.