Collect Windows Firewall logs
This document explains how to ingest Windows Firewall logs to Google Security Operations using Bindplane.
Windows Firewall is a built-in Windows host firewall that generates connection allow/block, rule change, and service event logs. The Bindplane agent collects the firewall log files directly from the local file system.
Before you begin
Make sure you have the following prerequisites:
- A Google SecOps instance
- Windows Server 2016 or later with
observiq-otel-collectorservice support - If running behind a proxy, ensure firewall ports are open per the Bindplane agent requirements
- Administrative access to the Windows host(s) generating firewall logs
Get Google SecOps ingestion authentication file
- Sign in to the Google SecOps console.
- Go to SIEM Settings > Collection Agents.
-
Download the Ingestion Authentication File. Save the file securely on the system where Bindplane will be installed.
Get Google SecOps customer ID
- Sign in to the Google SecOps console.
- Go to SIEM Settings > Profile.
-
Copy and save the Customer IDfrom the Organization Detailssection.
Install the Bindplane agent
Install the Bindplane agent on your Windows operating system according to the following instructions.
Windows installation
- Open Command Promptor PowerShellas an administrator.
-
Run the following command:
msiexec / i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" / quiet -
Wait for the installation to complete.
-
Verify the installation by running:
sc query observiq-otel-collector
The service should show as RUNNING.
Additional installation resources
For additional installation options and troubleshooting, see Bindplane agent installation guide .
Configure Bindplane agent to ingest logs and send to Google SecOps
Locate the configuration file
-
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edit the configuration file
-
Replace the entire contents of
config.yamlwith the following configuration:receivers : filelog : include : - C:\Windows\system32\LogFiles\Firewall\pfirewall.log start_at : beginning exporters : chronicle/windows_firewall : compression : gzip creds_file_path : 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json' customer_id : '<customer_id>' endpoint : malachiteingestion-pa.googleapis.com log_type : WINDOWS_FIREWALL raw_log_field : body ingestion_labels : env : production service : pipelines : logs/firewall_to_chronicle : receivers : - filelog exporters : - chronicle/windows_firewall
Configuration parameters
Replace the following placeholders:
-
Receiver configuration:
-
filelog: The receiver type for collecting log files from disk -
include: List of file paths to monitor. Default Windows Firewall log location:-
C:\Windows\system32\LogFiles\Firewall\pfirewall.log
-
-
start_at: Set tobeginningto read existing logs orendto only read new entries
-
-
Exporter configuration:
-
windows_firewall: Descriptive name for the exporter -
creds_file_path: Full path to ingestion authentication file:- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
-
<customer_id>: Customer ID from the previous step -
endpoint: Regional endpoint URL:- US:
malachiteingestion-pa.googleapis.com - Europe:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - See Regional Endpoints for complete list
- US:
-
WINDOWS_FIREWALL: Log type exactly as it appears in Chronicle -
ingestion_labels: Optional labels in YAML format (for example,env: production)
-
-
Pipeline configuration:
-
firewall_to_chronicle: Descriptive name for the pipeline
-
Save the configuration file
- After editing, save the file:
- Windows: Click File > Save
Restart the Bindplane agent to apply the changes
To restart the Bindplane agent in Windows:
-
Choose one of the following options:
- Command Prompt or PowerShell as administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Services console:
- Press
Win+R, typeservices.msc, and press Enter. - Locate observIQ OpenTelemetry Collector.
- Right-click and select Restart.
- Press
-
Verify the service is running:
sc query observiq-otel-collector -
Check logs for errors:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configure Windows Firewall logging
- Open Windows Defender Firewall with Advanced Securityby pressing
Win+R, typingwf.msc, and pressing Enter. - In the left pane, right-click Windows Defender Firewall with Advanced Security on Local Computerand select Properties.
- Select the appropriate profile tab ( Domain Profile, Private Profile, or Public Profile).
- Under Logging, click Customize.
- Provide the following configuration details:
- Log dropped packets: Select Yes.
- Log successful connections: Select Yes.
- Name: Verify the log file path is
%systemroot%\system32\LogFiles\Firewall\pfirewall.log(default). - Size limit (KB): Set to at least
4096to capture sufficient log data.
- Click OKto save the logging settings.
- Repeat steps 3-6 for each profile tab ( Domain, Private, Public) as needed.
- Verify that the log file is being written at
C:\Windows\system32\LogFiles\Firewall\pfirewall.log. -
Ensure the Bindplane agent
includepath inconfig.yamlmatches the firewall log file path.
UDM mapping table
| Log Field | UDM Mapping | Logic |
|---|---|---|
|
tcpflags, tcpsyn, tcpack, tcpwin, icmptype, icmpcode
|
about.labels | Merged as key-value pairs if field != "-" |
|
timestamp
|
metadata.event_timestamp | Parsed using format yyyy-MM-dd HH:mm:ss |
| |
metadata.event_type | Set to "NETWORK_CONNECTION" |
|
direction
|
network.direction | Set to "OUTBOUND" if direction in ["SEND", "FORWARD"]; "INBOUND" if direction == "RECEIVE" |
|
protocol
|
network.ip_protocol | Value copied directly if protocol in ["TCP", "UDP", "ICMP"] |
|
size
|
network.received_bytes | Converted to uinteger if direction == "RECEIVE" and size != "-" |
|
size
|
network.sent_bytes | Converted to uinteger if direction in ["SEND", "FORWARD"] and size != "-" |
|
src_ip
|
principal.ip | Value copied directly |
|
src_port
|
principal.port | Converted to integer if src_port != "-" |
|
action
|
security_result.action | Set to "BLOCK" if action == "DROP"; "ALLOW" if action == "ALLOW" |
|
info
|
security_result.summary | Value copied directly if info != "-" |
|
dst_ip
|
target.ip | Value copied directly |
|
dst_port
|
target.port | Converted to integer if dst_port != "-" |
| |
metadata.product_name | Set to "Windows Firewall" |
| |
metadata.vendor_name | Set to "Microsoft" |
Need more help? Get answers from Community members and Google SecOps professionals.

