Collect Juniper SRX Series Firewall logs
This document explains how to ingest Juniper SRX Series Firewall logs to Google Security Operations using Bindplane.
Juniper SRX Series firewalls are high-performance network security devices that provide next-generation firewall (NGFW) capabilities, including stateful inspection, intrusion detection and prevention (IDP), application security, and VPN. SRX firewalls generate syslog messages for traffic, security, system, and session events that can be forwarded to external SIEM platforms for centralized security monitoring.
Before you begin
Make sure you have the following prerequisites:
- A Google SecOps instance.
- Windows Server 2016 or later, or Linux host with
systemd. - Network connectivity between the Bindplane agent and the Juniper SRX firewall.
- If running behind a proxy, ensure firewall ports are open per the Bindplane agent requirements.
- Privileged access to the Juniper SRX firewall (root or super-user level access via J-Web or CLI).
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 or Linux 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](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.
Linux installation
- Open a terminal with root or sudo privileges.
-
Run the following command:
sudo sh -c " $( curl -fsSlL [ https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh ]( https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh ) )" install_unix.sh -
Wait for the installation to complete.
-
Verify the installation by running:
sudo systemctl status observiq-otel-collector
The service should show as active (running).
Additional installation resources
For additional installation options and troubleshooting, see Bindplane agent installation guide .
Configure the Bindplane agent to ingest syslog and send to Google SecOps
Locate the configuration file
-
Linux:
sudo nano /opt/observiq-otel-collector/config.yaml -
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 : udplog : listen_address : "0.0.0.0:514" exporters : chronicle/juniper_firewall : compression : gzip creds_file_path : '/etc/bindplane-agent/ingestion-auth.json' customer_id : 'your-customer-id-here' endpoint : malachiteingestion-pa.googleapis.com log_type : JUNIPER_FIREWALL raw_log_field : body ingestion_labels : env : production service : pipelines : logs/juniper_to_chronicle : receivers : - udplog exporters : - chronicle/juniper_firewall
Configuration parameters
Replace the following placeholders:
-
Receiver configuration:
-
listen_address: IP address and port to listen on. Use0.0.0.0to listen on all interfaces. Port514is the standard syslog port (requires root privileges on Linux). Use1514for non-root deployments.
-
-
Exporter configuration:
-
creds_file_path: Full path to the ingestion authentication file:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
customer_id: Your Google SecOps customer ID. -
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 the complete list.
- US:
-
ingestion_labels: Optional labels in YAML format (for example,env: production).
-
Save the configuration file
- After editing, save the file:
- Linux: Press
Ctrl+O, thenEnter, thenCtrl+X. - Windows: Click File > Save.
- Linux: Press
Restart the Bindplane agent to apply the changes
To restart the Bindplane agent in Linux:
-
Run the following command:
sudo systemctl restart observiq-otel-collector -
Verify the service is running:
sudo systemctl status observiq-otel-collector -
Check logs for errors:
sudo journalctl -u observiq-otel-collector -f
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 Juniper SRX syslog forwarding
Configure the Juniper SRX firewall to forward syslog messages to the Bindplane agent.
Using J-Web interface
- Sign in to the Juniper SRXJ-Web interface.
- Go to Configure > System Properties > Syslog.
- Click Addunder the Hostsection to add a new syslog server.
- Provide the following configuration details:
- Host name: Enter the IP address of the Bindplane agent host (for example,
192.168.1.100). - Port: Enter
514(or the port configured in the Bindplane agent). - Log prefix: Optional prefix for log messages.
- Facility: Select the facility and severity levels to forward:
- any: Select severity level infoor higher.
- Host name: Enter the IP address of the Bindplane agent host (for example,
- In the Source addressfield, enter the SRX management interface IP (optional but recommended for consistent source identification).
- Click OKto save.
- Click Committo apply the configuration.
Using Junos CLI
- Connect to the Juniper SRX via SSH or console.
-
Enter configuration mode:
configure -
Configure the syslog host:
set system syslog host BINDPLANE_IP any info set system syslog host BINDPLANE_IP port 514 set system syslog host BINDPLANE_IP source-address SRX_MGMT_IP set system syslog host BINDPLANE_IP structured-dataReplace:
-
BINDPLANE_IP: IP address of the Bindplane agent host. -
SRX_MGMT_IP: Management IP address of the SRX firewall.
-
-
Configure security log streaming (for traffic and session logs):
set security log mode stream set security log source-address SRX_MGMT_IP set security log stream chronicle-stream host BINDPLANE_IP set security log stream chronicle-stream port 514 set security log stream chronicle-stream transport protocol udp set security log stream chronicle-stream format sd-syslog set security log stream chronicle-stream severity info set security log stream chronicle-stream category allReplace:
-
BINDPLANE_IP: IP address of the Bindplane agent host. -
SRX_MGMT_IP: Management IP address of the SRX firewall.
-
-
Commit the configuration:
commit -
Verify the syslog configuration:
show system syslog show security log
Configure specific log categories
-
To forward specific log types, configure individual facilities:
set system syslog host BINDPLANE_IP firewall any set system syslog host BINDPLANE_IP authorization info set system syslog host BINDPLANE_IP daemon info set system syslog host BINDPLANE_IP kernel info set system syslog host BINDPLANE_IP interactive-commands info
Replace BINDPLANE_IP
with the IP address of the Bindplane agent host.
Verify syslog forwarding
-
On the SRX, run the following command to view active syslog destinations:
show system syslog -
Generate test traffic through the firewall and verify logs appear in the Bindplane agent logs.
For more information, see the Juniper SRX Series documentation .
UDM mapping table
| Log Field | UDM Mapping | Logic |
|---|---|---|
source-address
|
event.idm.read_only_udm.principal.ip
|
Value taken from source-address
. |
source-port
|
event.idm.read_only_udm.principal.port
|
Value taken from source-port
and converted to integer. |
destination-address
|
event.idm.read_only_udm.target.ip
|
Value taken from destination-address
. |
destination-port
|
event.idm.read_only_udm.target.port
|
Value taken from destination-port
and converted to integer. |
protocol-id
|
event.idm.read_only_udm.network.ip_protocol
|
Mapped from protocol number to name (6=TCP, 17=UDP, 1=ICMP). |
policy-name
|
event.idm.read_only_udm.security_result.rule_name
|
Value taken from policy-name
. |
source-zone-name
|
event.idm.read_only_udm.additional.fields
|
Value taken from source-zone-name
and added with key source-zone-name
. |
destination-zone-name
|
event.idm.read_only_udm.additional.fields
|
Value taken from destination-zone-name
and added with key destination-zone-name
. |
service-name
|
event.idm.read_only_udm.target.application
|
Value taken from service-name
. |
application
|
event.idm.read_only_udm.target.application
|
Value taken from application
(if service-name
is not present). |
nat-source-address
|
event.idm.read_only_udm.principal.nat_ip
|
Value taken from nat-source-address
. |
nat-source-port
|
event.idm.read_only_udm.principal.nat_port
|
Value taken from nat-source-port
and converted to integer. |
nat-destination-address
|
event.idm.read_only_udm.target.nat_ip
|
Value taken from nat-destination-address
. |
nat-destination-port
|
event.idm.read_only_udm.target.nat_port
|
Value taken from nat-destination-port
and converted to integer. |
bytes-from-client
|
event.idm.read_only_udm.network.sent_bytes
|
Value taken from bytes-from-client
and converted to unsigned integer. |
bytes-from-server
|
event.idm.read_only_udm.network.received_bytes
|
Value taken from bytes-from-server
and converted to unsigned integer. |
packets-from-client
|
event.idm.read_only_udm.additional.fields
|
Value taken from packets-from-client
and added with key packets-from-client
. |
packets-from-server
|
event.idm.read_only_udm.additional.fields
|
Value taken from packets-from-server
and added with key packets-from-server
. |
elapsed-time
|
event.idm.read_only_udm.additional.fields
|
Value taken from elapsed-time
and added with key elapsed-time
. |
username
|
event.idm.read_only_udm.principal.user.userid
|
Value taken from username
. |
reason
|
event.idm.read_only_udm.security_result.description
|
Value taken from reason
. |
action
|
event.idm.read_only_udm.security_result.action
|
If action
is accept
or permit
, set to ALLOW
. If action
is deny
, drop
, reject
, or close
, set to BLOCK
. |
hostname
|
event.idm.read_only_udm.principal.hostname
|
Value taken from syslog hostname field. |
attack-name
|
event.idm.read_only_udm.security_result.threat_name
|
Value taken from attack-name
(IDP events). |
severity
|
event.idm.read_only_udm.security_result.severity
|
Mapped from severity string: info
to INFORMATIONAL
, warning
to MEDIUM
, error
or major
to ERROR
, critical
to CRITICAL
. |
| |
event.idm.read_only_udm.metadata.vendor_name
|
Set to Juniper Networks
. |
| |
event.idm.read_only_udm.metadata.product_name
|
Set to SRX Series Firewall
. |
Need more help? Get answers from Community members and Google SecOps professionals.

