전달자 설치 및 구성

다음에서 지원:

이 문서에서는 Docker를 사용하여 Linux 및 Windows 시스템에 Google Security Operations 전달자를 설치하고 구성하는 방법을 설명합니다.

전달자는 네트워크 내 머신 또는 기기(예: 서버)에 설치할 수 있는 소프트웨어 구성요소입니다. 로그 데이터를 수집하고 Google SecOps 인스턴스로 전달합니다.

전달자를 사용하면 지원되지 않는 로그 유형에 대한 클라우드 버킷이나 서드 파티 API를 사용하지 않고도 환경에서 Google SecOps로 로그를 직접 전송할 수 있습니다. 전달자는 배포 준비가 완료된 솔루션으로 제공되므로 수집 API와 수동으로 통합할 필요가 없습니다.

Google SecOps는 안전하게 전달자를 배포할 수 있도록 Docker 컨테이너를 제공합니다. 물리적 머신이나 가상 머신에서 Docker 컨테이너를 실행하고 관리할 수 있습니다.

시스템 요구사항

다음은 일반적인 권장사항입니다. 시스템별 권장사항은 Google SecOps 지원팀에 문의하세요.

Linux 시스템

전달자는 Debian, Ubuntu, Red Hat, Suse와 같은 다양한 Linux 배포판에서 지원됩니다. 최적의 성능을 위해 Docker 버전 20.10.21 이상을 사용하는 것이 좋습니다.

  • RAM: Google SecOps에서 수집을 허용하는 수집된 데이터 유형마다 RAM 1GB가 필요합니다. 예를 들어 서로 다른 수집기 4개를 지정한 경우 모든 수집기 4개의 데이터를 수집하려면 RAM 4GB가 필요합니다.

  • CPU: CPU 2개로 모든 데이터 유형에서 초당 이벤트(EPS)를 최대 10,000개까지 처리할 수 있습니다. 전달자가 EPS를 10,000개가 넘게 처리할 것으로 예상되면 CPU 4~6개를 할당합니다.

  • 디스크: 전달자에서 처리하는 데이터 양에 관계없이 디스크 공간 20GB가 권장됩니다.

Windows 시스템

전달자는 Microsoft Windows Server 2022에서 지원됩니다. 최적의 성능을 위해 Docker 버전 20.10.21 이상을 사용하는 것이 좋습니다.

  • RAM: Google SecOps에서 수집을 허용하는 수집된 데이터 유형마다 RAM 1.5GB가 필요합니다. 예를 들어 서로 다른 수집기 4개를 지정한 경우 모든 수집기 4개의 데이터를 수집하려면 RAM 6GB가 필요합니다.

  • CPU: CPU 2개로 모든 데이터 유형에서 초당 이벤트(EPS)를 최대 10,000개까지 처리할 수 있습니다. 전달자가 EPS를 10,000개가 넘게 처리할 것으로 예상되면 CPU 4~6개를 할당합니다.

  • 디스크: 전달자에서 처리하는 데이터 양에 관계없이 디스크 공간 20GB가 권장됩니다.

시작하기 전에

전달자를 구현하기 전에 다음 사항을 고려하세요.

Google IP 주소 범위

전달자를 구성할 때 IP 주소 범위 지정과 관련된 방화벽 설정을 조정해야 할 수 있습니다. Google API 및 서비스에서 사용하는 기본 도메인 IP 범위는 동적으로 할당되며 자주 변경됩니다. 자세한 내용은 Google IP 주소 범위 가져오기를 참조하세요.

방화벽 구성 확인

전달자 컨테이너가 방화벽이나 인증된 프록시 뒤에 있는 경우 다음 호스트에 대한 액세스를 열어야 합니다.

연결 유형 대상 포트
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

구현 계획

전달기를 구성하기 전에 구현을 계획합니다. 이렇게 하면 데이터 소스와 구성 속성을 보안 목표, 인프라 기능, 확장성 요구사항에 맞게 조정할 수 있습니다.

처리할 데이터 확인

