F5 BIG-IP APM 로그 수집

다음에서 지원:

이 문서에서는 Google Security Operations 전달자를 사용하여 F5 BIG-IP Access Policy Manager (APM) 로그를 수집하는 방법을 설명합니다.

자세한 내용은 Google Security Operations에 데이터 수집을 참조하세요.

수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 F5_BIGIP_APM 수집 라벨이 있는 파서에 적용됩니다.

F5 BIG-IP APM 구성

  1. 관리자 사용자 인증 정보를 사용하여 BIG-IP 구성 유틸리티 포털에 로그인합니다.
  2. 기본 > 시스템 > 로그 > 구성 > 원격 로깅을 선택합니다.
  3. 속성 섹션에서 다음을 수행합니다.

    • 원격 IP 필드에 Google Security Operations 전달자 IP 주소를 입력합니다.
    • 원격 포트 필드에 높은 포트 번호를 입력합니다.
  4. 추가를 클릭합니다.

  5. 업데이트를 클릭합니다.

    APM의 로그의 경우 Berkeley Software Distribution (BSD) syslog 형식만 지원됩니다.

    수집기는 APM의 서명을 기반으로 APM 로그만 처리합니다. F5 BIG-IP APM 이벤트 수집기는 LTM 11.6~12.1.1 기기의 멀티스레딩 로그도 지원합니다.

    iRule을 사용하는 경우 권장되는 iRule 형식을 사용하세요. Google Security Operations는 다음 iRule 형식만 지원합니다.

    # log_header_requests
    ###################################################################################
    #################################################
    # Purpose: logs header information to Local Traffic log
    # #
    #
    # Update-Log Date By Description
    # Created 02/07/2020 E01961 Initial implementation
    #
    #
    ###################################################################################
    ################################################
    when HTTP_REQUEST {
    set LogString "Client [IP::client_addr]:[TCP::client_port] -> [HTTP::host]
    [HTTP::uri]"
    log local5. "================="
    log local5. "$LogString (request)"
    foreach aHeader [HTTP::header names] {
    log local5. "$aHeader: [HTTP::header value $aHeader]"
    }
    # set UserID [URI::query "?[HTTP::payload]" "UserID"]
    # log local0. "User $UserID attempted login from [IP::client_addr] and referer:
    [HTTP::header "Referer"]"
    # log local0. "============================================="
    }
    when HTTP_RESPONSE {
    log local5. "=================="
    log local5. "$LogString (response) - status: [HTTP::status]"
    foreach aHeader [HTTP::header names] {
    log local5. "$aHeader: [HTTP::header value $aHeader]"
    }
    # log local0. "============================================="
    

F5 BIG-IP DNS 구성

F5 BIG-IP DNS를 구성하려면 다음 작업을 실행합니다.

원격 로깅 서버 풀 만들기

  1. 기본 탭에서 DNS > 전송 > 부하 분산 > 풀 또는 로컬 트래픽 > 을 선택합니다.
  2. 표시되는 풀 목록 창에서 만들기를 클릭합니다.
  3. 표시되는 새 풀 창의 이름 필드에 풀의 고유한 이름을 입력합니다.
  4. 새 구성원 섹션에서 풀에 포함할 각 원격 로깅 서버의 IP 주소를 추가합니다.
    1. Address(주소) 입력란에 Google Security Operations 전달자 IP 주소를 입력하거나 노드 목록에서 노드 주소를 선택합니다.
    2. 서비스 포트 필드에 서비스 번호를 입력하거나 목록에서 서비스 이름을 선택합니다. 올바른 원격 로깅 포트를 구성했는지 확인합니다.
  5. 추가를 클릭한 다음 완료를 클릭합니다.

원격 고속 로그 대상 만들기

  1. 기본 탭에서 시스템 > 로그 > 구성 > 로그 대상을 선택합니다.
  2. 로그 대상 창이 나타나면 만들기를 클릭합니다.
  3. 이름 필드에 이 대상을 고유하게 식별할 수 있는 이름을 입력합니다.
  4. 유형 목록에서 원격 고속 로그를 선택합니다.
  5. 풀 이름 목록에서 BIG-IP 시스템이 로그 메시지를 전송할 원격 로그 서버 풀을 선택합니다.
  6. 프로토콜 목록에서 고속 로깅 풀 구성원이 사용하는 프로토콜을 선택합니다.
  7. 완료됨을 클릭합니다.

형식이 지정된 원격 고속 로그 대상 만들기

  1. 기본 탭에서 시스템 > 로그 > 구성 > 로그 대상을 선택합니다.
  2. 로그 대상 창이 나타나면 만들기를 클릭합니다.
  3. 이름 필드에 이 대상을 고유하게 식별할 수 있는 이름을 입력합니다.
  4. 유형 목록에서 형식이 지정된 로깅 대상을 원격 syslog로 선택합니다. 이제 BIG-IP 시스템이 형식이 지정된 텍스트 문자열을 로그 서버로 전송하도록 구성되었습니다.
  5. 유형 목록에서 로그 형식을 선택합니다.
  6. 전달 대상 탭에서 고속 로그 대상 목록을 선택한 다음 BIG-IP 시스템에서 로그 메시지를 전송할 원격 syslog 서버 풀을 가리키는 대상을 선택합니다.
  7. 완료됨을 클릭합니다.

게시자 만들기

  1. 기본 탭에서 시스템 > 로그 > 구성 > 로그 게시자를 선택합니다.
  2. 로그 게시자 창이 나타나면 만들기를 클릭합니다.
  3. 이름 입력란에 게시자를 고유하게 식별할 수 있는 이름을 입력합니다.
  4. 로그 게시자 목록에서 사용 가능한 목록에서 이전에 만든 대상을 선택합니다.
  5. 대상을 선택한 목록으로 이동하려면 << 이동을 클릭합니다.
  6. 형식이 지정된 대상을 사용하는 경우 원격 시스템로그, Splunk, ArcSight와 같이 로그 서버와 일치하는 새로 만든 대상을 선택합니다.
  7. 완료됨을 클릭합니다.

맞춤 DNS 로깅 프로필 만들기

  1. 기본 탭에서 DNS > 전송 > 프로필 > 기타 DNS 로깅 또는 로컬 트래픽 > 프로필 > 기타 > DNS 로깅을 선택합니다.
  2. 표시되는 DNS 로깅 프로필 목록 창에서 만들기를 클릭합니다.
  3. 이름 필드에 프로필의 고유한 이름을 입력합니다.
  4. 로그 게시자 목록에서 BIG-IP 시스템이 DNS 로그 항목을 전송하는 대상을 선택합니다.
  5. BIG-IP 시스템을 사용하려면 다음 단계를 따르세요.
    • 모든 DNS 쿼리를 로깅하려면 Log queries(쿼리 로깅) 설정에서 사용 설정 체크박스가 선택되어 있는지 확인합니다.
    • 모든 DNS 응답을 로깅하려면 응답 로깅 설정에서 사용 설정된 체크박스를 선택합니다.
    • 클라이언트가 전송한 쿼리 ID를 로그 메시지에 포함하려면 쿼리 ID 포함 설정에서 사용 설정된 체크박스를 선택합니다.
  6. 완료됨을 클릭합니다.

리스너에 DNS 로깅 프로필 추가

  1. 기본 탭에서 DNS > 전송 > 리스너 > DNS 리스너를 선택합니다.
  2. 서비스 섹션의 DNS 프로필 목록에서 이전에 구성한 DNS 프로필을 선택합니다.
  3. 업데이트를 클릭합니다.

F5 BIG-IP APM 로그를 수집하도록 Google Security Operations 전달자 구성

  1. SIEM 설정 > 전달자로 이동합니다.
  2. 새 전달자 추가를 클릭합니다.
  3. Forwarder Name(운송업체 이름) 입력란에 운송업체의 고유한 이름을 입력합니다.
  4. 제출을 클릭합니다. 전달자가 추가되고 수집기 구성 추가 창이 표시됩니다.
  5. 수집기 이름 입력란에 이름을 입력합니다.
  6. 로그 유형으로 F5 BIGIP Access Policy Manager를 선택합니다.
  7. 수집기 유형으로 Syslog를 선택합니다.
  8. 다음 필수 입력 매개변수를 구성합니다.
    • 프로토콜: 프로토콜을 지정합니다.
    • 주소: 수집기가 상주하고 syslog 데이터의 주소를 지정하는 대상 IP 주소 또는 호스트 이름을 지정합니다.
    • 포트: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 포트를 지정합니다.
  9. 제출을 클릭합니다.

Google Security Operations 전달자에 대한 자세한 내용은 Google Security Operations UI를 통해 전달자 구성 관리를 참고하세요.

전달자를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.

필드 매핑 참조

이 F5 BIG-IP APM 파서는 syslog 메시지에서 필드를 추출하여 애플리케이션 소스 (tmsh, tmm, apmd, httpd 또는 기타)를 기준으로 분류합니다. 그런 다음 이러한 추출된 필드를 UDM에 매핑하여 다양한 로그 형식을 처리하고 심각도, 위치, 사용자 정보와 같은 메타데이터로 데이터를 보강합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
애플리케이션 principal.application 값은 grok 필터에 의해 추출된 application 필드에서 가져옵니다.
bytes_in network.received_bytes 값은 grok 필터에 의해 추출된 bytes_in 필드에서 가져와서 부호 없는 정수로 변환됩니다.
bytes_out network.sent_bytes 값은 grok 필터에 의해 추출된 bytes_out 필드에서 가져와서 부호 없는 정수로 변환됩니다.
cmd_data principal.process.command_line 값은 kv 필터에 의해 추출된 cmd_data 필드에서 가져옵니다.
destination_ip target.ip 값은 grok 필터에 의해 추출된 destination_ip 필드에서 가져옵니다.
destination_port target.port 값은 grok 필터로 추출된 destination_port 필드에서 가져와 정수로 변환됩니다.
폴더 principal.process.file.full_path 값은 kv 필터에 의해 추출된 folder 필드에서 가져옵니다.
geoCountry principal.location.country_or_region 값은 grok 필터에 의해 추출된 geoCountry 필드에서 가져옵니다.
geoState principal.location.state 값은 grok 필터에 의해 추출된 geoState 필드에서 가져옵니다.
inner_msg security_result.description 다른 구체적인 설명을 사용할 수 없는 경우 grok 필터에서 추출한 inner_msg 필드에서 값을 가져옵니다.
ip_protocol network.ip_protocol 값은 grok 필터에 의해 추출된 ip_protocol 필드에서 가져옵니다.
principal_hostname principal.hostname 값은 grok 필터에 의해 추출된 principal_hostname 필드에서 가져옵니다.
principal_ip principal.ip 값은 grok 필터에 의해 추출된 principal_ip 필드에서 가져옵니다.
process_id principal.process.pid 값은 grok 필터에 의해 추출된 process_id 필드에서 가져옵니다.
역할 user_role.name 값은 grok 필터에 의해 추출된 role 필드에서 가져옵니다. role 필드에 'admin'이 포함된 경우(대소문자 구분 안 함) 값이 'ADMINISTRATOR'로 설정됩니다.
줄이는 것을 security_result.severity_details syslog 메시지의 원래 값이 여기에 저장됩니다. 값은 조건부 로직을 사용하여 severity 필드에서 파생됩니다.
CRITICAL -> CRITICAL
ERR -> ERROR
ALERT, EMERGENCY -> HIGH
INFO, NOTICE -> INFORMATIONAL
DEBUG -> LOW
WARN -> MEDIUM
source_ip principal.ip 값은 grok 필터에 의해 추출된 source_ip 필드에서 가져옵니다.
source_port principal.port 값은 grok 필터로 추출된 source_port 필드에서 가져와 정수로 변환됩니다.
상태 security_result.summary 값은 kv 필터에 의해 추출된 status 필드에서 가져옵니다.
타임스탬프 metadata.event_timestamp, timestamp 값은 grok 필터에 의해 추출된 timestamp 필드에서 가져와 타임스탬프 객체로 파싱됩니다. 최상위 event 객체의 timestamp 필드도 이 값을 가져옵니다.
사용자 principal.user.userid 값은 'id\" 또는 'ID\" 접두사를 삭제한 후 grok 필터로 추출된 user 필드에서 가져옵니다. 값은 다른 필드의 존재 여부에 따라 파생됩니다.
user가 있는 경우: USER_UNCATEGORIZED
source_ipdestination_ip가 있는 경우: NETWORK_CONNECTION
principal_ip 또는 principal_hostname가 있는 경우: STATUS_UPDATE
그 외의 경우: 'BIGIP_APM'으로 하드코딩된 GENERIC_EVENT 'F5'로 하드코딩됩니다. result 필드가 '실패'인 경우 값은 'BLOCK'으로 설정됩니다.

변경사항

2023-06-06

  • 파서를 새로 만들었습니다.