AlgoSec Security Management 로그 수집

다음에서 지원:

이 문서에서는 Bindplane 에이전트를 사용하여 AlgoSec 보안 관리 로그를 Google Security Operations로 처리하는 방법을 설명합니다. 파서는 필드를 추출하여 CEF 형식 로그와 비-CEF 형식 로그를 모두 처리합니다. 타임스탬프, IP 주소, 이벤트 세부정보와 같은 일반적인 필드를 파싱한 후 제품 (Suite, Firewall Analyzer, FireFlow) 및 이벤트 ID를 기반으로 UDM에 매핑하여 적절한 메타데이터 및 보안 결과 필드를 설정합니다. 또한 로그인/로그아웃, 관리 알림, 분석 보고서와 같은 특정 이벤트 유형을 처리하여 관련 세부정보를 추출하고 심각도 수준을 설정합니다.

시작하기 전에

  • Google SecOps 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상을 사용 중이거나 systemd와 함께 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • AlgoSec Firewall Analyzer, FireFlow, AppViz에 대한 액세스 권한이 있는지 확인합니다.

Google SecOps 처리 인증 파일 가져오기

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

Google SecOps 고객 ID 가져오기

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

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. 구성 파일에 액세스합니다.

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

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/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
            ingestion_labels:
                log_type: ALGOSEC
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.

  4. <customer_id>를 실제 고객 ID로 바꿉니다.

  5. Google SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 /path/to/ingestion-authentication-file.json를 업데이트합니다.

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

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

방화벽 분석기의 Syslog 구성

  1. SSH를 사용하여 AFA 어플라이언스에 로그인합니다.
  2. syslog-ng 구성 디렉터리로 이동합니다.

    cd /etc/syslog-ng
    
  3. 기존 구성을 백업합니다.

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. syslog-ng 구성 파일을 수정합니다.

    vi syslog-ng.conf
    
  5. 다음 줄을 추가하여 원격 syslog 서버를 정의합니다.

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • <bindplane-server-ip>를 Bindplane 에이전트의 IP 주소로 바꿉니다.
  6. 저장 후 편집기를 종료합니다.

  7. syslog-ng 서비스를 다시 시작하여 변경사항을 적용합니다.

    service syslog-ng restart
    
  8. 선택사항: Syslog 구성 확인

    1. 관리 > Syslog 서버 설정으로 이동합니다.
    2. 연결 테스트를 클릭합니다.

FireFlow용 Syslog 구성

  1. FireFlow 머신에 root로 로그인합니다.
  2. 수정할 /etc/syslog.conf 파일을 엽니다.

    vi /etc/syslog.conf
    
  3. local0.*@<BindplaneAgent> 파일에 다음 줄을 추가합니다.

    • <BindplaneAgent>를 Bindplane 에이전트 서버의 IP 주소로 바꿉니다.

AppViz용 Syslog 구성

  1. SSH를 통해 AppViz 어플라이언스에 로그인합니다.
  2. syslog-ng 구성 디렉터리로 이동합니다.

    cd /etc/syslog-ng
    
  3. 기존 구성을 백업합니다.

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. syslog-ng 구성 파일을 수정합니다.

    vi syslog-ng.conf
    
  5. 다음을 추가하여 원격 syslog 서버를 정의합니다.

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • <bindplane-server-ip>를 Bindplane 에이전트의 IP 주소로 바꿉니다.
  6. 저장 후 편집기를 종료합니다.

  7. syslog-ng 서비스를 다시 시작하여 변경사항을 적용합니다.

    service syslog-ng restart
    
  8. Syslog 구성 확인:

    1. AppViz 인터페이스에서 관리 > Syslog 서버 설정으로 이동합니다.
    2. 연결 테스트를 클릭합니다.

