/panorama

Primary LanguagePythonApache License 2.0Apache-2.0

Panorama

Publisher: Splunk
Connector Version: 3.2.0
Product Vendor: Palo Alto Networks
Product Name: Panorama
Product Version Supported (regex): ".*"
Minimum Product Version: 5.1.0

This app integrates with the Palo Alto Networks Panorama product to support several containment and investigative actions

Overview

The Panorama app has been tested with PanOS version 7.0.4 and should work with any version above.

All the containment actions (like block ip etc.), take a policy name and the policy type as parameters. The action first creates an object (Application Group, Address Group, etc.) on the Panorama device to represent the object being blocked. This object is then added to the specified policy. It does not modify any other policy parameters including the Action . Therefore you must pre-configure the policy action as Drop .

Most of the actions execute a commit on the panorama device followed by a commit on the device group. This second commit results in Panorama sending the commit to each device that belongs to a device group, which could take some time. It is a good idea to add a time interval between two panorama actions when executing a playbook

Panorama restricts object names to 31 characters. This could result in object names that are created by Phantom being truncated in some cases.

It is usually a good idea to have one Policy created on the Panorama device to handle the block of each type of object. The panorama_app playbook that is available on the community github repo assumes this type of configuration. Note that to block URLs on Panorama, they are included in a URL Filtering profile that is usually added to an Allow policy. Please see the PanOS documentation for more details.

Commit Configuration

You can use the commit API request to commit a candidate configuration to a firewall. Commit actions are called at the end of all Contain actions (e.g. BlockIP).

You can learn more about Commit Configuration below: (API)

Audit Comment Archive

If the option "Require audit comment on policies" (Panorama -> Management) is enabled, Audit comments must be specified to a given Policy rule before committing any changes to that rule.

WARNING: Additionally, the length of an Audit comment can be at most 256 characters.

You can learn more about Audit comment below:

Configuration Variables

The below configuration variables are required for this Connector to operate. These variables are specified when configuring a Panorama asset in SOAR.

VARIABLE REQUIRED TYPE DESCRIPTION
device required string Device IP/Hostname
verify_server_cert optional boolean Verify server certificate
username required string Username
password required password Password

Supported Actions

test connectivity - Validate the asset configuration for connectivity
block url - Block an URL
unblock url - Unblock an URL
block application - Block an application
unblock application - Unblock an application
block ip - Block an IP
unblock ip - Unblock an IP
list applications - List the applications that the device knows about and can block
run query - Run a query on Panorama

action: 'test connectivity'

Validate the asset configuration for connectivity

Type: test
Read only: True

This action logs into the device using a REST Api call to check the connection and credentials configured.

Action Parameters

No parameters are required for this action

Action Output

No Output

action: 'block url'

Block an URL

Type: contain
Read only: False

This action does the following to block a URL:

  • Create an URL Filtering profile object named 'Phantom URL List for [device_group]' containing the URL to block.
    If the profile is already present, then it will be updated to include the URL to block. IMPORTANT: For Version 9 and above, a URL Filtering profile no longer includes allow-list/block-list. The official workaround is to use a Custom URL category instead. Therefore, we create a new Custom URL category with the same name as the profile and link it to the profile. Then, We configure the profile to block the URL category on both 'SITE ACCESS' and 'USER CREDENTIAL SUBMISSION' columns.
  • Re-Configure the policy (specified in the policy_name parameter) to use the created URL Filtering profile.
    If the policy is not found on the device, the action will return an error.
  • The action then proceeds to commit the changes to Panorama, followed by a commit to the device group. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
url required URL to block string url
device_group required Device group to configure, or 'shared' string
policy_type required Block policy type string
policy_name required Policy to use string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean
audit_comment optional Audit comment to be used with the policy name. Maximum 256 characters. string

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.url string url
action_result.parameter.device_group string
action_result.parameter.policy_type string
action_result.parameter.policy_name string
action_result.parameter.use_partial_commit boolean
action_result.parameter.audit_comment string
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'unblock url'

Unblock an URL

Type: correct
Read only: False

For Version 8 and below, this action will remove the URL from the URL Filtering profile that was created/updated in the block url action. For Version 9 and above, this action will remove the URL from the Custom URL category that was created/updated in the block url action. The action then proceeds to commit the changes to Panorama, followed by a commit to the device group. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
url required URL to unblock string url
device_group required Device group to configure, or 'shared' string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.url string url
action_result.parameter.device_group string
action_result.parameter.use_partial_commit boolean
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'block application'

Block an application

Type: contain
Read only: False

