Sophos XG 방화벽 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 Sophos 차세대 (XG) 방화벽 로그를 수집하는 방법을 설명합니다. 파서는 로그를 추출하고 키-값 쌍을 정규화하여 UDM에 매핑합니다. 다양한 로그 형식을 처리하고, 타임스탬프를 변환하고, 네트워크 데이터를 보강하고, 로그 ID 및 네트워크 활동을 기반으로 이벤트를 분류합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • Sophos XG 방화벽에 대한 권한이 있는지 확인합니다.

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: SYSLOG
                namespace: sophos_firewall
                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. /path/to/ingestion-authentication-file.jsonGoogle SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.

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

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Sophos Firewall syslog 서버 구성

  1. Sophos XG 방화벽에 로그인합니다.
  2. 구성 > 시스템 서비스 > 로그 설정으로 이동합니다.
  3. Syslog servers 섹션에서 추가를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: Google SecOps 수집기의 고유한 이름을 입력합니다.
    • IP 주소/도메인: Bindplane IP 주소를 입력합니다.
    • 포트: Bindplane 포트 번호를 입력합니다.
    • 설비: DAEMON을 선택합니다.
    • 심각도 수준: 정보를 선택합니다.
    • 형식: 기기 표준 형식을 선택합니다.
  5. 저장을 클릭합니다.
  6. 로그 설정 페이지로 돌아가 syslog 서버로 전달할 특정 로그 유형을 선택합니다.

Sophos XG 방화벽 로그 설정 구성

  1. 다음 기본 방화벽 (보안 정책 로그) 로그를 선택합니다.
    • 정책 규칙
    • 무효 트래픽
    • 로컬 ACL
    • DoS 공격
    • ICMP 리디렉션된 패킷이 삭제됨
    • 소스 라우팅된 패킷이 누락됨
    • 중단된 단편화된 트래픽
    • MAC 필터링
    • IP-MAC 쌍 필터링
    • IP 스푸핑 방지
    • SSL VPN 터널
    • 보호된 애플리케이션 서버
    • 하트비트
  2. 다음 웹 보호 (웹 필터링 로그 및 애플리케이션 필터링 로그) 로그를 선택합니다.
    • 웹 필터
    • 애플리케이션 필터
  3. 다음 네트워크 보호 (IPS 로그) 로그를 선택합니다.
    • 이상
    • 서명
  4. 다음 시스템 로그 로그를 선택합니다.
    • 시스템 이벤트

UDM 매핑 표