다음 옵션에서 가장 관련이 높은 전달자의 데이터 소스를 식별합니다.

  • Splunk: 이미 로그 관리에 Splunk를 사용하고 있는 경우에 적합합니다.

  • Syslog: 다양한 기기의 시스템 로그와 애플리케이션 로그에 사용할 수 있습니다.

  • 파일: 모든 로그 파일을 유연하게 수집할 수 있습니다.

  • 패킷: 원시 트래픽을 캡처하여 심층적인 네트워크 가시성을 제공합니다.

  • Kafka: 분산 시스템의 대용량 실시간 로그 집계에 적합합니다.

  • WebProxy: 웹 트래픽 및 사용자 행동에 대한 인사이트를 얻는 데 적합합니다.

제한사항

데이터 피드의 최대 로그 줄 크기는 4MB입니다.

구성 확인

전달기를 설치하기 전에 성공적인 구현을 위해 다음과 같은 주요 속성을 확인합니다.

데이터 압축

데이터 또는 로그 압축은 로그를 Google SecOps로 전송할 때 네트워크 대역폭 소비를 줄여줍니다. 하지만 CPU 사용량이 늘어날 수 있습니다. 대역폭 절약과 CPU 사용량 간의 최적의 균형은 로그 유형, 데이터의 압축 가능성, 사용 가능한 CPU 리소스, 네트워크 대역폭 제약 조건과 같은 여러 가지 요인에 따라 달라집니다.

예를 들어 텍스트 기반 로그는 일반적으로 압축이 잘 되고 적은 CPU 사용량에서도 대역폭을 크게 절약할 수 있지만 암호화된 데이터나 바이너리 데이터는 효율적으로 압축되지 않고 CPU 사용량이 더 높아질 수 있습니다.

기본적으로 로그 압축은 중지되어 있습니다. 특정 환경과 로그 데이터 특성을 기반으로 절충점을 평가합니다.

디스크 버퍼링

디스크 버퍼링을 사용 설정하는 것이 좋습니다. 디스크 버퍼링을 사용하면 메모리 대신 디스크에 백로깅된 메시지를 버퍼링하여 전달자나 호스트 비정상 종료 시 데이터 손실을 방지할 수 있습니다. 하지만 디스크 버퍼링을 사용 설정하면 성능이 영향을 받을 수 있습니다.

디스크 버퍼링이 중지되면 전달자는 로그 유형마다(예: 커넥터별)에 메모리(RAM) 1GB를 할당합니다. 디스크 버퍼링에 허용되는 최대 메모리는 4GB입니다.

정규 표현식 필터

정규 표현식 필터를 사용하면 원시 로그 데이터와 패턴을 일치시켜 로그를 필터링할 수 있습니다. 필터는 RE2 구문을 사용합니다. 필터는 정규 표현식을 포함해야 하며, 선택적으로 일치 항목이 있을 때의 동작을 정의할 수 있습니다.

임의 라벨

라벨은 키-값 쌍을 사용하여 로그에 커스텀 메타데이터를 연결하는 데 사용됩니다. 전체 전달자에 또는 전달자의 특정 수집기 내에서 라벨을 구성할 수 있습니다. 둘 다 있는 경우 키가 겹치면 수집기 수준 라벨이 전달자 수준 라벨보다 우선시됩니다.

네임스페이스

네임스페이스 라벨을 사용하면 고유한 네트워크 세그먼트에서 로그를 식별하고 중복 IP 주소의 충돌을 해결할 수 있습니다. 전체 전달자에 대해 또는 전달자의 특정 수집기 내에서 네임스페이스 라벨을 구성할 수 있습니다. 둘 다 있는 경우 수집기 수준 네임스페이스가 전달자 수준 네임스페이스를 재정의합니다.

로그 유형

Google SecOps는 다양한 로그 유형을 지원합니다. 전체 목록은 지원되는 데이터 세트를 참조하세요.

부하 분산 및 고가용성 옵션

부하 분산은 syslog 수집 유형에서만 지원됩니다.

전달자는 데이터 소스와 전달자 인스턴스 사이에 Layer 4 부하 분산기가 설치된 환경에 배포될 수 있습니다. 이렇게 하면 여러 전달자에 로그 수집을 배포하여 장애 발생 시 로그를 다른 전달자로 리디렉션하여 신뢰성을 강화할 수 있습니다.

전달자에는 부하 분산기의 상태 점검에 응답하고 시작 및 종료 중에 로그 손실을 방지하는 HTTP 서버가 기본 제공됩니다. HTTP 서버, 부하 분산, 고가용성 옵션을 구성하여 상태 점검의 제한 시간과 상태 코드를 지정할 수 있습니다. 이 구성은 컨테이너 기반 배포와 부하 분산기 모두와 호환됩니다.

