Citrix NetScaler 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 Citrix NetScaler 로그를 Google Security Operations로 수집하는 방법을 설명합니다.

파서는 Citrix NetScaler syslog 및 키-값 형식 로그에서 필드를 추출합니다. grok 또는 kv를 사용하여 로그 메시지를 파싱한 다음 이러한 값을 통합 데이터 모델 (UDM)에 매핑합니다. 또한 이벤트 소스 및 유형의 기본 메타데이터 값을 설정합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Windows Server 2016 이상 또는 systemd가 설치된 Linux 호스트
  • 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
  • Citrix NetScaler 웹 인터페이스에 대한 액세스 권한

Google SecOps 수집 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.

Bindplane 에이전트 설치

다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.

Windows 설치

  1. 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
  2. 다음 명령어를 실행합니다.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 설치가 완료될 때까지 기다립니다.

  4. 다음을 실행하여 설치를 확인합니다.

    sc query observiq-otel-collector
    

서비스가 실행 중으로 표시되어야 합니다.

Linux 설치

  1. 루트 또는 sudo 권한으로 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 설치가 완료될 때까지 기다립니다.

  4. 다음을 실행하여 설치를 확인합니다.

    sudo systemctl status observiq-otel-collector
    

서비스가 active (running)으로 표시되어야 합니다.

추가 설치 리소스

추가 설치 옵션 및 문제 해결은 Bindplane 에이전트 설치 가이드를 참고하세요.

syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성

구성 파일 찾기

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

구성 파일 설정

  • config.yaml의 전체 내용을 다음 구성으로 바꿉니다.

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'CITRIX_NETSCALER'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

구성 매개변수

  • 다음 자리표시자를 바꿉니다.

    • 수신기 구성:

      • udplog: UDP syslog의 경우 udplog, TCP syslog의 경우 tcplog 사용
      • 0.0.0.0: 리슨할 IP 주소 (모든 인터페이스에서 리슨하려면 0.0.0.0)
      • 514: 리슨할 포트 번호 (표준 syslog 포트)
    • 내보내기 도구 구성:

      • creds_file_path: 수집 인증 파일의 전체 경로입니다.
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 고객 ID 가져오기 섹션의 고객 ID
      • endpoint: 리전 엔드포인트 URL:
        • 미국: malachiteingestion-pa.googleapis.com
        • 유럽: europe-malachiteingestion-pa.googleapis.com
        • 아시아: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 전체 목록은 리전 엔드포인트를 참고하세요.
      • log_type: Chronicle에 표시되는 로그 유형 (CITRIX_NETSCALER)

구성 파일 저장

  • 수정 후 파일을 저장합니다.
    • Linux: Ctrl+O, Enter, Ctrl+X 순서로 누릅니다.
    • Windows: 파일 > 저장을 클릭합니다.

