Git Product home page Git Product logo

iron-skillet's Introduction

IronSkillet Day One Configuration Template

The purpose of the IronSkillet project is to provide day-one best practice configuration templates that can be loaded into a Palo Alto Networks Next-Generation Firewall or Panorama management platform.

Once loaded, the configuration can be augmented with use case specific security policies and other deployment requirements including interfaces, zones, and NAT.

Detailed information can be found in the IronSkillet Documentation

The docs include a IronSkillet Visual Guide for a view of IronSkillet from a GUI perspective.

Quick Start

The templates are provided with a variety of usage options based on the user operational environment.

PanHandler Skillet Player

A quick and easy way to play IronSkillet and other skillets is with the panHandler application.

The panHandler quick start guide in the Skillet District Live community walks you through installation and usage including how to import the IronSkillet skillets.

SLI

The Skillet Line Interfacing tool is a CLI interface that can also be used to load and work with skillets. Please refer to the README document found within the following SLI repository. This will walk you through the installation and basic usage of SLI in the context of skillets.

SLI Commands to Load Skillet

> sli load
# Above line loads and views all skillets found in the working directory
> sli load -sd {Directory Containing Skillets}
# Above line loads and views all skillets found in the given directory

Getting templates from the repo

Users can either grab content file-by-file from the github repo or download all content to a local drive.

TIP: when copying or getting text files from the repo, users should select the Raw format. This is found as a GUI option when viewing the file.

Downloading the files is done using a git clone command or a direct download of the repo as a zip file.

git clone https://github.com/PaloAltoNetworks/iron-skillet.git

Loading configurations using IronSkillet defaults

The loadable_configs directory contains a variety of ready-to-go NGFW and Panorama configurations based on iron-skillet template defaults. These can be loaded 'as-is' and later updated using the GUI or CLI.

The two options to load are:

  • ...full.xml: complete xml configuration to import and load
  • ...full.conf: complete list of CLI-based set commands
Full XML configuration file

Loading the full XML file as a candidate configuration:

* Log into the GUI
* Go to `Device` > `Setup` > `Operations`
* Choose `Import named configuration snapshot`
* Select the file from a local directory to import
* Choose `Load named configuration snapshot`
* Review the loaded configuration and `commit` to apply changes

WARNING: this configuration replaces the existing configuration and is not a merge of configurations. Merging configurations requires the use of load config partial referencing select xpaths to be loaded and merged.

SET commands

Using set commands to load in a configuration:

  • Log into the CLI
  • Enter configure to enter configuration mode
  • Copy a cluster of set commands, 30-40 lines recommended as maximum
  • Paste into the command line and hit Enter to ensure the last line is entered
  • Add all set commands in the conf file
  • Enter commit

TIP: Before entering configure mode, you can use set cli scripting-mode on to paste in a higher volume of lines. This will however remove the option to use '?' as a command-line helper. If scripting mode is enabled and you wish to disable, simply return to CLI operation mode with exit and enter 'set cli scripting-mode off'.

Editing Loaded Configurations

The detailed documentation provides a list of variables that can be edited and instructions for GUI and CLI edits to these values.

IronSkillet variables

Using the SET Command Spreadsheet to Edit Values

Found in templates/panorama/set_commands and templates/panos/set_commands are formula-based Excel files.

The cells in the values worksheet can be edited to create a localized configuration without the iron-skillet defaults. This updates the values in the set commands worksheet. Using the set command steps above, the configuration can then be loaded using the CLI.

WARNING: only update the values worksheet. Using caution if editing the worksheets to ensure cell references and formulas are not incorrect.

SLI Tooling Directory

As an alternative, the Tools directory within the IronSkillet repository contains a README.md file going over how to use various SLI commands to help manage and create loadable configurations among other useful functions. Following the detailed steps in the README and Using SLI to accomplish these tasks is quick, efficient and easy.

Recommended Reading for Additional Best Practice Configuration Steps

Prior to utilizing these configuration templates, it is important to familiarize yourself with the best practice recommendations for Internet Gateway, Datacenter, Wildfire, L4-L7 evasions and other use cases.

Best Practice Recommendations

While useful as suggestions and recommendations, the user is still required to manually use the GUI or CLI to configure each recommendation.

Contributing

Please read CONTRIBUTING.md for details on how you can help contribute to this project.

Support

This is a Palo Alto Networks contributed project.

Authors

See also the list of contributors who have participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details

iron-skillet's People

Contributors

