Linux Process-Based Flow Visibility and Outbound Policy Enforcement
Note
This feature is supported with this PCE and VEN combination: PCE 26.2.10 (on-prem) & VEN 26.2.12.
Feature enablement required. See STEP 1: Enable the feature flag
Linux Process-Based Flow Visibility and Outbound Policy Enforcement lets you observe and control outbound network connections from Linux workloads by adding the process identity as additional context to port and protocol rules. This helps security teams enforce least-privilege outbound access by specifying which processes are authorized to use allowed network paths.
In this solution, eBPF supplies process and connection context that drives outbound enforcement.
Note
This feature is the Linux equivalent of Illumio’s Windows process‑based outbound policy enforcement feature. (Windows additionally offers service‑based outbound policy enforcement.)
Use cases
Enforce least-privilege outbound access by allowing only approved processes to communicate with external systems.
Enable more effective investigation and incident response through process-aware outbound traffic visibility.
Supported platforms and scope
Linux process-based outbound policy enforcement is supported on specific Linux platforms and applies only to outbound traffic initiated by the workload. Enforcement occurs at the source host through the Linux VEN, with visibility provided through PCE flow records and logs.
RHEL 9 and later
Combination of on-prem PCE 26.2.10 & VEN 26.2.12
Enforcement location: Source host (Linux VEN)
Process-based allow rules for outbound traffic
Linux process-based rules complement existing IP-based rules; both types of rules must be satisfied for traffic to be allowed.
Performance impact is minimal because enforcement decisions are made at connection time.
Limitations
No support for process-based deny rules for inbound connections
Requirements
You must enable this feature as described in STEP 1.
Combination of on-prem PCE 26.2.10 & VEN 26.2.12
BTF-enabled kernel (standard on RHEL 9 and later)
cgroup v2mounted (default on RHEL 9 and later)
Process identification details
Processes are identified by their full process path on disk. The path must match exactly as it appears on the workload’s filesystem. Symlinks are resolved automatically, and Unicode characters in paths are supported.
Note
Process identity refers to the process that the Linux operating system associates with a network connection when the connection is first established.
When a process is launched from a script (for example, python3 myscript.py), the process identity corresponds to the interpreter path (/usr/bin/python3), not the script.
Binary updates and policy behavior
When a binary is updated, it may be replaced with a new file on disk. The VEN detects the new binary on the next policy push and updates enforcement accordingly. Until that policy push occurs, the new binary is treated as unmanaged.
Procedures
Perform the following steps.
STEP 1: Enable the feature flag
Execute the following curl command:
curl -X PUT "https://<pce_fqdn>/api/v2/orgs/<org_id>/optional_features" \ -H "Content-Type: application/json" \ -u "<api_key>:<api_secret>" \ -d '[{"name": "linux_outbound_process_enforcement", "enabled": true}]'To verify enablement, execute the following command:
curl -u $API_USER:$API_PASS $PCE_URL/api/v2/orgs/1/optional_features
If you need to disable the feature, execute the following command:
-d '[{"name": "linux_outbound_process_enforcement", "enabled": false}]'
STEP 2: Configure Linux Process-Based Outbound Policy Enforcement
Review outbound flow records to identify which processes initiate network connections and assess whether the current behavior matches your expectations or needs to be changed.
In the PCE UI, go to Segmentation > Policy Objects > Services and add a process:
Enter a name.
(Optional). Enter a description.
In Operating System, select Linux Outbound: Process-Based.
In Service Definitions > Process Path, click Add, and then enter the full path(s) of the process(s) you want to manage. For example:
/usr/bin/curl
In the PCE UI, go to Segmentation > All Policies > Add from scratch and add an Allow policy.
Add an allow rule to the policy and specify the Linux process(es) you defined in a previous step.
Example configuration:
To allow only curl and wget to reach an external API:
Process set:
/usr/bin/curl,/usr/bin/wgetRule: Allow TCP port 443 to
10.0.0.0/8
Result:
curl https://api.example.com is allowed
wget https://api.example.com is allowed
python3 -c "import urllib..." to the same destination, blocked (enforced mode) or logged (Visibility mode)
Save and provision the policy.
Confirm the expected behavior by reviewing flow visibility data and testing the application.
Troubleshooting
Outbound traffic is blocked unexpectedly. Review flow logs to identify denied connections, confirm the recorded process identity, and verify that an appropriate allow rule exists for the process and destination.
Policy changes do not take effect. Confirm policy deployment status in the PCE and verify the workload is in scope. If the executable path changed (for example, was updated by package manager or the symlink target changed), update the rule to match the new path.