설정 설명
단계적 제한 시간 전달자가 상태 점검에 대한 응답으로 unready 상태를 반환한 후에도 새 연결이 수락되는 시간입니다. 또한 중지 신호를 수신하고 실제로 서버 자체의 종료를 시작하기까지 기다리는 시간입니다. 이렇게 하면 부하 분산기 시간이 풀에서 전달자를 삭제할 수 있습니다.

유효한 값은 초 단위입니다. 예를 들어 10초를 지정하려면 10.을 입력합니다. 십진수 값은 허용되지 않습니다.

기본값: 15초
드레이닝 제한 시간 전달자가 서버에서 연결을 닫기 전에 활성 연결이 스스로 종료될 때까지 기다리는 시간입니다. 예를 들어 5초를 지정하려면 5.을 입력합니다. 십진수 값은 허용되지 않습니다.

기본값: 10초
포트 HTTP 서버가 부하 분산기에서 상태 점검을 리슨하는 포트 번호입니다. 값은 에서 1,024~65,535 사이여야 합니다.

기본값: 8080
IP 주소 또는 호스트 이름 서버에서 리슨해야 하는 IP 주소나 IP 주소로 변환될 수 있는 호스트 이름입니다.

기본값: 0.0.0.0(로컬 시스템)
읽기 제한 시간 HTTP 서버를 조정하는 데 사용됩니다. 일반적으로 기본 설정에서 변경할 필요가 없습니다. 헤더와 본문 등 전체 요청을 읽을 수 있는 최대 시간입니다. 읽기 제한 시간 필드와 읽기 헤더 제한 시간 필드 모두 설정할 수 있습니다.

기본값: 3초
헤더 읽기 제한 시간 HTTP 서버를 조정하는 데 사용됩니다. 일반적으로 기본 설정에서 변경할 필요가 없습니다. 요청 헤더를 읽을 수 있는 최대 시간입니다. 헤더를 읽으면 연결의 읽기 기한이 재설정됩니다.

기본값: 3초
쓰기 제한 시간 HTTP 서버를 조정하는 데 사용됩니다. 일반적으로 기본 설정에서 변경할 필요가 없습니다. 응답을 보낼 수 있는 최대 시간입니다. 새 요청 헤더를 읽으면 재설정됩니다.

기본값: 3초
유휴 제한 시간 HTTP 서버를 조정하는 데 사용됩니다. 일반적으로 기본 설정에서 변경할 필요가 없습니다. 유휴 상태 연결이 사용 설정된 경우 다음 요청을 기다리는 최대 시간입니다. 유휴 상태 제한 시간 필드가 0으로 설정되면 읽기 제한 시간 필드 값이 사용됩니다. 둘 다 0이면 읽기 헤더 제한 시간 필드가 사용됩니다.

기본값: 3초
사용 가능한 상태 코드 활성 확인이 수신되고 전달자를 사용할 수 있는 경우에 전달자가 반환하는 상태 코드입니다. 컨테이너 스케줄러와 조정자가 활성 검사를 보내는 경우가 많습니다.

기본값: 204
준비 상태 코드 다음 상황 중 하나에서 트래픽을 허용할 수 있는 경우에 전달자가 반환하는 상태 코드입니다.
  • 준비 확인은 컨테이너 스케줄러나 조정자에서 수신됩니다.
  • 상태 점검은 기존 부하 분산기에서 수신됩니다.
기본값: 204
준비되지 않음 상태 코드 트래픽을 허용할 수 없는 경우에 전달자가 반환하는 상태 코드입니다.

기본값: 503

1단계: 전달자 구성 정의

배포된 각 전달자를 사용하려면 전달자 구성 파일이 필요합니다. 전달자 구성 파일은 데이터를 Google SecOps 인스턴스로 전송하는 설정을 지정합니다. 각 호스트와 연결된 수집기를 명확하게 구분하려면 모든 호스트에 대한 새 구성 파일을 생성하는 것이 좋습니다.

Google Cloud는 각 전달자 인스턴스의 특정 메타데이터로 이러한 구성 파일을 맞춤설정합니다. 이러한 파일을 특정 요구사항에 맞게 수정하고 수집하려는 로그 유형에 대한 세부정보를 통합할 수 있습니다.