andrewmallory avatar boramutluoglu avatar dependabot[bot] avatar jal-tw avatar nembery avatar scotchoaf avatar skellatore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iron-skillet's Issues

Wildfire size limits don't match best practices

Defaults from Iron Skillet for WF sizes don't match best practices

Here's an output from a BPA from a firewall that's a fresh config and has had Iron Skillet applied (including the items that are correct):

Archive File Size Limit (Fail): It is recommended to set the file size limit for "archive" to a value of 50
Flash File Size Limit (Pass)
Jar File Size Limit (Pass)
Linux File Size Limit (Fail): It is recommended to set the file size limit for "linux" to a value of 50
MacOSX File Size Limit (Fail): It is recommended to set the file size limit for "MacOSX" to a value of 10
MS Office File Size Limit (Fail): It is recommended to set the file size limit for "ms-office" to a value of 16384
PDF File Size Limit (Fail): It is recommended to set the file size limit for "pdf" to a value of 3072
PE File Size Limit (Fail): It is recommended to set the file size limit for "pe" to a value of 16
Report Grayware Files Enabled (Pass)
Session Information Settings (Pass)

test

does this work?

Recommended_Zone_Protection snippet is confusing

the zone protection snippet is set up like so:

<flood>
    <tcp-syn>
      <red>
        <alarm-rate>10000</alarm-rate>
        <activate-rate>10000</activate-rate>
        <maximal-rate>40000</maximal-rate>
      </red>
      <enable>no</enable>

since these settings are default (untuned rates and disabled protection) with only a few protections enabled (scanning + spoofing), I would like to propose renaming the profile to 'NeedsTuning" or "unconfigured', so a novice user does not implement the profile assuming this is Recommended (this snippet is also used in Day1 which is intended for novice users)

Static iron_skillet_panos_full.conf contains "system type dhcp-client" entries

The file iron_skillet_panos_full.conf in the branch https://github.com/PaloAltoNetworks/iron-skillet/tree/panos_v9.1/loadable_configs/sample-mgmt-static/panos contains several configuration commands for a management interface with a dynamic address, not a static address.

See lines 56-59 in that file, which all begin with "set deviceconfig system type dhcp-client"

Expected behavior

Configuration commands for dynamic management addresses should be in the sample-mgmt-dhcp files, not the sample-mgmt-static files.

Current behavior

The loadable configs for sample-mgmt-static contain commands related to dynamic management addresses.

Possible solution

Remove inapplicable commands from scenario-based configuration files, or replace them with scenario-specific commands.

Your Environment

  • Version used: PAN-OS v9.1

GlobalProtect Clientless VPN dynamic update time not specified

The BPA tool wants a setting specified for the GP Clientless VPN dynamic update time. Propose adding the following where appropriate:

            <global-protect-clientless-vpn>
              <recurring>
                <hourly>
                  <at>36</at>
                  <action>download-and-install</action>
                </hourly>
              </recurring>
            </global-protect-clientless-vpn>

Add log settings for IP-Tag events

This is blank without a reference IP-Tag event template setting. May be newer for 9.x releases and missed when upgraded from the 8.x config templates

Found Skillets with errors! Please open an issue on this repository to help resolve this issue

Describe the bug

Running build_all.sh results in errors.

Expected behavior

The build should run error-free.

Current behavior

Affects Panhandler: PaloAltoNetworks/panhandler#231
Build_All.sh_output.txt

Possible solution

This appears to be the first line of code that returns an error:

sli -sd ../../ rollup_playlist -n ironskillet_panos_10_1 ../templates/panos/snippets/.meta-cnc.yaml
Invalid action, run "sli --help" for list of available actions

Steps to reproduce

git clone https://github.com/PaloAltoNetworks/iron-skillet.git
./build_all.sh

Screenshots

Build_All.sh_output.txt

Context

I can't run panhandler to generate a day one config

Your Environment

Ran in multiple environments - Linux OSes, Docker etc. All return the same result.

admin lockout after too many tries

include the admin lockout configuration as part of the day 1

NAME: Failed Attempts / Lockout Time / Idle Timeout / Acquire Commit Lock
PATH: <config urldb="paloaltonetworks" version="VERSION"><devices><entry name="localhost.localdomain"><template><entry name="iron-skillet"><config><devices><entry name="localhost.localdomain"><deviceconfig><setting><management>
PATH: <config urldb="paloaltonetworks" version="VERSION"><devices><entry><deviceconfig><setting><management>