This action does the following to block an application:

  • Create an Application group named 'Phantom App List for [device_group]' containing the application to block.
    If the group is already present, then it will be updated to include the application.
  • Re-Configure the policy (specified in the policy_name parameter) to use the created application group.
    If the policy is not found on the device, the action will return an error.
  • The action then proceeds to commit the changes to Panorama, followed by a commit to the device group. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it.
To get a list of applications that can be blocked, execute the list applications action.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
application required Application to block string network application
device_group required Device group to configure, or 'shared' string
policy_type required Block policy type string
policy_name required Policy to use string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean
audit_comment optional Audit comment to be used with the policy name. Maximum 256 characters. string

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.application string network application
action_result.parameter.device_group string
action_result.parameter.policy_type string
action_result.parameter.policy_name string
action_result.parameter.use_partial_commit boolean
action_result.parameter.audit_comment string
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'unblock application'

Unblock an application

Type: correct
Read only: False

This action will remove the application from the Application group that was created/updated in the block application action. The action then proceeds to commit the changes to Panorama, followed by a commit to the device group. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it.
Note: This action will pass for any non-existing application name as API doesn't return an error for an incorrect application name.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
application required Application to unblock string network application
device_group required Device group to configure or 'shared' string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.application string network application
action_result.parameter.device_group string
action_result.parameter.use_partial_commit boolean
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'block ip'

Block an IP

Type: contain
Read only: False

This action uses a multistep approach to block an IP\. The approach differs whether is\_source\_address is true or not\. By default, it is false\. The procedure is as follows\:

  • Create an address entry named '\[ip\_address\] Added By Phantom' with the specified IP address
  • The container id of the phantom action is added as a tag to the address entry when it's created
  • If is\_source\_address is false\:
    • add this entry to an address group called Phantom Network List for \[device\_group\]
    • The address entry and group will be created in the device group specified in the device\_group parameter
    • configure the address group as a destination to the policy specified in the policy\_name parameter
    If is\_source\_address is true\:
    • add this entry to an address group called PhantomNtwrkSrcLst\[device\_group\]
    • The address entry and group will be created in the device group specified in the device\_group parameter
    • configure the address group as a source to the policy specified in the policy\_name parameter
    Note\: If the policy is not found on the device, the action will return an error\.
  • The action then proceeds to commit the changes to Panorama, followed by a commit to the device group\. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it\.

Please Note\: If the Panorama Policy that is used to block a source or destination address has 'Any' in the Source Address or Destination Address field, Block IP will succeed but it will not work\. Therefore, make sure that the policy that the address group will be appended to has no 'Any' in the field that you are blocking from\. i\.e, if you are blocking an IP from source, make sure the policy does not have 'Any' under Source Address\.

The address group name is limited to 32 characters\. The device group chosen will be appended to the address group name created\. If the resulting name is too long, the name will be trimmed, which may result in clipped or unusual names\. This is as intended, as it is a limitation by Panorama\.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
ip required IP to block string ip
is_source_address optional Source address boolean
device_group required Device group to configure, or 'shared' string
policy_type required Block policy type string
policy_name required Policy to use string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean
audit_comment optional Audit comment to be used with the policy name. Maximum 256 characters. string

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.ip string ip
action_result.parameter.is_source_address boolean
action_result.parameter.device_group string
action_result.parameter.policy_type string
action_result.parameter.policy_name string
action_result.parameter.use_partial_commit boolean
action_result.parameter.audit_comment string
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'unblock ip'

Unblock an IP

Type: correct
Read only: False

This action will remove the address entry from the Address group that was created/updated in the block ip action. This action behaves differently based upon whether is_source_address is true or false. By default, it is false.
If is_source_address is false:

  • The given IP address will be removed from the Phantom Network List for [device_group] Address Group.
If is_source_address is true:
  • The given IP address will be removed from the PhantomNtwrkSrcLst[device_group] Address Group.
The action then proceeds to commit the changes to Panorama, followed by a commit to the device group. If the device group happens to be shared, then a commit will be sent to all the device groups belonging to it.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
ip required IP to unblock string ip
is_source_address optional Source address boolean
device_group required Device group to configure, or 'shared' string
use_partial_commit optional Whether to perform Partial commit admin-level changes. Config's username is included as the administrator name in the request. Otherwise, plain commit is used by default. boolean

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.ip string ip
action_result.parameter.device_group string
action_result.parameter.is_source_address boolean
action_result.parameter.use_partial_commit boolean
action_result.data string
action_result.status string
action_result.message string
action_result.summary string
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'list applications'

List the applications that the device knows about and can block

Type: investigate
Read only: True

Action Parameters

No parameters are required for this action

Action Output