변경사항을 적용하려면 Bindplane 에이전트를 다시 시작하세요.

  • Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.

    sudo systemctl restart observiq-otel-collector
    
    1. 서비스가 실행 중인지 확인합니다.

        sudo systemctl status observiq-otel-collector
      
    2. 로그에서 오류를 확인합니다.

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows에서 Bindplane 에이전트를 다시 시작하려면 다음 옵션 중 하나를 선택합니다.

    • 관리자 권한으로 명령 프롬프트 또는 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 서비스 콘솔:

      1. Win+R 키를 누르고 services.msc를 입력한 다음 Enter 키를 누릅니다.
      2. observIQ OpenTelemetry Collector를 찾습니다.
      3. 마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택합니다.

      4. 서비스가 실행 중인지 확인합니다.

        sc query observiq-otel-collector
        
      5. 로그에서 오류를 확인합니다.

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Citrix NetScaler에서 Syslog 전달 구성

  1. Citrix NetScaler 웹 인터페이스 (NSIP)에 로그인합니다.
  2. 시스템 > 감사 > Syslog로 이동합니다.
  3. 서버 탭을 클릭합니다.
  4. 추가를 클릭하여 새 syslog 서버를 만듭니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Google-SecOps-Bindplane).
    • 서버 IP: Bindplane 에이전트 호스트의 IP 주소를 입력합니다.
    • 포트: 514를 입력합니다.
    • 로그 수준: 해당되는 모든 수준을 선택합니다.
      • ALL (포괄적인 로깅에 권장)
    • Facility: LOCAL0 (또는 원하는 시설)을 선택합니다.
    • 날짜 형식: MMDDYYYY를 선택합니다.
    • 시간대: GMT_TIME을 선택합니다 (UTC 권장).
    • TCP 로깅: 없음을 선택합니다 (UDP의 경우).
    • 로그 기능: LOCAL0을 선택합니다.
  6. 만들기를 클릭합니다.
  7. 정책 탭으로 이동합니다.
  8. 추가를 클릭하여 새 syslog 감사 정책을 만듭니다.
  9. 다음 구성 세부정보를 제공합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Google-SecOps-Policy).
    • 서버: 이전에 만든 syslog 서버를 선택합니다.
  10. 만들기를 클릭합니다.
  11. 정책을 전역적으로 바인딩합니다.
    1. 시스템 > 감사로 이동합니다.
    2. Syslog Audit Policies(Syslog 감사 정책)에서 Global Bindings(전역 바인딩)를 클릭합니다.
    3. 바인딩 추가를 클릭합니다.
    4. 앞에서 만든 정책을 선택합니다.
    5. 결합을 클릭합니다.
  12. Bindplane 에이전트 로그를 확인하여 syslog 메시지가 전송되고 있는지 확인합니다.

또는 CLI를 통해 구성합니다.

add audit syslogAction Google-SecOps-Bindplane BINDPLANE_IP -serverPort 514 -logLevel ALL -dateFormat MMDDYYYY -timeZone GMT_TIME
add audit syslogPolicy Google-SecOps-Policy ns_true Google-SecOps-Bindplane
bind audit syslogGlobal -policyName Google-SecOps-Policy -priority 100
  • BINDPLANE_IP를 Bindplane 에이전트 호스트의 IP 주소로 바꿉니다.

UDM 매핑 테이블