XML:
  <admin-lockout>
    <failed-attempts>5</failed-attempts>
    <lockout-time>30</lockout-time>
  </admin-lockout>
  <idle-timeout>10</idle-timeout>
  <auto-acquire-commit-lock>yes</auto-acquire-commit-lock>

Minimum password complexity is not set

The BPA tool shows that a minimum password complexity should be set. I propose adding the following to the appropriate place:

    <password-complexity>
      <enabled>yes</enabled>
      <minimum-length>8</minimum-length>
      <minimum-uppercase-letters>1</minimum-uppercase-letters>
      <minimum-lowercase-letters>1</minimum-lowercase-letters>
      <minimum-numeric-letters>1</minimum-numeric-letters>
      <minimum-special-characters>1</minimum-special-characters>
      <block-username-inclusion>yes</block-username-inclusion>
    </password-complexity>

Unable to run "build_my_configs.py" script

Hi, I am getting the followoing errors when trying to run the script. I tried on different platforms.
$ python3 ./build_my_configs.py
Traceback (most recent call last):
File "./build_my_configs.py", line 39, in
from passlib.hash import des_crypt
ModuleNotFoundError: No module named 'passlib'

debug.txt

Some URL categories should be blocked for best practices

The BPA tool wants to add the following categories as block categories. Propose adding the following categories to the block list:

copyright-infringement
dynamic-dns
extremism
parked
proxy-avoidance-and-anonymizers
unknown

Version number discrepancy (v9 / v10) in Panhandler GUI

Panhandler displays "This skillet does a full NGFW validation of IronSkillet day one configuration - panos v10.0" in the initial skillet selection page.

After the assessment is run, Panhandler displays "PAN-OS 9.x" on the results page.

This is with Panhandler version 4.4 2021-05-20T15:24:19, running against a PA-220 with PAN-OS 10.1.0

Screenshots attached.

  • Version used: Version: 4.4 2021-05-20T15:24:19

Panhandler

Default value in iron_skillet_panos_full.xlsx is wrong for sinkhole

Describe the bug

Default value in iron_skillet_panos_full.xlsx is wrong for sinkhole (11.0 branch)

Expected behavior

The set commands in Excel should work out of the box if i want to use PaloAlto Sinkhole.

Current behavior

Now I get commit error on Spyware. Invalid ipv4-address for sinkhole.

Possible solution

Change row B12 "sinkhole.paloaltonetworks.com" to "pan-sinkhole-default-ip"
With correct default value the commit works

Steps to reproduce

  1. Download Excel file iron_skillet_panos_full.xlsx
  2. Copy row 205 to 388 and paste it into firewall ssh session.
  3. Commit FW and check for warning on the commit.

Context

Want Iron-Skillet to be as ready as possible out of the box, more easy to use.

Your Environment

  • Version used: 11.1.2-H3
  • Environment name and version Microsoft Edge 123
  • Operating System and version (desktop or mobile): Windows 11 Desktop

Custom report no longer created

Previously there was a custom report created for potentially compromised machines as well as an email scheduler created. I'm not seeing those created. Is that on purpose?

Iron-Skillet changed Device Name

Hi,

I test right now your iron skillet full xml file for Azure and AWS in Automation Tool (FCA). I figured out that the xml file will override from every Firewall the Device Name to"sample".

</ntp-servers> <login-banner>You have accessed a protected system. Log off immediately if you are not an authorized user.</login-banner> <timezone>UTC</timezone> **<hostname>sample</hostname>** <type>

https://github.com/PaloAltoNetworks/iron-skillet/blob/panos_v8.1/loadable_configs/sample-cloud-Azure/panos/iron_skillet_panos_full.xml

Is there really a need that the Iron Skillet is overriding the Device hostname? Then this occurs many issues for us in the FCA tool.

Regards,

Torsten

"Recommended_Decryption_Profile protocol settings max version is TLS 1.3 or max" link takes user to URL Filtering docs, not Decryption docs

Describe the bug

One of the tests in the "IronSkillet - check NGFW config for updated v10.1 elements" skillet is for the SSL Decryption protocol version.

The text in the test result is a clickable hyperlink which takes the user to some online documentation, but the wrong documentation.

It takes the user to https://iron-skillet.readthedocs.io/en/docs_master/viz_guide_panos.html#url-filtering

It should take the user to https://iron-skillet.readthedocs.io/en/docs_master/viz_guide_panos.html#decryption-profile

  • Version used: 4.5 2021-06-11T19:29:39 / the latest 10.1 skillets pulled down at the time of submitting this issue.

Panhandler_wrong_hyperlink