DATA PATH TYPE CONTAINS
action_result.data.*.@name string network application
action_result.data.*.category string
action_result.data.*.has-known-vulnerability string
action_result.data.*.used-by-malware string
action_result.data.*.@ori_country string
action_result.data.*.description string
action_result.data.*.consume-big-bandwidth string
action_result.data.*.able-to-transfer-file string
action_result.data.*.technology string
action_result.data.*.pervasive-use string
action_result.data.*.@ori_lauguage string
action_result.data.*.subcategory string
action_result.data.*.prone-to-misuse string
action_result.data.*.default.port.member string
action_result.data.*.evasive-behavior string
action_result.data.*.references.entry.link string
action_result.data.*.references.entry.@name string
action_result.data.*.tunnel-other-application string
action_result.data.*.@id string
action_result.data.*.risk string
action_result.data.*.application-container string
action_result.data.*.use-applications.member.#text string
action_result.data.*.use-applications.member.@minver string
action_result.data.*.use-applications.@minver string
action_result.data.*.@minver string
action_result.data.*.references.entry.*.link string
action_result.data.*.references.entry.*.@name string
action_result.data.*.use-applications.member string
action_result.data.*.file-type-ident string
action_result.data.*.virus-ident string
action_result.data.*.use-applications.member string
action_result.data.*.tunnel-applications.member string
action_result.data.*.data-ident string
action_result.data.*.implicit-use-applications.member string
action_result.data.*.default.port.member string
action_result.data.*.udp-timeout string
action_result.data.*.default.ident-by-ip-protocol string
action_result.data.*.file-forward string
action_result.data.*.use-applications.member.*.#text string
action_result.data.*.use-applications.member.*.@minver string
action_result.data.*.tunnel-applications.member.*.#text string
action_result.data.*.tunnel-applications.member.*.@minver string
action_result.data.*.tunnel-applications.@minver string
action_result.data.*.ottawa-name string
action_result.data.*.implicit-use-applications.member string
action_result.data.*.decode string
action_result.data.*.breaks-decryption string
action_result.data.*.tunnel-applications.member.#text string
action_result.data.*.tunnel-applications.member.@minver string
action_result.data.*.tunnel-applications.member string
action_result.data.*.related-applications.member string
action_result.data.*.child string
action_result.data.*.timeout string
action_result.data.*.analysis string
action_result.data.*.not-support-ssl string
action_result.data.*.enable-url-filter string
action_result.data.*.decode.#text string
action_result.data.*.decode.@minver string
action_result.data.*.correlate.rules.entry.threshold string
action_result.data.*.correlate.rules.entry.interval string
action_result.data.*.correlate.rules.entry.protocol string
action_result.data.*.correlate.rules.entry.track-by.member string
action_result.data.*.correlate.rule-match string
action_result.data.*.correlate.interval string
action_result.data.*.correlate.key-by.member string
action_result.data.*.tunnel-other-application.#text string
action_result.data.*.tunnel-other-application.@minver string
action_result.data.*.tcp-timeout string
action_result.data.*.ident-by-dport string
action_result.data.*.file-forward string
action_result.data.*.ident-by-sport string
action_result.data.*.preemptive string
action_result.data.*.use-applications.*.member string
action_result.data.*.netx-vmotion string
action_result.data.*.ha-safe string
action_result.data.*.timeout string
action_result.data.*.doc-review string
action_result.data.*.default.*.ident-by-ip-protocol string
action_result.data.*.default.*.port.member string
action_result.data.*.discard-timeout string
action_result.data.*.udp-discard-timeout string
action_result.data.*.default.ident-by-icmp-type string
action_result.data.*.deprecated string
action_result.data.*.alg-disable-capability string
action_result.data.*.risk string
action_result.data.*.tcp-discard-timeout string
action_result.status string
action_result.message string
action_result.summary.total_applications numeric
summary.total_objects numeric
summary.total_objects_successful numeric

action: 'run query'

Run a query on Panorama

Type: investigate
Read only: True

This action runs a query on Panorama and returns the set of logs matching the search criteria.

Use the range parameter to limit the number of logs returned by the action. If no range is given, the action will use the range 1-5000. The action can retrieve up to a maximum of 5000 logs. If more logs need to be retrieved, rerun the action with the next sequential range of values.

The log_type parameter can be one of the following:

  • traffic - traffic logs
  • url - URL filtering logs
  • data - data filtering logs
  • threat - threat logs
  • config - config logs
  • system - system logs
  • hipmatch - HIP match logs
  • wildfire - wildfire logs
  • corr - correlated event logs
  • corr-categ - correlated events by category
  • corr-detail - correlated event details.

Action Parameters