로그 필드 UDM 매핑
aaa_info_flags additional.fields
aaa_trans_id security_result.detection.fields
aaad_flags additional.fields
aaad_resp additional.fields
aaaFlags additional.fields
aaaFlags2 additional.fields
act securtiy_result.action_details,
security_result.action
action security_result.action
ADM_User additional.fields
allowed_interface security_result.detection.fields
applicationname target.application
auth_type additional.fields
authActionLen security_result.detection_fields
AuthAgent additional.fields
AuthDuration network.session_duration.seconds
authnvs additional.fields
authorizationStatus security_result.detection.fields
AuthStage additional.fields
Authtype additional.fields
C principal.location.country_or_region
caseId additional.fields
cfg_limit additional.fields
cgp_tag sec_result.detection_fields
channel_id_X additional.fields
channel_id_X_val additional.fields
channel_update_begin additional.fields
channel_update_end additional.fields
cipher_suite network.tls.cipher
client_fip target.ip target.asset.ip
client_fport target.port
client_ip principal.ip,
principal.asset.ip
client_port principal.port
Client_security_expression additional.fields
client_type additional.fields
client_version network.tls.version
client.nat.ip principal.nat_ip,
principal.asset.nat_ip
clientside_jitter additional.fields
clientside_packet_retransmits additional.fields
clientside_rtt additional.fields
clientside_rxbytes network.sent_bytes
clientside_txbytes network.received_bytes
ClientVersion network.tls.version_protocol
CN principal.resource.attribute.labels
cn1 additional.fields
cn2 additional.fields
code additional.fields
commandExecutionStatus security_result.action_details
Compression_ratio_recv additional.fields
Compression_ratio_send additional.fields
configurationCmd security_result.detection.fields
connectionId network.session_id
copied_nsb sec_result.detection_fields
core_id additional.fields
core_refmask additional.fields
cs1 additional.fields
cs2 additional.fields
cs4 additional.fields
cs5 additional.fields
cs6 additional.fields
CSappid additional.fields
CSAppname -
csg_flags additional.fields
ctx_flags additional.fields
cur_attempts additional.fields
CurfactorPolname additional.fields
customername additional.fields
days_for_pwd_exp additional.fields
days_for_pwd_exp_STR additional.fields
delinkTime additional.fields
Denied_by_policy security_result.rule_name
desc metadata.description
destination.ip target.ip,
target.asset.ip
destination.port target.resource.attribute.labels
device_event_class_id metadata.product_event_type
device_version metadata.product_version
Deviceid target.resource.product_object_id
Devicetype additional.fields
dht_delete_status additional.fields
diagnostic_info additional.fields
digestSignatureAlgorithm security_result.detection_fields
dns_additional_count additional.fields
dns_answer_count additional.fields
dns_authority_count additional.fields
dns_flags additional.fields
dns_flags_raw network.dns.recursion_desired
dns_flags_raw network.dns.recursion_available
dns_id network.dns.id
dns_question_count additional.fields
dns_question_name network.dns.question.name
domain security_result.detection.fields,
additional.fields
domain target.administrative_domain
ecs_version additional.fields
encrypt_status security_result.detection_fields
end_time additional.fields
End_time additional.fields
entityName target.resource.name
Error Code additional.fields
event_id metadata.product_log_id
event_name metadata.product_event_type
event_type sec_result.summary
expired_refmask additional.fields
factor security_result.detection.fields
flags additional.fields
flags2 additional.fields
flags3 additional.fields
flags4 additional.fields
func security_result.detection_fields
geolocation location.country_region
Group(s) target.user.group_identifiers
Group(s) target.user.group.identifiers
handshake_time network.session_duration.seconds
HandshakeTime additional.fields
host_hostname principal.hostname
host_ip principal.ip principal.asset.ip
host.name target.hostname,
target.asset.hostname
hostname intermediary.hostname,
intermediary.asset.hostname
hostname target.hostname,
target.asset.hostname
hostname_1 target.hostname,
target.asset.hostname
http_method network.http.method
Http_resources_accessed security_result.detection.fields
http_uri target.url
HTTPS network.application_protocol
ica_conn_owner_refmask sec_result.detection_fields
ica_rtt additional.fields
ica_uuid network.session_id
ICAUUID network.session_id
id metadata.id
init_icamode_homepage additional.fields
inter_hostname intermediary.hostname
interfaceKind security_result.detection.fields
ip intermediary.asset.ip
ip_x principal.ip principal.asset.ip
ipaddress target.ip,
target.asset.ip
is_post additional.fields
IssuerName network.tls.server.certificate.issuer
L principal.location.city
last_contact additional.fields
loc target.url
localdate additional.fields
lock_duration additional.fields
log_action sec_result.detection_fields
log_action security_result.detection.fields
log_category additional.fields
log_data additional.fields
log_format additional.fields
log_timestamp additional.fields
log_type additional.fields
log.syslog.priority additional.fields
login_count sec_result.detection_fields
login_count security_result.detection_fields
LogoutMethod additional.fields
max_attempts additional.fields
message_content security_result.summary
message_id metadata.product_log_id
message_status_code additional.fields
method network.http.method
monitored_resource additional.fields
msg metadata.description
msi_client_cookie additional.fields
msticks additional.fields
Nat_ip additional.fields,
principal.nat_ip,
principal.asset.nat_ip
(Nat_ip이 IP 주소가 아닌 경우 additional.fields에 있음)
netscaler_principal_ip_context principal.resource.attribute.labels
netscaler_tag intermediary.asset.product_object_id
netscaler_target_ip_context target.resource.attribute.labels
new_webview additional.fields
newWebview additional.fields
NonHttp_services_accessed security_result.detection.fields
nsPartitionName additional.fields
on_port additional.fields
Organization principal.resource.attribute.labels
OU principal.resource.attribute.labels
owner_from additional.fields
owner_id additional.fields
pcb_devno additional.fields
pcbdevno additional.fields
Policyname security_result.rule_name
port principal.port
port_details principal.port
prin_ip principal.ip principal.asset.ip
prin_user principal.user.userid
principal_ip principal.ip,
principal.asset.ip
principal_port principal.port
prod_event_type metadata.product_event_type
protocol network.ip_protocol
protocol_feature security_result.detection.fields
ProtocolVersion network.tls.protocol_version
pwdlen additional.fields
pwdlen2 additional.fields
q_flags additional.fields
reason_val security_result.description
receiver_version additional.fields
record_type network.dns.question.type
refmask additional.fields
remote_ip principal.ip principal.asset.ip
remote_port principal.port
request target.url
ReqURL additional.fields
resource_cmd target.resource.name
resource_name principal.resource.name
response additional.fields
response_code additional.fields
rule_id security_result.rule.id
rule_name security_result.rule_name
SerialNumber network.tls.server.certificate.serial
server_authenticated additional.fields
serverside_jitter additional.fields
serverside_packet_retransmits additional.fields
serverside_rtt additional.fields
service_name principal.applications
sess_flags2: additional.fields
sess_seq network.session_id
sessFlags2 additional.fields
Session additional.fields
session_cookie security_result.detection_fields
session_guid network.session_id
session_id_label network.session_id
session_setup_time additional.fields
session_type sec_result.description
SessionId network.session_id
skip_code additional.fields
source_file additional.fields
source_hostname principal.hostname,
principal.asset.hostname
source_line additional.fields
source.ip principal.ip,
principal.asset.ip
source.port principal.resource.attribute.labels
spcb_id security_result.detecrion.fields
SPCBId sec_result.detection_fields
spt principal.port
src principal.ip principal.asset.ip
src_hostname principal.hostname principal.asset.hostname
src_ip principal.ip principal.asset.ip
src_ip1 src.ip,
src.asset.ip
src_port principal.port
ssid network.session_id
SSLVPN_client_type additional.fields
SSO additional.fields
sso additional.fields
sso_auth_type additional.fields
sso_flags security_result.detection_fields
sso_state additional.fields
SSOduration additional.fields
SSOurl additional.fields
ssoUsername additional.fields
ssoUsername2 additional.fields
ST principal.location.state
sta_port additional.fields
sta_ticket additional.fields
start_time additional.fields
Start_time additional.fields
State security_result.action_details
state additional.fields
state_value additional.fields
StatusCode additional.fields
SubjectName network.tls.client.certificate.subject
summ security_result.summary
summary security_result.summary
sysCmdPolLen security_result.detection.fields
syslog_priority additional.fields
tags additional.fields
tar_ip target.ip target.asset.ip
tar_port target.port
target_id target.resource.id
target_port target.port
TCP network.ip_protocol
timeout_ms additional.fields
timestamp metadata.event_timestamp
Total_bytes_send network.sent_bytes
Total_compressedbytes_recv additional.fields
Total_compressedbytes_send additional.fields
Total_policies_allowed security_result.detection.fields
Total_policies_denied security_result.detection.fields
Total_TCP_connections security_result.detection.fields
Total_UDP_flows security_result.detection.fields
track_flags additional.fields
trans_id -
tt metadata.event_timestamp
User principal.user.userid
user_agent.original network.http.user_agent
user_email principal.user.email_addresses
user_id principal.user.userid
user.domain target.administrative_domain
user.name principal.user.user_display_name
userids target.user.userid
ValidFrom network.tls.server.certificate.not_before
ValidTo network.tls.server.certificate.not_after
version additional.fields
VPNexportState additional.fields
Vport target.port
Vserver Timestamp additional.fields
vserver_id target.resource.product_object_id
Vserver_ip target.ip,
target.asset.ip
vserver_port target.port
Vserver_port target.port
vserver_timestamp additional.fields
vserver.ip target.ip,
target.asset.ip
wirep additional.fields
wirep_name additional.fields
wirep_ref_cnt additional.fields