전달자 구성 파일을 UI, API를 통해 또는 수동으로 생성할 수 있습니다.

  • 이 UI는 전달자를 구성할 수 있는 그래픽 인터페이스를 제공하며 전달자 구성을 만드는 데 권장되는 방법입니다. 가장 간단한 시작 방법이며 프로그래밍이 필요하지 않습니다. Google SecOps 사용자 인터페이스를 사용하여 구성 파일을 다운로드하려면 Google SecOps UI를 통해 전달자 구성 관리를 참조하세요.

  • 이 API는 전달자를 프로그래매틱 방식으로 구성하는 방법을 제공합니다. 전달자 구성을 프로그래매틱 방식으로 다운로드하려면 Forwarder Management API를 참조하세요.

  • 구성 파일을 수동으로 만들고 구성 옵션을 구성 파일에 추가할 수 있습니다. 정확성을 보장하고 잠재적인 오류를 최소화하려면 구성 파일을 생성할 때 UI 메서드를 사용하는 것이 좋습니다. 파일을 수동으로 생성하려면 전달자 구성 파일 수동 관리를 참조하세요.

2단계: Docker 설치

이 섹션에서는 시스템에 Docker를 설치하는 방법을 설명합니다.

Linux 시스템

Docker는 오픈소스이며 필요한 모든 문서는 오픈소스 Docker 커뮤니티에서 제공됩니다. Docker 설치에 대한 안내는 Docker Engine 설치를 참조하세요.

Docker가 시스템에 올바르게 설치되었는지 확인하려면 다음 명령어를 실행합니다(승격된 권한 필요).

   docker ps
  

다음 응답은 Docker가 올바르게 설치되었음을 나타냅니다.

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Windows 시스템

관리자 권한으로 Windows PowerShell을 시작하고 다음 단계를 수행하여 Google Cloud에 대한 네트워크 연결을 확인합니다.

  1. 시작을 클릭합니다.

  2. PowerShell을 입력하고 Windows PowerShell을 마우스 오른쪽 버튼으로 클릭합니다.

  3. 관리자 권한으로 실행을 클릭합니다.

  4. 다음 명령어를 실행합니다.

    C:\> test-netconnection <host> -port <port>
    

    명령어 출력에서 TcpTestSucceeded 상태가 true임을 나타냅니다.

    예를 들면 다음과 같습니다.

    C:\> test-netconnection malachiteingestion-pa.googleapis.com -port 443
    ComputerName     :  malachiteingestion-pa.googleapis.com
    RemoteAddress    : 198.51.100.1
    RemotePort       : 443
    InterfaceAlias   : Ethernet
    SourceAddress    : 203.0.113.1
    TcpTestSucceeded : True
    

Docker를 설치하려면 Windows 서버에서 다음을 수행합니다.

  1. Microsoft Windows 컨테이너 기능을 사용 설정합니다.

    Install-WindowsFeature containers -Restart
    
  2. PowerShell 관리자 모드에서 다음 명령어를 실행하여 Docker CE를 설치합니다.

    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
    
    .\install-docker-ce.ps1
    
    
  3. 실행 중인 컨테이너 목록을 반환하는 docker ps 명령어를 실행하여 Docker 명령줄 인터페이스를 테스트합니다. Docker가 올바르게 설치되지 않으면 오류가 표시됩니다.

    자세한 내용은 시작하기: 컨테이너용 Windows 준비를 참조하세요.

    기업 배포의 경우 Docker EE라고도 하는 Mirantis 컨테이너 런타임을 설치합니다.

3단계: 전달자 설치

이 섹션에서는 Docker 컨테이너를 사용하여 전달자를 설치하는 방법을 설명합니다.

3a단계: 구성 파일을 전달자 디렉터리로 이동

전달자 설치 프로세스의 첫 번째 단계는 필요한 구성 파일을 지정된 전달자 디렉터리에 배치하는 것입니다.

Linux 시스템

