<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>ADX Archives - Think Netsec</title>
	<atom:link href="https://www.thinknetsec.com/tag/adx/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.thinknetsec.com/tag/adx/</link>
	<description>Think Network Security</description>
	<lastBuildDate>Thu, 11 Jan 2018 19:33:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.thinknetsec.com/wp-content/uploads/2017/08/cropped-ThinkNetsec-Full-Logo-1-32x32.png</url>
	<title>ADX Archives - Think Netsec</title>
	<link>https://www.thinknetsec.com/tag/adx/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">133674323</site>	<item>
		<title>Brocade ADX Persistence</title>
		<link>https://www.thinknetsec.com/brocade-adx-persistence/</link>
					<comments>https://www.thinknetsec.com/brocade-adx-persistence/#respond</comments>
		
		<dc:creator><![CDATA[John Finnegan]]></dc:creator>
		<pubDate>Thu, 11 Jan 2018 18:44:46 +0000</pubDate>
				<category><![CDATA[Brocade]]></category>
		<category><![CDATA[Loadbalancers]]></category>
		<category><![CDATA[ADX]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[CSW]]></category>
		<category><![CDATA[persistence]]></category>
		<guid isPermaLink="false">https://www.thinknetsec.com/?p=416</guid>

					<description><![CDATA[<p>Persistence in General Brocade ADX Persistence is useful when a user needs their traffic to go back to the same Server for the entire session. For example, a Website may require a login which needs to retain the Clients session for the duration the user is on the site. If<a class="moretag" href="https://www.thinknetsec.com/brocade-adx-persistence/"> Read more&#8230;</a></p>
<p>The post <a href="https://www.thinknetsec.com/brocade-adx-persistence/">Brocade ADX Persistence</a> appeared first on <a href="https://www.thinknetsec.com">Think Netsec</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><strong>Persistence in General</strong></h1>
<p>Brocade ADX Persistence is useful when a user needs their traffic to go back to the same Server for the entire session. For example, a Website may require a login which needs to retain the Clients session for the duration the user is on the site. If the Client gets loadbalanced to another Server, this information could be lost and the Client would need to log back in and start over. Persistence would correct this issue and allow the user to stay connected to the same server.</p>
<h1><strong>IP Based Persistence</strong></h1>
<p>The easiest form of persistence is based on the Clients Source IP. We can do this at a per IP basis or for an IP range. To configure IP based persistence, we will need to enable something called sticky.</p>
<h3><strong>Single Source IP Based Persistence</strong></h3>
<pre>server real Web1-172.24.16.25 172.24.16.25
port http
port http keepalive
port http url "HEAD /"


server real Web2-172.24.16.26 172.24.16.26
port http
port http keepalive
port http url "HEAD /"


server virtual VS-23.53.90.211 172.24.99.211
port http
port http reset-on-port-fail
<span style="color: #339966;"><strong>port http sticky</strong>
</span>bind http Web1-172.24.16.25 http Web2-172.24.16.26 http</pre>
<p>The &#8216;<span style="color: #339966;"><strong>port http sticky</strong></span>&#8216; is what enables per Client IP based persistence (sticky). When a new Client comes in, if the connection does not have a &#8216;sticky&#8217; record on the Brocade, the connection will get loadbalanced to either Web1 or Web2. Once a loadbalancing decision is made, the Clients IP will be stored in the Brocade tying the users IP to the Server it was loadbalanced too.</p>
<h3><strong>Source IP Range Persistence</strong></h3>
<p>The command for IP range is similar to the previous command but will had the addition of a netmask. The command that would replace the one above would be &#8216;<span style="color: #339966;"><strong>port http client-subnet-sticky subnet-mask 255.255.255.0</strong></span>&#8216; which would now persist on the entire /24 that the Source IP originates from.</p>
<h3><strong>How long IP Persistence stays in the table</strong></h3>
<p>By default, if the Client is idle for 5 minutes, this Persistence record will get deleted within the Brocade. To allow the Brocade to hold on to this record longer, the command to use is <strong>sticky-age</strong> <strong>&lt;1-60&gt;</strong> on the VIP. This command will allow the Brocade to hold on to the connection up to 60 minutes. If the persistence record needs to be held for longer then 60 minutes, you would need to add the command <strong>sticky-age-multiplier &lt;1-60&gt;</strong>. The multiplier will multiply the sticky-age value by the value used within the multiplier. For example:</p>
<pre>server virtual VS-23.53.90.211 172.24.99.211
port http
port http reset-on-port-fail
<span style="color: #339966;"><strong>port http sticky</strong></span>
<span style="color: #339966;"><strong>port http sticky-age 60</strong></span>
<span style="color: #339966;"><strong>port http sticky-age-multiplier 5</strong></span>
bind http Web1-172.24.16.25 http Web2-172.24.16.26 http</pre>
<p>The Brocade will now hold the persistence record for 300 minutes (60 x 5).</p>
<h1><strong>Persistence Across Services</strong></h1>
<p>The Brocade can also persist across services when using IP Based Persistence. To perform this type of persistence, the track-group command will be used. This command will allow persistence records to exist across any ports bound within the track-group command. This command will also tie the Servers healthchecks together for the ports within the group as well. An example for this command would be like the one below.</p>
<pre>server virtual VS-23.53.90.211 172.24.99.211
port http
port http reset-on-port-fail
port http sticky
port ssl 
port ssl reset-on-port-fail
port ssl sticky
bind http Web1-172.24.16.25 http Web2-172.24.16.26 http
bind ssl Web1-172.24.16.25 ssl Web2-172.24.16.26 ssl
<span style="color: #339966;"><strong>track-group http 443</strong></span></pre>
<p>In this example, the Brocade is tracking both HTTP and SSL traffic for this VIP. Any traffic that gets a persistence record for HTTP will also get one for SSL. Keep in mind though this also tracks the ports healthchecks. If SSL for Web1 were to fail, this will also stop sending traffic for HTTP to Web1 even though HTTP may be passing its healthcheck.</p>
<h1><strong>Cookie Persistence</strong></h1>
<p>To enable Cookie Persistence on the Brocade, a CSW Policy needs to be created. A CSW policy is a mechanism on the Brocade to inspect or alter HTTP traffic that is destined to a VIP. Note, if Cookie Persistence is needed on SSL (https) traffic, the Brocade will need to be terminating SSL.</p>
<h1 id="StartBeforeLogonwithAnyConnectclient-Requirements"><strong>Types of Cookie Persistence</strong></h1>
<p>When doing Cookie Persistence on the Brocade, the cookie is usually injected by the Brocade referencing the Server ID. This can be a session based cookie or a time based cookie depending on the needs needed for the VIP. The Brocade can also use Passive Cookie Persistence based on a Cookie the Server provides but that is much more complicated and will be done in another article.</p>
<h1><strong>Basic Session Cookie Persistence</strong></h1>
<p>Session Cookie Persistence needs the real/remote servers in the VIP to have Server IDs and Group IDs to function. Group IDs range from 1 to 1023 and Server IDs range from 1024 to 2047. Group IDs are assigned as a range(s) while the Brocade can only have one Server ID per port on a real/remote server. Example configuration below:</p>
<pre>server real Web1-172.24.16.25 172.24.16.25
port http
port http keepalive
port http url "HEAD /"
<span style="color: #339966;"><strong>port http group-id 1 1</strong>
<strong>port http server-id 1024</strong></span>

server real Web2-172.24.16.26 172.24.16.26
port http
port http keepalive
port http url "HEAD /"
<span style="color: #339966;"><strong>port http group-id 1 1</strong>
<strong>port http server-id 1025</strong></span>

server virtual VS-23.53.90.211 172.24.99.211
port http
port http reset-on-port-fail
bind http Web1-172.24.16.25 http Web2-172.24.16.26 http</pre>
<p>The <strong><span style="color: #339966;">green</span></strong> is what needs to be configured on the real/remote servers before the Session Persistence can be used. If the CSW Policy is created and bound to the VIP without these set, the persistence will not function.</p>
<p>Now we will create the CSW Rule, CSW Policy and apply them to the configuration from before.</p>
<pre>csw-rule "COOKIE" header "cookie" search "ServerID=" case-insensitive

csw-policy "COOKIE-PERSIST" case-insensitive
match "COOKIE" persist offset 0 length 4 group-or-server-id
default forward 1
default rewrite insert-cookie "ServerID" 

server virtual VS-23.53.90.211
port http csw-policy "COOKIE-PERSIST"
<strong><span style="color: #ff0000;">port http csw</span></strong></pre>
<p>With the above example, I create a rule called COOKIE and asked it to look at the HTTP header and search for a cookie with ServerID=. The policy, if it finds this cookie, will persist on the value of the ServerID cookie starting from 0 with a length of 4. This is because cookie value will be no longer then 4 digits and will use this to match against the Server.</p>
<p>The default portion of the CSW Policy tells the VIP to loadbalance to anything in group 1. Once a decision is made, the Brocade will insert a cookie called ServerID using the Server ID of the Server. If no Server ID is applied to the then the Group ID is used instead. (Note: The VIP has the<span style="color: #ff0000;"><b> &#8220;port http csw&#8221;</b></span> command in<b><span style="color: #ff0000;"> red</span>. </b>If this command is not added to the VIP,  the CSW Policy will not be enabled)</p>
<h1><strong>Basic Time Based Cookie Persistence</strong></h1>
<p>A Time Based cookie means that the user does need to keep their session up in the browser to stay persisted. This cookie will stay in their browser for a certain amount of time and will delete itself one the time is up.</p>
<p>To configure a Time Based Cookie on the Brocade, we will just need to add a time to the cookie that is being inserted by the CSW Policy.</p>
<pre>csw-policy "COOKIE-PERSIST" case-insensitive
match "COOKIE" persist offset 0 length 4 group-or-server-id
default forward 1
default rewrite insert-cookie "ServerID" <span style="color: #ff9900;"><strong>* *</strong></span> <strong><span style="color: #339966;">30</span></strong></pre>
<p>To insert a Time Based cookie, we need to add the values highlighted above. The <strong><span style="color: #ff9900;">orange &#42;</span></strong>&#8216;s are for adding a domain and path to the cookie. The first <span style="color: #ff9900;"><strong>&#42;</strong></span> is for adding a domain to the cookie but if a <strong><span style="color: #ff9900;">&#42;</span></strong> is used instead of a domain, the domain is set to default. The second <strong><span style="color: #ff9900;">&#42;</span></strong> is for adding the URL path to the cookie but having the <strong><span style="color: #ff9900;">&#42;</span></strong> means to use the default path. These can be set if those values need to be set but in most cases using the <strong><span style="color: #ff9900;">&#42;</span></strong> is fine. The <strong><span style="color: #339966;">green</span></strong> value is how many minutes this cookie should be stored in the Clients Browser. In this case, the cookie is stored for 30 minutes and then deleted. Having the value set at the end is the only difference between a Session Based Cookie and a Time Based Cookie on the Brocade ADX.</p>
<p>&nbsp;</p>
<p>You can find more details about Brocade Real Servers and Remote Server configurations in my other Brocade article <a href="https://www.thinknetsec.com/brocade-realremote-servers/">here</a>.</p>
<p>Please feel free to reach out to me via my <a href="http://www.thinknetsec.com/contact/">contacts</a> page if you have any requests on more content or if you have any questions. If you want any help with an ADX in your Office, please feel free to contact me as well. I will work with you on configuring, upgrading or migrating the ADX.</p>
<p>The post <a href="https://www.thinknetsec.com/brocade-adx-persistence/">Brocade ADX Persistence</a> appeared first on <a href="https://www.thinknetsec.com">Think Netsec</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thinknetsec.com/brocade-adx-persistence/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">416</post-id>	</item>
		<item>
		<title>Issues connecting to a VIP on the Brocade ADX from a Server</title>
		<link>https://www.thinknetsec.com/brocade-servers-source-nat/</link>
					<comments>https://www.thinknetsec.com/brocade-servers-source-nat/#respond</comments>
		
		<dc:creator><![CDATA[John Finnegan]]></dc:creator>
		<pubDate>Thu, 11 Jan 2018 00:24:17 +0000</pubDate>
				<category><![CDATA[Brocade]]></category>
		<category><![CDATA[Loadbalancers]]></category>
		<category><![CDATA[ADX]]></category>
		<category><![CDATA[issues]]></category>
		<category><![CDATA[Source NAT]]></category>
		<guid isPermaLink="false">https://www.thinknetsec.com/?p=401</guid>

					<description><![CDATA[<p>If you are going to be creating a VIP on the Brocade that would need to be accessible from another Server behind the Brocade, there will be some things to consider. For example, if a VIP has Servers that it is loadbalancing too that are in the same segment as<a class="moretag" href="https://www.thinknetsec.com/brocade-servers-source-nat/"> Read more&#8230;</a></p>
<p>The post <a href="https://www.thinknetsec.com/brocade-servers-source-nat/">Issues connecting to a VIP on the Brocade ADX from a Server</a> appeared first on <a href="https://www.thinknetsec.com">Think Netsec</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>If you are going to be creating a VIP on the Brocade that would need to be accessible from another Server behind the Brocade, there will be some things to consider. For example, if a VIP has Servers that it is loadbalancing too that are in the same segment as a Server that needs to connect to this VIP, it will not function without something called Source NAT.</p>
<div>
<h1><strong>Real Servers in the same Segment as Client Server</strong></h1>
<h3><em><strong>Without Source NAT</strong></em></h3>
<p>Lets use an example that you have a segment of 10.10.10.0/24 behind the Brocade. All of your Servers are in this segment and you need these Servers to connect to a VIP on the Brocade which loadbalances to these servers.</p>
</div>
<p>We will use the configuration below:</p>
<div>
<pre>server real WEB1-10.10.10.5 10.10.10.5
port http
port http keepalive
<em>port http url "HEAD/"
</em>port ssl
port ssl keepalive

server real WEB2-10.10.10.6 10.10.10.6 
port http 
port http keepalive 
<em>port http url "HEAD/" 
</em>port ssl 
port ssl keepalive

server virtual VS-10.10.10.100 10.10.10.100
port http
port http reset-on-port-fail
port ssl
port ssl reset-on-port-fail
bind http WEB1-10.10.10.5 http WEB2-10.10.10.6 http
bind ssl WEB1-10.10.10.5 ssl WEB2-10.10.10.6 ssl</pre>
</div>
<p>Lets say we need our App Server with IP 10.10.10.50 to connect to the 10.10.10.100 VIP. If you try to connect to this VIP from the App Server, the connection will never complete. The flow would look like the following TCP flow below.</p>
<p><strong>Source IP   &#8212;&#8212;&#8212;-   Destination IP<br />
</strong>10.10.10.50   &#8212;&gt;     10.10.10.100 (VIP)<br />
10.10.10.50   &#8212;&gt;     10.10.10.5 (Member)<br />
10.10.10.5     &#8212;&gt;     10.10.10.50 (Client)</p>
<p>Notice that the Server responds back to the Client and not the VIP. The Client Server did not connect to the 10.10.10.5 but rather the VIP at 10.10.10.100. The Server will drop this traffic since it never had made a connection to the 10.10.10.5 so the TCCP connection will never complete.</p>
<h3><em><strong>With Source NAT</strong></em></h3>
<p>To correct the issue from before, we would need to enable Source NAT. This will allow the Brocade to translate the Source IP for any connections to the VIP as the closest egress interface IP. For the sake of the example, the IP on the Brocade is 10.10.10.1 and it is the gateway for these Servers. To enable Source NAT, you will add the source-nat keyword to the real servers.</p>
<pre>server real WEB1-10.10.10.5 10.10.10.5 
source-nat

server real WEB2-10.10.10.6 10.10.10.6 
source-nat</pre>
<div>
<p>With the addition of source-nat keyword to the real servers, the flow will now look like the following TCP flow.</p>
<p><strong>Source IP   &#8212;&#8212;&#8212;&#8212;   Destination IP<br />
</strong>10.10.10.50     &#8212;&gt;     10.10.10.100 (VIP)<br />
10.10.10.1       &#8212;&gt;     10.10.10.5 (Member) &lt;&#8211;Notice that the Source IP became the Brocade IP<br />
10.10.10.5       &#8212;&gt;     10.10.10.1 (Brocade IP <em>-Source-Nat</em>)<br />
10.10.10.100  &#8212;&gt; .   10.10.10.5 (Client)</p>
<p>Notice that the VIP is now what responded back to the Client Server. Now that the traffic is coming back from the VIP, the TCP connection is valid and will complete the handshake.</p>
<p>You can find more details about Brocade Real Servers and Remote Server configurations in my other Brocade article <a href="https://www.thinknetsec.com/brocade-realremote-servers/">here</a>.</p>
<p>Please feel free to reach out to me via my <a href="http://www.thinknetsec.com/contact/">contacts</a> page if you have any requests on more content or if you have any questions. If you want any help with an ADX in your Office, please feel free to contact me as well and I will work with you on configuring, upgrading or migrating the ADX.</p>
</div>
<p>The post <a href="https://www.thinknetsec.com/brocade-servers-source-nat/">Issues connecting to a VIP on the Brocade ADX from a Server</a> appeared first on <a href="https://www.thinknetsec.com">Think Netsec</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.thinknetsec.com/brocade-servers-source-nat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">401</post-id>	</item>
	</channel>
</rss>
