Sophos XG 방화벽 로그 수집
이 문서에서는 Bindplane을 사용하여 Sophos 차세대 (XG) 방화벽 로그를 수집하는 방법을 설명합니다. 파서는 로그를 추출하고 키-값 쌍을 정규화하여 UDM에 매핑합니다. 다양한 로그 형식을 처리하고, 타임스탬프를 변환하고, 네트워크 데이터를 보강하고, 로그 ID 및 네트워크 활동을 기반으로 이벤트를 분류합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Windows 2016 이상 또는
systemd
를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다. - 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
- Sophos XG 방화벽에 대한 권한이 있는지 확인합니다.
Google SecOps 처리 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 처리 인증 파일을 다운로드합니다. Bindplane가 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
Windows 설치
- 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
추가 설치 리소스
- 추가 설치 옵션은 이 설치 가이드를 참고하세요.
Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일에 액세스합니다.
config.yaml
파일을 찾습니다. 일반적으로 Linux의/etc/bindplane-agent/
디렉터리 또는 Windows의 설치 디렉터리에 있습니다.- 텍스트 편집기 (예:
nano
,vi
, 메모장)를 사용하여 파일을 엽니다.
다음과 같이
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
인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.
<customer_id>
를 실제 고객 ID로 바꿉니다./path/to/ingestion-authentication-file.json
를 Google SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart bindplane-agent
Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
Sophos Firewall syslog 서버 구성
- Sophos XG 방화벽에 로그인합니다.
- 구성 > 시스템 서비스 > 로그 설정으로 이동합니다.
- Syslog servers 섹션에서 추가를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 이름: Google SecOps 수집기의 고유한 이름을 입력합니다.
- IP 주소/도메인: Bindplane IP 주소를 입력합니다.
- 포트: Bindplane 포트 번호를 입력합니다.
- 설비: DAEMON을 선택합니다.
- 심각도 수준: 정보를 선택합니다.
- 형식: 기기 표준 형식을 선택합니다.
- 저장을 클릭합니다.
- 로그 설정 페이지로 돌아가 syslog 서버로 전달할 특정 로그 유형을 선택합니다.
Sophos XG 방화벽 로그 설정 구성
- 다음 기본 방화벽 (보안 정책 로그) 로그를 선택합니다.
- 정책 규칙
- 무효 트래픽
- 로컬 ACL
- DoS 공격
- ICMP 리디렉션된 패킷이 삭제됨
- 소스 라우팅된 패킷이 누락됨
- 중단된 단편화된 트래픽
- MAC 필터링
- IP-MAC 쌍 필터링
- IP 스푸핑 방지
- SSL VPN 터널
- 보호된 애플리케이션 서버
- 하트비트
- 다음 웹 보호 (웹 필터링 로그 및 애플리케이션 필터링 로그) 로그를 선택합니다.
- 웹 필터
- 애플리케이션 필터
- 다음 네트워크 보호 (IPS 로그) 로그를 선택합니다.
- 이상
- 서명
- 다음 시스템 로그 로그를 선택합니다.
- 시스템 이벤트
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 |
date 및 time 필드에서 파싱되며 시간대에 맞게 조정됩니다. |
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 |
date 및 time 필드에서 파싱되며 시간대에 맞게 조정됩니다. |
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_gp 이 vpn 이면 extensions.auth.type 를 VPN 로 설정합니다. |
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_sent
를network.sent_packets
에 매핑했습니다.packets_received
를network.received_packets
에 매핑했습니다.src_trans_ip
를principal.nat_ip
에 매핑했습니다.src_trans_port
를principal.nat_port
에 매핑했습니다.dst_trans_ip
를target.nat_ip
에 매핑했습니다.dst_trans_port
를target.nat_port
에 매핑했습니다.bytes_sent
를network.sent_bytes
에 매핑했습니다.bytes_received
를network.received_bytes
에 매핑했습니다.duration
를network.session_duration
에 매핑했습니다.referer
를network.http.referer_url
에 매핑했습니다.ipaddress
를principal.ip
및network.dhcp.ciaddr
에 매핑했습니다.client_physical_address
를network.dhcp.chaddr
에 매핑했습니다.client_host_name
를network.dhcp.client_hostname
에 매핑했습니다.reason
를security_result.summary
에 매핑했습니다.http_status
를network.http.response_code
에 매핑했습니다.app_name
를principal.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
,activityname
를security_result.detection_fields
에 매핑했습니다.
2023-11-10
개선사항:
fw_rule_type
를security_result.rule_type
에 매핑했습니다.severity
를security_result.severity
에 매핑했습니다.device_serial_id
를principal.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_interface
을security_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_pkts
를network.sent_packets
에 매핑했습니다.recv_pkts
를network.received_packets
에 매핑했습니다.tran_src_ip
를principal.nat_ip
에 매핑했습니다.tran_src_port
를principal.nat_port
에 매핑했습니다.tran_dst_ip
를target.nat_ip
에 매핑했습니다.tran_dst_port
를target.nat_port
에 매핑했습니다.
2022-12-01
개선사항:
- timezone=
IST
의 로그를 파싱했습니다. application_category, application_risk and application_technology
를security_result.detection_fields
에 매핑했습니다.fw_rule_name
를security_result.rule_name
에 매핑했습니다.fw_rule_section
를security_result.rule_set
에 매핑했습니다.
2022-08-18
개선사항:
- timezone=
CEST
의 로그를 파싱했습니다. - 일반 이벤트 비율이 감소함
user_name
를event.idm.read_only_udm.principal.user.userid
에 매핑함device_id
를event.idm.read_only_udm.principal.asset.asset_id
에 매핑함
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.