PARAMETER REQUIRED DESCRIPTION TYPE CONTAINS
log_type required Log type to query string
query required Query to run string
range optional Range of result logs to retrieve (e.g 1-5000 or 100-700) string
direction optional Direction to search string

Action Output

DATA PATH TYPE CONTAINS
action_result.parameter.query string
action_result.parameter.log_type string
action_result.parameter.direction string
action_result.parameter.range string
action_result.data.*.job.id string
action_result.data.*.job.tdeq string
action_result.data.*.job.tenq string
action_result.data.*.job.tlast string
action_result.data.*.job.status string
action_result.data.*.job.cached-logs string
action_result.data.*.log.logs.entry.*.to string
action_result.data.*.log.logs.entry.*.app string
action_result.data.*.log.logs.entry.*.dst string ip
action_result.data.*.log.logs.entry.*.src string ip
action_result.data.*.log.logs.entry.*.from string
action_result.data.*.log.logs.entry.*.rule string
action_result.data.*.log.logs.entry.*.type string
action_result.data.*.log.logs.entry.*.vsys string
action_result.data.*.log.logs.entry.*.bytes string
action_result.data.*.log.logs.entry.*.dport string port
action_result.data.*.log.logs.entry.*.flags string
action_result.data.*.log.logs.entry.*.proto string
action_result.data.*.log.logs.entry.*.seqno string
action_result.data.*.log.logs.entry.*.sport string port
action_result.data.*.log.logs.entry.*.start string
action_result.data.*.log.logs.entry.*.@logid string
action_result.data.*.log.logs.entry.*.action string
action_result.data.*.log.logs.entry.*.domain string domain
action_result.data.*.log.logs.entry.*.dstloc string
action_result.data.*.log.logs.entry.*.logset string
action_result.data.*.log.logs.entry.*.serial string
action_result.data.*.log.logs.entry.*.srcloc string
action_result.data.*.log.logs.entry.*.elapsed string
action_result.data.*.log.logs.entry.*.packets string
action_result.data.*.log.logs.entry.*.padding string
action_result.data.*.log.logs.entry.*.pbf-c2s string
action_result.data.*.log.logs.entry.*.pbf-s2c string
action_result.data.*.log.logs.entry.*.subtype string
action_result.data.*.log.logs.entry.*.vsys_id string
action_result.data.*.log.logs.entry.*.category string
action_result.data.*.log.logs.entry.*.cpadding string
action_result.data.*.log.logs.entry.*.flag-nat string
action_result.data.*.log.logs.entry.*.natdport string
action_result.data.*.log.logs.entry.*.natsport string
action_result.data.*.log.logs.entry.*.flag-pcap string
action_result.data.*.log.logs.entry.*.pkts_sent string
action_result.data.*.log.logs.entry.*.repeatcnt string
action_result.data.*.log.logs.entry.*.sessionid string
action_result.data.*.log.logs.entry.*.bytes_sent string
action_result.data.*.log.logs.entry.*.config_ver string
action_result.data.*.log.logs.entry.*.flag-proxy string
action_result.data.*.log.logs.entry.*.inbound_if string
action_result.data.*.log.logs.entry.*.sym-return string
action_result.data.*.log.logs.entry.*.actionflags string
action_result.data.*.log.logs.entry.*.device_name string
action_result.data.*.log.logs.entry.*.outbound_if string
action_result.data.*.log.logs.entry.*.transaction string
action_result.data.*.log.logs.entry.*.flag-flagged string
action_result.data.*.log.logs.entry.*.receive_time string
action_result.data.*.log.logs.entry.*.action_source string
action_result.data.*.log.logs.entry.*.non-std-dport string
action_result.data.*.log.logs.entry.*.pkts_received string
action_result.data.*.log.logs.entry.*.time_received string
action_result.data.*.log.logs.entry.*.bytes_received string
action_result.data.*.log.logs.entry.*.captive-portal string
action_result.data.*.log.logs.entry.*.decrypt-mirror string
action_result.data.*.log.logs.entry.*.time_generated string
action_result.data.*.log.logs.entry.*.dg_hier_level_1 string
action_result.data.*.log.logs.entry.*.dg_hier_level_2 string
action_result.data.*.log.logs.entry.*.dg_hier_level_3 string
action_result.data.*.log.logs.entry.*.dg_hier_level_4 string
action_result.data.*.log.logs.entry.*.flag-url-denied string
action_result.data.*.log.logs.entry.*.temporary-match string
action_result.data.*.log.logs.entry.*.session_end_reason string
action_result.data.*.log.logs.@count string
action_result.data.*.log.logs.@progress string
action_result.status string
action_result.message string
action_result.summary.num_logs numeric
summary.total_objects numeric
summary.total_objects_successful numeric