Update schedule set to download only-paloaltonetworks-panos

Update schedule set to download only-paloaltonetworks-panos
0

Update schedule set to download only-paloaltonetworks-panos

Vendor: paloaltonetworks

OS: panos

Description:
Indeni will alert if the update schedule for application packages is set to download only.

Remediation Steps:
In the update schedule, select Download and Install.

Why is this important?
It is important to track the content (app/threat) version update action in the schedule. Following best practices this should be set to download and install based on a schedule. The rule will alert if not following best practices.

Without Indeni how would you find this?
An administrator would have to manually check the version update and whether or not it is set to install automatically.

panos-show-config-merged-monitoring-xml

name: panos-show-config-merged-monitoring-xml
description: Fetch the running config (xml)
type: monitoring
monitoring_interval: 60 minute
requires:
    vendor: paloaltonetworks
    os.name: panos
    product: firewall
comments:
    certificate-expiration:
        why: |
            Palo Alto Networks firewalls use certificate for a variety of different purposes. One purpose, for example, is inbound SSL inspection. If the certificate used by the firewall expires, certain services may be unavailable to external users.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration, reviews the certificates saved and retrieves their subject and expiration date.
        can-with-snmp: true
        can-with-syslog: true
    timezone:
        why: |
            Most configurations in Palo Alto Networks firewalls are synchronized across cluster members. Some are not, the timezone is one of them. It is important to verify that the timezone is the same on all cluster members to avoid confusion or issues.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the timezone from there.
        can-with-snmp: false
        can-with-syslog: false
    domain:
        why: |
            Most configurations in Palo Alto Networks firewalls are synchronized across cluster members. Some are not, the domain name is one of them. It is important to verify that the domain name is the same on all cluster members to avoid confusion or issues.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the timezone from there.
        can-with-snmp: false
        can-with-syslog: false
    login-banner:
        why: |
            Most configurations in Palo Alto Networks firewalls are synchronized across cluster members. Some are not, the login banner is one of them. It is important to verify that the login banner is the same on all cluster members to avoid confusion or issues.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the timezone from there.
        can-with-snmp: false
        can-with-syslog: false
    syslog-servers:
        why: |
            Tracking the currently configured Syslog servers on all devices is important to ensure consistent logging.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured Syslog servers from there.
        can-with-snmp: false
        can-with-syslog: false
    radius-servers:
        why: |
            Tracking the currently configured RADIUS servers on all devices is important to ensure consistent authentication and access.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured RADIUS servers from there.
        can-with-snmp: false
        can-with-syslog: false
    dns-servers:
        why: |
            Tracking the currently configured DNS servers on all devices is important to ensure consistent name resolution.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured DNS servers from there.
        can-with-snmp: false
        can-with-syslog: false
    ntp-servers:
        why: |
            Tracking the currently configured NTP servers on all devices is important to ensure consistent time sync.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured NTP servers from there.
        can-with-snmp: false
        can-with-syslog: false
    unencrypted-snmp-configured:
        why: |
            SNMPv2c is an unsecure protocol and should not be used. Users should prefer the more secure SNMPv3.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured services from there.
        can-with-snmp: false
        can-with-syslog: false
    telnet-enabled:
        why: |
            Telnet is an unsecure protocol and should not be used. Users may enable telnet unintentionally and should be alerted if they do so.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured services from there.
        can-with-snmp: false
        can-with-syslog: false
    http-server-enabled:
        why: |
            HTTP is an unsecure protocol and should not be used. Users may enable HTTP unintentionally and should be alerted if they do so.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the configured services from there.
        can-with-snmp: false
        can-with-syslog: false
    license-elements-used:
        why: |
            Collect information about the license usage and report installed licenses.
        how: |
            This script pulls the Palo Alto Networks firewall's active configuration and extracts the license information from there.
        can-with-snmp: false
        can-with-syslog: false
    app-update-acceptable-lag:
        why: |
            App update acceptable lag is important to determine because app updates can become out of date if the scheduled update job doesn't succeed.
        how: |
            This script runs determines the configuration scheduled and how frequently the updates should have run.
        can-with-snmp: unknown
        can-with-syslog: true
    av-update-acceptable-lag:
        why: |
            Anti-virus update acceptable lag is important to determine because Anti-virus updates can become out of date if the scheduled update job doesn't succeed.
            This script runs determines the configuration scheduled and how frequently the updates should have run.
        can-with-snmp: unknown
        can-with-syslog: true
    panw-app-update-action:
        why: |
            It is important to track the content (app/threat) version update action in the schedule. Following best practices this should be set to download and install based on a schedule. The rule will alert if not following best practices.
        can-with-snmp: unknown
        can-with-syslog: false
    panw-av-update-action:
        why: |
            It is important to track the anti-virus version update action in the schedule. Following best practices this should be set to download and install based on a schedule. The rule will alert if not following best practices.
        can-with-snmp: unknown
        can-with-syslog: false

steps:
-   run:
        type: HTTP
        command: /api?type=op&cmd=<show><config><merged></merged></config></show>&key=${api-key}
    parse:
        type: XML
        file: show-config-merged-m.parser.1.xml.yaml

panw_update_action_download_only

// Deprecation warning : Scala template-based rules are deprecated. Please use YAML format rules instead.

package com.indeni.server.rules.library.templatebased.paloaltonetworks

import com.indeni.ruleengine.expressions.conditions.{Equals => RuleEquals, Not => RuleNot, Or => RuleOr}
import com.indeni.ruleengine.expressions.data.SnapshotExpression
import com.indeni.server.rules.RuleContext
import com.indeni.server.rules.library.templates.SingleSnapshotValueCheckTemplateRule
import com.indeni.server.sensor.models.managementprocess.alerts.dto.AlertSeverity
import com.indeni.server.rules.library.RuleHelper

/**
  *
  */
case class panw_update_action_download_only() extends SingleSnapshotValueCheckTemplateRule(
  ruleName = "panw_update_action_download_only",
  ruleFriendlyName = "Palo Alto Networks Firewalls: Update schedule set to download only",
  ruleDescription = "Indeni will alert if the update schedule for application packages is set to download only.",
  severity = AlertSeverity.WARN,
  metricName = "panw-app-update-action",
  alertDescription = "The update schedule is set to download only (without installation). This is against Palo Alto Networks best practices.",
  baseRemediationText = "In the update schedule, select Download and Install.",
  complexCondition = RuleEquals(RuleHelper.createComplexStringConstantExpression("download-only"), SnapshotExpression("panw-app-update-action").asSingle().mostRecent().value().noneable)
)()