Apache Tomcat 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 Apache Tomcat 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 JSON 형식 로그에서 필드를 추출하여 통합 데이터 모델 (UDM)로 변환합니다. 기본값을 초기화하고, JSON 페이로드를 파싱하고, 잠재적인 JSON 파싱 오류를 처리하고, 메타데이터, 주체, 관찰자, 보안 결과 정보를 비롯한 원시 로그의 다양한 필드를 환경 컨텍스트의 맞춤 라벨을 추가하면서 해당 UDM 필드에 매핑합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • Windows 2016 이상 또는 systemd가 설치된 Linux 호스트
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있음
  • Apache Tomcat 버전 9.0.70 이상
  • $CATALINA_BASE/conf$CATALINA_BASE/logs에 대한 쓰기 액세스 권한

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

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

Google SecOps 고객 ID 가져오기

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

로그 파일을 수집하도록 Tomcat 서버에 Bindplane 에이전트 설치

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

Windows 설치

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 설치

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

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

추가 설치 리소스

추가 설치 옵션은 설치 가이드를 참고하세요.

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

  1. 구성 파일에 액세스합니다.
    • config.yaml 파일을 찾습니다. 일반적으로 Linux에서는 /etc/bindplane-agent/ 디렉터리에 있고 Windows에서는 설치 디렉터리에 있습니다.
    • 텍스트 편집기 (예: nano, vi, 메모장)를 사용하여 파일을 엽니다.
  2. 다음과 같이 config.yaml 파일을 수정합니다.

    receivers:
        filelog/tomcat:
        include: [ /path/to/tomcat/logs/access-log.*.json ]
        start_at: beginning
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'TOMCAT'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/chronicle_w_labels
    
    • /path/to/tomcat/logs를 바꿉니다.
    • <customer_id>를 실제 고객 ID로 바꿉니다.
    • Google SecOps 수집 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 /path/to/ingestion-authentication-file.json를 업데이트합니다.

Bindplane 에이전트를 다시 시작하여 변경사항 적용

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

    sudo systemctl restart bindplane-agent
    
  • Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Tomcat에서 JSON 액세스 로그 구성

  1. $CATALINA_BASE/conf/server.xml에서 Tomcat 파일을 엽니다.
  2. <Host> 태그를 찾아 다음을 추가합니다.

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
          directory="logs"
          prefix="access-log"
          suffix=".json"
          rotatable="true"
          maxDays="7"/>
    
  3. Tomcat을 다시 시작하여 변경사항을 적용합니다.

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. 매일 새로운 JSON 로그 파일이 표시됩니다 (예: logs/access-log.2025-07-02.json).

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
@timestamp metadata.event_timestamp 원시 로그의 @timestamp 값이 이 UDM 필드에 직접 매핑됩니다. 이벤트가 발생한 시간을 나타냅니다.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value 에이전트의 임시 ID가 additional 필드에 키-값 쌍으로 추가됩니다.
agent.hostname observer.hostname 상담사의 호스트 이름이 관찰자 호스트 이름으로 사용됩니다.
agent.id observer.asset_id 에이전트 ID는 에이전트 유형과 결합되어 관찰자 저작물 ID를 만듭니다 (예: filebeat: <agent_id>).
agent.type observer.application 에이전트 유형은 관찰자 애플리케이션으로 사용됩니다.
agent.version observer.platform_version 에이전트 버전이 관찰자 플랫폼 버전으로 사용됩니다.
host.hostname principal.hostname 호스트의 호스트 이름이 기본 호스트 이름으로 사용됩니다.
host.id principal.asset.asset_id 호스트 ID 앞에 Host Id:가 추가되어 기본 저작물 ID가 생성됩니다.
host.ip principal.ip, observer.ip 호스트의 IP 주소는 주 구성원 및 관찰자 IP 모두에 사용됩니다. IP가 여러 개 있으면 배열로 병합됩니다.
host.mac principal.mac 호스트의 MAC 주소가 기본 MAC 주소로 사용됩니다. MAC이 여러 개 있으면 배열로 병합됩니다.
host.os.family principal.platform 호스트 OS 패밀리가 rhel 또는 redhat인 경우 기본 플랫폼은 LINUX로 설정됩니다.
host.os.kernel principal.platform_patch_level 호스트 OS 커널 버전이 기본 플랫폼 패치 수준으로 사용됩니다.
host.os.name additional.fields[os_name].value.string_value 호스트 OS 이름이 additional 필드에 키-값 쌍으로 추가됩니다.
host.os.version principal.platform_version 호스트 OS 버전이 기본 플랫폼 버전으로 사용됩니다.
log.file.path principal.process.file.full_path 로그 경로는 기본 프로세스 파일의 전체 경로로 사용됩니다.
log_level security_result.severity, security_result.severity_details, security_result.action 로그 수준은 보안 결과 심각도, 심각도 세부정보, 작업을 결정하는 데 사용됩니다. DEBUG, INFO, AUDIT는 INFORMATIONAL 심각도 및 ALLOW 작업에 매핑됩니다. ERROR는 ERROR 심각도 및 차단 작업에 매핑됩니다. WARNING 및 WARN은 MEDIUM 심각도 및 BLOCK 작업에 매핑됩니다. 원시 log_level 값도 severity_details에 매핑됩니다.
logstash.irm_environment additional.fields[irm_environment].value.string_value Logstash의 Iron Mountain 환경이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.irm_region additional.fields[irm_region].value.string_value Logstash의 Iron Mountain 지역이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.irm_site additional.fields[irm_site].value.string_value Logstash의 Iron Mountain 사이트가 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.process.host intermediary.hostname Logstash 처리 호스트는 중개 호스트 이름으로 사용됩니다.
logstash.process.timestamp metadata.collected_timestamp Logstash 처리 타임스탬프가 수집된 타임스탬프로 사용됩니다.
logstash.xyz_environment additional.fields[xyz_environment].value.string_value Logstash의 xyz 환경이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.xyz_region additional.fields[xyz_region].value.string_value Logstash의 xyz 리전이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.xyz_site additional.fields[xyz_site].value.string_value Logstash의 xyz 사이트가 additional 필드에 키-값 쌍으로 추가됩니다.
message metadata.description 메시지 필드는 JSON으로 파싱되며 event_message 필드는 메타데이터 설명으로 사용됩니다. 중개자 애플리케이션은 logstash으로 하드코딩되어 있습니다. 메타데이터 이벤트 유형은 USER_UNCATEGORIZED로 하드코딩됩니다. 메타데이터 로그 유형은 원시 로그의 batch.type 또는 batch.log_type에서 TOMCAT로 설정됩니다. 메타데이터 제품 이름은 Tomcat로 하드코딩됩니다. 메타데이터 공급업체 이름은 Tomcat로 하드코딩됩니다.
user principal.user.userid 원시 로그의 사용자 필드가 기본 사용자 ID로 사용됩니다.

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