UDM 매핑 델타 참조

2026년 2월 3일 Google SecOps에서 NetScaler 로그 필드를 UDM 필드에 매핑하는 방식과 이벤트 유형 매핑에 중요한 변경사항이 포함된 새로운 버전의 NetScaler 파서를 출시했습니다.

로그 필드 매핑 델타

다음 표에는 2026년 2월 3일 이전에 노출된 NetScaler 로그-UDM 필드와 그 이후의 매핑 델타가 나와 있습니다 (각각 이전 매핑현재 매핑 열에 나열됨).

로그 필드 이전 매핑 현재 매핑
act securit_.result.detetction_fields securtiy_result.action_details,
security_result.action
client_ip additional.fields principal.ip,
principal.asset.ip
ClientVersion network.tls.version network.tls.version_protocol
connectionId security_result.detection_fields network.session_id
CSAppname - -
domain target.user.administrative_domain security_result.detection.fields,
additional.fields
end_time security_result.detection.fields security_result.last_discovered_time additional.fields
event_id additional.fields metadata.product_log_id
geolocation location.city location.country_region
Group(s) target.user.group_display_name target.user.group_identifiers
HandshakeTime network.session_duration.seconds additional.fields
host.name intermediary.hostname target.hostname,
target.asset.hostname
hostname target.hostname,
target.asset.hostname
intermediary.hostname,
intermediary.asset.hostname
hostname principal.hostname,
principal.asset.hostname
target.hostname,
target.asset.hostname
ipaddress principal.ip,
principal.asset.ip
target.ip,
target.asset.ip
Nat_ip principal.ip,
principal.asset.ip
principal.nat_ip,
principal.nat_ip
port_details principal.labels principal.port
principal_ip target.ip,
target.asset.ip
principal.ip,
principal.asset.ip
request security_result.summary target.url
sess_seq additional.fields network.session_id
session_guid metadata.product_log_id network.session_id
source_hostname target.hostname,
target.asset.hostname
principal.hostname,
principal.asset.hostname
spcb_id additional.fields security_result.detecrion.fields
ssid additional.fields network.session_id
start_time security_result.detection.fields security_result.first_discovered_time additional.fields
SubjectName principal.resource.attribute.labels network.tls.client.certificate.subject
summary metadata.descritption security_result.summary
target_port principal.port target.port
trans_id security_result.detection.fields -
user_id target.user.userid principal.user.userid

