<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Store and Forward</title>
	<atom:link href="http://t-rob.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://t-rob.net</link>
	<description>A blog about securing and using WebSphere MQ</description>
	<lastBuildDate>Tue, 15 May 2012 22:03:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<copyright>Copyright © Store and Forward 2011 </copyright>
	<managingEditor>dq@t-rob.net (Store and Forward)</managingEditor>
	<webMaster>dq@t-rob.net (Store and Forward)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://t-rob.net/images/DQLogo-144.png</url>
		<title>Store and Forward</title>
		<link>https://t-rob.net</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>A blog about securing and using WebSphere MQ</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Store and Forward</itunes:author>
	<itunes:owner>
		<itunes:name>Store and Forward</itunes:name>
		<itunes:email>dq@t-rob.net</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://t-rob.net/images/DQLogo-144.png" />
		<item>
		<title>Sharpening the saw</title>
		<link>https://t-rob.net/2012/05/15/sharpening-the-saw/</link>
		<comments>https://t-rob.net/2012/05/15/sharpening-the-saw/#comments</comments>
		<pubDate>Tue, 15 May 2012 22:03:19 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[commentary]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=551</guid>
		<description><![CDATA[I am fortunate this year to participate in many seminars and conferences.  I just finished IMPACT and on June 5th I&#8217;ll be in New York for the WSMQAdmin seminar there.  The following week I&#8217;ll be in Zurich for the TI&#38;M &#8230; <a href="https://t-rob.net/2012/05/15/sharpening-the-saw/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am fortunate this year to participate in many seminars and conferences.  I just finished IMPACT and on June 5th I&#8217;ll be in New York for the <a href="http://www.wsmqadmin.com/" target="_blank">WSMQAdmin seminar</a> there.  The following week I&#8217;ll be in Zurich for the <a href="http://www.ti8m.ch/1822.html?&amp;tx_ttnews[tt_news]=2093&amp;tx_ttnews[backPid]=1818&amp;cHash=53ace23348" target="_blank">TI&amp;M WebSphere Messaging and Web Services Security</a> seminar.  Later this year are four more WQMQAdmin seminars and IBM&#8217;s WebSphere Technical Convention in Berlin.  Sometimes when I ask people whether they will attend one of these events the response back is &#8220;I&#8217;m just too busy.  I can&#8217;t find the time.&#8221;  If this describes you, then I urge you to reconsider.  Please let me explain why.</p>
<p><span id="more-551"></span></p>
<p>Prior to joining IBM I worked at a bank where my team and I were responsible for 24&#215;7 Production support and more than 30 active development projects.  We had over 400 queue managers and we did all this with just 4 guys. If that seems like a lot, let me tell you it surely was.  But we had a guideline that no matter how busy things got everyone was expected to spend 20% or more of their time on strategic activities such as training and problem prevention.  It was this continual skill building on our team and the training we supplied to the project teams that allowed us to cover so much with such a small team.</p>
<p>When I started the team I had four queue managers in Production and an active development project wanting more.  I was the only administrator and I was swamped.  We had different versions of MQ, our channels would not stay running and we had constant poison message problems.  But the bank sent me to the conference and to the formal training sessions and soon I figured out how to tune the channels.  We upgraded everything to MQSeries v2.1, which was brand new at the time, so the whole network was at the same version and fix pack.</p>
<p>The network doubled in size each year and I eventually got to grow the team to three people.  But each year I went to the conference and as soon as we added staff I took one of them with me as well.  Soon we had eliminated poison messages entirely by working closely and early with the project teams to make poison message handling a functional requirement on all projects.  Part of the service agreement with the developers was that my team could at any time drop a message on the queue with a payload of &#8220;If found, please call you MQ administrator at&#8230;&#8221;  The application was required to requeue or consume and log any message it did not understand.  If we didn&#8217;t get that call, the app didn&#8217;t go to Production.  Period.  No exceptions.</p>
<p>We had quite a number of development standards besides just poison message handling.  There were requirements for reconnect logic, security, exception reporting and more. We also had infrastructure standards such as the names for QMgrs and objects, specific initial settings on the QMgr, certain SupportPacs we always installed, etc.  We had tools to manage the network centrally and to perform ad-hoc queries and global commands.  But my point here is that we would never have known to do all those things if we were not regularly attending training and taking a day a week from tactical tasks to spend on strategic activities.</p>
<p>Stephen Covey (of <a href="http://en.wikipedia.org/wiki/The_Seven_Habits_of_Highly_Effective_People" target="_blank">7 Habits</a> fame) likens this to logging a forest.  It takes a LOT more effort if you are too busy sawing to stop and sharpen the saw once in a while.  Worse, once you convince yourself that chopping down the forest is more urgent than sharpening the saw, you&#8217;ll never complete the job.  You just fall further and further behind.  Most shops try but fail to brute-force themselves out of that hole.  You can&#8217;t work at 125% capacity forever and hiring your way out is a stop-gap measure at best.  If all you ever work on is urgent tactical tasks, the work grows to fill the capacity on the team &#8211; and then adds 25% more.  Years can go by with no significant improvement in either the number of incidents or the duration of outages.  The only way out is continuous improvement of skill, quality and performance and that requires stopping to sharpen the saw.</p>
<p>The worse things are, the more important it is to make time for strategic activities such as education, tooling, diagnostics and infrastructure.  Being too busy to attend technical education in your specialty is the best possible evidence that you need to attend.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/05/15/sharpening-the-saw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMPACT 2012 WMQ Sessions</title>
		<link>https://t-rob.net/2012/04/27/impact-2012-wmq-sessions/</link>
		<comments>https://t-rob.net/2012/04/27/impact-2012-wmq-sessions/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 22:01:13 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=545</guid>
		<description><![CDATA[Here are the MQ sessions at IMPACT for the week. Asterisk indicates repeat sessions. sessions where I am presenting or participating are in Red. Mon 10:45 &#8211; 12:00  1577 &#8211; WebSphere MQ: Securing your Queue Manager* Mon 14:00 &#8211; 15:15  &#8230; <a href="https://t-rob.net/2012/04/27/impact-2012-wmq-sessions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here are the MQ sessions at IMPACT for the week. Asterisk indicates repeat sessions. sessions where I am presenting or participating are in <span style="color: #800000;">Red</span>.</p>
<p><span style="color: #800000;">Mon 10:45 &#8211; 12:00  1577 &#8211; WebSphere MQ: Securing your Queue Manager*</span><br />
Mon 14:00 &#8211; 15:15  1576 &#8211; Introduction to WebSphere MQ*<br />
Mon 14:00 &#8211; 15:15  1597 &#8211; Roundtable: WebSphere MQ Feedback*<br />
Mon 15:45 &#8211; 17:00  2255 &#8211; WebSphere Connectivity and Integration Feature Session with Q&amp;A Panel<br />
Mon 17:15 &#8211; 18:30  1575 &#8211; What&#8217;s New in the WebSphere MQ Family of Products</p>
<p>Tue 10:45 &#8211; 12:00  1579 &#8211; WebSphere MQ for Managed File Transfer<br />
Tue 10:45 &#8211; 12:00  1592 &#8211; WebSphere MQ: Machine 2 Machine Communications using Telemetry<br />
Tue 13:30 &#8211; 14:45  1593 &#8211; WebSphere MQ: Publish/Subscribe Messaging<br />
<span style="color: #800000;">Tue 13:30 &#8211; 16:30  1595 &#8211; Hands-on Lab: WebSphere MQ</span><br />
Tue 15:15 &#8211; 16:30  1581 &#8211; Extending WebSphere MQ and WebSphere Message Broker to the Cloud<br />
<span style="color: #800000;">Tue 15:15 &#8211; 16:30  1597 &#8211; Roundtable: WebSphere MQ Feedback*</span><br />
Tue 16:45 &#8211; 18:00  1576 &#8211; Introduction to WebSphere MQ*</p>
<p>Wed 9:00 &#8211; 10:15  1589 &#8211; WebSphere MQ: What is your system up to?*<br />
<span style="color: #800000;">Wed 10:45 &#8211; 12:00  1578 &#8211; WebSphere MQ: Securing your Messages*</span><br />
Wed 10:45 &#8211; 12:00  1591 &#8211; WebSphere MQ for zOS Internals<br />
<span style="color: #800000;">Wed 13:30 &#8211; 14:45  1596 &#8211; Meet the Experts: WebSphere MQ*</span><br />
Wed 13:30 &#8211; 14:45  1585 &#8211; WebSphere MQ: Connecting to the Internet of Things<br />
Wed 13:30 &#8211; 14:45  1586 &#8211; Using IBM WebSphere Application Server and IBM WebSphere MQ Together*<br />
<span style="color: #800000;">Wed 13:30 &#8211; 16:30  1594 &#8211; Hands-on Lab: WebSphere MQ Security (Distributed Platforms)</span><br />
Wed 15:15 &#8211; 16:30  1584 &#8211; WebSphere MQ: Highly Scalable Publish Subscribe using Multicast<br />
Wed 16:45 &#8211; 18:00  1588 &#8211; WebSphere MQ for Distributed Platforms Performance<br />
Wed 16:45 &#8211; 18:00  1597 &#8211; Roundtable: WebSphere MQ Feedback*</p>
<p>Thu 8:45 &#8211; 10:00  1590 &#8211; WebSphere MQ for Distributed Platforms Internals<br />
Thu 8:45 &#8211; 10:00  1587 &#8211; WebSphere MQ for z/OS Performance<br />
Thu 8:45 &#8211; 10:00  1597 &#8211; Roundtable: WebSphere MQ Feedback*<br />
<span style="color: #800000;">Thu 10:30 &#8211; 11:45  1596 &#8211; Meet the Experts: WebSphere MQ*</span><br />
Thu 10:30 &#8211; 11:45  1586 &#8211; Using IBM WebSphere Application Server and IBM WebSphere MQ Together*<br />
Thu 13:30 &#8211; 14:45  1589 &#8211; WebSphere MQ: What is your system up to?*<br />
Thu 13:30 &#8211; 14:45  1580 &#8211; WebSphere MQ: Simplifying Migration<br />
Thu 15:15 &#8211; 16:30  1582 &#8211; WebSphere MQ for z/OS Shared Queues (Advanced)<br />
Thu 16:45 &#8211; 18:30  1583 &#8211; WebSphere MQ: Clustering update</p>
<p><span style="color: #800000;">Fri 08:45 &#8211; 10:00  1577 &#8211; WebSphere MQ: Securing your Queue Manager*</span><br />
<span style="color: #800000;">Fri 10:15 &#8211; 11:30  1578 &#8211; WebSphere MQ: Securing your Messages*</span></p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/04/27/impact-2012-wmq-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No such thing as a persistent queue!</title>
		<link>https://t-rob.net/2012/04/27/no-such-thing-as-a-persistent-queue/</link>
		<comments>https://t-rob.net/2012/04/27/no-such-thing-as-a-persistent-queue/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 18:23:18 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[WMQ]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[antipatterns]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[commentary]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[Recommended Practices]]></category>
		<category><![CDATA[WebSphere MQ]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=539</guid>
		<description><![CDATA[The widespread usage of the phrase &#8220;persistent queue&#8221; has a negative impact because people believe that queue attribute actually does something. It&#8217;s always worth taking time to stamp out usage of that phrase wherever we find it and I&#8217;ll attempt &#8230; <a href="https://t-rob.net/2012/04/27/no-such-thing-as-a-persistent-queue/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="https://t-rob.net/2012/04/27/no-such-thing-as-a-persistent-queue/universal-signs-34/" rel="attachment wp-att-540"><img class="alignright size-medium wp-image-540" title="(Don't) Stop!" src="https://t-rob.net/wp-content/uploads/2012/04/Universal-Signs-34-300x199.jpg" alt="" width="300" height="199" /></a>The widespread usage of the phrase &#8220;persistent queue&#8221; has a negative impact because people believe that queue attribute actually <strong>does</strong> something. It&#8217;s always worth taking time to stamp out usage of that phrase wherever we find it and I&#8217;ll attempt to explain why.</p>
<p><span id="more-539"></span>The problem with the term &#8220;persistent queue&#8221; is that it leads people to believe that the behavior attaches to the queue itself when in fact with WebSphere MQ message persistence is now and always has been an attribute of the individual message. Because of the widespread use of the term &#8220;persistent queue&#8221; and an incorrect belief about behavior of the queue based on that, some customers find that WMQ doesn&#8217;t behave as they expect, often to their detriment.</p>
<p>There are two rules for persistence:</p>
<ol>
<li>If the quality of message persistence is important, set it explicitly in the application.</li>
<li>Whether or not a message is persistent is always important.</li>
</ol>
<p>The <strong>only</strong> time that DEFPSIST should be relied on to actually affect message persistence is the odd case that message persistence needs to be externally settable at run time. The reasoning is that persistence (or not) is a design decision driven by a <em>business requirement</em>. The person responsible for implementing those business requirements is the development team manager who has the opportunity to explicitly choose the correct behavior. When that choice is abdicated and placed in the hands of the WebSphere MQ admins, separated by both distance and time from the actual business requirements, it doesn&#8217;t get managed to the original business requirements and that results in a brittle system.</p>
<p>One of my first assignments with IBM was a company who had been experiencing a network-wide WMQ outage for a couple of weeks. We determined that someone had changed DEFPSIST on a queue in a network that was tuned and designed for non-peristent messages. The result was an outage lasting almost 3 week. In another case a customer&#8217;s entire Message Broker service infrastructure went down in Production because someone decided that the transmit queue should be persistent.  Immediately after the change all replies to TEMPDYN queues were shunted to the DLQ. Fortunately in that case the DLQ messages immediately told us what the problem was so the outage was of short duration.</p>
<p>The pervasive misunderstanding of the queue&#8217;s DEFPSIST attribute continues to cause outages and the external symptom of that misunderstanding is the use of the term &#8220;persistent queue.&#8221; For instance, during debugging people often report the setting of the queue as if that somehow reflects the persistence off the messages in the queue.  &#8220;Where did my messages go?  I have a persistent queue!&#8221;  Of course there is no direct cause and effect there. The messages may have come through an alias or a QRemote where DEFPSIST(NO) was set.  Or (hopefully) the application explicitly set the persistence that was required.  I climb on this soap box whenever I hear the phrase &#8220;persistent queue&#8221; during debugging because DEFPSIST tells me nothing about whether the messages in the queue were actually persistent or not.</p>
<p>Many people who understand DEFPSIST quite well also use the term &#8220;persistent queue&#8221; simply out of convenience &#8211; it has entered the culture and it&#8217;s easier than saying &#8220;DEFPSIST on the queue is on&#8221;. It&#8217;s worth asking even those people to not use the term so that a) we can identify the people who need education; and b) so as not to perpetuate the misunderstanding of persistence that leads to brittle systems.</p>
<p>So&#8230;there is no such thing as a &#8220;persistent queue.&#8221; Only queues with DEFPSIST(YES), which contain messages that may or may or may not be persistent.  Practice that discipline in your admin and programming teams and and you will find that the reliability of your systems improves over time.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/04/27/no-such-thing-as-a-persistent-queue/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Paul Clarke facts</title>
		<link>https://t-rob.net/2012/04/20/paul-clarke-facts/</link>
		<comments>https://t-rob.net/2012/04/20/paul-clarke-facts/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 17:23:45 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[chuck norris]]></category>
		<category><![CDATA[facts]]></category>
		<category><![CDATA[WMQ]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=533</guid>
		<description><![CDATA[Chuck Norris has nothing on Paul Clarke.  Here&#8217;s my Top 10 reasons why: 10 &#8211; Documented message priorities are 0-9 but there&#8217;s an undocumented &#8220;Paul&#8221; priority. 9 &#8211; Paul doesn&#8217;t use message selectors. He just thinks about which message he &#8230; <a href="https://t-rob.net/2012/04/20/paul-clarke-facts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.chucknorrisfacts.com/" target="_blank">Chuck Norris</a> has nothing on Paul Clarke.  Here&#8217;s my Top 10 reasons why:</p>
<p>10 &#8211; Documented message priorities are 0-9 but there&#8217;s an undocumented &#8220;Paul&#8221; priority.</p>
<p>9 &#8211; Paul doesn&#8217;t use message selectors. He just thinks about which message he wants and the QMgr delivers it.</p>
<p>8 &#8211; There is no message expiry. Only messages that Paul has allowed to live and those he has not.</p>
<p>7 &#8211; The signed certs trust the CA but the CAs trust Paul.</p>
<p>6 &#8211; Paul used to get terrible service in restaurants so he optimized the put-to-getting-waiter algorithm.</p>
<p>5 &#8211; <a href="http://gigaom.com/cleantech/the-house-that-twitters-its-energy-use/" target="_blank">Andy Stanford-Clark&#8217;s house</a> has a sign out front that reads &#8220;Powered by Paul.&#8221;</p>
<p>4 &#8211; Paul authenticates to your QMgr with &#8220;it&#8217;s me.&#8221;</p>
<p>3 &#8211; When WebSphere MQ was invented they found a message already on the queue with the MQMD.UserID == pclarke.</p>
<p>2 &#8211; Paul doesn&#8217;t need his passport at customs.  He shows them his identity context.</p>
<p>And the #1 Paul Clarke fact:</p>
<p>Paul can cause a message in a rolled back UOW to be committed *and* still maintain transactional integrity!</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/04/20/paul-clarke-facts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCI zone and non PCI zone in same DataPower box</title>
		<link>https://t-rob.net/2012/03/16/pci-zone-and-non-pci-zone-in-same-datapower-box/</link>
		<comments>https://t-rob.net/2012/03/16/pci-zone-and-non-pci-zone-in-same-datapower-box/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 02:37:59 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[WMQ Security]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[commentary]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[PCI-DSS]]></category>
		<category><![CDATA[Recommended Practices]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=530</guid>
		<description><![CDATA[I&#8217;ve been having PCI Déjà vu lately.  It seems the same questions keep coming up over and over.  One strategy for compliance that is nearly ubiquitous is to segregate the PCI data from the rest of the network.  In practical terms, &#8230; <a href="https://t-rob.net/2012/03/16/pci-zone-and-non-pci-zone-in-same-datapower-box/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having PCI Déjà vu lately.  It seems the same questions keep coming up over and over.  One strategy for compliance that is nearly ubiquitous is to segregate the PCI data from the rest of the network.  In practical terms, this usually means a dedicated subnet or network, firewalled from the rest of the intranet and with dedicated software and hardware components.  When people approach PCI compliance as simple configuration they eventually ask &#8220;why not put the non-PCI data in the PCI enclave?&#8221;  The theory is that if the PCI network is good enough for the PCI data then it is good enough for the less sensitive data and having just one set of components would cut costs.  Because I&#8217;m lazy and didn&#8217;t want to write yet another response to this, I thought I&#8217;d post the latest one here.</p>
<p><span id="more-530"></span>A colleague sent an email with the subject &#8220;PCI zone and non PCI zone in same DataPower box&#8221; today and asks the following question:</p>
<p><em>I would like to pick your brain regarding a question from customer.  They want to share the same DataPower box for PCI and non PCI data.</em></p>
<p>The premise of the subject line is wrong.  It is not possible to have the PCI and non-PCI zones in the same hardware or software component.  For purposes of PCI a component is either in scope or not in scope for the assessment.  If PCI data runs through the component in plaintext (or encrypted if the component has access to the keys) then the component is in scope.  So the DataPower box in this scenario would be in scope for the assessment because of the PCI data it handles.  What you actually have here is a question about running non-PCI data through the PCI zone.</p>
<p>What does &#8220;in scope&#8221; mean?  This is not a comprehensive list but the following apply:</p>
<ul>
<li>All points of data ingress or egress must be accounted for and PCI controls applied.  (Shut down unused ports, change default passwords, authenticate users, etc.)</li>
<li>All legitimate users must be accounted for and role-based access control with least-privileged authorizations applied.</li>
<li>Adequate controls must exist to assure that PCI data does not leak to unintended destinations.</li>
<li>Sufficient auditing and monitoring must be in place to verify all of this.</li>
<li>Monitoring must be able to flag unusual or unauthorized data access.</li>
</ul>
<p>Any system can be made PCI compliant despite routing non-PCI data through it.  The question is whether the cost of compliance exceeds the cost of segregating the data.  Those costs come in the form of implementing the necessary controls but also there are additional recurring costs because the scope of the assessment is expanded.  For example, if you have an egress route for non-PCI data you must show that sufficient controls exist to GUARANTEE that PCI data will NEVER flow through that path.  Two non-PCI egress routes?  Double that incremental cost.  Ten non-PCI egress routes?  Ten times that incremental cost.  These costs recur at every assessment.</p>
<p>Of all the systems where you might mix PCI and non-PCI data, a DP box is one of the best because it should be relatively easy to inventory data access paths and users, and it has good auditing capabilities built in.  However even with DataPower boxes there is a break-even point where the cost of monitoring, auditing, access controls and assessment on the non-PCI portion of the data exceeds the cost of a second box.  The key is to understand the costs of the controls and the recurring assessment costs against this expanded scope.  As a hardware/software vendor I am sometimes perceived as benefiting by selling two of everything to meet PCI compliance.  However what it really comes down to is that the cost of compliance and recurring assessments is reduced when PCI data is strictly segregated and that cost differential usually exceeds the cost of the extra hardware and software.  But in order to make that decision, you need to be able to do a good assessment of the alternatives and a cost/benefit analysis.</p>
<p>In the end, that&#8217;s what I recommend: to closely examine the cost of compliance on an undifferentiated network versus a segregated network and decide for yourself.  When you do buy that extra DataPower box or Broker license it won&#8217;t be because I recommended it or because it is a &#8220;best practice&#8221; but because that approach actually turns out to be less expensive than the alternative.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/03/16/pci-zone-and-non-pci-zone-in-same-datapower-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWC Webinar posted</title>
		<link>https://t-rob.net/2012/01/19/gwc-webinar-posted/</link>
		<comments>https://t-rob.net/2012/01/19/gwc-webinar-posted/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 21:57:44 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[WMQ]]></category>
		<category><![CDATA[WMQ AMS]]></category>
		<category><![CDATA[WMQ Security]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=514</guid>
		<description><![CDATA[The WebSphere MQ Security Deeper Dive slides from the  Global WebSphere Community webinar last month are now posted on this site.  You can get them from the Links page or just click here.  If you want the screencast and recording &#8230; <a href="https://t-rob.net/2012/01/19/gwc-webinar-posted/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <em>WebSphere MQ Security Deeper Dive</em> slides from the  Global WebSphere Community webinar last month are now posted on this site.  You can get them from the <a href="http://t-rob.net/links">Links page</a> or just click <a title="WMQ v7.1 Security Deeper Dive slides" href="http://t-rob.net/Downloads/20111220_WMQ_7.1 Security_deeper_dive.pdf" target="_blank">here</a>.  If you want the screencast and recording they are available form the Global WebSphere Community&#8217;s site <a title="Webinar: WMQ v7.1 Security Deeper Dive" href="http://bit.ly/zz1Tms" target="_blank">here</a>.  Thanks go to the great folks at <a title="Global WebSphere Community" href="http://www.websphereusergroup.org" target="_blank">Global WebSphere Community</a> who were excellent to work with in planning, producing and executing the webinar!</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2012/01/19/gwc-webinar-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Previous security lab reposted</title>
		<link>https://t-rob.net/2011/11/09/previous-security-lab-reposted/</link>
		<comments>https://t-rob.net/2011/11/09/previous-security-lab-reposted/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 04:42:45 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[Publications]]></category>
		<category><![CDATA[WMQ]]></category>
		<category><![CDATA[WMQ Security]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=489</guid>
		<description><![CDATA[I acted a bit too hastily in removing the old WMQ Security Lab download when the new one was posted.  Several readers reminded me that the new lab is for v7.1 and that isn&#8217;t even out yet!  Everyone who needs &#8230; <a href="https://t-rob.net/2011/11/09/previous-security-lab-reposted/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I acted a bit too hastily in removing the old WMQ Security Lab download when the new one was posted.  Several readers reminded me that the new lab is for v7.1 and that isn&#8217;t even out yet!  Everyone who needs these materials is obviously still on v6.0 or v7.0 so mea culpa.  The download is restored to it&#8217;s rightful place on the <a href="/links">Links</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2011/11/09/previous-security-lab-reposted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Credit card security fail</title>
		<link>https://t-rob.net/2011/11/02/credit-card-security-fail/</link>
		<comments>https://t-rob.net/2011/11/02/credit-card-security-fail/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 18:56:54 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[Fail]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=479</guid>
		<description><![CDATA[I suppose it says something about my travel schedule when a local purchase at Best Buy triggers a card security alert, but charges across country or overseas do not.  When I arrived home after picking up one of the new &#8230; <a href="https://t-rob.net/2011/11/02/credit-card-security-fail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I suppose it says something about my travel schedule when a local purchase at Best Buy triggers a card security alert, but charges across country or overseas do not.  When I arrived home after picking up one of the new 3TB disk drives there was a voice mail from my bank informing me that I needed to call right away regarding a suspicious card transaction.  The number they provided was not the same customer service number on the back of the credit card. This pegged my mental fraud detector so I called the number on the back of the card instead.  The Customer Service Rep politely informed me that &#8220;we don&#8217;t handle those here&#8221; and that I would need to call the number provided in the voice mail and no she could not verify that the number in the voice mail belonged to the bank. &#8220;But it must be the right number or they wouldn`t have called you, right?&#8221;  Sigh&#8230; Amateur.<span id="more-479"></span></p>
<p>I gave up and called the number from the voice mail.  It asked me to &#8220;speak or enter your credit card number.&#8221;  I asked it to &#8220;please let me talk to a human.&#8221;  After a minute or so of pounding on the 0 key, an actual human responded.</p>
<p>Bank: Hi, can I have your card number please?</p>
<p>Me: No.</p>
<p>Bank: I&#8217;m sorry?  I&#8217;ll need your card number in order to help you today.</p>
<p>Me: How do I know you are my bank?</p>
<p>Bank: Well, we are alerting you to some suspicious activity on your account.  If you give me your card number, I can look up your account and we can see if the transactions are fraudulent or not.</p>
<p>Me: Well, how about instead I alert YOU to some suspicious activity on my account?  It seems I received a phone call claiming that there is some odd transaction on my account.  But the customer service number that I know is my bank doesn&#8217;t know anything about it.  When I do call the unverifiable number, the first thing they want is my card number and presumably some additional identifying information SO THEY CAN STEAL MY IDENTITY AND TAKE OVER MY ACCOUNTS.  Now, I ask you again, do you have any way to identify to me that you are in fact my bank  BEFORE I give you any personal or account information?</p>
<p>Bank: No, not really.</p>
<p>Me: And if you are who you say you are, don&#8217;t you have a problem with this?</p>
<p>Bank: Your point is valid but I&#8217;ve never heard of anyone objecting to this.  We have a whole department full of operators and this is all we do.  All day long.  Honestly, it&#8217;s safe and not a problem.</p>
<p>Me: Then your management are idiots and your customers are all sheep.  This is unreasonable and I won&#8217;t comply.  What are my alternatives?</p>
<p>Bank: I guess you could go to your local branch.  They could then verify me by name in the company phone book.</p>
<p>Me: Anything else?</p>
<p>Bank: It&#8217;s possible the alert may be posted to your online banking by now.  Do you use online banking?</p>
<p>I do in fact use online banking and the alert was posted there.  So after all was said and done, I found out that the &#8220;suspicious transaction&#8221; was a disk drive I purchased at my local Best Buy.  I mean, c&#8217;mon it&#8217;s ME.  Whatever happened to &#8220;know your customer&#8221;? Buying a disk drive&#8230; near my home&#8230; on the weekend, should be the <em>least</em> suspicious of my charges.  You see a large celery purchase, <em>then</em> call the cops!</p>
<p>But regardless of the legitimacy of the charge, the customer-side process is an identity theft nightmare just waiting to happen.  They tell you to never give out your information to someone who calls  you but to hang up and call back so you know it&#8217;s the right company.   But being the one to initiate the call is no protection <em>if you call a  number that a stranger provided and which you cannot verify</em>!  The bank should know better.  WE as customers should know better.  If this happens to you, refuse to give your information without the bank verifying who they are.  (Which of course they cannot do without first getting YOUR info so they can tell you something about your account that only they would know and by then it&#8217;s too late.)  Insist that the number on the card MUST be the one you can call for things like this and then hold the bank accountable.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2011/11/02/credit-card-security-fail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Encrypting passwords in config files &#8211; secure or not?</title>
		<link>https://t-rob.net/2011/10/24/encrypting-passwords-in-config-files-secure-or-not/</link>
		<comments>https://t-rob.net/2011/10/24/encrypting-passwords-in-config-files-secure-or-not/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 21:17:39 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[WMQ Security]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=475</guid>
		<description><![CDATA[Not long ago a colleague told me he wished that he could use a .kdb format keystore for his Java applications.  When I inquired as to why, he said he liked that the .kdb includes the ability to stash an &#8230; <a href="https://t-rob.net/2011/10/24/encrypting-passwords-in-config-files-secure-or-not/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Not long ago a colleague told me he wished that he could use a .kdb format keystore for his Java applications.  When I inquired as to why, he said he liked that the .kdb includes the ability to stash an encrypted version of the password, whereas with his Java application he was obliged to store the password in a configuration file and, more importantly to his mind, in plain text.  My initial reaction was that encrypting the Java passwords would probably be a good thing.  Judging by the frequency with which this requirement comes up, I&#8217;m guessing most people would agree.  Intuitively, it makes sense – an encrypted password <em>must</em> be more secure than one in plain text, right?  The more I think about it, the more I&#8217;m convinced that the opposite is the case.  I&#8217;ll explain why after the break. <span id="more-475"></span></p>
<p>Before we get started, let me put some scope on this.  I am NOT talking about password databases here.  Any time that many passwords are stored, they should always be encrypted using individual salt values and iterated hundreds of times with an irreversible hash function.  <a title="OWASP home page" href="https://www.owasp.org" target="_blank">OWASP</a> <a title="OWASP Forgot PAssword Cheat Sheet" href="https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet" target="_blank">has</a> <a title="OWASP: Broken authentication vulnerability" href="https://www.owasp.org/index.php/Top_10_2010-A3" target="_blank">a lot</a> <a title="OWASP: Password Storage Cheat Sheet" href="https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet" target="_blank">to say</a> on that topic and I won&#8217;t attempt to cover it here.  What I am talking about are passwords used to authenticate an application to something else.  Typically in the MQ world these are passwords to a Java keystore and the application needs at most one or two of them.  The question then is how much benefit is derived from encrypting a single password in a configuration file?  Arguably in many cases that achieved benefit is actually a net negative due to weaknesses in password management.</p>
<p>Ultimately, it comes down to this: any system that must boot to operational status unattended must have access to a useable authentication credential.</p>
<p>Let&#8217;s examine that in more detail.</p>
<p>&#8220;Unattended&#8221; means that the system must go from powered down to fully operational without human intervention.  Is it acceptable that after rebooting a server all the applications start up a command prompt waiting for a human user to enter all the passwords?  Usually not.  Overwhelmingly not.  There are some cases where this is true but I don&#8217;t have the security clearances to work with those systems and if I did I couldn&#8217;t write about it anyway.  For everyone else we all need systems that recover automatically and without human intervention.  Bottom line, &#8220;unattended&#8221; means that the credentials must be stored where the application can access them at run time, usually in the file system.</p>
<p>&#8220;Useable&#8221; means that regardless of how and where it is stored, the credential must be capable of authenticating and/or  encrypting and decrypting to and from adjacent systems or applications.  In order to do this the application presenting the credential <em>must</em> be able to render an encrypted credential back to its plain text form.  If the credential can be rendered to plain text using only a defined procedure we say that it is obfuscated.  This is not that much better than a plaintext password since anyone who can read the obfuscated value can derive the plain text password.  If the credential has been encrypted then you need both a defined procedure and a key to decrypt it.  Arguably this is better because the attacker needs both the decryption process <em>and</em> the password decryption key.  But where do you store the password decryption key?  Compile it into the program?  Store it in the filesystem?  You could of course encrypt it, but then you&#8217;d be left with yet another key and no place to put it.  Bottom line, &#8220;useable&#8221; means that no matter how many layers of protection you put on a stored credential, the application <em>must</em> be able to unwind them and render the credential in plain text.</p>
<p>The combination of these requirements for unattended access to usable credentials ultimately means that if an attacker can read the filesystem, compromise the running operating system, or compromise the running application, then the credentials are compromised no matter how many times they&#8217;ve been obfuscated or encrypted.</p>
<p>Sure, there are ways to mitigate this risk.  For example, you might store the application credentials remotely, for example on a network hardware security module.  But you don&#8217;t access that Network HSM over plaintext do you?  No, you do so using TLS and authenticate with some kind of credential…which is stored on the filesystem.  Perhaps you encrypt the filesystem underneath the application?  OK but then to access that encrypted volume requires a credential…which is stored on the filesystem.  No matter how much obfuscation or encryption is applied to a password, if the application can render it, so too can an attacker.</p>
<p>If I&#8217;ve convinced you of anything so far, it is that encrypting individual application passwords doesn&#8217;t add to their effective security.  True, it ups the attacker&#8217;s skill requirement a bit but that just makes it less convenient for legitimate users.  A deliberate attack by a skilled adversary won&#8217;t be slowed down much, if at all.  But does encryption actually make the system <em>less</em> secure?  Perhaps.</p>
<p>To understand why, consider the administration required when passwords are encrypted and let&#8217;s use keystore management as our example case.  Legitimate administrators must know the passwords to keystores in order to perform routine maintenance.  If the local password is opaque to the administrator then there must be some means of accessing the plaintext version of it, for example when it is time to renew a certificate.  One approach to this is to use a single password across all systems and that is well-known to all administrators. This tends to lead to short, human-readable passwords that are subject to brute-force attacks, and of course compromise of one node leads to compromise of the entire network.  As bad as this sounds, you might be surprised to know how many shops use something like &#8220;mqm2011&#8243; as their password.</p>
<p>So what is the alternative?  Some shops use secure password storage.  This too is usually protected by a human-readable password and again compromise of the password locker can lead to compromise of the entire network.  The main difference is that now the passwords are stored on or accessed from an end-user machine that probably has Internet access, email access and one or more browsers.  In other words, the passwords are now stored on the most vulnerable machines in the network.</p>
<p>Worse, the passwords must still be manipulated by humans so there is still a temptation to use short, human-readable strings that are subject to dictionary attacks.  If we are lucky enough to have a policy that dictates strong, complex and long passwords then there is no hope of getting these typed correctly into the tools where they are used.  Instead, we copy and paste them.  Now the passwords hang around in memory and swap files indefinitely.</p>
<p>Finally, consider that if all the administrators use some kind of password locker then there is a complete copy of the set of keystore passwords for each administrator.  The more administrators there are, the more copies of the password database exist.  As the number of copies expands, the likelihood that one of them will be compromised increases.  Add enough administrators and that probability approaches certainty.  You may be thinking &#8220;But T.Rob, we&#8217;ll NEVER have that many administrators!&#8221;  OK, but consider the corollary: given a small group of administrators <em>over a long enough period of time</em> and the probability also approaches certainty.</p>
<p>Now I&#8217;m not saying that there is no value at all in encrypting theapplication  passwords in the configuration files, or in using password lockers or in encrypted file systems.  Far from it, these are all very useful tools.  What I am saying though is that when we make these decisions we must be aware of our biases and attempt to neutralize them.  When it comes to encrypting passwords in configuration files we have a gut instinct which tells us that this is good and we tend to overestimate the incremental security value added.  We employ a mental calculus that tells us decrypting the password is hard and that accessing files is easy when in fact the opposite is true.  Any encryption on those passwords must be reversible and is usually the easy part.  In fact, if I can read your .kdb files I don&#8217;t even need to reverse the password since I can fire up my own queue manager of the same name and it can use the .kdb and stash file directly.  Since my queue manager knows how to read the stash file it is not the actual password that is important, just the ability to use it to impersonate you.  The entirety of your application security often comes down to nobody other than administrators being able to read the configuration files of the application.</p>
<p>We also tend to overlook the extent to which distributed management of keystores and passwords weakens security.  All of the management tools for keystores and public/private key pairs are designed to provide security with the assumption that the private key is generated where it will be used and then never moved or copied.  The FIPS-approved modules and algorithms even go so far as to wipe temporary storage before releasing it back to the operating system just to prevent partial artifacts of key generation from leaking out.  But no matter how secure the crypto tools are, they can&#8217;t compensate for administrators leaving a trail of passwords in copy/paste buffers and scp temporary files across the network.  I once had a client who actually <em>emailed</em> their kdb files around.  Encrypting the passwords results in a very slight reduction in risk if an attacker gains read access to the configuration files, but it does then require us to manage the passwords elsewhere.  Taking that step opens up a whole new avenue of attack that may be more vulnerable than the risk we intended to mitigate in the first place.</p>
<p>What is the alternative?  Consider a system where the keystores, private keys and their passwords are generated in place and stored locally in configuration files, in plain text.  This has several advantages:</p>
<ul>
<li>The      passwords need not be human readable.  I typically use 63-character      pseudo-random strings that would be impossible to brute-force.  I also wrap the keystore management      commands in scripts that extract the password from the configuration file      and insert it into the maintenance commands as needed.</li>
<li>The keys      and passwords are never copied or pasted on the workstations of human      users, or otherwise shipped around the network, so there is no possibility      of leaving a trail of artifacts.</li>
<li>There      is no temptation to use the same password on multiple nodes.  Compromise of one does not lead to any      particular advantage in compromising others.</li>
<li>Keys      and passwords are stored only on machines that have tight physical and OS      security and do not have access to the Internet.  (None of your servers have unrestricted      access to the Internet, right?  RIGHT?!?!)</li>
<li>There      need only be one copy of any private key and keystore password.  The fewer the number of copies, the less      chance of compromise.  If there are      additional copies, these are on encrypted backup or other controlled media      and not on human-user workstations.</li>
</ul>
<p>The practice of encrypting passwords in configuration files springs from implicit assumptions that someone other than a legitimate user can read those files and that the attacker will not be able to perform the same procedure that the application uses to render the plain text password.  These are very bad assumptions on which to base a security model.  <em>Always</em> assume that anyone who can read the keystore and password file can impersonate the application, even if the password is encrypted, and design the security on that basis.  First and foremost, the operating system, underlying file system permissions and application access must be locked down tight enough so that only the legitimate administrators have read or better access to the configuration files.</p>
<p>Where application passwords must be encrypted or obfuscated, consider how to implement password management so that it does not weaken effective security.  For example, WebSphere MQ expects .kdb passwords to be stored in the stash file and there is no option for the queue manager to use a plain text version.  The level of security achieved then depends on how the administrative passwords are managed and this can range from &#8220;no weaker than the OS and filesystem&#8221; to &#8220;completely exposed on an administrator&#8217;s bot-infected laptop.&#8221;  Any attacker with read access to the stash file could easily reverse it so there is no additional risk incurred by storing the actual plain text password in the same filesystem with the other kdb files.  Any other measures which require the password or keystore to exist on any other workstation or server node reduce the effective level of security.</p>
<p>To the extent that encrypting passwords in configuration files leads to the implementation of distributed password management schemes, the result is often that the overall level of security is reduced.  If we know this, neutralize our instinctual biases as much as possible and then make a deliberate decision that the increased risk is worth the benefit in convenience, perhaps that is good enough.  But if we encrypt passwords in configuration files because our gut instinct tells us that encrypted passwords are safer, or because our security model is to protect against the threat of non-administrators having read access to configuration files, then the result is likely to be a system that is far less secure than we believe it to be.  That is usually worse than no security at all.</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2011/10/24/encrypting-passwords-in-config-files-secure-or-not/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WMQ Security in v7.1</title>
		<link>https://t-rob.net/2011/10/18/wmq-security-in-v7-1/</link>
		<comments>https://t-rob.net/2011/10/18/wmq-security-in-v7-1/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 21:36:44 +0000</pubDate>
		<dc:creator>T.Rob</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[WMQ]]></category>
		<category><![CDATA[WMQ Security]]></category>

		<guid isPermaLink="false">https://t-rob.net/?p=471</guid>
		<description><![CDATA[For those of you who missed it, Morag presented the WMQ Security session at this year&#8217;s WebSphere Technical Conference last week.  This was exciting for a few reasons, not the least of which was &#8211; did I mention MORAG presented? &#8230; <a href="https://t-rob.net/2011/10/18/wmq-security-in-v7-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For those of you who missed it, Morag presented the WMQ Security session at this year&#8217;s WebSphere Technical Conference last week.  This was exciting for a few reasons, not the least of which was &#8211; did I mention MORAG presented? So good to have her back at the conference.</p>
<p>Of course, for this iteration she had written all new content for the conference.  There are so many changes related to security in v7.1 that almost all of the session was devoted to the new features!  There is almost nothing left of my content from the deck but hey, it was pushed out by new features and that&#8217;s a problem I love to have.  This blog post is a very high level overview of those new features.</p>
<p><span id="more-471"></span></p>
<p><strong>WMQ Configuration backup</strong><br />
Although <a href="http://ibm.co/SupptPacMS03" target="_blank">MS03</a> is great and the various owners of the SupportPac have been very responsive over the years, customers have long asked for a <em>supported</em> tool to back up their configurations and access control lists.  WebSphere MQ now has such a tool!  Though this may seem like a small detail,my definition of security includes the ability to recover after a breach.  Pulling this tool into the product means that you will now always have this capability, and it will remain current with each new release.</p>
<p><strong>RUNMQSC versions of setmqaut commands</strong><br />
This is related to the previous item in that configuration backups can contain access control lists. The new twist is that you can now define these in the same script where you define the objects they pertain to.  Define a queue, define the access rules for that queue right after it.  Again, this may seem like a small thing but I can&#8217;t count the number of shops I&#8217;ve visited where the objects were backed up centrally but the setmqaut commands were not captured.  Part of the reason why was complexity and having to deal with two sets of files.  Problem solved.  Next!</p>
<p><strong>Authorization control on non-local cluster queues</strong><br />
Here is where many of you are thinking &#8220;things just got interesting.&#8221;  Finally! No more QAlias definitions over clustered queues!  You can now define a profile that matches either a non-local cluster queue or even a non-local fully-qualified queue (where both queue and QMgr are specified on the open).  This does not replace security on the receiving end of course, but it sure does make life simpler on the sending side.</p>
<p><strong>Channel Authentication Records</strong><br />
These records provide rules that can reduce or eliminate the need for exits such as <a href="http://mrmq.dk" target="_blank">BlockIP2</a>.  For example, you can now set up rules that dynamically map an X.509 certificate Distinguished Name to a particular user ID and set the MCAUSER to contain that ID.  You can also have multiple rules with different specificity, for example one to admit connections from all administrators based on the Organizational Unit in the DN and another to deny access to that guy you fired last week based on his fully-qualified DN.  This provides some limited revocation capability in shops that do not enable WMQ&#8217;s native CRL or OCSP revocation checking.  There is even an option to ban administrative IDs and WMQ knows on a platform-by-platform basis which IDs are administrative.  That means you can have a baseline QMgr object inventory that includes a read-only Explorer channel, across all platforms, that is guaranteed to not allow administrative access.  Sweet!</p>
<p><strong>Listener Blocking</strong><br />
This is a very useful addition if you have ever had a runaway client or a remote QMgr with a typo in the channel name stuck in a reconnect loop.  This feature doesn&#8217;t replace the firewall but sometimes the process of enabling and disabling firewall rules is too heavyweight for a temporary fix that the WMQ administrator needs <em>right now</em>.  The idea is that the listener can now be configured to ignore connections based on their originating IP address.  This happens before any data is read from the socket so is capable of absorbing a lot of connection requests.</p>
<p>Morag tells a story about how someone in Hursley started port-scanning the development servers.  Since WMQ cuts an FDC file when something unknown connects to a listener, the port scanner generated FDC files on all servers, every day.  Since they were in the process of writing this feature at the time, they simply enabled it and configured WMQ to ignore the port scanners.  Problem solved!  Of course if you are using some sort of IP sprayer that needs to know if the listener is up, you are better off configuring it for a TCP half-connect instead.</p>
<p><strong>SSL FIPS and Suite B</strong><br />
Over time some of the ciphersuites that were once considered safe have been superseded by stronger versions.  WMQ needs to stay current with these and so v7.1 now supports newer FIPS-compatible algorithms as well as adding support for Suite B.  If you don&#8217;t know what these are then don&#8217;t worry about it.   For everyone else, probably a good idea to start planning your upgrade now.</p>
<p><strong>Explorer Role Based Authorities Wizard</strong><br />
In my original presentation I used to have a list of setmqaut commands that would create a read-only Explorer channel.  I&#8217;m glad to see these removed and replace with a wizard that does the same thing!  You have a choice to set up either administrator or read-only access and the administrator generates a window with the commands it will run.  You can then copy the commands out or hit OK to have them executed by the wizard.</p>
<p>In the session someone asked whether there would be additional roles defined.  Currently the wizard has only the administrative and the read-only roles.  The thing is, these are the only two roles that are generic.  You know you will need an administrator role.  You probably need a read-only role, just for instrumentation if not for real human users.  But between these two extremes, everything else falls into the &#8220;it depends&#8221; category.  If you come up with additional roles that you think are generic or at least broadly useful, I&#8217;d love to hear about it.</p>
<p><strong>API Exit for clients</strong><br />
The foils say that this is the same interface as the API exit for the QMgr.  If that is true, I&#8217;d expect to be able to use MA0W at the client side.  In any case, a client API exit opens up a whole raft of new possibilities, such as the client equivalent of a message exit!</p>
<p><strong>Client version in channel status</strong><br />
From time to time a FixPack will contain a security-related fix.  Any installation prior to that FixPack would then be considered vulnerable and need to be updated.  But how do you know which client version is attached to the QMgr?  As of v7.1, just display the channel status!  As of WMQ v7.1 the client version down to the FixPack level can be determined in the channel status display.</p>
<p><strong>Version coexistence</strong><br />
Last but not least, you can now have WMQ v7.0.1.6 and higher coexisting on the same server as one or more installations at v7.1 or higher.  How many?  I believe someone from Hursley said they&#8217;d tested up to 128 installations on one box.  I&#8217;m imagining their summer intern saying &#8220;you want me to do WHAT?&#8221;  Anyway, this is again not strictly a security feature but in the event you wanted to implement v7.1 for it&#8217;s security features, you may need a nice migration path.  The coexistence feature lets you do that on the same hardware you are using now.  How sweet is that?</p>
<p><strong>What&#8217;s next?</strong><br />
What I&#8217;ve listed here are just the security-related items and only a high-level overview.  The next step will be to get a copy after November 11th and actually play around with it a bit.  Between now and then there will be webinars hosted by <a href="http://www.websphereusergroup.org/" target="_blank">Global WebSphere Community</a> and I expect maybe a developerWorks article or two.  I&#8217;ll be sure to publish the dates and times for these events, links and so forth as they are announced so watch this space!</p>
]]></content:encoded>
			<wfw:commentRss>https://t-rob.net/2011/10/18/wmq-security-in-v7-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

