{"id":5458,"date":"2024-02-03T18:04:02","date_gmt":"2024-02-03T17:04:02","guid":{"rendered":"https:\/\/cyber-fi.net\/?p=5458"},"modified":"2024-09-15T09:07:21","modified_gmt":"2024-09-15T07:07:21","slug":"downloadable-acls-with-cisco-ise","status":"publish","type":"post","link":"https:\/\/cyber-fi.net\/index.php\/2024\/02\/03\/downloadable-acls-with-cisco-ise\/","title":{"rendered":"Downloadable ACLs with Cisco ISE"},"content":{"rendered":"\n<p>On the Cisco ISE, we can use Downloadable ACLs (DACLs) as an enforcement method to control what our endpoints are allowed to do in the network. These DACLs can be used with Catalyst switches and also with the <a href=\"https:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/wireless\/controller\/9800\/17-12\/config-guide\/b_wl_17_12_cg\/m_dACL.html\">Catalyst 9800 WLC starting with version 17.10.1<\/a><\/p>\n\n\n\n<p>Compared to named ACLs, the main benefit of Downloadable ACLs is that we don&#8217;t have to configure them on every Network Access Device (NAD). Instead, the NAD can download them from the ISE on demand.<br>But how does the NAD get this ACL? Let\u2019s explore this feature with the following setup:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"802\" height=\"272\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/setup2.jpg\" alt=\"\" class=\"wp-image-5461\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/setup2.jpg 802w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/setup2-300x102.jpg 300w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/setup2-768x260.jpg 768w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">The configuration on the ISE<\/h2>\n\n\n\n<p>On the ISE, the DACLs are configured on the PAN and get synchronized to the PSN as these nodes process the RADIUS communication with the NADs. The DACL is used in an Authorization Profile, which is used in the Authorisation Policy:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/config-ise3-1024x585.jpg\" alt=\"\" class=\"wp-image-5477\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/config-ise3-1024x585.jpg 1024w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/config-ise3-300x171.jpg 300w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/config-ise3-768x439.jpg 768w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/config-ise3.jpg 1307w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">The Authorization<\/h2>\n\n\n\n<p>When the Domain PC logs on to the network, it authenticates with 802.1X and receives its authorization that is shown in the details of the ISE Live Log:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"399\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/authZ-result.jpg\" alt=\"\" class=\"wp-image-5462\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/authZ-result.jpg 694w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/authZ-result-300x172.jpg 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/figure>\n<\/div>\n\n\n<p>In this example, I only send the DACL as authorization. The ACL name gets a prefix of &#8220;#ACSACL#-IP-&#8221; to be distinguished from other ACLs on the NAD, and an appendix is used to tell the NAD that a DACL got changed and needs to be re-downloaded. This appendix looks slightly like a hash over the ACL, but it is likely only a hex number that increases in a Cisco-defined way. To analyze this number, I logged the names of the DACL.<\/p>\n\n\n\n<p>This was the initial name on the DACL:<br><code>ACSACL#-IP-ACL-Domain-Computer-65b4e84b<\/code><\/p>\n\n\n\n<p>I changed the content of the ACL (I added one line), reauthenticated, and got a new name:<br><code>ACSACL#-IP-ACL-Domain-Computer-65be44ec<\/code><\/p>\n\n\n\n<p>Then I changed the ACL back to the original content (I removed the extra line), and the name changed again:<br><code>ACSACL#-IP-ACL-Domain-Computer-65be45c2<\/code><\/p>\n\n\n\n<p>The number didn&#8217;t change back to the first one, but instead kept increasing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The RADIUS-Communication<\/h2>\n\n\n\n<p>This is the RADIUS communication between ISE and c9800:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"380\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius1.jpg\" alt=\"\" class=\"wp-image-5464\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius1.jpg 725w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius1-300x157.jpg 300w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/figure>\n<\/div>\n\n\n<p>Packets 1 to 20 are the PEAP authentication with a final Access-Accept, in packets 21 and 22 we have the DACL download.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RADIUS packet 20<\/h3>\n\n\n\n<p>Cisco ISE sends an Access-Accept and adds the Vendor Specific Attribute (VSA) &#8220;Cisco-AVPair: ACS:CiscoSecure-Defined-ACL=&#8221; with the DACL name as the content. It has to be a VSA as this is a non-standard feature.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"384\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius20.jpg\" alt=\"\" class=\"wp-image-5465\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius20.jpg 858w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius20-300x134.jpg 300w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius20-768x344.jpg 768w\" sizes=\"auto, (max-width: 858px) 100vw, 858px\" \/><\/figure>\n<\/div>\n\n\n<p>When the NAD receives this Authorization, it checks if this ACL has already been downloaded and cached. Then a new download would not be necessary.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RADIUS packet 21<\/h3>\n\n\n\n<p>My c9800 has not cached the DACL and triggers the Download with a new Access-Request to the RADIUS-Server:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"336\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius21.jpg\" alt=\"\" class=\"wp-image-5467\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius21.jpg 698w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius21-300x144.jpg 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure>\n<\/div>\n\n\n<p>The NAD uses the RADIUS User-Name attribute to send the DACL name to the ISE. In addition to that, it adds the two VSAs &#8220;aaa:service=ip_admission&#8221; and &#8220;aaa:event=acl-download&#8221;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RADIUS packet 22<\/h3>\n\n\n\n<p>Next, the ACL is downloaded to the NAD:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"825\" height=\"593\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius22.jpg\" alt=\"\" class=\"wp-image-5468\" style=\"aspect-ratio:1.391231028667791;width:825px;height:auto\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius22.jpg 825w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius22-300x216.jpg 300w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/radius22-768x552.jpg 768w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/figure>\n<\/div>\n\n\n<p>ISE answers with an Access-Accept that includes the ACL name in the RADIUS User-Name attribute and adds all ACL lines as numbered VSAs of type &#8220;ip:inacl&#8221;.<\/p>\n\n\n\n<p>This DACL Download is show on the ISE as an additional Log entry:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"96\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log.jpg\" alt=\"\" class=\"wp-image-5470\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log.jpg 850w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log-300x34.jpg 300w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log-768x87.jpg 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"381\" src=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log-detail.jpg\" alt=\"\" class=\"wp-image-5472\" srcset=\"https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log-detail.jpg 718w, https:\/\/cyber-fi.net\/wp-content\/uploads\/2024\/02\/ise-log-detail-300x159.jpg 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/figure>\n<\/div>\n\n\n<p>Happy ACL-downloading!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On the Cisco ISE, we can use Downloadable ACLs (DACLs) as an enforcement method to control what our endpoints are allowed to do in the network. These DACLs can be used with Catalyst switches and also with the Catalyst 9800 WLC starting with version 17.10.1 Compared to named ACLs, the main benefit of Downloadable ACLs <\/p>\n<div class=\"read-more-text\"><a href=\"https:\/\/cyber-fi.net\/index.php\/2024\/02\/03\/downloadable-acls-with-cisco-ise\/\" class=\"read-more\">continue reading<\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"twitterCardType":"","cardImageID":0,"cardImage":"","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":"","footnotes":""},"categories":[5,7,685,717],"tags":[729,730,696,494],"class_list":["post-5458","post","type-post","status-publish","format-standard","hentry","category-cisco","category-cisco-security","category-cisco-wireless","category-wireless","tag-c9800","tag-dacl","tag-ise","tag-radius"],"_links":{"self":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts\/5458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/comments?post=5458"}],"version-history":[{"count":8,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts\/5458\/revisions"}],"predecessor-version":[{"id":5478,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/posts\/5458\/revisions\/5478"}],"wp:attachment":[{"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/media?parent=5458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/categories?post=5458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyber-fi.net\/index.php\/wp-json\/wp\/v2\/tags?post=5458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}