로그인 및 로그아웃 이벤트에 syslog 구성

  1. SSH를 통해 ASMS 어플라이언스에 로그인합니다.
  2. syslog-ng 구성 디렉터리로 이동합니다.

    cd /etc/syslog-ng
    
  3. 기존 구성을 백업합니다.

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. syslog-ng 구성 파일을 수정합니다.

    vi syslog-ng.conf
    
  5. 다음을 추가하여 원격 syslog 서버를 정의합니다.

    destination d_remote {
        udp("<bindplane-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • <bindplane-server-ip>를 syslog 서버의 IP 주소로 바꿉니다.
  6. 저장 후 편집기를 종료합니다.

  7. syslog-ng 서비스를 다시 시작하여 변경사항을 적용합니다.

    service syslog-ng restart
    

UDM 매핑 표

로그 필드 UDM 매핑 논리
by_user principal.user.user_display_name 원시 로그의 by_user 필드 값이 이 UDM 필드에 할당됩니다.
collection_time metadata.event_timestamp seconds 및 nanos 필드는 결합되어 타임스탬프를 만듭니다.
comm target.process.command_line grok를 사용하여 desc 필드에서 추출된 comm 필드의 값이 이 UDM 필드에 할당됩니다.
datetime metadata.event_timestamp 날짜 및 시간은 원시 로그에서 추출되며 이벤트 타임스탬프를 채우는 데 사용됩니다.
desc metadata.description 다른 설명을 사용할 수 없는 경우 원시 로그의 desc 필드 값이 이 UDM 필드에 할당됩니다.
dest_ip target.ip 원시 로그의 dest_ip 필드 값이 이 UDM 필드에 할당됩니다.
dest_port target.port 원시 로그의 dest_port 필드 값이 이 UDM 필드에 할당됩니다.
details security_result.summary 원시 로그의 details 필드 값이 이 UDM 필드에 할당됩니다.
device principal.asset.hostname 원시 로그의 device 필드 값이 이 UDM 필드에 할당됩니다.
dst_ip target.ip 원시 로그의 dst_ip 필드 값이 이 UDM 필드에 할당됩니다.
dst_port target.port 원시 로그의 dst_port 필드 값이 이 UDM 필드에 할당됩니다.
event_id metadata.product_event_type 원시 로그의 event_id 필드 값이 이 UDM 필드에 할당됩니다. 또한 파서 로직에서 metadata.event_type 및 기타 필드를 결정하는 데 사용됩니다.
event_name metadata.product_event_type 원시 로그의 event_name 필드 값이 이 UDM 필드에 할당됩니다.
firewall target.hostname 원시 로그의 firewall 필드 값이 이 UDM 필드에 할당됩니다.
host principal.hostname 원시 로그의 host 필드 값이 이 UDM 필드에 할당됩니다.
host_type principal.asset.category 원시 로그의 host_type 필드 값이 이 UDM 필드에 할당됩니다.
iporhost principal.ip / principal.hostname / target.ip / target.hostname / observer.ip / observer.hostname 값이 IP 주소인 경우 로그 소스 및 이벤트 유형에 따라 principal.ip, target.ip 또는 observer.ip에 매핑됩니다. 호스트 이름인 경우 principal.hostname, target.hostname 또는 observer.hostname에 매핑됩니다.
IP principal.ip 원시 로그의 IP 필드 값이 이 UDM 필드에 할당됩니다.
kv_data security_result.summary 원시 로그의 kv_data 필드 값이 이 UDM 필드에 할당됩니다.
log_type metadata.log_type ALGOSEC로 하드코딩되었습니다.
metric security_result.action_details 원시 로그의 metric 필드 값이 이 UDM 필드에 할당됩니다.
msg security_result.summary/security_result.description 원시 로그의 msg 필드 값은 컨텍스트에 따라 보안 결과의 요약 또는 설명을 채우는 데 사용됩니다. risk_level, risk_count, risk_code, risk_title 필드를 추출하는 데도 사용됩니다.
pid target.process.pid grok를 사용하여 desc 필드에서 추출된 pid 필드의 값이 이 UDM 필드에 할당됩니다.
product metadata.product_name 원시 로그의 product 필드 값이 이 UDM 필드에 할당됩니다.
report security_result.description 원시 로그의 report 필드 값이 보안 결과 설명에 포함됩니다.
report_data.Device IP target.ip 파싱된 JSON 데이터의 Device IP 필드 값이 이 UDM 필드에 할당됩니다.
report_data.Highest Risk Level security_result.description 파싱된 JSON 데이터의 Highest Risk Level 필드 값은 보안 결과 설명에 포함됩니다. 보안 결과의 심각도를 결정하는 데도 사용됩니다.
report_data.Security Rating Score security_result.description 파싱된 JSON 데이터의 Security Rating Score 필드 값은 보안 결과 설명에 포함됩니다.
Requestor.Email principal.user.email_addresses 파싱된 JSON 데이터의 Requestor 객체 내 Email 필드 값이 이 UDM 필드에 할당됩니다.
Requestor.Name principal.user.user_display_name 파싱된 JSON 데이터의 Requestor 객체 내 Name 필드 값이 이 UDM 필드에 할당됩니다.
RequestType target.resource.attribute.labels 원시 로그의 RequestType 필드 값이 대상 리소스에 라벨로 추가됩니다.
risk_title security_result.summary 원시 로그의 risk_title 필드 값이 이 UDM 필드에 할당됩니다.
src_ip principal.ip 원시 로그의 src_ip 필드 값이 이 UDM 필드에 할당됩니다.
src_port principal.port 원시 로그의 src_port 필드 값이 이 UDM 필드에 할당됩니다.
status security_result.description/security_result.action_details 원시 로그의 status 필드 값은 컨텍스트에 따라 보안 결과 또는 작업 세부정보의 설명에 포함됩니다. 보안 결과의 심각도를 결정하는 데도 사용됩니다.
target_app target.application 원시 로그의 target_app 필드 값이 이 UDM 필드에 할당됩니다.
TemplateName metadata.description 원시 로그의 TemplateName 필드 값이 이 UDM 필드에 할당됩니다.
url security_result.url_back_to_product 원시 로그의 url 필드 값이 이 UDM 필드에 할당됩니다.
user principal.user.userid 원시 로그의 user 필드 값이 이 UDM 필드에 할당됩니다.
vendor metadata.vendor_name 원시 로그의 vendor 필드 값이 이 UDM 필드에 할당됩니다.
version metadata.product_version 원시 로그의 version 필드 값이 이 UDM 필드에 할당됩니다.
WorkFlow target.resource.attribute.labels 원시 로그의 WorkFlow 필드 값이 대상 리소스에 라벨로 추가됩니다.
(파서 로직) extensions.auth.type MACHINE로 하드코딩되었습니다.
(파서 로직) security_result.action event_id 및 기타 필드를 기반으로 결정됩니다. 일반적으로 ALLOW 또는 BLOCK로 설정됩니다.
(파서 로직) security_result.category 방화벽 분석기 이벤트의 경우 POLICY_VIOLATION로 하드코딩됩니다.
(파서 로직) security_result.description 다른 필드를 기반으로 구성되며 이벤트에 대한 컨텍스트와 세부정보를 제공합니다.
(파서 로직) security_result.severity event_id, msg, 기타 필드를 기반으로 결정됩니다. 일반적으로 LOW, MEDIUM 또는 HIGH로 설정합니다.
(파서 로직) metadata.event_type event_id 및 기타 필드를 기반으로 결정됩니다. 예를 들면 USER_LOGIN, USER_LOGOUT, USER_RESOURCE_ACCESS, GENERIC_EVENT, STATUS_UNCATEGORIZED, SCAN_HOST, NETWORK_CONNECTION, STATUS_UPDATE가 있습니다.
(파서 로직) is_alert security_result.severityHIGH이면 true로 설정합니다.
(파서 로직) is_significant security_result.severityHIGH이면 true로 설정합니다.

변경사항

2022-11-27

개선사항:

  • 이를 처리하기 위한 이벤트별 조건부 블록을 추가하여 CEF 형식 및 grok 관련 파싱되지 않은 로그를 파싱했습니다.
  • 또한 잘못된 형식의 로그를 삭제하는 삭제 태그를 추가했습니다.

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