<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article MineMeld to Implement NAC Application (DAGPusher) in General Articles</title>
    <link>https://live.paloaltonetworks.com/t5/general-articles/minemeld-to-implement-nac-application-dagpusher/ta-p/203006</link>
    <description>&lt;H2&gt;Introduction&lt;/H2&gt;
&lt;P&gt;The most common way to share indicators with a PAN-OS device is by using its External Dynamic List feature. MineMeld hosts a WEB server that can be used to generate feeds for URL, Domain and IP indicators to be consumed by a NGFW. One of the drawbacks of this approach is it being synchronous. The PANOS device polls at regular intervals the feed. This means that a recently received indicator might not be available for enforcement in the NGFW until the next poll is executed (typically 60 minutes)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For host-based (/32) IPv4 indicators, MineMeld features an async node that leverages the &lt;A href="https://docs.paloaltonetworks.com/pan-os/10-2/pan-os-admin/policy/register-ip-addresses-and-tags-dynamically" target="_self"&gt;Dynamic Address Group&lt;/A&gt; PANOS feature. This node will "push" indicator changes to the device as soon as they reach the output.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;UPDATE messages will be converted into "register" API calls&lt;/LI&gt;
&lt;LI&gt;WITHDRAW messages will be converted into "unregister" API calls&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This article explores all the rich features of the DAGPusher MineMeld node in the contexts of a &lt;A href="https://en.wikipedia.org/wiki/Network_Access_Control" target="_self"&gt;NAC&lt;/A&gt; application.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Overview of the DAGPusher node&lt;/H2&gt;
&lt;P&gt;The DAGPusher node is, basically, a multi-instance API Client to the User-ID API entry point provided by any PANOS or PANORAMA device. The User-ID API entry point allows an external party (in this case MineMeld) map IP addresses with abstract data, for example:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;username&lt;/STRONG&gt;: the basis of the &lt;A href="https://www.paloaltonetworks.com/technologies/user-id" target="_self"&gt;PANOS User-ID technology&lt;/A&gt;. IP addresses are mapped with a user-name ID and policies can be constructed based on this extended information instead of based on the value of the IP's themselves.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;tags&lt;/STRONG&gt;: multiple tags can be attached to an IP. Then groups of IP's can be created by collecting all IP addresses having a common set of tags. These groups can be used in the policies. This is, for example, the basis for the &lt;A href="https://docs.paloaltonetworks.com/pan-os/10-1/pan-os-web-interface-help/device/device-vm-information-sources" target="_self"&gt;VM Information Sources&lt;/A&gt; PANOS feature.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Each indicator reaching the DAGPusher node is processed, attributes extracted, and a call to the User-ID API is made to "register" or "unregister" these IP's with a collection of tags related to the indicator's attributes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The DAGPusher node instantiates a new User-ID client for each managed device. This way the indicators can be pushed to many devices at once. The DAGPusher node also supports using PANORAMA as proxy to the devices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The current version of the DAGPusher node only supports host-based IPv4 indicators. Take in mind that all the following indicators types will be discarded by the node and not pushed down to the PANOS devices:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;non-IPv4 indicators (that includes IPv6, URL, Domain, etc.)&lt;/LI&gt;
&lt;LI&gt;IPv4 indicators with the format &amp;lt;ip-address&amp;gt;/&amp;lt;masklen&amp;gt; where masklen is not 32&lt;/LI&gt;
&lt;LI&gt;IPv4 indicators with the format &amp;lt;ip-address-begin&amp;gt;-&amp;lt;ip-address-end&amp;gt; (ranges) where begin and end are not equal.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The configuration attributes for the DAGPusher node are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;&lt;STRONG&gt;tag_prefix&lt;/STRONG&gt; (string)&lt;/SPAN&gt;: a char sequence that will be used as prefix for any tag value pushed to the devices (defaults to &lt;FONT face="courier new,courier"&gt;&lt;SPAN class="pl-s"&gt;&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;mmld_&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;&lt;STRONG&gt;tag_watermark&lt;/STRONG&gt; (string)&lt;/SPAN&gt;: the value of a tag that will be attached to any indicator pushed by the DAGPusher node. This way, a NGFW administrator can backtrace any given tagged IP back to MineMeld as responsible for it (defaults to &lt;SPAN class="pl-s"&gt;&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;pushed&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;&lt;/SPAN&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;&lt;STRONG&gt;persistent_registered_ips&lt;/STRONG&gt; (boolean): true if the tags pushed by the node should survive a device reboot (defaults to &lt;FONT face="courier new,courier"&gt;'true'&lt;/FONT&gt;)&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;&lt;STRONG&gt;tag_attributes&lt;/STRONG&gt; (list of strings): The collection of indicator attributes that should be extracted and converted into tags. The resulting tag value will be calculated as &amp;lt;tag_prefix&amp;gt;+"_"+&amp;lt;indicator attribute name&amp;gt;+"_"+&amp;lt;indicator attribute value&amp;gt; (defaults to &lt;FONT face="courier new,courier"&gt;[&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;confidence&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;, &lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;direction&lt;SPAN class="pl-pds"&gt;'&lt;/SPAN&gt;]&lt;/FONT&gt;)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;SPAN class="pl-s"&gt;Creating a poor man's NAC application&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN class="pl-s"&gt;Next sections of this article will provide a step by step guide to create a datacenter NAC application with the following specifications:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;The enforcer of the policy should be a NGFW placed at the Internet Gateway&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;Only traffic sourced by windows servers should be able to consume the application "ms-update"&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;Only traffic sourced by linux servers should be able to consume the applications "yum" and "apt-get"&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="pl-s"&gt;&lt;SPAN class="pl-s"&gt;A procedure must be provided to allow temporary (4 hours) full access to Internet to a third party device identified by its IP.&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="nac_schema.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14032i32FC848EDFC3D18F/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="nac_schema.png" alt="nac_schema.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Step 1: Creating a new DAGPusher prototype&lt;/H3&gt;
&lt;P&gt;First step is to create a MineMeld node prototype based on the DAGPusher class that suits our needs. Basically we need to configure the DAGPusger class in such a way that it:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Attaches an operating system TAG to the registered IP address (that will be used to discriminate between Windows and Linux)&lt;/LI&gt;
&lt;LI&gt;Attaches an "temporary authorization" TAG to these IP addresses that should be allowed to traverse the NGFW&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To achieve this we will create a new prototype using the standard lib DAGPusher one as base and defining the &lt;FONT face="courier new,courier"&gt;&lt;SPAN class="pl-s"&gt;tag_attributes&lt;/SPAN&gt;&lt;/FONT&gt; configuration element.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_pusher_prototype.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14036i228F0A9A3183AB1A/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_pusher_prototype.png" alt="dag_pusher_prototype.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_pusher_new.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14037i25BF98233FB69062/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_pusher_new.png" alt="dag_pusher_new.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the new node prototype window we specify values for&amp;nbsp; &lt;FONT face="courier new,courier"&gt;tag_prefix&lt;/FONT&gt;, &lt;FONT face="courier new,courier"&gt;tag_watermark&lt;/FONT&gt; and &lt;FONT face="courier new,courier"&gt;tag_attributes&lt;/FONT&gt; to look like in the following screenshot.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="poorman-prototype.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14038iE94EC80F47CBBE7B/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="poorman-prototype.png" alt="poorman-prototype.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Step 2: Setting up the graph&lt;/H3&gt;
&lt;P&gt;With this prototype in the library we're ready to setup a couple of nodes we'll use to achieve our poor man's NAC application:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A DAGPusher node based on the prototype we just created and&lt;/LI&gt;
&lt;LI&gt;A LocalDB miner that we'll use to host the indicators (our NAC database)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Let's start by cloning the existing &lt;FONT face="courier new,courier"&gt;stdlib.localDB&lt;/FONT&gt; prototype into a miner node.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="local_db_prototype.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14051i925447A89994133A/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="local_db_prototype.png" alt="local_db_prototype.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="local_db_prototype_clone.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14053i4BF8911F29476F9A/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="local_db_prototype_clone.png" alt="local_db_prototype_clone.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="local_db_prototype_poor-man-store.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14054i1A1FC6EF5B68CB7C/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="local_db_prototype_poor-man-store.png" alt="local_db_prototype_poor-man-store.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, let's clone the &lt;FONT face="courier new,courier"&gt;poor-man-dagpusher&lt;/FONT&gt; prototype we created before as an output node and connect it directly to the &lt;FONT face="courier new,courier"&gt;poor-man-store&lt;/FONT&gt; miner node.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="poor-man-prototype-preclone.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14055i61A444F120237527/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="poor-man-prototype-preclone.png" alt="poor-man-prototype-preclone.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="poor-man-prototype-clone.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14056i29270A59CA1A3298/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="poor-man-prototype-clone.png" alt="poor-man-prototype-clone.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="poor-man-prototype-clone-final.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14057i53D180D643565878/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="poor-man-prototype-clone-final.png" alt="poor-man-prototype-clone-final.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At this point we shoud have a basic graph connecting a miner with an outputter. Let's commit this graph.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="poor-man-commit.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14058iE0AE8BA12CD582D4/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="poor-man-commit.png" alt="poor-man-commit.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Step 3: Adding our PAN-OS device as a "handled device" to the DAGPusher node&lt;/H3&gt;
&lt;P&gt;The DAGPusher works on a database of "handled devices". In other words: the set of PANOS devices that should be notified each time a new IPv4 reaches the node (either for registering-update or unregistering-whitdraw)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The MineMeld WEBUI provides a tab in the DAGPusher node to allow the administrator maintain the list of handled devices. Let's navigate to the node's WEBUI component and add a PANOS device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_node.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14063iF2FED1CE25B9A953/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_node.png" alt="dag_node.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_node_devices.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14064i751BD144BA3A43F7/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_node_devices.png" alt="dag_node_devices.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_node_devices_add.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14065iD7072E1EEAECAB38/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_node_devices_add.png" alt="dag_node_devices_add.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_node_devices_add_final.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14066iA6C2C9E8A713D18B/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_node_devices_add_final.png" alt="dag_node_devices_add_final.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This change does not requiere any configuration commit. The DAGPusher node will, automatically, instantiate a new API Client object with the provided credentials and network information. We're ready to operate our brand new poor man's NAC application.&lt;/P&gt;
&lt;H2&gt;Operating the poor man's NAC application&lt;/H2&gt;
&lt;P&gt;We're going to perform the following three tasks:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Add a windows server in the NAC's database&lt;/LI&gt;
&lt;LI&gt;Add a linux server in the NAC's database&lt;/LI&gt;
&lt;LI&gt;Add a temporary entry (4 hours) in the NAC database corresponding to a visitor's device.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To perform all these tasks we'll use the indicator tab provided by the WEBUI to the nodes based on the &lt;FONT face="courier new,courier"&gt;localDB&lt;/FONT&gt; class. Just navigate to the node and open the indicators tab.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="indicator_add.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14067iC402501B739466D2/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="indicator_add.png" alt="indicator_add.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The first entry we'll add is the one corresponding to the windows server. As it is a "permanent" entry, we'll chose the "Disable Expiration" option in the TTL field. Attach an "os" attribute to the indicator defining this entry as a windows server (remember that we created a DAGPusher prototype that will extract the "os" and "authorized" attributes from the indicators).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="indicator_add_attributes.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14068i38E4ED61D7845253/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="indicator_add_attributes.png" alt="indicator_add_attributes.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Addig an indicator to a node based on the localDB class does not requiere a commit. That means that, if everything is OK in our setup, we should be able to see the registered IP in out PANOS device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="panos_cli_objects.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14069iE4B9277C2E93B52F/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="panos_cli_objects.png" alt="panos_cli_objects.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's repeat the task but with a Linux server this time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="linux_server.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14070i6313E07628310626/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="linux_server.png" alt="linux_server.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cli_linux.png" style="width: 471px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14071iCF961ED783BFEEA0/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="cli_linux.png" alt="cli_linux.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Our last step is to create a timed entry (4 hours) for a visitor. This time, instead of chosing the "Disable expiration" option, we'll define a TTL of 14400 (4 hours = 14400 seconds). And we'll attach an "authorized" attribute this time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="visitor.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14072iC79E70C84B0069B4/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="visitor.png" alt="visitor.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="visitor_cli.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14073iA14B8E1586D9E372/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="visitor_cli.png" alt="visitor_cli.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The localDB miner will take care of the expiration. After 14400 seconds, the visitor's entry will be aged out, a WHITDRAW message generated down the graph and an "unregister" message will be send by the DAGPusher node to the handled device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Configuring the PAN-OS device to use the pushed objects&lt;/H2&gt;
&lt;P&gt;For the pushed objects to be usable into policies, a Dynamic Address Group (DAG) must be created. For this excercise we'll create three DAG's:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Servers (contain the tag "mm_os_windows")&lt;/LI&gt;
&lt;LI&gt;Linux Servers (contain the tag "mm_os_linux") and&lt;/LI&gt;
&lt;LI&gt;Guest Servers (contain the tag "mm_authorized_yes")&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The Dynamic Address Groups are created the same way Regular Address Groups are created. Just that they're of type "dynamic" and based on a tag query ("and", "or" accepted).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="dag_windows_servers.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14074iF534CA2E96B79113/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="dag_windows_servers.png" alt="dag_windows_servers.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Repeat for Linux_Servers and Guest_Servers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="linux_other.png" style="width: 300px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14075i0CBAB676546BCF5C/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="linux_other.png" alt="linux_other.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="guest_other.png" style="width: 364px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14076iB00F8158B5A08F08/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="guest_other.png" alt="guest_other.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now let's use these DAGs into our poor man's NAC security policies.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="policy.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14077iCF63A24DCF409D36/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="policy.png" alt="policy.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After committing the configuration changes you'll be able to confirm the DAG membership using the NGFW's WEBUI.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="guest-servers.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14078iA60B0C77672AF9A5/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="guest-servers.png" alt="guest-servers.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you followed the steps then you'll remember that, for the Guest Server entry in the LocalDB miner, we attached the attribute "os" with a value "windows" alongside the attribute "authorized". This means that the Guest Server is also registered as a Windows Server so it will be able to receive updates during the 4 hours it was granted access to the network.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Windows-server.png" style="width: 403px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14079iCBBCA02B5762D9D4/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="Windows-server.png" alt="Windows-server.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Annex 1: Using PAN-OS API Key instead of user and password&lt;/H2&gt;
&lt;P&gt;The DAGPusher node supports using the PANOS API Key. But, unfortunatelly, the current WEB UI component does not expose it. This means we need to hack the configuration file of the DAGPusher node.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First of all let's create a handled device in our DAGPusher node with a fake username and password.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fake_node.png" style="width: 500px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14033iFA128768E7D6620E/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="fake_node.png" alt="fake_node.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The device list for the node is maintained in a YAML file inside the MineMeld's configuration folder (defaults to /opt/minemeld/local/config). The filename should have the value &amp;lt;nodename&amp;gt;_device_list.yml. In this example it will be "dagPusherWithAPIKey_device_list.yml".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We just have to edit the file to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;assign null to both the &lt;FONT face="courier new,courier"&gt;api_username&lt;/FONT&gt; and &lt;FONT face="courier new,courier"&gt;api_password&lt;/FONT&gt; attributes&lt;/LI&gt;
&lt;LI&gt;attach a new attribute called &lt;FONT face="courier new,courier"&gt;api_key&lt;/FONT&gt; with the corresponding value for our device&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="configuration_file.png" style="width: 800px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/14035i8ABF35577DB93EAB/image-size/large/is-moderation-mode/true?v=v2&amp;amp;px=999" role="button" title="configuration_file.png" alt="configuration_file.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The node should detect the file modification and reload the device list. But, if you want to be sure it is readed, just restart the engine.&lt;/P&gt;
&lt;H2&gt;Annex 2: Bulk upload of indicators&lt;/H2&gt;
&lt;P&gt;You may need to upload a bulk list of entries to the LocalDB miner (the NAC database in our example). The LocalDB miner features an API that is explained in the annex 2 of the article &lt;A href="https://live.paloaltonetworks.com/t5/MineMeld-Articles/Using-MineMeld-as-an-Incident-Response-Platform/ta-p/174690" target="_self"&gt;Using MineMeld as an Incident Response Platform&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can leverage the API or use the script created by &lt;a href="https://live.paloaltonetworks.com/t5/user/viewprofilepage/user-id/11678"&gt;@lmori&lt;/a&gt; that implements the client side of the LocalDB API and that can use text formated input file as source.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(Script available at &lt;A href="https://gist.github.com/jtschichold/95f3906566b18b50cf2e3e1a44f1e785" target="_self"&gt;https://gist.github.com/jtschichold/95f3906566b18b50cf2e3e1a44f1e785&lt;/A&gt;)&lt;/P&gt;</description>
    <pubDate>Wed, 19 Feb 2025 12:17:18 GMT</pubDate>
    <dc:creator>xhoms</dc:creator>
    <dc:date>2025-02-19T12:17:18Z</dc:date>
    <item>
      <title>MineMeld to Implement NAC Application (DAGPusher)</title>
      <link>https://live.paloaltonetworks.com/t5/general-articles/minemeld-to-implement-nac-application-dagpusher/ta-p/203006</link>
      <description>&lt;P&gt;Use MineMeld DAGPusher to create a basic NAC application&lt;/P&gt;</description>
      <pubDate>Wed, 19 Feb 2025 12:17:18 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/general-articles/minemeld-to-implement-nac-application-dagpusher/ta-p/203006</guid>
      <dc:creator>xhoms</dc:creator>
      <dc:date>2025-02-19T12:17:18Z</dc:date>
    </item>
    <item>
      <title>Re: Using MineMeld to implement a poor man's NAC application (DAGPusher)</title>
      <link>https://live.paloaltonetworks.com/t5/general-articles/minemeld-to-implement-nac-application-dagpusher/tac-p/226754#M157</link>
      <description>&lt;P&gt;Update: DagPusher node now handles IPv6 indicators.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Aug 2018 20:33:25 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/general-articles/minemeld-to-implement-nac-application-dagpusher/tac-p/226754#M157</guid>
      <dc:creator>ksteves1</dc:creator>
      <dc:date>2018-08-10T20:33:25Z</dc:date>
    </item>
  </channel>
</rss>

