Brocade ServerIron 로그 수집

다음에서 지원:

이 파서는 정규식 일치를 사용하여 Brocade ServerIron syslog 메시지에서 필드를 추출하고 이를 통합 데이터 모델 (UDM)에 매핑합니다. 네트워크 상태, 사용자 인증, 보안 이벤트 등 다양한 로그 형식을 처리합니다. 파서는 필요한 경우 데이터 유형 변환 및 보강을 실행합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd가 있는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • Brocade ServerIron 인스턴스에 대한 권한 액세스 권한이 있는지 확인합니다.

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

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 수집 인증 파일을 다운로드합니다.

Google SecOps 고객 ID 가져오기

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

Bindplane 에이전트 설치

  1. Windows 설치의 경우 다음 스크립트를 실행합니다.
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Linux 설치의 경우 다음 스크립트를 실행합니다.
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 추가 설치 옵션은 이 설치 가이드를 참고하세요.

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

  1. Bindplane이 설치된 머신에 액세스합니다.
  2. 다음과 같이 config.yaml 파일을 수정합니다.

    receivers:
        tcplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: Brocade_ServerIron
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Bindplane 에이전트를 다시 시작하여 변경사항을 적용합니다.

    sudo systemctl restart bindplane
    

Brocade ServerIron ADX에서 Syslog 내보내기 구성

  1. ADX 기기에 로그인하고 전역 구성 모드를 입력합니다.

    enable
    configure terminal
    
  2. Syslog 로깅을 사용 설정합니다.

    logging on
    
  3. 원하는 프로토콜을 포함하여 syslog 서버의 IP 주소 또는 호스트 이름과 포트를 지정합니다 (Bindplane).

    logging host <syslog-server-ip> [udp | tcp] port <port-number>
    

    포트 54525의 TCP 예:

      logging host 10.10.10.10 tcp port 54525
    
  4. 선택사항: Syslog Facility (local0~local7)을 설정합니다.

    logging facility local0
    
  5. syslog 서버로 전송할 로그의 최소 심각도 수준을 정의합니다.

    logging trap <severity-level>
    
  6. 구성을 저장합니다.

    write memory
    

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
%{GREEDYDATA} metadata.description %{GREEDYDATA} 필드가 '-- %{GREEDYDATA} --' 패턴과 일치하면 metadata.description에 매핑됩니다.
%{GREEDYDATA:auth_result} security_result.description %{GREEDYDATA:desc}가 있는 경우 %{GREEDYDATA:auth_result} 필드가 %{GREEDYDATA:desc} 필드와 연결되어 security_result.description을 형성합니다.
%{GREEDYDATA:desc} security_result.description %{GREEDYDATA:desc} 필드는 security_result.description 필드를 채우는 데 사용됩니다. 원시 로그 형식에 따라 다른 필드와 연결할 수 있습니다.
%{GREEDYDATA:login_to} security_result.description %{GREEDYDATA:desc}가 있는 경우 %{GREEDYDATA:login_to} 필드가 %{GREEDYDATA:desc} 필드와 연결되어 security_result.description을 형성합니다.
%{GREEDYDATA:user} target.user.userid %{GREEDYDATA:user} 필드가 target.user.userid에 매핑됩니다.
%{HOST:principal_host} principal.hostname %{HOST:principal_host} 필드는 principal.hostname에 매핑됩니다.
%{HOST:target_host} target.hostname %{HOST:target_host} 필드가 target.hostname에 매핑됩니다.
%{INT:http_port} additional.fields.value.string_value %{INT:http_port} 필드는 키가 'HTTP Port'인 additional.fields.value.string_value에 매핑됩니다.
%{INT:target_port} target.port %{INT:target_port} 필드가 target.port에 매핑되고 정수로 변환됩니다.
%{INT:telnet_port} additional.fields.value.string_value %{INT:telnet_port} 필드는 키가 'Telnet Port'인 additional.fields.value.string_value에 매핑됩니다.
%{INT:tftp_port} additional.fields.value.string_value %{INT:tftp_port} 필드가 키 'TFTP Port'와 함께 additional.fields.value.string_value에 매핑됩니다.
%{IP:principal_ip} principal.ip %{IP:principal_ip} 필드가 principal.ip에 매핑됩니다.
%{IP:target_ip} target.ip %{IP:target_ip} 필드가 target.ip에 매핑됩니다.
%{IPV4:principal_ip} principal.ip %{IPV4:principal_ip} 필드가 principal.ip에 매핑됩니다.
%{IPV4:target_ip} target.ip %{IPV4:target_ip} 필드가 target.ip에 매핑됩니다.
%{MAC:principal_mac} principal.mac %{MAC:principal_mac} 필드는 [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2} 형식으로 변환된 후 principal.mac에 매핑됩니다.
%{USERNAME:target_host} target.hostname %{USERNAME:target_host} 필드가 target.hostname에 매핑됩니다.
%{USERNAME:user} target.user.userid %{USERNAME:user} 필드가 target.user.userid에 매핑됩니다.
%{WORD:auth_result} security_result.description %{GREEDYDATA:desc}가 있는 경우 %{WORD:auth_result} 필드가 %{GREEDYDATA:desc} 필드와 연결되어 security_result.description을 형성합니다.
%{WORD:proto} network.application_protocol 값이 'SSH'인 경우 %{WORD:proto} 필드가 network.application_protocol에 매핑됩니다.
타임스탬프 metadata.event_timestamp 타임스탬프 필드는 grok 패턴을 사용하여 원시 로그 데이터에서 파싱되고 타임스탬프 객체로 변환됩니다.
extensions.auth.type 프로토 필드가 비어 있지 않고 auth_action 필드가 'logout' 또는 'login'인 경우 값이 'MACHINE'으로 설정됩니다.
metadata.description 필드가 비어 있지 않으면 'metadata_description' 필드의 값으로 채워집니다.
metadata.event_type 이 필드는 조건부 로직을 사용하여 다른 필드의 값을 기반으로 채워집니다.
- STATUS_STARTUP: target_port_status가 'up'인 경우
- STATUS_SHUTDOWN: target_port_status가 'down'인 경우
- USER_LOGOUT: 프로토가 비어 있지 않고 auth_action이 'logout'인 경우
- USER_LOGIN: 프로토가 비어 있지 않고 auth_action이 'login'인 경우
- STATUS_UPDATE: metadata_description이 'state changed'와 일치하는 경우
- GENERIC_EVENT: 위의 조건 중 어느 것도 충족되지 않는 경우
metadata.log_type 값은 'BROCADE_SERVERIRON'으로 하드코딩되어 있습니다.
metadata.product_name 값은 'ServerIron'으로 하드코딩되어 있습니다.
metadata.vendor_name 값은 'Brocade'로 하드코딩됩니다.
security_result.action desc 필드에 'fail'이 포함되거나 auth_result 필드에 'fail' 또는 'rejected'가 포함되면 값이 'BLOCK'으로 설정됩니다.

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