{"id":1721,"date":"2026-01-31T20:13:33","date_gmt":"2026-01-31T19:13:33","guid":{"rendered":"https:\/\/www.labtinker.net\/?p=1721"},"modified":"2026-01-31T20:13:33","modified_gmt":"2026-01-31T19:13:33","slug":"eating-the-elephant","status":"publish","type":"post","link":"http:\/\/18.135.13.153\/?p=1721","title":{"rendered":"Eating the Elephant"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cisco ISE is a beast. As friendly as a Serbian bouncer, with a learning curve like the face of El Capitan, and as intuitive as shoe shopping for a fish. The official Cisco book on it: (<a href=\"https:\/\/www.ciscopress.com\/store\/ccnp-security-identity-management-sise-300-715-official-9780136677734\">https:\/\/www.ciscopress.com\/store\/ccnp-security-identity-management-sise-300-715-official-9780136677734<\/a>) is over 1,000 pages long and each page is packed full of chewy techy goodness. Nonetheless, if you work in network security, ISE is probably something you should know about. And as the old adage goes, you eat an elephant one bite at a time. The bite I propose to take is to use Trustsec and Security Group Tabs (SGTs), defined on ISE but enforced on a Cisco FTD (Secure Firewall) to apply policy which allows one trusted host to get to an ssh server and denies another untrusted one. I will be using MVC (Minimum Viable Configuration) to get this up and working.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this lab I am going to run an evaluation ISE VM in VMware workstation (you can download a Cisco VM and get a 90 day evaluation for free) and bridge it to my Cisco Modelling Labs (CML) VM &#8211; via the NUC I&#8217;m running the whole shebang on. (My NUC has 96GB of memory and you&#8217;ll need something fairly beefy if you want to try this yourself)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the lab in CML:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"633\" height=\"390\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-6.png\" alt=\"\" class=\"wp-image-1732\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-6.png 633w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-6-300x185.png 300w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">From the top we have an external connector (<strong>ext-conn-0)<\/strong> to allow the lab to reach the ISE via the NUC. You can either set this up as nat (to get to the Internet) or bridged, and as mentioned above we need  the latter:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"538\" height=\"110\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-1.png\" alt=\"\" class=\"wp-image-1724\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-1.png 538w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-1-300x61.png 300w\" sizes=\"auto, (max-width: 538px) 100vw, 538px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This will mean I can effectively bridge everything  from my NUC via a Microsoft loopback interface installed on it:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"94\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-2.png\" alt=\"\" class=\"wp-image-1725\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-2.png 352w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-2-300x80.png 300w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is addressed as 192.168.200.10\/24. The ISE server is addressed as 192.168.200.100 and is bridged via VMnet0 which is mapped as follows in VMware:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"572\" height=\"98\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-4.png\" alt=\"\" class=\"wp-image-1728\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-4.png 572w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-4-300x51.png 300w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If we consider 192.168.200.0\/24 as the management network then the other nodes with addresses on this subnet are displayed in the diagram above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>alpine-trusted<\/em> and <em>alpine-untrusted <\/em>are simple Linux hosts which want to connect to <em>alpine-ssh-server <\/em>which is another Linux host running an ssh server. To do this they have to go through the<em> ftdv-0 <\/em> firewall. Spoiler alert only one of these will be successful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The<em> alpine-trusted<\/em> machine has its switch port on <em>SW3 <\/em>set up with MAB authentication (MAC authentication bypass) and the switch itself will have the <em>ISE <\/em>server defined as a radius server. The <em>ISE <\/em>server will assign an SGT label &#8216;ssh_access&#8217; the to the <em>alpine-trusted<\/em> machine by dint of its mac address. The <em>alpine-untrusted<\/em> machine will just be connected on a standard access port in the same vlan as its trusted equivalent but will not receive an SGT. I&#8217;ll append the switch configuration but the relevant config for the G0\/1 is:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>interface GigabitEthernet0\/1<br>description &#8220;Link to MAB authenticated trusted host&#8221;<br>switchport access vlan 60<br>switchport mode access<br>negotiation auto<br>authentication event fail action next-method<br>authentication open<br>authentication order mab<br>authentication priority mab<br>authentication port-control auto<br>mab<br>dot1x pae authenticator<br>spanning-tree portfast edge<br>end<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I found I couldn&#8217;t get DHCP working without &#8216;authentication open&#8217;. In a production network you might not have this setting. This explanation below for its requirement comes from an intermittently reliable source:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On an access-controlled port:<br>\u2022 The port starts in unauthorized state<br>\u2022 In unauthorized state:<br>o DHCP is blocked<br>o ARP is blocked<br>o ICMP is blocked<br>\u2022 Because DHCP is blocked:<br>o The host never sends usable traffic<br>o The switch never learns a MAC<br>\u2022 Because no MAC is learned:<br>o MAB is never triggered<br>o No authentication session is created<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyway, the switch port settings above effectively are to make the host authenticate with the ISE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ISE is set up as a Radius server on <em>SW3<\/em>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>aaa group server radius ISE-GROUP<br>server name ISE<br>!<br>aaa authentication dot1x default group ISE-GROUP<br>aaa authorization network default group ISE-GROUP<br>aaa accounting dot1x default start-stop group ISE-GROUP<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>radius server ISE<br>address ipv4 192.168.200.100 auth-port 1812 acct-port 1813<br>key cisco123<br>!<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On ISE we have to add the switch as a network device in <strong>Work Centers \/ Network Access<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"374\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-8.png\" alt=\"\" class=\"wp-image-1735\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-8.png 619w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-8-300x181.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"307\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-9.png\" alt=\"\" class=\"wp-image-1736\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-9.png 748w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-9-300x123.png 300w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OK, now we need to make ISE aware of our Linux endpoint. As we&#8217;re using MAB we do this via adding the host&#8217;s mac address in In <strong>Administration \/ Identify Management <\/strong>where we and an add an <strong>Endpoint Identity Group <\/strong>called <em>Linux_Devices<\/em> which now includes the mac address of the <em>alpine-trusted<\/em> host<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"488\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-10.png\" alt=\"\" class=\"wp-image-1738\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-10.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-10-300x156.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-10-768x399.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OK &#8211; so we have to authenticate the host to allow it access on this port<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is done for us already by dint of a default rule in Wired_MAB in Policy \/ Policy_Sets<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"89\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-11.png\" alt=\"\" class=\"wp-image-1740\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-11.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-11-300x28.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-11-768x73.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now for authorization, I propose to give my endpoint an SGT called &#8216;ssh_access&#8217; by dint of it being in the Identity Group <em>Linux_Devices <\/em>and to do this I created this authorization rule&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"47\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-12.png\" alt=\"\" class=\"wp-image-1742\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-12.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-12-300x15.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-12-768x38.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">&#8216;Matches-Linux-Devices&#8217; is a condition which just says the device must be authenticated and in the group <em>Linux_Devices <\/em>and then it will be permitted and receive the SGT <em>ssh_access<\/em>. This condition looks like this on the ISE:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"609\" height=\"409\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-13.png\" alt=\"\" class=\"wp-image-1743\" style=\"width:535px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-13.png 609w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-13-300x201.png 300w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And I forgot to say, I had to add the SGT in <strong>Work Centers \u2192 TrustSec \u2192 Components \u2192 Security Groups <\/strong>where it looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"419\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-14-1024x419.png\" alt=\"\" class=\"wp-image-1744\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-14-1024x419.png 1024w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-14-300x123.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-14-768x315.png 768w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-14.png 1057w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The other entries are pre-defined. OK, keep that SGT hex value in mind. When we bring our Linux host up we can look in the ISE&#8217;s live logs and see that the cisco-av-pair is assigned to the &#8216;username&#8217; with that mac-address:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"285\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-15-1024x285.png\" alt=\"\" class=\"wp-image-1745\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-15-1024x285.png 1024w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-15-300x84.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-15-768x214.png 768w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-15.png 1045w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The ISE server will share its database of SGT label mappings with the FMC by dint of pxGrid. The FMC will then have a policy which it deploys to the FTD firewall which stipulates only ip addresses with the relevant SGT label mapping will be able to access the ssh server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, configuring the firewall:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If anybody fires up an FMC or FTD in CML they&#8217;ll find this doesn&#8217;t go into the startup script like an appliance but you can run the following (from expert mode) to be able to define your ip address on both the FMC and FTD. Below is the FTD:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"601\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-16.png\" alt=\"\" class=\"wp-image-1747\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-16.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-16-300x192.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-16-768x491.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then exit from expert mode and add the FMC address as a manager:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"144\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-17.png\" alt=\"\" class=\"wp-image-1748\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-17.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-17-300x46.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-17-768x118.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">OK, so having addressed the FMC as per above we can browse to it and in <strong>Devices \/ Devices management<\/strong> add the FTD using the same key &#8216;<em>cisco123<\/em>&#8216; as we defined on the FTD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"468\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-18.png\" alt=\"\" class=\"wp-image-1749\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-18.png 684w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-18-300x205.png 300w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So we now need to get the ISE to share it&#8217;s SGT mappings with the FMC. We enable pxGrid on the ISE in <strong>Administration\/Deploymen<\/strong>t &#8211; where we click on the <strong>ISE<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"292\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-19.png\" alt=\"\" class=\"wp-image-1750\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-19.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-19-300x93.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-19-768x239.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And then get to enable pxGrid<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"170\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-21.png\" alt=\"\" class=\"wp-image-1752\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-21.png 505w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-21-300x101.png 300w\" sizes=\"auto, (max-width: 505px) 100vw, 505px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then we need to delve into <strong>Administration \/ API settings<\/strong> and enable<em> ERS Read\/Write<\/em> (if you want to know why there&#8217;s a book I can recommend)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"431\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-22.png\" alt=\"\" class=\"wp-image-1753\" style=\"width:661px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-22.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-22-300x138.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-22-768x352.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then we can automatically approve any pxGrid client (our FMC) making said requests (you can approve manually too) in <strong>Administration \/ pxGrid Services.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"397\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-23.png\" alt=\"\" class=\"wp-image-1754\" style=\"width:516px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-23.png 800w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-23-300x149.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-23-768x381.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And one more thing, we need to add a user for pxGrid with the admin group <em>ERS Operation <\/em>attached in <strong>Administration \/ System \/ Administrators:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"50\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-27-1024x50.png\" alt=\"\" class=\"wp-image-1758\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-27-1024x50.png 1024w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-27-300x15.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-27-768x38.png 768w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-27.png 1299w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We need to set the FMC side up but first I set up a router as a DNS server to handle&#8230;well, DNS&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"135\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-25.png\" alt=\"\" class=\"wp-image-1756\" style=\"width:639px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-25.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-25-300x43.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-25-768x110.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And add relevant entries&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"112\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-24.png\" alt=\"\" class=\"wp-image-1755\" style=\"width:628px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-24.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-24-300x36.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-24-768x92.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And then pointe the FMC at it in<strong> Configuration \/ Management Interfaces<\/strong><br>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"237\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-26.png\" alt=\"\" class=\"wp-image-1757\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-26.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-26-300x76.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-26-768x194.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As I was saying, we need to do the FMC integration with ISE. this is done from <strong>Integration \/ Other Integrations<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"422\" height=\"228\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-29.png\" alt=\"\" class=\"wp-image-1760\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-29.png 422w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-29-300x162.png 300w\" sizes=\"auto, (max-width: 422px) 100vw, 422px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Where you can configure:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"828\" height=\"201\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-30.png\" alt=\"\" class=\"wp-image-1761\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-30.png 828w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-30-300x73.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-30-768x186.png 768w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"784\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-28.png\" alt=\"\" class=\"wp-image-1759\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-28.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-28-300x250.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-28-768x641.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After adding the above and pressing <em>Test <\/em>we hopefully see something with a tick and lots of green:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"774\" height=\"870\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-31.png\" alt=\"\" class=\"wp-image-1762\" style=\"width:642px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-31.png 774w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-31-267x300.png 267w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-31-768x863.png 768w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And closing this&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"889\" height=\"391\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-32.png\" alt=\"\" class=\"wp-image-1763\" style=\"width:570px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-32.png 889w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-32-300x132.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-32-768x338.png 768w\" sizes=\"auto, (max-width: 889px) 100vw, 889px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OK, so now we&#8217;re integrated, there isn&#8217;t an easy place to see the SGT mappings on the FMC that I could find apart from in the access policy&#8230; actually, I&#8217;m getting ahead of myself.. we need to define a couple of interfaces and zones on the FMC to deploy to the FTD. VLAN 60 is where the source Linux hosts live and VLAN 70 is where the ssh server Linux host lives. So we add these on the FMC in <strong>Devices \/ Device Management <\/strong>where if you click that coy little pencil icon you get to a screen where you can define interfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">G0\/0<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"669\" height=\"770\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-33.png\" alt=\"\" class=\"wp-image-1764\" style=\"width:471px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-33.png 669w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-33-261x300.png 261w\" sizes=\"auto, (max-width: 669px) 100vw, 669px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"586\" height=\"438\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-34.png\" alt=\"\" class=\"wp-image-1765\" style=\"width:413px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-34.png 586w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-34-300x224.png 300w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And on g0\/1<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"639\" height=\"777\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-35.png\" alt=\"\" class=\"wp-image-1766\" style=\"width:476px;height:auto\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-35.png 639w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-35-247x300.png 247w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I also defined a DHCP pool on the VLAN-70 interface for the Linux ssh server:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"373\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-36.png\" alt=\"\" class=\"wp-image-1767\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-36.png 534w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-36-300x210.png 300w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So now we have interfaces and zones, we can add a policy which uses Dynamic Attributes and choose &#8216;ssh_access&#8217; our SGT from the ISE (yes, it is there)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OK, so we have the &#8216;any any&#8217; rule so beloved of the lazy firewall admin<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"317\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-37.png\" alt=\"\" class=\"wp-image-1768\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-37.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-37-300x101.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-37-768x259.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">&#8230;but wait we can add an dynamic attribute<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"85\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-38.png\" alt=\"\" class=\"wp-image-1769\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-38.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-38-300x27.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-38-768x69.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">and what better one than that defined on the ISE?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"255\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-39.png\" alt=\"\" class=\"wp-image-1770\" srcset=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-39.png 940w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-39-300x81.png 300w, http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-39-768x208.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And thus our policy now looks like&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-40.png\" alt=\"\" class=\"wp-image-1771\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;re only coming through that any any if you have that SGT&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-41.png\" alt=\"\" class=\"wp-image-1772\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Before we test, let&#8217;s check what addresses our trusted and untrusted hosts have:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-42.png\" alt=\"\" class=\"wp-image-1773\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-43.png\" alt=\"\" class=\"wp-image-1774\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And they&#8217;re aiming at&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-44.png\" alt=\"\" class=\"wp-image-1775\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Can the trusted host get through the firewall to the ssh server?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-45.png\" alt=\"\" class=\"wp-image-1776\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Why yes!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Can the untrusted host?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-46.png\" alt=\"\" class=\"wp-image-1777\" style=\"width:592px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Why no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s check the firewall logs&#8230; and we can see that the firewall is blocking the untrusted hostand allowing the trusted one.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-47.png\" alt=\"\" class=\"wp-image-1778\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now, I thought it would be easy to move the &#8216;source SGT&#8217; column to the left to show its presence in one instance but not the the other but I couldn&#8217;t work out how to&#8230; forgive me, I had <s>fought <\/s>configured various Cisco elements to get this far and it was nearly tea time.. so take my word for it, I scrolled right and lo and behold the successful traffic had the SGT tag &#8216;<em>ssh_access<\/em>&#8216;, as seen in the third column from the right as shown below (I would have added a red rectangle but then I&#8217;d have to fight Microsoft Paint which has recently been improved in ways discernible to somebody somewhere but seem to make it much harder to use for everyone else.)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/image-48.png\" alt=\"\" class=\"wp-image-1779\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Next time, I might have a crack at AD integration and supplicants and everything.<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-e274127f-64c8-487f-a205-0a99e8e969f7\" href=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/SW3.txt\">SW3<\/a><a href=\"http:\/\/18.135.13.153\/wp-content\/uploads\/2026\/01\/SW3.txt\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-e274127f-64c8-487f-a205-0a99e8e969f7\">Download<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cisco ISE is a beast. As friendly as a Serbian bouncer, with a learning curve like the face of El Capitan, and as intuitive as shoe shopping for a fish. The official Cisco book on it: (https:\/\/www.ciscopress.com\/store\/ccnp-security-identity-management-sise-300-715-official-9780136677734) is over 1,000 pages long and each page is packed full of chewy techy goodness. Nonetheless, if you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,7,12],"tags":[],"class_list":["post-1721","post","type-post","status-publish","format-standard","hentry","category-authentication","category-firewalls","category-security"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/18.135.13.153\/index.php?rest_route=\/wp\/v2\/posts\/1721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/18.135.13.153\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/18.135.13.153\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/18.135.13.153\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/18.135.13.153\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1721"}],"version-history":[{"count":0,"href":"http:\/\/18.135.13.153\/index.php?rest_route=\/wp\/v2\/posts\/1721\/revisions"}],"wp:attachment":[{"href":"http:\/\/18.135.13.153\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/18.135.13.153\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1721"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/18.135.13.153\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}