NetScaler 로그 수집
이 문서에서는 Google Security Operations 전달자를 사용하여 NetScaler 로그를 수집하는 방법을 설명합니다.
자세한 내용은 Google Security Operations에 데이터 수집 개요를 참조하세요.
수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 CITRIX_NETSCALER
수집 라벨이 있는 파서에 적용됩니다.
NetScaler VPX 구성
NetScaler VPX를 구성하여 로그를 Google Security Operations 전달자로 전송하려면 다음 단계를 따르세요.
호스트 이름 구성 확인
- 관리자 사용자 인증 정보를 사용하여 NetScaler 웹 인터페이스에 로그인합니다.
- 구성 > 설정을 선택합니다.
- 호스트 이름, DNS IP 주소, 시간대를 클릭합니다.
- Host name 입력란이 비어 있으면 호스트 이름을 입력합니다. 공백은 포함하지 마세요. 이 필드가 이미 구성된 경우 별도의 조치를 취하지 않아도 됩니다.
- DNS IP 주소 필드에서 로컬 DNS IP 주소가 지정되어 있는지 확인합니다.
- 시간대 필드에 시간대를 입력합니다.
감사 서버 만들기
- NetScaler 웹 인터페이스에서 구성 > 시스템 > 감사 > Syslog > 서버를 선택합니다.
- 다음 입력란에 syslog 세부정보를 지정합니다.
- 이름
- 서버 유형
- IP 주소
- 포트
- 로그 수준을 맞춤으로 선택합니다.
- 구성에서 DEBUG 수준을 제외한 모든 체크박스를 선택합니다.
- 로그 시설 목록에서 LOCAL0을 선택합니다.
- 날짜 형식 목록에서 MMDDYYYY를 선택합니다.
- 시간대를 GMT로 선택합니다.
- 다음 체크박스를 선택 해제합니다.
- TCP 로깅
- ACL 로깅
- 사용자가 구성할 수 있는 로그 메시지
- AppFlow 로깅
- 대규모 NAT 로깅
- ALG 메시지 로깅
- 구독자 로깅
- DNS
- SSL 가로채기
- URL 필터링
- 콘텐츠 검사 로깅
- 확인을 클릭하여 감사 서버를 만듭니다.
생성된 감사 정책을 서버에 바인딩
- NetScaler 웹 인터페이스에서 구성 > 시스템 > 감사 > Syslog를 선택합니다.
- 정책 탭을 클릭합니다.
- 이름 필드에 정책 이름을 입력합니다.
- 서버 목록에서 이전 섹션의 정책을 선택합니다.
- 만들기를 클릭합니다.
- 생성된 감사 정책을 마우스 오른쪽 버튼으로 클릭하고 작업 > 전역 바인딩을 선택합니다.
- 결합 추가를 클릭합니다.
- 정책 결합 창에서 다음을 수행합니다.
- 정책 선택 입력란에 생성된 감사 정책을 입력합니다.
- Binding details 창의 Priority 입력란에 기본 우선순위인 120을 입력합니다.
- 결합을 클릭합니다.
NetScaler SDX 구성
NetScaler SDX를 구성하여 로그를 Google Security Operations 전달자로 전송하려면 다음 단계를 따르세요.
NetScaler SDX의 호스트 이름 구성 확인
- 관리자 사용자 인증 정보를 사용하여 NetScaler 웹 인터페이스에 로그인합니다.
- NetScaler 웹 인터페이스에서 시스템 > 시스템 설정을 선택합니다.
- Host name 입력란이 비어 있으면 호스트 이름을 입력합니다. 공백은 포함하지 않습니다. 이 필드가 이미 구성된 경우 별도의 조치를 취하지 않아도 됩니다.
- 시간대 필드에서 UTC 또는 GMT를 선택합니다.
syslog 서버 구성
- NetScaler 웹 인터페이스에서 System(시스템) > Notifications(알림) > Syslog servers(Syslog 서버)를 선택합니다.
- 세부정보 창에서 추가를 클릭합니다.
- Syslog 서버 만들기 창에서 다음 syslog 서버 매개변수의 값을 지정합니다.
- 이름 필드에 이름을 입력합니다.
- IP 주소 필드에 Google Security Operations 전달자 IP 주소를 입력합니다.
- 포트 필드에 포트 번호를 입력합니다.
- 로그 수준을 맞춤으로 선택합니다.
- Debug를 제외한 모든 로그 수준을 선택합니다.
- 만들기를 클릭합니다.
syslog 매개변수 구성
- NetScaler 웹 인터페이스에서 System(시스템) > Notifications(알림) > Syslog servers(Syslog 서버)를 선택합니다.
- 세부정보 창에서 Syslog 매개변수를 클릭합니다.
- syslog 매개변수 구성 페이지에서 날짜 형식을 MMDDYYYY로 선택하고 시간대를 GMT로 선택합니다.
- 확인을 클릭합니다.
NetScaler 로그를 수집하도록 Google Security Operations 전달자 구성
- SIEM 설정 > 전달자를 선택합니다.
- 새 전달자 추가를 클릭합니다.
- 전달자 이름 입력란에 전달자의 고유한 이름을 입력합니다.
- 제출을 클릭한 다음 확인을 클릭합니다. 전달자가 추가되고 수집기 구성 추가 창이 표시됩니다.
- 수집기 이름 필드에 수집기의 고유한 이름을 입력합니다.
- 로그 유형으로 Citrix NetScaler를 선택합니다.
- 수집기 유형 필드에서 Syslog를 선택합니다.
- 다음 필수 입력 매개변수를 구성합니다.
- 프로토콜: 수집기가 syslog 데이터를 리슨하는 데 사용하는 연결 프로토콜을 지정합니다.
- 주소: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 IP 주소 또는 호스트 이름을 지정합니다.
- 포트: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 포트를 지정합니다.
- 제출을 클릭합니다.
Google Security Operations 전달자에 대한 자세한 내용은 Google Security Operations UI를 통해 전달자 구성 관리를 참고하세요.
전달자를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.
필드 매핑 참조
이 파서는 키-값 형식의 Citrix Netscaler SYSLOG 로그를 처리하여 message
필드에서 JSON 형식의 데이터를 추출하고 정리한 후 host.hostname
및 user_agent.original
와 같은 다른 필드의 정보로 UDM을 보강합니다. 기본 메시지가 비어 있는 경우 원래 로그 메시지로 대체하여 처리합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
AAA trans id | security_result.detection_fields[].value |
'AAA trans id' 필드에서 추출된 값입니다. |
액세스 | security_result.action_details |
'액세스'가 '허용됨'인 경우 security_result.action 를 ALLOW로 설정합니다. '액세스'가 '거부됨'인 경우 security_result.action 를 BLOCK으로 설정합니다. |
applicationName | principal.application |
'applicationName' 필드에서 추출된 값입니다. |
Browser_type | network.http.user_agent |
'Browser_type' 필드에서 추출된 값입니다. |
ClientIP | principal.ip , principal.asset.ip |
'ClientIP' 필드에서 추출된 값입니다. |
ClientPort | principal.port |
'ClientPort' 필드에서 추출된 값입니다. |
client_cookie | additional.fields[].value.string_value |
'client_cookie' 필드에서 추출된 값입니다. |
명령어 | target.process.command_line |
'명령어' 필드에서 추출된 값입니다. |
connectionId | security_result.detection_fields[].value |
'connectionId' 필드에서 추출된 값입니다. |
대상 | target.ip , target.asset.ip |
'Destination' 필드에서 추출된 값입니다. |
대상 | target.ip , target.asset.ip |
'Destination' 필드에서 추출된 값입니다. |
device_serial_number | target.asset_id |
target.asset_id 이(가) 'device_serial_number: |
기간 | network.session_duration.seconds |
길이는 초 단위로 변환되고 매핑됩니다. |
종료 시간 | security_result.detection_fields[].value |
'종료 시간' 필드에서 추출된 값입니다. |
Failure_reason | metadata.description |
'Failure_reason' 필드에서 추출된 값입니다. |
flags | additional.fields[].value.string_value |
'flags' 필드에서 추출된 값입니다. |
그룹 | target.group.group_display_name |
'그룹' 필드에서 추출된 값입니다. |
이유 | metadata.description |
'이유' 필드에서 추출된 값입니다. |
Remote_ip | target.ip , target.asset.ip |
'Remote_ip' 필드에서 추출된 값입니다. |
ServerIP | target.ip , target.asset.ip |
'ServerIP' 필드에서 추출된 값입니다. |
ServerPort | target.port |
'ServerPort' 필드에서 추출된 값입니다. |
session_guid | metadata.product_log_id |
'session_guid' 필드에서 추출된 값입니다. |
SessionId | network.session_id |
'SessionId' 필드에서 추출된 값입니다. |
소스 | principal.ip , principal.asset.ip |
'소스' 필드에서 추출된 값입니다. |
시작 시간 | security_result.detection_fields[].value |
'시작 시간' 필드에서 추출된 값입니다. |
startTime | security_result.detection_fields[].value |
'startTime' 필드에서 추출된 값입니다. |
상태 | security_result.description |
'상태' 필드에서 추출된 값입니다. |
Total_bytes_recv | network.received_bytes |
'Total_bytes_recv' 필드에서 추출된 값입니다. |
Total_bytes_send | network.sent_bytes |
'Total_bytes_send' 필드에서 추출된 값입니다. |
Total_bytes_wire_recv | security_result.detection_fields[].value |
'Total_bytes_wire_recv' 필드에서 추출된 값입니다. |
Total_bytes_wire_send | security_result.detection_fields[].value |
'Total_bytes_wire_send' 필드에서 추출된 값입니다. |
사용자 | principal.user.userid |
'사용자' 입력란에서 추출된 값입니다. |
VserverServiceIP | target.ip , target.asset.ip |
'VserverServiceIP' 필드에서 추출된 값입니다. |
VserverServicePort | target.port |
'VserverServicePort' 필드에서 추출된 값입니다. 'CITRIX'로 하드코딩됨 'NETSCALER'로 하드코딩됨 'CITRIX_NETSCALER'로 하드코딩됩니다. product_event_type을 기반으로 파서에서 결정합니다. 예: NETWORK_CONNECTION, USER_LOGIN, USER_LOGOUT, USER_STATS, STATUS_UPDATE, USER_UNCATEGORIZED, GENERIC_EVENT 로그 접두사에서 추출된 값입니다 (예: CONN_DELINK, CONN_TERMINATE, OTHERCONN_DELINK 등). 이벤트에 대한 간단한 설명입니다. 'Reason' 또는 'Failure_reason'과 같은 다른 필드에서 파생되는 경우도 있습니다. 로그 항목의 날짜 및 시간 필드에서 계산됩니다. 파서는 다양한 형식과 시간대를 처리합니다. 'username:domainname' 필드에서 추출되며 콜론 뒤의 부분을 사용합니다. metadata.product_event_type 에 'TCP'가 있는 이벤트의 경우 TCP로 하드코딩됩니다. 로그인 및 명령어 성공 시 ALLOW(허용)로, 로그인 실패 및 차단된 리소스 액세스 시 BLOCK(차단)으로 설정합니다. 'Status', 'Failure_reason', 'Access'와 같은 필드에서 파생됩니다. 사용자 이름과 비밀번호가 인증에 사용되는 경우 (특정 로그 메시지에서 추론됨) USERNAME_PASSWORD로 설정합니다. VPN 관련 로그인/로그아웃 이벤트의 경우 VPN으로 설정합니다. 사용자 에이전트 파싱 라이브러리를 사용하여 network.http.user_agent 필드에서 파싱됩니다. |
변경사항
2024-05-21
- 누락된 로그를 파싱하도록 Grok 패턴을 수정했습니다.
2024-05-20
- 파싱되지 않은 로그를 파싱하는 새로운 Grok 패턴이 추가되었습니다.
2024-05-08
- 시간 정보의 매핑을 'security_results'에서 'network.session_duration'으로 업데이트했습니다.
2024-04-29
- 'Browser_type'에 대한 조건부 검사를 추가하고 'network.http.parsed_user_agent'에 매핑했습니다.
- 'userId' 및 'user_email'에 대한 조건부 검사를 추가했습니다.
- '브라우저'가 'network.http.parsed_user_agent'에 매핑되었습니다.
2024-02-23
- UDM 필드에서 예상대로 호스트 이름을 파싱하도록 Grok 패턴을 업데이트했습니다.
2024-01-25
- 'message_type'이 'Message', 'NONHTTP_RESOURCEACCESS_DENIED', 'UDPFLOWSTAT', 'EXTRACTED_GROUPS'인 로그를 파싱하는 Grok 패턴을 추가했습니다.
- '기능'이 'GUI' 및 'EVENT'인 로그 파싱을 지원하도록 추가했습니다.
- 'principal_port'가 'principal.port'에 매핑되었습니다.
- 'ClientIP'가 'principal.asset.ip'에 매핑되었습니다.
- 'principal_ip'가 'principal.ip' 및 'principal.asset.ip'에 매핑되었습니다.
- 'target_ip'가 'target.ip' 및 'target.asset.ip'에 매핑되었습니다.
- 'target_port'가 'target.port'에 매핑되었습니다.
- 'description'이 'metadata.description'에 매핑되었습니다.
- 'type', 'aaa_trans_id', 'pcb_trans_id', 'pcb_state', 'pcb_label', 'trans_id', 'authPolicyLen', 'login_attempts', 'PromptLen', 'partitionLen', 'cmdPolicyLen', 'ssh_pubkey_len'이 'security_result.detection_fields'에 매핑되었습니다.
- 'principal_hostname'이 'principal.hostname' 및 'principal.asset.hostname'에 매핑되었습니다.
- 'hostname'이 'intermediary.asset.hostname'에 매핑되었습니다.
- 'hostname'이 'observer.asset.hostname'에 매핑되었습니다.
- 'cip', 'ServerIP', 'VIP', 'VserverServiceIP', 'Remote_ip'가 'target.asset.ip'에 매핑되었습니다.
- 'message_type'이 'Message'인 경우 'User'를 'principal.user.userid'에 매핑했습니다.
- 'principal_ip' 및 'target_ip'가 있는 경우 'metadata.event_type'을 'NETWORK_CONNECTION'으로 설정합니다.
- 'Client_ip' 및 'target_ip'가 있는 경우 'metadata.event_type'을 'NETWORK_CONNECTION'으로 설정합니다.
- 'message_type'이 'NONHTTP_RESOURCEACCESS_DENIED' 및 'UDPFLOWSTAT'인 경우 'metadata.event_type'을 'USER_STATS'로 설정합니다.
- 'message_type'이 'Message'이고 'User'가 있는 경우 'metadata.event_type'을 'USER_UNCATEGORIZED'로 설정합니다.
- 'principal_ip'가 있는 경우 'metadata.event_type'을 'STATUS_UPDATE'로 설정합니다.
2023-11-26
- Enhancement-
- 'message_type'이 'Message'인 로그를 파싱하는 Grok 패턴을 추가했습니다.
2023-07-21
- 개선사항 - 'CLI' 기능이 포함된 로그를 올바르게 파싱하도록 파서를 업데이트했습니다.
2022-09-26
- 개선사항 - 커스텀 파서가 기본 파서로 마이그레이션되었습니다.
2022-06-09
- 개선사항 - 요청된 매핑이 추가되었습니다.
- 'startTime', 'endTime', 'Duration'이 'security_result.detection_fields'에 매핑되었습니다.
- message_type - 'CHANNEL_UPDATE', 'NETWORK_UPDATE', 'AAATM Message'가 포함된 로그를 파싱하도록 파서를 업데이트했습니다.
2022-05-09
- 버그 수정 - message_type - 'TCPCONNSTAT'이 포함된 로그를 올바르게 파싱하도록 파서를 업데이트했습니다.
- 'principal.administrative_domain'에 전체 도메인 이름을 포함하도록 grok을 업데이트했습니다.
- Validation API 테스트 중에 로그 파싱 실패.
2022-04-27
- 개선사항 - 요청된 매핑이 추가됨
- 매핑된 intermediary.hostname 필드
- 파싱된 API 실패 로그