다음 단계를 수행하여 구성 파일을 전달자 디렉터리에 배치합니다.

  1. 터미널을 사용하여 Linux 전달자 호스트에 연결합니다.

  2. Docker 컨테이너를 실행하는 홈 디렉터리로 디렉터리를 변경합니다.

  3. 전달자 구성 파일을 저장할 디렉터리를 만듭니다.

      mkdir /opt/chronicle/'CONFIG'
    

    디렉터리 이름 CONFIG를 원하는 이름으로 바꿀 수 있습니다. docker run 명령어를 실행할 때 같은 디렉터리 이름을 사용해야 합니다.

  4. 디렉터리를 변경합니다.

      cd /opt/chronicle/config
    

  5. 파일이 전송된 후 구성 파일이 /opt/chronicle/config 디렉터리에 있는지 확인합니다.

      ls -l
    

Windows 시스템

C:\config 폴더를 만들고 구성 파일을 이 폴더에 배치합니다. 폴더 이름 config를 원하는 이름으로 바꿀 수 있습니다. docker run 명령어를 실행할 때 같은 폴더 이름을 사용해야 합니다.

3b단계: 전달자 실행

구성 파일이 지정된 전달자 디렉터리에 배치되면 전달자를 시작하거나 Google SecOps 컨테이너의 최신 버전으로 업그레이드할 수 있습니다.

컨테이너를 업그레이드하는 경우 다음 명령어를 실행하여 이전 Docker 실행을 삭제합니다.

      docker stop 'cfps'
    

      docker rm 'cfps'
    

이 예시에서 Docker 컨테이너 이름은 cfps입니다.

전달자를 처음 시작하거나 Google SecOps 컨테이너의 최신 버전으로 업그레이드하려면 다음을 수행합니다.

  1. Google Cloud에서 최신 Docker 이미지를 가져옵니다.

    Linux 시스템:

        docker pull gcr.io/chronicle-container/cf_production_stable
    

    Windows 시스템:

      docker pull gcr.io/chronicle-container/cf_production_stable_windows
    
  2. Docker 컨테이너에서 전달자를 시작합니다.

    Linux 시스템:

      docker run \
        --detach \
        --name cfps \
        --restart=always \
        --log-opt max-size=100m \
        --log-opt max-file=10 \
        --net=host \
        -v /opt/chronicle/config:/opt/chronicle/external \
        gcr.io/chronicle-container/cf_production_stable
    

    Windows 시스템:

      docker run `
        --detach `
        --name cfps `
        --restart=always `
        --log-opt max-size=100m `
        --log-opt max-file=10 `
        -p 0.0.0.0:10515-10520:10515-10520/udp `
        -v C:\config\:C:/opt/chronicle/external `
        gcr.io/chronicle-container/cf_production_stable_windows
    

Docker 1.13부터 --log-opt 옵션을 사용할 수 있습니다. 이러한 옵션은 컨테이너 로그 파일 크기를 제한하며 사용하는 Docker 버전에서 이 옵션을 지원하는 경우에만 사용해야 합니다.

전달자 관리

다음 섹션에서는 전달자를 관리하는 방법을 안내합니다.

전달자 로그 보기

  • 전달자 로그를 보려면 다음 명령어를 실행합니다.

    docker logs cfps
    
  • 로그가 저장되는 파일의 경로를 보려면 다음 명령어를 실행합니다.

    docker inspect --format='{{.LogPath}}' CONTAINER_NAME
    
  • 실시간 실행 로그를 보려면 다음 명령어를 실행합니다.

    docker logs cfps -f
    
  • 파일에 로그를 저장하려면 다음 명령어를 실행합니다.

    docker logs cfps &> logs.txt
    

전달자 제거

다음 Docker 명령어를 사용하면 전달자를 중지, 제거 또는 삭제할 수 있습니다.

  • 전달자 컨테이너를 중지하거나 제거하려면 다음 명령어를 실행합니다.

    docker stop cfps
    
  • 전달자 컨테이너를 삭제하려면 다음 명령어를 실행합니다.

    docker rm cfps
    

전달자 업데이트

전달자는 다음과 같은 업데이트 프로세스가 있는 구성요소 2개로 구성됩니다.

  • 전달자 번들: 이 구성요소는 자동으로 업데이트되므로 다시 시작할 필요가 없습니다.

  • 전달자 Docker 이미지: 이 구성요소의 업데이트는 수동으로 수행됩니다. 3b단계의 설명대로 현재 전달자 인스턴스를 중지하고 새 전달자 인스턴스를 시작해야 합니다.

특정 데이터 세트의 전달자 수집 가이드

전달자를 사용하여 특정 데이터 세트가 수집되는 방법을 알아보려면 다음을 참조하세요.