Sample loadable configs contain "ip-netmask" instead of "fqdn"

If using the provided sample .conf files to apply configuration selectively, the administrator may be tripped up by the sinkhole configuration lines.

These files:

  • loadable_configs\sample-cloud-AWS\panos\iron_skillet_panos_full.conf
  • loadable_configs\sample-cloud-Azure\panos\iron_skillet_panos_full.conf
  • loadable_configs\sample-cloud-GCP\panos\iron_skillet_panos_full.conf
  • loadable_configs\sample-mgmt-dhcp\panos\iron_skillet_panos_full.conf
  • loadable_configs\sample-mgmt-static\panos\iron_skillet_panos_full.conf

All contain the line:

  • set address Sinkhole-IPv4 ip-netmask sinkhole.paloaltonetworks.com

However (on a PA-220 running 9.0.3-h3 - I don't know if the same occurs on other models and software releases)...

# set address Sinkhole-IPv4 ip-netmask sinkhole.paloaltonetworks.com
sinkhole.paloaltonetworks.com is not a valid IPV4/V6 address-netmask.

Invalid syntax.
[edit]

Instead...

# set address Sinkhole-IPv4 fqdn sinkhole.paloaltonetworks.com

[edit]

GlobalProtect Data File dynamic update time not specified

The BPA tool wants a setting specified for the GP Data File dynamic update time. Propose adding the following where appropriate:

            <global-protect-datafile>
              <recurring>
                <hourly>
                  <at>26</at>
                  <action>download-and-install</action>
                </hourly>
              </recurring>
            </global-protect-datafile>

v9.1 branch?

Now that 9.1.0 is out, will iron-skillet be updated to accommodate the new release?

v10.0 branch?

Now that 10.0.0 is out, will iron-skillet be updated to accommodate the new release?

iron_skillet_panos_full.conf says 8.1 when using 9.0 branch

When using the panos_v9.0 branch and after running "python3 create_loadable_configs.py", the produced iron_skillet_panos_full.conf says this on line 1:

# set command configuration for panos version 8.1

It should say:

# set command configuration for panos version 9.0

Panhandler does not appear to recognise "Max" as an acceptable SSL Protocol version

Describe the bug

The firewall's SSL decryption policy has the SSL Protocol Max Version set to "Max".

Panhandler reports this as a failure; from observation it appears to be explicitly expecting "TLSv1.3".

This is with Panhandler version 4.4 2021-05-20T15:24:19, running against a PA-220 with PAN-OS 10.1.0

Screenshots attached.

  • Version used: 4.4 2021-05-20T15:24:19

Panhandler_decryption

Remove password expiry from password complexity settings

Per NIST guidelines (https://pages.nist.gov/800-63-FAQ/#q-b05), expiring passwords are no longer recommended. I propose setting password expiration to zero in the password complexity settings. Not sure if it defaults to zero or if you need something like this:

<password-complexity>
      <password-change>
        <expiration-period>0</expiration-period>
      </password-change>
</password-complexity>

If this change isn't palletable then I propose adding password expiration change warning to the password requirements as right now that is set to zero (I believe by default). Which means that passwords expire without warning.

Superfluous configuration commands in loadable_configs

Describe the bug

The file iron-skillet-panos_v10.1\loadable_configs\sample-mgmt-dhcp\panos\iron_skillet_panos_full.conf contains some lines (6-12) relating to a static IP configuration.

The file iron-skillet-panos_v10.1\loadable_configs\sample-mgmt-static\panos\iron_skillet_panos_full.conf contains some lines (14-18) relating to a DHCP configuration.

Expected behavior

The loadable_configs files should contain only commands specific to their intended scenarios.

Current behavior

The loadable_configs files contain extra commands unrelated to their intended scenarios.

  • Version used: 10.1, latest available commit downloaded today

Panhandler reports failed check for time zone, with "Etc/UTC"

Describe the bug

Similar to #118 Panhandler appears to be looking for a single specific value for a setting, where more than one value may be appropriate.

Panhandler reports a failure if the firewall's timezone is not "UTC". However, many systems use the recognised standard "Etc/UTC", which is also supported by PAN-OS.

See ftp://ftp.iana.org/tz/data/ for further details on the available timezone names in the tz database

Expected behavior

Panhandler / Iron Skillet should allow for multiple equivalent values, where appropriate.

Current behavior

Panhandler / Iron Skillet checks for a single specific value.

Possible solution

Suggest updating Panhandler / Iron Skillet to accommodate multiple equally-valid options for the time zone.

Steps to reproduce

  1. Set the firewall's timezone to Etc/UTC.
  2. Run an Iron Skillet check against the firewall
  3. Observe the timezone failure in the report.

Screenshots

Firewall:
image

Panhandler:
image

Your Environment

  • Version used: Panhandler 4.5 2021-06-11T19:29:39 // Iron Skillet v10.1 updated 2021-07-06 20:55

On some platforms Team Cymru IPv6 Bogons list throws warning

On some platforms the following error is thrown upon list download:

Warning: EDL(Team Cymru Bogons IPv6) Exceeded maximum number of ips at line 46960

Just want to put it out there to brainstorm ways around this. Perhaps don't include the IPv6 in the default block rules? Open to thoughts...

"allow-http-range unexpected here"

Hi - I generated an iron_skillet config using the tool and when I try to load it to the FW, it complains

Config loaded from iron_skillet_day1_template.xml
deviceconfig -> setting -> ctd -> allow-http-range unexpected here. Discarding.

Thanks,
Natasha

[Community Health Assessment] Changes needed

This issue was opened by a bot called Community Health (PANW) because this repo has failed too many community health checks.

Repo maintainers: Please take the time to fix the issues in the table to reach the target score. These improvements will help others find your work and contribute to it. This issue will update as your score improves until it hits the target score.

Click More info for instructions to fix each item.

Health Check Pass Score More Info
Contains a meaningful README.md file 20 / 20 More info
SUPPORT.md file exists 20 / 20 More info
Repo has a description 15 / 15 More info
Has a recognized open source license 15 / 15 More info
Has a descriptive repo name 15 / 15 More info
Required topics attached to repo 0 / 15 More info
CONTRIBUTING.md file with contribution guidelines 5 / 5 More info
Has custom issue and pull request templates 0 / 5 More info

Current score: 90
Target threshold: 100
Total possible: 110

Recommended_Zone_Protection does not meet best practices

The BPA tool wants the zone protection profile to not use default values. Is it possible to change the default values slightly? Propose adding the following where appropriate:

          <zone-protection-profile>
            <entry name="Recommended_Zone_Protection">
              <flood>
                <tcp-syn>
                  <red>
                    <alarm-rate>10001</alarm-rate>
                    <activate-rate>10001</activate-rate>
                    <maximal-rate>40001</maximal-rate>
                  </red>
                  <enable>yes</enable>
                </tcp-syn>
                <icmp>
                  <red>
                    <alarm-rate>10001</alarm-rate>
                    <activate-rate>10001</activate-rate>
                    <maximal-rate>40001</maximal-rate>
                  </red>
                  <enable>yes</enable>
                </icmp>
                <icmpv6>
                  <red>
                    <alarm-rate>10001</alarm-rate>
                    <activate-rate>10001</activate-rate>
                    <maximal-rate>40001</maximal-rate>
                  </red>
                  <enable>yes</enable>
                </icmpv6>
                <other-ip>
                  <red>
                    <alarm-rate>10001</alarm-rate>
                    <activate-rate>10001</activate-rate>
                    <maximal-rate>40001</maximal-rate>
                  </red>
                  <enable>yes</enable>
                </other-ip>
                <udp>
                  <red>
                    <alarm-rate>10001</alarm-rate>
                    <activate-rate>10001</activate-rate>
                    <maximal-rate>40001</maximal-rate>
                  </red>
                  <enable>yes</enable>
                </udp>
              </flood>
              <scan>
                <entry name="8001">
                  <action>
                    <alert/>
                  </action>
                  <interval>2</interval>
                  <threshold>100</threshold>
                </entry>
                <entry name="8002">
                  <action>
                    <alert/>
                  </action>
                  <interval>10</interval>
                  <threshold>100</threshold>
                </entry>
                <entry name="8003">
                  <action>
                    <alert/>
                  </action>
                  <interval>2</interval>
                  <threshold>100</threshold>
                </entry>
              </scan>
              <discard-ip-spoof>yes</discard-ip-spoof>
              <discard-malformed-option>yes</discard-malformed-option>
              <remove-tcp-timestamp>yes</remove-tcp-timestamp>
              <strip-tcp-fast-open-and-data>no</strip-tcp-fast-open-and-data>
              <strip-mptcp-option>global</strip-mptcp-option>
              <discard-overlapping-tcp-segment-mismatch>yes</discard-overlapping-tcp-segment-mismatch>
            </entry>
          </zone-protection-profile>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.