로그 필드 UDM 매핑 논리
activityname security_result.detection_fields.activityname activityname 필드의 값입니다.
app_category security_result.detection_fields.Application Category, application_category app_category 필드의 값입니다.
app_filter_policy_id security_result.detection_fields.app_filter_policy_id app_filter_policy_id 필드의 값입니다.
app_is_cloud security_result.detection_fields.app_is_cloud app_is_cloud 필드의 값입니다.
app_name principal.application app_name 필드의 값입니다.
app_resolved_by security_result.detection_fields.app_resolved_by app_resolved_by 필드의 값입니다.
app_risk security_result.detection_fields.Application Risk, application_risk app_risk 필드의 값입니다.
app_technology application_technology app_technology 필드의 값입니다.
application principal.application application 필드의 값입니다.
application_category security_result.detection_fields.Application Category application_category 필드의 값입니다.
application_risk security_result.detection_fields.Application Risk application_risk 필드의 값입니다.
application_technology security_result.detection_fields.Application Technology application_technology 필드의 값입니다.
bytes_received network.received_bytes bytes_received 필드의 값입니다.
bytes_sent network.sent_bytes bytes_sent 필드의 값입니다.
category application_category category 필드의 값입니다.
category_type security_result.detection_fields.category_type category_type 필드의 값입니다.
client_host_name network.dhcp.client_hostname client_host_name 필드의 값입니다.
client_physical_address network.dhcp.chaddr client_physical_address 필드의 값입니다.
con_event security_result.detection_fields.con_event con_event 필드의 값입니다.
con_id security_result.detection_fields.con_id con_id 필드의 값입니다.
connevent security_result.detection_fields.connevent connevent 필드의 값입니다.
connid security_result.detection_fields.connid connid 필드의 값입니다.
date event.timestamp datetime 필드에서 파싱되며 시간대에 맞게 조정됩니다.
device_id intermediary.asset.asset_id device_id 필드의 값으로, 접두사로 ID:가 추가됩니다.
device_model intermediary.hostname device_model 필드의 값입니다.
device_name intermediary.hostname device_name 필드의 값입니다.
device_serial_id intermediary.asset.asset_id device_serial_id 필드의 값으로, 접두사로 ID:가 추가됩니다.
domain principal.administrative_domain, target.hostname domain 필드의 값입니다.
dst_country target.location.country_or_region dst_country 필드의 값입니다.
dst_country_code target.location.country_or_region dst_country_code 필드의 값입니다.
dst_ip target.ip dst_ip 필드의 값입니다.
dst_mac target.mac dst_mac 필드의 값입니다.
dst_port target.port dst_port 필드의 값입니다.
dst_trans_ip target.nat_ip dst_trans_ip 필드의 값입니다.
dst_trans_port target.nat_port dst_trans_port 필드의 값입니다.
dst_zone security_result.detection_fields.dst_zone dst_zone 필드의 값입니다.
dstzone security_result.detection_fields.dstzone dstzone 필드의 값입니다.
dstzonetype security_result.detection_fields.dstzonetype dstzonetype 필드의 값입니다.
duration network.session_duration.seconds duration 필드의 값입니다.
ether_type security_result.detection_fields.ether_type ether_type 필드의 값입니다.
exceptions security_result.detection_fields.exceptions exceptions 필드의 값입니다.
fw_rule_id security_result.rule_id fw_rule_id 필드의 값입니다.
fw_rule_name security_result.rule_name fw_rule_name 필드의 값입니다.
fw_rule_section security_result.rule_set fw_rule_section 필드의 값입니다.
fw_rule_type security_result.rule_type fw_rule_type 필드의 값입니다.
gw_id_request security_result.detection_fields.gw_id_request gw_id_request 필드의 값입니다.
gw_name_request security_result.detection_fields.gw_name_request gw_name_request 필드의 값입니다.
hb_health security_result.detection_fields.hb_health hb_health 필드의 값입니다.
hb_status security_result.detection_fields.hb_status hb_status 필드의 값입니다.
http_category security_result.detection_fields.http_category http_category 필드의 값입니다.
http_category_type security_result.detection_fields.http_category_type http_category_type 필드의 값입니다.
http_status network.http.response_code http_status 필드의 값입니다.
in_display_interface security_result.detection_fields.in_display_interface in_display_interface 필드의 값입니다.
in_interface security_result.detection_fields.in_interface in_interface 필드의 값입니다.
ipaddress principal.ip, network.dhcp.ciaddr ipaddress 필드의 값입니다.
log_component metadata.product_event_type, security_result.detection_fields.log_component log_component 필드의 값입니다.
log_id metadata.product_log_id log_id 필드의 값입니다.
log_msg metadata.description message=를 삭제한 후 message 필드의 값입니다.
log_occurrence security_result.detection_fields.log_occurrence log_occurrence 필드의 값입니다.
log_subtype security_result.detection_fields.log_subtype, security_result.action log_subtype 필드의 값입니다.
log_type security_result.detection_fields.log_type log_type 필드의 값입니다.
log_version security_result.detection_fields.log_version log_version 필드의 값입니다.
message metadata.description message 필드의 값입니다.
nat_rule_id security_result.detection_fields.nat_rule_id nat_rule_id 필드의 값입니다.
nat_rule_name security_result.detection_fields.nat_rule_name nat_rule_name 필드의 값입니다.
out_display_interface security_result.detection_fields.out_display_interface out_display_interface 필드의 값입니다.
out_interface security_result.detection_fields.out_interface out_interface 필드의 값입니다.
packets_received network.received_packets packets_received 필드의 값입니다.
packets_sent network.sent_packets packets_sent 필드의 값입니다.
priority security_result.severity 참조 테이블을 기반으로 priority 또는 severity 필드에서 매핑됩니다.
protocol network.ip_protocol 참조 테이블을 사용하여 protocol 필드에서 파싱됩니다.
reason security_result.detection_fields.reason, security_result.summary reason 필드의 값입니다.
recv_bytes network.received_bytes recv_bytes 필드의 값입니다.
recv_pkts network.received_packets recv_pkts 필드의 값입니다.
referer network.http.referral_url referer 필드의 값입니다.
rule_id security_result.rule_id rule_id 필드의 값입니다.
rule_name security_result.rule_name rule_name 필드의 값입니다.
sent_bytes network.sent_bytes sent_bytes 필드의 값입니다.
sent_pkts network.sent_packets sent_pkts 필드의 값입니다.
severity priority severity 필드의 값입니다.
src_country principal.location.country_or_region src_country 필드의 값입니다.
src_country_code principal.location.country_or_region src_country_code 필드의 값입니다.
src_ip principal.ip src_ip 필드의 값입니다.
src_mac principal.mac src_mac 필드의 값입니다.
src_port principal.port src_port 필드의 값입니다.
src_trans_ip principal.nat_ip src_trans_ip 필드의 값입니다.
src_trans_port principal.nat_port src_trans_port 필드의 값입니다.
src_zone security_result.detection_fields.src_zone src_zone 필드의 값입니다.
srczone security_result.detection_fields.srczone srczone 필드의 값입니다.
srczonetype security_result.detection_fields.srczonetype srczonetype 필드의 값입니다.
status security_result.action_details, security_result.action status 필드의 값입니다.
status_code network.http.response_code status_code 필드의 값입니다.
target.url target.url url 필드의 값입니다.
time event.timestamp datetime 필드에서 파싱되며 시간대에 맞게 조정됩니다.
timestamp event.timestamp timestamp 필드에서 파싱됩니다.
tran_dst_ip target.nat_ip tran_dst_ip 필드의 값입니다.
tran_dst_port target.nat_port tran_dst_port 필드의 값입니다.
tran_src_ip principal.nat_ip tran_src_ip 필드의 값입니다.
tran_src_port principal.nat_port tran_src_port 필드의 값입니다.
url target.url url 필드의 값입니다.
used_quota security_result.detection_fields.used_quota used_quota 필드의 값입니다.
user_agent network.http.user_agent, network.http.parsed_user_agent user_agent 필드의 값입니다. 파싱된 버전도 생성됩니다.
user_gp extensions.auth.type user_gpvpn이면 extensions.auth.typeVPN로 설정합니다.
user_name principal.user.userid, principal.user.email_addresses user_name 필드의 값입니다. @가 포함된 경우 email_addresses에도 추가됩니다.
web_policy_id security_result.detection_fields.web_policy_id web_policy_id 필드의 값입니다.
해당 사항 없음 event.idm.read_only_udm.metadata.event_timestamp event.timestamp에서 복사되었습니다.
해당 사항 없음 event.idm.read_only_udm.metadata.log_type Chronicle 처리 스키마는 로그 유형을 SOPHOS_FIREWALL로 지정합니다.
해당 사항 없음 event.idm.read_only_udm.metadata.vendor_name 상수 값 SOPHOS입니다.
해당 사항 없음 event.idm.read_only_udm.metadata.product_name 상수 값 SOPHOS Firewall입니다.
해당 사항 없음 event.idm.read_only_udm.network.application_protocol ipaddress 필드가 있는 경우 DHCP로 설정합니다. 그렇지 않으면 protocol 필드에서 파생됩니다.
해당 사항 없음 event.idm.read_only_udm.metadata.event_type 다른 필드의 존재를 기반으로 로직에 의해 결정됩니다 (예: NETWORK_HTTP, NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE, GENERIC_EVENT)를 사용하려고 할 때 Tegra2 기반 기기 및 기타 기기가 비정상 종료되었습니다.
해당 사항 없음 event.idm.read_only_udm.security_result.action status 또는 log_subtype 필드에서 파생됩니다.

