WatchGuard Fireware 로그 수집
다음에서 지원:
Google SecOps
SIEM
개요
이 파서는 WatchGuard Fireware 로그를 JSON 또는 키-값 (KV) 형식으로 추출하여 UDM으로 변환합니다. grok 및 kv 필터를 사용하여 필드를 추출하고 UDM에 매핑하며, 다양한 msg_id
값과 이벤트 이름에 대한 특정 로직을 사용하여 '트래픽' 및 '이벤트' 로그를 다르게 처리하여 네트워크 프로토콜, 사용자 작업, 보안 결과, 기타 관련 세부정보를 처리합니다. 또한 두 번째 그룹의 syslog 항목을 처리하여 유사한 정보를 추출하고 UDM 형식에 매핑합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- Watchguard에 대한 관리자 액세스 권한이 있는지 확인합니다.
- systemd가 있는 Windows 2012 SP2 이상 또는 Linux 호스트가 있는지 확인합니다.
- 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 수집 인증 파일을 다운로드합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
- Windows 설치의 경우
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
스크립트를 실행합니다. - Linux 설치의 경우
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
스크립트를 실행합니다. - 추가 설치 옵션은 이 설치 가이드를 참고하세요.
Syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성
- Bindplane이 설치된 머신에 액세스합니다.
다음과 같이
config.yaml
파일을 수정합니다.receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: testNamespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
다음 명령어를 사용하여 변경사항을 적용하도록 Bindplane 에이전트를 다시 시작합니다.
sudo systemctl bindplane restart
Watchguard에 시스템로그 서버 구성 추가
- Watchguard UI에 로그인합니다.
- 시스템 > 로깅을 선택합니다.
- Syslog Server 탭을 클릭합니다.
- 다음 syslog 서버로 로그 메시지 보내기 체크박스를 선택합니다.
- 추가를 클릭합니다.
Syslog Server 대화상자에서 입력 매개변수의 값을 지정합니다.
- IP 주소: 서버 IP 주소를 입력합니다.
- 포트: 기본 syslog 서버 포트 (514)를 변경하고 서버의 다른 포트를 입력합니다.
- 로그 형식: 드롭다운에서 Syslog를 선택합니다.
- 선택사항: 설명: 서버에 대한 설명을 입력합니다 (예: Google SecOps 내보내기).
- 선택사항: 타임스탬프: 로그 메시지 세부정보에 Firebox에서 이벤트가 발생한 날짜와 시간을 포함하려면 체크박스를 선택합니다.
- 선택사항: 기기의 일련번호 로그 메시지 세부정보에 Firebox의 일련번호를 포함하려면 체크박스를 선택합니다.
- Syslog facility: 각 로그 메시지 유형에 대해 드롭다운에서 우선순위를 선택합니다 (예: 알람과 같은 우선순위가 높은 syslog 메시지의 경우 Local0 선택).
- 선택사항: 기본값 복원: 기본 설정을 복원합니다.
저장을 클릭합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
action |
security_result.action_details |
원시 로그의 action 값이 security_result.action_details 에 할당됩니다. |
action |
target.labels.value |
원시 로그의 action 값이 target.labels.value 에 할당되고 target.labels.key 은 '리소스에 대한 작업'이 됩니다. |
arg |
target.file.full_path |
원시 로그의 arg 값이 target.file.full_path 에 할당됩니다. |
app_cat_id |
about.labels.value |
원시 로그의 app_cat_id 값이 about.labels.value 에 할당되고 about.labels.key 은 'app_cat_id'가 됩니다. |
app_cat_name |
target.application |
app_name 와 함께 사용하여 target.application 값을 형성합니다 (예: 'Google - 웹 서비스') |
app_id |
about.labels.value |
원시 로그의 app_id 값이 about.labels.value 에 할당되고 about.labels.key 는 'app_id'가 됩니다. |
app_name |
target.application |
app_cat_name 와 함께 사용하여 target.application 값을 형성합니다 (예: 'Google - 웹 서비스') |
cats |
security_result.category_details |
원시 로그의 cats 값이 security_result.category_details 에 할당됩니다. |
cert_issuer |
network.tls.server.certificate.issuer |
원시 로그의 cert_issuer 값이 network.tls.server.certificate.issuer 에 할당됩니다. |
cert_subject |
network.tls.server.certificate.subject |
원시 로그의 cert_subject 값이 network.tls.server.certificate.subject 에 할당됩니다. |
cn |
network.tls.server.certificate.subject |
원시 로그의 cn 값이 network.tls.server.certificate.subject 에 할당됩니다. |
conn_action |
security_result.action_details |
원시 로그의 conn_action 값이 security_result.action_details 에 할당됩니다. |
content_type |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
description |
metadata.description |
원시 로그에서 파생된 description 값이 metadata.description 에 할당됩니다. |
dhcp_type |
network.dhcp.type |
원시 로그의 dhcp_type 값이 network.dhcp.type 의 해당 DHCP 유형에 매핑됩니다 (예: 'REQUEST', 'ACK'). |
dst_host |
target.hostname |
원시 로그의 dst_host 값이 target.hostname 에 할당됩니다. |
dst_ip |
target.ip |
원시 로그의 dst_ip 값이 target.ip 에 할당됩니다. |
dst_mac |
target.mac |
원시 로그의 dst_mac 값이 target.mac 에 할당됩니다. |
dst_port |
target.port |
원시 로그의 dst_port 값이 target.port 에 할당됩니다. |
dst_user |
target.user.user_display_name |
원시 로그의 dst_user 값이 target.user.user_display_name 에 할당됩니다. |
dstname |
target.administrative_domain |
원시 로그의 dstname 값이 target.administrative_domain 에 할당됩니다. |
duration |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
elapsed_time |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
endpoint |
intermediary.labels.value |
원시 로그의 endpoint 값이 intermediary.labels.value 에 할당되고 intermediary.labels.key 는 'Gateway-Endpoint'입니다. |
event_name |
principal.application |
원시 로그의 event_name 값이 principal.application 에 할당됩니다. |
firewall_id |
intermediary.asset_id |
원시 로그의 firewall_id 값 앞에 '방화벽 ID : '가 추가되고 intermediary.asset_id 에 할당됩니다. |
firewall_name |
principal.asset_id |
원시 로그의 firewall_name 값 앞에 'Firewall: '이 추가되고 principal.asset_id 에 할당됩니다. |
firewallname |
intermediary.hostname |
원시 로그의 firewallname 값이 intermediary.hostname 에 할당됩니다. |
firewallname |
principal.hostname |
원시 로그의 firewallname 값이 principal.hostname 에 할당됩니다. |
fqdn_dst_match |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
geo |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
geo_dst |
target.location.country_or_region |
원시 로그의 geo_dst 값이 target.location.country_or_region 에 할당됩니다. |
geo_src |
principal.location.country_or_region |
원시 로그의 geo_src 값이 principal.location.country_or_region 에 할당됩니다. |
host |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
ike_policy |
security_result.rule_id |
원시 로그의 ike_policy 값이 security_result.rule_id 에 할당됩니다. |
ike_policy_version |
security_result.rule_version |
원시 로그의 ike_policy_version 값이 security_result.rule_version 에 할당됩니다. |
intermediary_host |
intermediary.hostname |
원시 로그의 intermediary_host 값이 intermediary.hostname 에 할당됩니다. |
ipaddress |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
ipsec_policy |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
ipsec_policy_version |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
keyword |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
line |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
log_message |
metadata.description |
다른 더 구체적인 설명을 사용할 수 없는 경우 원시 로그의 log_message 값이 metadata.description 에 할당됩니다. |
log_reason |
security_result.summary |
원시 로그의 log_reason 값이 security_result.summary 에 할당됩니다. |
log_type |
metadata.log_type |
원시 로그의 log_type 값이 metadata.log_type 에 할당됩니다. 항상 'WATCHGUARD'로 설정됩니다. |
msg |
security_result.summary |
원시 로그의 msg 값이 security_result.summary 에 할당됩니다. |
msg_id |
metadata.product_event_type |
원시 로그의 msg_id 값이 metadata.product_event_type 에 할당됩니다. |
new_action |
security_result.action_details |
conn_action 와 함께 사용하여 security_result.action_details 값을 형성합니다 (예: 'ProxyReplace: IP protocol - HTTPS-Client.DPI-Off'). |
op |
network.http.method |
원시 로그의 op 값이 network.http.method 에 할당됩니다. |
path |
target.url |
원시 로그의 path 값이 target.url 에 할당됩니다. |
pid |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
policy_name |
intermediary.resource.name |
원시 로그의 policy_name 값이 intermediary.resource.name 에 할당됩니다. |
policy_name |
security_result.rule_name |
원시 로그의 policy_name 값이 security_result.rule_name 에 할당됩니다. |
policyname_label.value |
security_result.rule_labels.value |
원시 로그의 policy_name 값이 security_result.rule_labels.value 에 할당되고 security_result.rule_labels.key 은 'PolicyName'입니다. |
prin_host |
principal.hostname |
원시 로그의 prin_host 값이 principal.hostname 에 할당됩니다. |
proc_id |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
protocol |
network.ip_protocol |
원시 로그의 protocol 값이 대문자로 변환되어 network.ip_protocol 에 할당됩니다. 'ICMP'에 매핑된 'EXTERNAL ICMP'의 특수 처리 |
proxy_act |
security_result.rule_id |
원시 로그의 proxy_act 값이 security_result.rule_id 에 할당됩니다. |
proxy_act |
security_result.rule_name |
원시 로그의 proxy_act 값이 security_result.rule_name 에 할당됩니다. |
query_name |
network.dns.questions.name |
원시 로그의 query_name 값이 network.dns.questions.name 에 할당됩니다. |
query_type |
network.dns.questions.type |
원시 로그의 query_type 값이 network.dns.questions.type 에 할당됩니다. 숫자 쿼리 유형의 특수 처리 및 표준 DNS 쿼리 유형에 매핑 |
rc |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
reason |
security_result.summary |
원시 로그의 reason 값이 security_result.summary 에 할당됩니다. |
record_type |
network.dns.answers.type |
원시 로그의 record_type 값이 network.dns.answers.type 의 해당 DNS 레코드 유형에 매핑됩니다. |
redirect_action |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
reputation |
additional.fields.value.string_value |
원시 로그의 reputation 값이 additional.fields.value.string_value 에 할당되고 additional.fields.key 은 'reputation'입니다. |
response |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
response_code |
network.dns.response_code |
원시 로그의 response_code 값이 network.dns.response_code 의 해당 DNS 응답 코드에 매핑됩니다. |
route_type |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
rule_name |
security_result.rule_name |
원시 로그의 rule_name 값이 security_result.rule_name 에 할당됩니다. |
rcvd_bytes |
network.received_bytes |
원시 로그의 rcvd_bytes 값이 network.received_bytes 에 할당됩니다. |
sent_bytes |
network.sent_bytes |
원시 로그의 sent_bytes 값이 network.sent_bytes 에 할당됩니다. |
server_ssl |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
severity |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
sig_vers |
network.tls.server.certificate.version |
원시 로그의 sig_vers 값이 network.tls.server.certificate.version 에 할당됩니다. |
signature_cat |
additional.fields.value.string_value |
원시 로그의 signature_cat 값이 additional.fields.value.string_value 에 할당되고 additional.fields.key 은 'signature_cat'이 됩니다. |
signature_id |
additional.fields.value.string_value |
원시 로그의 signature_id 값이 additional.fields.value.string_value 에 할당되고 additional.fields.key 는 'signature_id'가 됩니다. |
signature_name |
additional.fields.value.string_value |
원시 로그의 signature_name 값이 additional.fields.value.string_value 에 할당되고 additional.fields.key 은 'signature_name'이 됩니다. |
sni |
network.tls.client.server_name |
원시 로그의 sni 값이 network.tls.client.server_name 에 할당됩니다. |
src_ctid |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
src_host |
principal.hostname |
원시 로그의 src_host 값이 principal.hostname 에 할당됩니다. |
src_ip |
principal.ip |
원시 로그의 src_ip 값이 principal.ip 에 할당됩니다. |
src_ip_nat |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
src_mac |
principal.mac |
원시 로그의 src_mac 값이 principal.mac 에 할당됩니다. |
src_port |
principal.port |
원시 로그의 src_port 값이 principal.port 에 할당됩니다. |
src_user |
principal.user.user_display_name |
원시 로그의 src_user 값이 principal.user.user_display_name 에 할당됩니다. |
src_user_name |
principal.user.user_display_name |
원시 로그의 src_user_name 값이 principal.user.user_display_name 에 할당됩니다. |
src_vpn_ip |
principal.ip |
원시 로그의 src_vpn_ip 값이 principal.ip 에 할당됩니다. |
srv_ip |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
srv_port |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
ssl_offload |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
tcp_info |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
time |
metadata.event_timestamp.seconds , timestamp.seconds |
원시 로그의 time 값이 파싱되어 metadata.event_timestamp.seconds 및 timestamp.seconds 를 채우는 데 사용됩니다. |
time1 |
metadata.event_timestamp.seconds , timestamp.seconds |
원시 로그의 time1 값이 파싱되어 metadata.event_timestamp.seconds 및 timestamp.seconds 를 채우는 데 사용됩니다. |
tls_profile |
about.labels.value |
원시 로그의 tls_profile 값이 about.labels.value 에 할당되고 about.labels.key 는 'tls_profile'입니다. |
tls_version |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
user_name |
principal.user.userid , principal.user.user_display_name |
원시 로그의 user_name 값은 컨텍스트에 따라 principal.user.userid 또는 principal.user.user_display_name 에 할당됩니다. |
user_type |
매핑되지 않음 | 제공된 UDM 예시의 IDM 객체에 매핑되지 않습니다. |
(해당 사항 없음) | intermediary.resource.type |
항상 'ACCESS_POLICY'로 설정됩니다. |
(해당 사항 없음) | metadata.event_type |
msg_id , log_type , event_name 및 기타 필드를 기반으로 한 파서 로직에 따라 결정됩니다. NETWORK_CONNECTION , SERVICE_MODIFICATION , NETWORK_SMTP , NETWORK_DNS , NETWORK_HTTP , USER_LOGIN , USER_LOGOUT , USER_RESOURCE_UPDATE_CONTENT , RESOURCE_PERMISSIONS_CHANGE , RESOURCE_CREATION , GENERIC_EVENT , STATUS_UPDATE , USER_UNCATEGORIZED 일 수 있습니다. |
(해당 사항 없음) | metadata.product_name |
항상 'Fireware'로 설정됩니다. |
(해당 사항 없음) | metadata.vendor_name |
항상 'Watchguard'로 설정됩니다. |
(해당 사항 없음) | security_result.action |
disposition 에 기반한 파서 로직에 따라 결정됩니다. 'ALLOW' 또는 'BLOCK'일 수 있습니다. |
(해당 사항 없음) | extensions.auth.type |
사용자 로그인/로그아웃 이벤트의 경우 'AUTHTYPE_UNSPECIFIED'로 설정하고 VPN과 관련된 네트워크 이벤트의 경우 'VPN'으로 설정합니다. |
(해당 사항 없음) | network.application_protocol |
msg_id 및 event_name 에 기반한 파서 로직에 따라 결정됩니다. 'DNS', 'DHCP', 'HTTP' 또는 'HTTPS'일 수 있습니다. |
(해당 사항 없음) | network.dns.questions.type |
'A' 레코드 쿼리의 경우 1로 설정됩니다. |
(해당 사항 없음) | target.labels.key |
action 이 target.labels.value 에 매핑되면 '리소스에 대한 작업'으로 설정됩니다. |
(해당 사항 없음) | intermediary.labels.key |
prin_host 이 intermediary.labels.value 에 매핑된 경우 '방화벽 구성원 이름'으로 설정됩니다. |
(해당 사항 없음) | intermediary.labels.key |
endpoint 이 intermediary.labels.value 에 매핑된 경우 'Gateway-Endpoint'로 설정됩니다. |
(해당 사항 없음) | principal.labels.key |
gateway 이 principal.labels.value 에 매핑된 경우 '게이트웨이'로 설정됩니다. |
(해당 사항 없음) | target.labels.key |
gateway 이 target.labels.value 에 매핑된 경우 '게이트웨이'로 설정됩니다. |
(해당 사항 없음) | principal.labels.key |
status 이 principal.labels.value 에 매핑되면 'state'로 설정됩니다. |
(해당 사항 없음) | target.labels.key |
status 이 target.labels.value 에 매핑되면 '게이트웨이 상태'로 설정됩니다. |
(해당 사항 없음) | additional.fields.key |
해당 값이 원시 로그에서 매핑되는 경우 'signature_name', 'signature_cat', 'signature_id' 또는 'reputation'으로 설정됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.