Apache Tomcat 로그 수집

파서 버전: 3.0

다음에서 지원:

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

Apache Tomcat은 HTTP 요청, 인증 이벤트, 서버 활동에 대한 JSON 액세스 로그를 생성하는 웹 애플리케이션 서버입니다. 파서는 JSON 형식 및 syslog 형식 로그에서 필드를 추출하여 통합 데이터 모델 (UDM)에 매핑합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • Windows Server 2016 이상 또는 systemd가 설치된 Linux 호스트
  • Tomcat 서버에 설치된 Bindplane 에이전트 (로컬 로그 파일 읽기)
  • 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
  • Tomcat 서버에 대한 관리 액세스

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

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

Google SecOps 고객 ID 가져오기

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

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

로컬 로그 파일을 읽어야 하므로 Tomcat 서버 자체에 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
    

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

추가 설치 리소스

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

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

구성 파일 찾기

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

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

구성 파일 설정

  • config.yaml의 전체 콘텐츠를 다음 구성으로 바꿉니다.

    receivers:
        filelog/tomcat:
            include:
                - /path/to/tomcat/logs/access-log.*.json
            start_at: beginning
    
    exporters:
        chronicle/tomcat:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: TOMCAT
            raw_log_field: body
    
    service:
        pipelines:
            logs/tomcat_to_chronicle:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/tomcat
    

구성 매개변수

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

  • 수신기 구성:

    • include: Tomcat JSON 액세스 로그 파일의 경로입니다. Tomcat 로그 디렉터리 및 파일 패턴과 일치하도록 조정합니다.
    • start_at: 기존 로그를 읽으려면 beginning로 설정하고 새 항목만 읽으려면 end로 설정합니다.
  • 내보내기 도구 구성:

    • creds_file_path: 수집 인증 파일의 전체 경로입니다.
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Google SecOps 콘솔에서 복사한 고객 ID
    • endpoint: 지역 엔드포인트 URL:
      • 미국: malachiteingestion-pa.googleapis.com
      • 유럽: europe-malachiteingestion-pa.googleapis.com
      • 아시아: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 전체 목록은 리전 엔드포인트를 참고하세요.

구성 파일 저장

  • 수정 후 파일을 저장합니다.
    • 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"
        

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 심각도 및 BLOCK 작업에 매핑됩니다. 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로 사용됩니다.
product_event metadata.product_event_type 변경 로그에서 매핑됨
summary security_result.summary 변경 로그에서 매핑됨
query additional.fields 변경 로그에서 매핑됨

변경 로그

이 파서의 변경 로그 보기

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