변경사항

2024-08-26

개선사항:

  • timezone=WAT의 로그를 파싱했습니다.

2023-11-20

개선사항:

  • packets_sentnetwork.sent_packets에 매핑했습니다.
  • packets_receivednetwork.received_packets에 매핑했습니다.
  • src_trans_ipprincipal.nat_ip에 매핑했습니다.
  • src_trans_portprincipal.nat_port에 매핑했습니다.
  • dst_trans_iptarget.nat_ip에 매핑했습니다.
  • dst_trans_porttarget.nat_port에 매핑했습니다.
  • bytes_sentnetwork.sent_bytes에 매핑했습니다.
  • bytes_receivednetwork.received_bytes에 매핑했습니다.
  • durationnetwork.session_duration에 매핑했습니다.
  • referernetwork.http.referer_url에 매핑했습니다.
  • ipaddressprincipal.ipnetwork.dhcp.ciaddr에 매핑했습니다.
  • client_physical_addressnetwork.dhcp.chaddr에 매핑했습니다.
  • client_host_namenetwork.dhcp.client_hostname에 매핑했습니다.
  • reasonsecurity_result.summary에 매핑했습니다.
  • http_statusnetwork.http.response_code에 매핑했습니다.
  • app_nameprincipal.application에 매핑했습니다.
  • out_display_interface, web_policy_id, http_category, http_category_type, exceptions, con_id, used_quota, src_zone_type, src_zone, dst_zone_type, dst_zone, app_risk, app_category, nat_rule_name, gw_id_request, gw_name_request, app_filter_policy_id, app_technology, in_interface, out_interface, con_event, srczonetype, dstzonetype, connevent, connid, hb_health, category_type, activitynamesecurity_result.detection_fields에 매핑했습니다.

