Pulse Secure 로그 수집
이 문서에서는 Google Security Operations 전달자를 사용하여 Pulse Secure 로그를 수집하는 방법을 설명합니다.
자세한 내용은 Google Security Operations에 데이터 수집 개요를 참조하세요.
수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 PULSE_SECURE_VPN
수집 라벨이 있는 파서에 적용됩니다.
Pulse Secure VPN 구성
Pulse Secure VPN을 구성하려면 다음 중 하나를 수행하세요.
- Pulse Secure VPN 버전 8.3R3 이하 구성
- Pulse Secure VPN 버전 8.3R4 이상 구성
Pulse Secure VPN 버전 8.3R3 이하 구성
- Pulse Connect Secure 콘솔에 로그인합니다.
- Pulse Connect Secure 콘솔에서 System > Log/monitoring > Settings를 선택합니다. 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭에서 설정을 선택할 수 있습니다.
- 로깅할 이벤트 선택 섹션에서 이벤트에 해당하는 체크박스를 모두 선택합니다.
- Syslog 서버 섹션에서 다음을 수행합니다.
- 서버 이름/IP 필드에 Google Security Operations 포워더 IP 주소를 지정합니다.
- 기능 목록에서 LOCAL0을 선택합니다. 기능 목록에는
LOCAL0
~LOCAL7
의 8가지 기능이 제공됩니다. 이러한 설정 중 하나를 사용하여 syslog 서버의 기능을 매핑할 수 있습니다. - 유형 목록에서 UDP 또는 TCP를 선택합니다.
- 추가를 클릭합니다.
- 선택사항: 이벤트, 관리 액세스 또는 사용자 액세스 로그에 대해 여러 syslog 서버를 추가하려면 2~4단계를 반복합니다.
- 변경사항 저장을 클릭합니다.
- 표준 로그 형식이 기본값으로 설정되어 있는지 확인하려면 다음 단계를 따르세요.
- Pulse connect secure 콘솔을 엽니다.
- 이벤트 탭, 사용자 액세스 탭, 관리자 액세스 탭에서 필터를 표준으로 설정합니다.
- 표준 필터가 기본 필터로 정의되지 않은 경우 기본값으로 설정을 클릭합니다.
- 저장을 클릭합니다.
Pulse Secure VPN 버전 8.3R4 이상 구성
- Pulse connect secure 콘솔에서 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭을 클릭한 다음 필터를 새 필터로 설정합니다.
- 필터 이름 필드에 필터 이름을 입력합니다.
내보내기 형식 섹션에서 맞춤을 선택하고 필드에 다음 형식을 입력합니다.
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
저장을 클릭합니다.
syslog 구성을 사용 설정할 기기 버전에 따라 다음 중 하나를 실행합니다.
- Pulse Secure VPN에서 syslog 로깅 사용 설정
- Ivanti Connect Secure에서 syslog 로깅 사용 설정
Pulse Secure VPN에서 syslog 로깅 사용 설정
- Pulse connect secure 콘솔에서 System > Log/monitoring > Settings를 선택합니다. 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭에서 설정을 선택할 수 있습니다.
- 로깅할 이벤트 선택 섹션에서 HTML5 액세스, 입장 관리 메시지, 인증되지 않은 요청 체크박스를 제외한 모든 체크박스를 선택합니다.
- 시스템로그 서버 필드에 시스템로그 서버에 관한 정보를 입력합니다.
- Syslog 서버 섹션에서 다음을 수행합니다.
- 서버 이름/IP 필드에 서버 이름 또는 Google Security Operations 포워더 IP 주소를 입력합니다.
- 기능 목록에서 LOCAL0을 선택합니다.
- 필터 목록에서 이전에 만든 필터를 선택합니다.
- 추가를 클릭합니다.
- 선택사항: 이벤트, 관리자 액세스 또는 사용자 액세스 로그에 대해 여러 syslog 서버를 추가하려면 2~4단계를 반복합니다.
- 변경사항 저장을 클릭합니다.
Ivanti Connect Secure에서 syslog 로깅 사용 설정
- Pulse connect secure 콘솔에서 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭을 클릭한 다음 필터를 선택합니다.
- 새 필터 탭을 클릭합니다.
내보내기 형식 섹션에서 맞춤을 선택하고 필드에 다음 형식을 입력합니다.
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
저장을 클릭합니다.
시스템 > 로그/모니터링을 클릭한 다음 설정 탭을 선택합니다.
최대 로그 크기 필드에서 최대 로그 크기를 지정하고 로깅할 이벤트를 선택합니다.
다음과 같이 서버 구성을 지정합니다.
서버 이름/IP 필드에 syslog 서버의 정규화된 도메인 이름 또는 Google Security Operations 포워더 IP 주소를 지정합니다.
유형 목록에서 전송 계층 보안 (TLS)을 선택하면 서버 이름이 서버에서 가져온 인증서의 subjectDN에 있는 CN과 일치해야 합니다.
기능 목록에서 syslog 서버 기능 수준을 선택합니다.
유형 목록에서 syslog 서버에 대한 연결 유형을 UDP, TCP 또는 TLS로 선택합니다. TLS는 암호화 프로토콜을 사용하여 보안 통신을 제공합니다.
TLS를 선택한 경우 syslog 서버를 인증하는 데 사용할 설치된 클라이언트 인증서를 선택합니다. 클라이언트 인증서는 구성 > 인증서 > 클라이언트 인증 인증서 창에 정의되어 있습니다. 클라이언트 인증서는 사용하기 전에 기기에 설치해야 합니다. 인증 기관에 문의하여 인증서를 받으세요.
필터 목록에서 맞춤을 선택합니다.
추가를 클릭합니다.
Pulse Secure 로그를 수집하도록 Google Security Operations 전달자 구성
- SIEM 설정 > 포워더를 선택합니다.
- 새 전달자 추가를 클릭합니다.
- 전달자 이름 필드에 전달자의 고유한 이름을 입력합니다.
- 제출을 클릭한 다음 확인을 클릭합니다. 전달자가 추가되고 수집기 구성 추가 창이 표시됩니다.
- 수집기 이름 필드에 수집기의 고유한 이름을 입력합니다.
- 로그 유형으로 Pulse Secure를 선택합니다.
- 수집기 유형으로 Syslog를 선택합니다.
- 다음 필수 입력 매개변수를 구성합니다.
- 프로토콜: 수집기가 syslog 데이터를 리슨하는 데 사용하는 연결 프로토콜을 지정합니다.
- 주소: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 IP 주소 또는 호스트 이름을 지정합니다.
- 포트: 수집기가 상주하고 syslog 데이터를 수신 대기하는 대상 포트를 지정합니다.
- 제출을 클릭합니다.
Google Security Operations 전달자에 대한 자세한 내용은 Google Security Operations UI를 통해 전달자 구성 관리를 참고하세요.
전달자를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.
필드 매핑 참조
이 파서는 Windows 이벤트 로그와 syslog 형식을 모두 처리하여 Pulse Secure VPN 로그에서 필드를 추출합니다. 다양한 로그 구조를 일반적인 형식으로 정규화하고 로그인, 로그아웃, 연결, 정책 변경과 같은 이벤트를 분류하며 사용자 에이전트, IP 주소, 타임스탬프와 같은 컨텍스트 데이터를 추가합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
action | security_result.action_details |
action 필드에서 직접 매핑됩니다. |
애플리케이션 | principal.application |
application 필드에서 직접 매핑됩니다. |
bytes_read | network.received_bytes |
bytes_read 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
bytes_written | network.sent_bytes |
bytes_written 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
client_host | principal.hostname , principal.asset.hostname |
client_host 필드에서 직접 매핑됩니다. |
cmd | principal.process.command_line |
cmd 필드에서 직접 매핑됩니다. |
connection_status | security_result.detection_fields.value.string_value |
connection_status 필드에서 직접 매핑됩니다. |
data_time | metadata.event_timestamp.seconds |
다양한 타임스탬프 형식 (MM-dd-yyyy HH:mm:ss Z, RFC 3339, ISO8601, MMM d HH:mm:ss, MMM d HH:mm:ss)을 사용하여 data_time 필드에서 파싱됩니다. |
devname | principal.hostname , principal.asset.hostname |
devname 필드에서 직접 매핑됩니다. |
dstip | target.ip , target.asset.ip |
dstip 필드에서 직접 매핑됩니다. |
dstport | target.port |
dstport 필드에서 직접 매핑되고 정수로 변환됩니다. |
dstcountry | target.location.country_or_region |
'Reserved'가 아니거나 비어 있지 않은 경우 dstcountry 필드에서 직접 매핑됩니다. |
기간 | network.session_duration.seconds |
duration 필드에서 직접 매핑되고 정수로 변환됩니다. |
dvc | intermediary.hostname 또는 intermediary.ip |
dvc 필드를 IP 주소로 변환할 수 있는 경우 intermediary.ip 에 매핑됩니다. 그렇지 않으면 intermediary.hostname 에 매핑됩니다. |
dvc_hostname | intermediary.hostname , principal.hostname , principal.asset.hostname 또는 intermediary.ip , principal.ip , principal.asset.ip |
dvc_hostname 필드를 IP 주소로 변환할 수 있는 경우 해당 IP 필드에 매핑됩니다. 그렇지 않으면 해당 호스트 이름 필드에 매핑됩니다. |
event_type | metadata.product_event_type |
event_type 필드에서 직접 매핑됩니다. |
failure_reason | security_result.description |
failure_reason 필드에서 직접 매핑됩니다. 메시지에 'because host'가 포함된 경우 실패 이유 앞에 'host'라는 텍스트가 추가됩니다. |
has_principal | event.idm.read_only_udm.principal (출석) |
주 구성원 필드가 채워진 경우 'true'로 설정하고, 그렇지 않으면 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
has_target | event.idm.read_only_udm.target (출석) |
타겟 필드가 채워진 경우 'true'로 설정하고, 그렇지 않으면 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
has_target_user | event.idm.read_only_udm.target.user.userid (출석) |
target.user.userid 가 채워진 경우 'true'로 설정하고, 그렇지 않은 경우 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
host_ip | principal.ip , principal.asset.ip |
host_ip 필드에서 직접 매핑됩니다. |
host_mac | principal.mac |
host_mac 필드에서 직접 매핑되며, 하이픈이 콜론으로 대체됩니다. |
http_method | network.http.method |
http_method 필드에서 직접 매핑됩니다. |
http_response | network.http.response_code |
http_response 필드에서 직접 매핑되고 정수로 변환됩니다. |
info_desc | about.labels.value |
info_desc 필드에서 직접 매핑됩니다. |
ip_new | target.ip , target.asset.ip |
ip_new 필드에서 직접 매핑됩니다. |
레벨 | security_result.severity , security_result.severity_details |
security_result.severity 는 level 필드에서 파생됩니다 ('error'/'warning' -> HIGH, 'notice' -> MEDIUM, 'information'/'info' -> LOW). level 의 원시 값도 security_result.severity_details 에 매핑됩니다. |
logid | metadata.product_log_id |
logid 필드에서 직접 매핑됩니다. |
locip | principal.ip , principal.asset.ip |
locip 필드에서 직접 매핑됩니다. |
메시지 | metadata.description |
grok 및 kv 필터를 사용하여 다양한 필드를 추출하는 데 사용됩니다. 메시지에 'EventID'가 포함되어 있으면 Windows 이벤트 로그로 처리됩니다. |
message_info | metadata.description |
더 구체적인 grok 패턴에서 사용되지 않는 경우 metadata.description 에 직접 매핑됩니다. |
msg | metadata.product_event_type , metadata.description |
msg 필드가 있으면 제품 유형이 추출되어 metadata.product_event_type 에 매핑되고 나머지 메시지는 metadata.description 에 매핑됩니다. |
msg_hostname | principal.hostname , principal.asset.hostname |
msg_hostname 필드에서 직접 매핑됩니다. |
msg_ip | principal.ip , principal.asset.ip |
msg_ip 필드에서 직접 매핑됩니다. |
msg_user_agent | network.http.user_agent , network.http.parsed_user_agent , metadata.product_version |
사용자 에이전트 문자열은 network.http.user_agent 에 매핑되고, 파싱된 사용자 에이전트는 network.http.parsed_user_agent 에 매핑되며, 제품 버전 (있는 경우)은 metadata.product_version 에 매핑됩니다. |
network_duration | network.session_duration.seconds |
network_duration 필드에서 직접 매핑되고 정수로 변환됩니다. |
policyid | security_result.rule_id |
policyid 필드에서 직접 매핑됩니다. |
policyname | security_result.rule_name |
policyname 필드에서 직접 매핑됩니다. |
policytype | security_result.rule_type |
policytype 필드에서 직접 매핑됩니다. |
priority_code | about.labels.value |
priority_code 필드에서 직접 매핑되며 'Severity' 키의 about.labels.value 를 파생하는 데도 사용됩니다 (논리 참고). |
prod_name | metadata.product_name |
prod_name 필드에서 직접 매핑됩니다. |
product_type | metadata.product_event_type |
product_type 필드에서 직접 매핑됩니다. |
product_version | metadata.product_version |
product_version 필드에서 직접 매핑됩니다. |
proto | network.ip_protocol |
조회를 사용하여 IP 프로토콜 이름으로 변환된 후 network.ip_protocol 에 매핑됩니다. |
pwd | principal.process.file.full_path |
pwd 필드에서 직접 매핑됩니다. |
렐름 | principal.group.attribute.labels.value |
realm 필드에서 직접 매핑됩니다. |
rcvdbyte | network.received_bytes |
rcvdbyte 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
remip | target.ip |
remip 필드에서 직접 매핑됩니다. |
resource_name | target.resource.name |
선행/후행 공백과 하이픈을 삭제한 후 resource_name 필드에서 직접 매핑됩니다. |
resource_status | security_result.description |
resource_status 필드에서 직접 매핑됩니다. |
resource_user_group | principal.user.group_identifiers |
resource_user_group 필드에서 직접 매핑됩니다. |
resource_user_name | principal.user.userid |
resource_user_name 필드에서 직접 매핑됩니다. |
역할 | principal.user.group_identifiers |
roles 필드에서 직접 매핑됩니다. |
sentbyte | network.sent_bytes |
sentbyte 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
session_id | network.session_id |
session_id 필드에서 직접 매핑됩니다. |
sessionid | network.session_id |
sessionid 필드에서 직접 매핑됩니다. |
srcip | principal.ip , principal.asset.ip |
srcip 필드에서 직접 매핑됩니다. |
srcport | principal.port |
srcport 필드에서 직접 매핑되고 정수로 변환됩니다. |
srccountry | principal.location.country_or_region |
'Reserved'가 아니거나 비어 있지 않은 경우 srccountry 필드에서 직접 매핑됩니다. |
하위 유형 | metadata.product_event_type |
type 와 함께 사용하여 metadata.product_event_type 을 형성합니다. |
target_file | target.file.full_path |
target_file 필드에서 직접 매핑됩니다. |
target_host | target.hostname , target.asset.hostname |
target_host 필드에서 직접 매핑됩니다. |
target_ip | target.ip , target.asset.ip |
target_ip 필드에서 직접 매핑됩니다. |
target_port | target.port |
target_port 필드에서 직접 매핑되고 정수로 변환됩니다. |
target_url | target.url |
target_url 필드에서 직접 매핑됩니다. |
시간 | metadata.event_timestamp.seconds |
'yyyy-MM-dd HH:mm:ss' 형식을 사용하여 time 필드에서 파싱됩니다. |
유형 | metadata.product_event_type |
subtype 와 함께 사용하여 metadata.product_event_type 을 형성합니다. |
u_event_source_ip | principal.ip , principal.asset.ip 또는 target.ip |
target_ip 또는 target_host 이 있으면 u_event_source_ip 이 principal.ip 및 principal.asset.ip 에 매핑됩니다. 그렇지 않고 target_ip , target_host , target_url 가 모두 비어 있으면 u_event_source_ip 이 target.ip 에 매핑됩니다. |
u_observer_ip | observer.ip |
u_observer_ip 필드에서 직접 매핑됩니다. |
u_prin_ip | principal.ip , principal.asset.ip |
u_prin_ip 필드에서 직접 매핑됩니다. |
사용자 | target.user.userid |
user 필드에서 직접 매핑됩니다. |
user_agent | network.http.user_agent , network.http.parsed_user_agent |
사용자 에이전트 문자열은 network.http.user_agent 에 매핑되고 파싱된 사용자 에이전트는 network.http.parsed_user_agent 에 매핑됩니다. |
user_group_identifier | target.user.group_identifiers 또는 principal.user.group_identifiers |
대부분의 경우 target.user.group_identifiers 에 매핑됩니다. IP 변경 (USER_UNCATEGORIZED) 및 영역 제한 이벤트에서 principal.user.group_identifiers 에 매핑됩니다. |
user_ip | principal.ip , principal.asset.ip |
user_ip 필드에서 직접 매핑됩니다. 비어 있고 u_event_source_ip 가 비어 있지 않으면 u_event_source_ip 의 값을 사용합니다. |
사용자 이름 | principal.user.userid 또는 target.user.userid |
대부분의 경우 principal.user.userid 에 매핑됩니다. 특정 시나리오 (예: detect_user_logout_failed 이 false이고 detect_policy_change_failed 이 false인 경우)에서 target.user.userid 에 매핑됩니다. |
username_removed | target.user.userid |
username_removed 필드에서 직접 매핑됩니다. |
vd | principal.administrative_domain |
vd 필드에서 직접 매핑됩니다. |
metadata.vendor_name
, metadata.product_name
, metadata.event_type
, metadata.log_type
, network.ip_protocol
, security_result.action
, security_result.severity
, extensions.auth.type
은 '논리' 열에 설명된 조건을 기반으로 파서 로직에 의해 파생되거나 설정됩니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.