이벤트 유형 매핑 델타

다음 표에는 2026년 2월 3일 이전과 이후의 NetScaler 이벤트 유형 처리의 차이가 나와 있습니다 (각각 이전 event_type현재 event_type 열에 나열됨).

이전 event_type 현재 event_type 이유
NETWORK_CONNECTION NETWORK_DNS message_typeDNS_QUERY이거나 has_network_dnstrue일 때 이름이 지정된 경우
NETWORK_CONNECTION NETWORK_HTTP message_typeSSLVPN HTTPREQUEST인 경우:
STATUS_UPDATE NETWORK_CONNECTION 적절한 특정 이벤트 유형에 매핑됩니다.
STATUS_UPDATE USER_RESOURCE_UPDATE_CONTENT message_type이 SNMP TRAP_SENT이고 has_target_resourcetrue인 경우 적절한 특정 이벤트 유형에 매핑됩니다.
STATUS_UPDATE USER_UNCATEGORIZED 주 구성원 userid가 있는 경우 적절한 특정 이벤트 유형에 매핑됩니다.
USER_RESOURCE_ACCESS NETWORK_HTTP message_type이 SSLVPN HTTPREQUEST인 경우
USER_STATS GENERIC_EVENT USER_STATS는 지원 중단되었으므로 적절한 특정 이벤트 유형에 매핑됩니다.
USER_STATS NETWORK_CONNECTION USER_STATS는 지원 중단되었으므로 적절한 특정 이벤트 유형에 매핑됩니다.
USER_STATS USER_LOGIN USER_STATS는 지원 중단되었으므로 적절한 특정 이벤트 유형에 매핑됩니다.
USER_STATS USER_LOGOUT USER_STATS는 지원 중단되므로 message_typeLOGOUT인 경우 적절한 특정 이벤트 유형에 매핑됩니다.
USER_UNCATEGORIZED GENERIC_EVENT 로그에 매핑할 기본 머신 필드가 없습니다.
USER_UNCATEGORIZED NETWORK_CONNECTION 적절한 특정 이벤트 유형에 매핑됩니다.
USER_UNCATEGORIZED USER_LOGIN 적절한 특정 이벤트 유형에 매핑됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.