2023-11-10

개선사항:

  • fw_rule_typesecurity_result.rule_type에 매핑했습니다.
  • severitysecurity_result.severity에 매핑했습니다.
  • device_serial_idprincipal.asset.asset_id에 매핑했습니다.
  • log_type, log_component, log_subtype, log_version, nat_rule_id, ether_type, hb_status, app_resolved_by, app_is_cloud, qualifier, log_occurrence, in_display_interfacesecurity_result.detection_fields에 매핑했습니다.

2023-04-03

개선사항:

  • device_name의 매핑을 principal.hostname에서 intermediary.hostname로 수정했습니다.
  • device_id의 매핑을 principal.asset.asset_id에서 intermediary.asset.asset_id로 수정했습니다.
  • metadata.vendor_name의 매핑을 SOPHOS Ltd.에서 SOPHOS로 수정했습니다.
  • sent_pktsnetwork.sent_packets에 매핑했습니다.
  • recv_pktsnetwork.received_packets에 매핑했습니다.
  • tran_src_ipprincipal.nat_ip에 매핑했습니다.
  • tran_src_portprincipal.nat_port에 매핑했습니다.
  • tran_dst_iptarget.nat_ip에 매핑했습니다.
  • tran_dst_porttarget.nat_port에 매핑했습니다.

2022-12-01

개선사항:

  • timezone=IST의 로그를 파싱했습니다.
  • application_category, application_risk and application_technologysecurity_result.detection_fields에 매핑했습니다.
  • fw_rule_namesecurity_result.rule_name에 매핑했습니다.
  • fw_rule_sectionsecurity_result.rule_set에 매핑했습니다.

2022-08-18

개선사항:

  • timezone=CEST의 로그를 파싱했습니다.
  • 일반 이벤트 비율이 감소함
  • user_nameevent.idm.read_only_udm.principal.user.userid에 매핑함
  • device_idevent.idm.read_only_udm.principal.asset.asset_id에 매핑함

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