<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>LINICKX.com</title><link>https://www.linickx.com/</link><description></description><lastBuildDate>Sun, 02 Feb 2020 20:26:00 +0000</lastBuildDate><item><title>Is your firewall Team from Venus?</title><link>https://www.linickx.com/is-your-firewall-team-from-venus</link><description>&lt;p&gt;Something a little different for my site; this post is a soft-skill article. In job listing, or development plans its really common for &lt;em&gt;Technical&lt;/em&gt; roles to include a soft skills component and I had kinda assumed it was &lt;em&gt;filler content&lt;/em&gt;, how hard is it to talk to people?! A couple of years ago I moved from Consultancy into an Internal Operational role, and now, ok I get it, it's that old saying &lt;em&gt;Men from Mars, Women from Venus&lt;/em&gt; but with like 7 Layers of OSI complication!&lt;/p&gt;
&lt;p&gt;I have something like 15years experience working with firewalls in large enterprise, it's a tricky topic, if you cannot communicate your requirements to the firewall team the chances are you application/solutions/service just isn't going to work, after all as &lt;a href="http://blog.dilbert.com"&gt;Scott Adams&lt;/a&gt; has portrayed in &lt;a href="http://dilbert.com"&gt;Dilbert&lt;/a&gt;, everyone blames the firewall.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dilbert.com/strip/2013-04-07"&gt;&lt;img alt="Blame the Firewall" src="/files/2020/02/fwblame.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Firewalls are everywhere, and even though the security industry likes to argue that they are becoming less and less effective I'm confident they're not going away any time soon, so here are my tips:&lt;/p&gt;
&lt;h2&gt;1. Do not forward (&lt;em&gt;copy/paste&lt;/em&gt;) vendor documentation&lt;/h2&gt;
&lt;p&gt;If I had a &lt;code&gt;£$&lt;/code&gt; for every time I get forwarded &lt;a href="https://support.microsoft.com/en-gb/kb/832017"&gt;this Microsoft document&lt;/a&gt; I'd be a millionaire, forwarding the documentation verbatim is the quickest way to get yourself at the bottom of someones's todo list or land you in the SLA trap where the minimum gets done on your ticket to keep the timer green.&lt;/p&gt;
&lt;p&gt;Communication requires consideration, throwing a document you haven't read at another team is showing you don't value their time/effort&lt;/p&gt;
&lt;p&gt;Remember:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everyone is busy! The simplest and most complete requests will be implemented quickest, all operations teams have this issue, it is &lt;strong&gt;not&lt;/strong&gt; unique to firewalls.&lt;/li&gt;
&lt;li&gt;The firewall team do not know anything about your application/solution/service, but are accountable for the security; help them to help you, reduce friction by having information up front.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You&lt;/em&gt; are making the request for &lt;em&gt;Your Application&lt;/em&gt;, &lt;em&gt;You&lt;/em&gt; should take the time to &lt;em&gt;read and understand the documentation&lt;/em&gt; so that you can present the firewall change accurately and make it is simple as possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. Presentation &lt;em&gt;is&lt;/em&gt; everything&lt;/h2&gt;
&lt;p&gt;Always format your communication for your audience, powerpoint for Execs, spreadsheets for finance, for firewalls it's tables.&lt;/p&gt;
&lt;p&gt;Large organisation will/probably/maybe have a template to follow for change requests, don't deviate from that, seriously if your firewall team has a template use it! Arguing yours is better is futile, firewalls form part of a compliance chain, auditors tick boxes your rockstar form won't tick the box; if you think you can improve the process or add value, speak to the Security Officer.&lt;/p&gt;
&lt;p&gt;Formal documentation such as High Level (HLD) or Low Level Designs (LLD) might be a bit more fluid, here are some hints to make it easy to read and understood. &lt;/p&gt;
&lt;p&gt;Arrows like &lt;code&gt;-&amp;gt;&lt;/code&gt; should not be used in formal documentation, unless in a flow diagram, don't do it, from my experience I know it leads to mistakes. Something like &lt;code&gt;10.1.1.1 -&amp;gt; 192.168.1.1 on port 22&lt;/code&gt; is fine for an email or instant message but &lt;em&gt;for documentation use a table&lt;/em&gt; (or spreadsheet):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Source Name | Source IP    | Destination Name | Destination IP | Service Name | Protocol | Port | Comment
------------|--------------|------------------|----------------|--------------|----------|------|---------
VLAN11      | 10.10.0.0/24 | WebServer01      | 192.168.168.1  | HTTPS        | TCP      | 443  | Intranet
AdminPC     | 10.1.0.1     | WebServer01      | 192.168.168.1  | SSH          | TCP      | 22   | Admin Access
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Use the above table format, give IP addresses names (&lt;em&gt;use the FQDN if possible&lt;/em&gt;), the FW team will instantly recognise what needs to be done; a table like this is both simple to read and complete and will put you top of anyone's todo list.&lt;/p&gt;
&lt;p&gt;If you have a large design document, I recommend the firewall table (&lt;em&gt;communications matrix&lt;/em&gt;) being a summary/appendix of all the required flows as picking rules from disparate sections will only lead to tears.&lt;/p&gt;
&lt;h2&gt;3. Direction, know which way to go&lt;/h2&gt;
&lt;p&gt;On a firewall direction is really, &lt;em&gt;really&lt;/em&gt; important. Your communication needs to demonstrate you know which way traffic is going and what your expectations are of the firewall.&lt;/p&gt;
&lt;p&gt;Firewalls process traffic as it arrives, from a source IP to a destination IP. Your request needs to show which IP addresses are the client (&lt;em&gt;source&lt;/em&gt;) and which IP address are the server (&lt;em&gt;destination&lt;/em&gt;)... &lt;em&gt;DO NOT&lt;/em&gt; bung in both directions to be "safe" when you don't need it, it just shows that you don't know what you are requesting, it's a common red flag for rule approvers/implementer.&lt;/p&gt;
&lt;p&gt;For example, A laptop accessing a web site on HTTPS, needs &lt;code&gt;TCP/443&lt;/code&gt; to the server (&lt;em&gt;web site&lt;/em&gt;) only. You do not need &lt;code&gt;TCP/443&lt;/code&gt; from the server (&lt;em&gt;web site&lt;/em&gt;) to the client (&lt;em&gt;laptop&lt;/em&gt;). Take time when digesting the vendor documentation to understand the direction of traffic flow. &lt;/p&gt;
&lt;p&gt;Modern Firewall are smart when it comes to TCP and common applications; unless your traffic is media (&lt;em&gt;voice/video&lt;/em&gt;) you typically don't need to worry about the random high port source, focus your effort on the destination port, get the direction right and your app will work.&lt;/p&gt;
&lt;p&gt;(Media traffic is the devil, ask the firewall team for their recommendations prior to submitting your request)&lt;/p&gt;
&lt;h2&gt;4. Choose Secure&lt;/h2&gt;
&lt;p&gt;Most vendor documentation includes protocol choices, HTTP vs HTTPS for example. As the Firewall Team are responsible/accountable for security, you'll make friends with the security teams if you pick the secure protocol, forming strong relationships with other teams is a valuable skill. &lt;/p&gt;
&lt;p&gt;If you are unclear, secure in this instance is encrypted. So:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTPS (&lt;em&gt;not HTTP&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;SSH (&lt;em&gt;not Telnet&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;FTPs (&lt;em&gt;FTP with SSL is better than plain old FTP&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;LDAPS (&lt;em&gt;LDAP with SSL is better than plain old LDAP&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;etc, etc.. if in doubt pick "&lt;em&gt;s&lt;/em&gt;" &lt;code&gt;;-)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the dangers of Privacy/GDPR most organisations are moving to a &lt;em&gt;Secure by Design&lt;/em&gt; motto, the firewall team are tasked to help enforce that.&lt;/p&gt;
&lt;h2&gt;5. Firewalls are everywhere&lt;/h2&gt;
&lt;p&gt;In a large enterprise there is going to be more than one firewall. Some organisations will add a column to their request tables to record which flow (&lt;em&gt;rule&lt;/em&gt;) belongs to which firewall others will want a table per firewall.&lt;/p&gt;
&lt;p&gt;If your environment is large/complicated, typically you'll find different firewalls for &lt;em&gt;management&lt;/em&gt;, production traffic or testing. Keep the communication flowing with the firewall team to find out what you need to know/do before submitting a 100 rules, it'll save you all time!&lt;/p&gt;
&lt;h2&gt;Some firewall language&lt;/h2&gt;
&lt;p&gt;To finish, here is some further firewall language to help you on your way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Security Policy&lt;/code&gt; - A document that tells the firewall guy what he can and cannot allow through the firewall&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Firewall Policy&lt;/code&gt; - The complete set of rules implemented on a single firewall&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Firewall Rule&lt;/code&gt; - A line in the FW policy that contains, source, destination, service. The exact content of the line may vary by vendor.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Flow&lt;/code&gt; - Firewall Flow / Network Flow / Traffic flow. All used interchangeably, it means the path taken from the source to the destination, a flow might touch one or many firewalls&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Communications Matrix&lt;/code&gt; - All of the rules required for an application or service that need to be implemented into an existing firewall policy &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;/End&lt;/h2&gt;
&lt;p&gt;Hopefully this is of help to someone, comments via twitter are welcomed; would you like to see more of this kind of thing?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nick Bettison</dc:creator><pubDate>Sun, 02 Feb 2020 20:26:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2020-02-02:is-your-firewall-team-from-venus</guid><category>Security</category><category>Firewall</category><category>blog</category></item><item><title>2019: The Missing Year</title><link>https://www.linickx.com/2019-the-missing-year</link><description>&lt;p&gt;2019 has taught me a new appreciation for stale websites; over the last year or two having/making time available to publish content has gotten tricky for me, so now when going about my usual Internet day, when I come across a site that hasn't been updated in a while I wonder &lt;em&gt;"what has changed in their life"&lt;/em&gt; ?&lt;/p&gt;
&lt;p&gt;I expect this year to be just as crazy, but with a little change in direction I'm hopeful to get some additional content up,  you never know I might help someone! &lt;a href="https://github.com/linickx"&gt;My github account&lt;/a&gt;  has seen a couple of updates over the last year that could have been blog worthy...:&lt;/p&gt;
&lt;h2&gt;snsync&lt;/h2&gt;
&lt;p&gt;snsync is a personal project for keeping text copies of &lt;a href="https://simplenote.com/"&gt;Simplenote&lt;/a&gt; locally, (find an &lt;a href="https://www.linickx.com/introducing-snsync-an-rsync-client-for-simplenote"&gt;intro to snsync&lt;/a&gt; here). has had a couple of updates in 2019:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A &lt;a href="https://github.com/linickx/snsync/commit/0c9a054a623c141bd10c4a571f59377c1196dd11"&gt;major library update&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;A &lt;a href="https://github.com/linickx/snsync/issues/3"&gt;bug fix&lt;/a&gt; that was accidentally removing tags&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I use this project everyday so if you're a Simplenote users give it a whirl!&lt;/p&gt;
&lt;h2&gt;Docker Python containers&lt;/h2&gt;
&lt;p&gt;Python scripts can fix the world &lt;code&gt;;-)&lt;/code&gt;  but dependency management doesn't get any &lt;em&gt;better&lt;/em&gt; so I'm sharing some potentially useful containers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/linickx/docker-python-alpine-dnspython"&gt;docker-python-alpine-dnspython&lt;/a&gt; : With python2 now EOL running old libraries is going to be more challenging, this container boots an Apline (python2) image with &lt;a href="http://www.dnspython.org/"&gt;dnspython&lt;/a&gt; installed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/linickx/docker-python-alpine-easysnmp"&gt;docker-python-alpine-easysnmp&lt;/a&gt;:  Another apline image, this one with Python3 running &lt;a href="https://easysnmp.readthedocs.io/"&gt;easysnmp&lt;/a&gt; useful for automating snmp sweeps when bash &amp;amp; snmp-utils just isn't &lt;em&gt;enough&lt;/em&gt;!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, you shouldn't run random containers from the internet, please check out the Dockerfiles to see what they &lt;em&gt;really&lt;/em&gt; do!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nick Bettison</dc:creator><pubDate>Wed, 01 Jan 2020 16:11:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2020-01-01:2019-the-missing-year</guid><category>blog</category></item><item><title>checking if python is running via ssh</title><link>https://www.linickx.com/checking-if-python-is-running-via-ssh</link><description>&lt;p&gt;Sometimes it's nice when something is much easier than you expected. I have a few cobbled together python scripts for speeding things up, one in particular I have on my home pc which I wanted to work out if am I running it locally or if I have SSH'd in... below is the surprising simple example!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python

import os

try:
    os.environ[&amp;quot;SSH_TTY&amp;quot;]
    print(&amp;quot;SSH Connection Detected&amp;quot;)
except:
    print(&amp;quot;Running Locally&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You could also test the &lt;code&gt;SSH_CLIENT&lt;/code&gt; variable as well, but this was good enough for me.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nick Bettison</dc:creator><pubDate>Mon, 30 Nov 2015 16:19:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2015-11-30:checking-if-python-is-running-via-ssh</guid><category>python</category><category>ssh</category><category>blog</category></item><item><title>Good bye WordPress, Hello Pelican !</title><link>https://www.linickx.com/good-bye-wordpress-hello-pelican</link><description>&lt;p&gt;After &lt;a href="https://www.linickx.com/and-the-site-goes-live"&gt;10 happy years&lt;/a&gt; as a WordPress user, yesterday I switched my site over to &lt;a href="http://blog.getpelican.com"&gt;pelican&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;WordPress is awesome I'd recommend it to anyone, however over the last year I've become increasing frustrated with my sites &lt;em&gt;stability&lt;/em&gt;; I've been pretty pleased with &lt;a href="http://s.linickx.com/"&gt;the average response time&lt;/a&gt; but it wouldn't take much to exhaust my cloud servers CPU. (&lt;em&gt;I've tried pretty much every caching technique and couldn't find a perfect fix&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;For anyone else that is embarking on this transition and having issues with &lt;a href="http://docs.getpelican.com/en/3.5.0/importer.html"&gt;pelican-import&lt;/a&gt;, I advise opening your &lt;code&gt;posts.xml&lt;/code&gt; in &lt;a href="http://en.wikipedia.org/wiki/Vi"&gt;Vi&lt;/a&gt; scroll through and look for any &lt;em&gt;dodgey looking&lt;/em&gt; characters and remove them.&lt;/p&gt;
&lt;p&gt;Making my new pelican site look "&lt;em&gt;exactly&lt;/em&gt;" like my old site has been a labour of love so I have published some of my fixes online.&lt;/p&gt;
&lt;h3&gt;FEED URLS&lt;/h3&gt;
&lt;p&gt;In WordPress I had pretty URLs for Feeds like &lt;a href="https://www.linickx.com/feed"&gt;/feed&lt;/a&gt;, &lt;a href="https://www.linickx.com/feed/atom"&gt;/feed/atom&lt;/a&gt; and &lt;a href="https://www.linickx.com/tag/security/feed"&gt;/tag/security/feed&lt;/a&gt;. I found that feeds were limited to files in Pelican and did not support a nested structure. To fix this I have proposed a &lt;a href="https://github.com/getpelican/pelican/pull/1625"&gt;pull-request&lt;/a&gt; on github, I guess we'll see if it gets accepted.&lt;/p&gt;
&lt;h3&gt;URL Rewriting&lt;/h3&gt;
&lt;p&gt;This Pelican is a bit of an experiment to ease regression I want to leave my WordPress config completely untouched, therefore I have migrated from Apache to Nginx. I've not used nginx before, so it's been a bit of a learning curve if you're having problems with rewriting maybe &lt;a href="https://github.com/linickx/dotcom/tree/master/nginx"&gt;my config&lt;/a&gt; can help?&lt;/p&gt;
&lt;h3&gt;Theme&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://github.com/linickx/dotcom/tree/master/themes/linickx"&gt;pelican LINICKX theme&lt;/a&gt; is now based on bootstrap.&lt;/p&gt;
&lt;h3&gt;Pelican Config&lt;/h3&gt;
&lt;p&gt;Tying it all together, nginx, pelican, etc takes a little effort... example &lt;a href="https://github.com/linickx/dotcom/blob/master/pelicanconf.py"&gt;pelicanconf.py&lt;/a&gt; and &lt;a href="https://github.com/linickx/dotcom/blob/master/publishconf.py"&gt;publishconf.py&lt;/a&gt; are on github.&lt;/p&gt;
&lt;h3&gt;To Do&lt;/h3&gt;
&lt;p&gt;There's still loads for me to fix, I've replaced all teh &lt;code&gt;[gallery]&lt;/code&gt; tags but I know there's plenty of &lt;code&gt;[caption]&lt;/code&gt; tags to remove.&lt;br /&gt;
I haven't yet worked out how I'm going to handle image resize/upload in a neat and tidy way, in fact my whole write &amp;amp; publish workflow needs a bit of thought.
BUT this first pelican post, written in &lt;a href="http://atom.io"&gt;atom&lt;/a&gt; has gone well, so only time will tell!  &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nick Bettison</dc:creator><pubDate>Fri, 13 Feb 2015 12:05:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2015-02-13:good-bye-wordpress-hello-pelican</guid><category>WordPress</category><category>Pelican</category><category>Blog</category></item><item><title>SPAM from China</title><link>https://www.linickx.com/spam-from-china</link><description>&lt;p&gt;I just wanted to let you know that I am aware that some botnet is
attempting to use my domain name for SPAM.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linickx.com/files/2014/11/humble_pie.png"&gt;&lt;img alt="humble_pie" src="https://www.linickx.com/files/2014/11/humble_pie-150x150.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;LINICKX.com (&lt;em&gt;&amp;amp; .co.uk&lt;/em&gt;) are both configured with
&lt;a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework"&gt;SPF&lt;/a&gt;,
&lt;a href="http://www.dkim.org"&gt;DKIM&lt;/a&gt; and have valid &lt;a href="http://www.dmarc.org"&gt;DMARC&lt;/a&gt;
records.&lt;/p&gt;
&lt;p&gt;As you can see from &lt;a href="https://dmarcian.com/dmarc-inspector/linickx.com"&gt;my dmarcian
report&lt;/a&gt;, I am
requesting that all SMTP/Mail servers &lt;strong&gt;reject&lt;/strong&gt; any message which has
not authenticated itself, if you are receiving mail, please update your
server to respect this.&lt;/p&gt;
&lt;p&gt;I have attempted to contact the owners of the addresses sending the
SPAM, according to &lt;a href="https://dmarcian.com"&gt;dmarcian&lt;/a&gt; they are all in
china... I even used google translate to translate the mail ;)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linickx.com/files/2014/11/spam_from_china.png"&gt;&lt;img alt="spam_from_china" src="https://www.linickx.com/files/2014/11/spam_from_china-300x209.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately the mailboxes for the abuse email addresses are bouncing
(probably full) and are rejecting mail.&lt;/p&gt;
&lt;p&gt;If you think I've missed something, and you have any advise feel free to
use &lt;a href="https://www.linickx.com/contact" title="Contact Nick Bettison"&gt;my contact
page&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Sun, 23 Nov 2014 13:07:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2014-11-23:spam-from-china</guid><category>Blog</category><category>dkim</category><category>dmarc</category><category>Spam</category><category>spf</category></item><item><title>Installing Paramiko (Python and PIP) on Windows</title><link>https://www.linickx.com/installing-paramiko-python-and-pip-on-windows</link><description>&lt;p&gt;Following the release of &lt;a href="https://github.com/linickx/crassh/"&gt;crassh&lt;/a&gt;;
the 1st FAQ was, great how do I make this work on windows?&lt;/p&gt;
&lt;p&gt;Steps as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download and install &lt;a href="http://download.microsoft.com/download/A/5/4/A54BADB6-9C3F-478D-8657-93B3FC9FE62D/vcsetup.exe"&gt;Visual Studio C++ 2008 Express
    Edition&lt;/a&gt;&lt;br /&gt;
    (&lt;em&gt;do not install SQL&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://www.python.org/download/releases/2.7.8/"&gt;Python 2.7.8 - Select the correct
    MSI&lt;/a&gt; for your
    architecture&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://bootstrap.pypa.io/get-pip.py"&gt;get-pip.py&lt;/a&gt; (&lt;em&gt;Don't
    use Internet Explorer it will mangle the file; &lt;/em&gt;&lt;em&gt;use Firefox to
    download&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Open an &lt;strong&gt;Administrator&lt;/strong&gt; command prompt and run
    "&lt;code&gt;c:\Python27\python.exe get-pip.py&lt;/code&gt;"&lt;/li&gt;
&lt;li&gt;From the same admin prompt, run
    "&lt;code&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat&lt;/code&gt;"
    (&lt;em&gt;for 32bit machines... or for 64bit machines, run
    "&lt;code&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat&lt;/code&gt;"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;From the same admin prompt, run
    "&lt;code&gt;c:\Python27\Scripts\pip install paramiko&lt;/code&gt;"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And you're done!&lt;/p&gt;
&lt;p&gt;#REF:
&lt;a href="http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat"&gt;http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Fri, 15 Aug 2014 12:25:00 +0100</pubDate><guid isPermaLink="false">tag:www.linickx.com,2014-08-15:installing-paramiko-python-and-pip-on-windows</guid><category>Blog</category><category>crassh</category><category>paramiko</category><category>python</category><category>win7</category><category>Windows</category></item><item><title>Cisco ASA - inc - regex examples</title><link>https://www.linickx.com/cisco-asa-inc-regex-examples</link><description>&lt;p&gt;I use stuff like &lt;code&gt;show run | inc abc&lt;/code&gt; all the time but I've never
really dabbled with plumbing regex through it, I played a little today.
Here's a couple of examples you might find useful:&lt;/p&gt;
&lt;p&gt;Look for either &lt;em&gt;https&lt;/em&gt; or &lt;em&gt;www&lt;/em&gt; in an access-list&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FW01/pri/act# show run access-list inside | inc (https|www) 
access-list inside extended permit tcp object inside any4 eq www 
access-list inside extended permit tcp object inside any4 eq https
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Look for either &lt;em&gt;10.10.1.91&lt;/em&gt; or &lt;em&gt;10.10.1.92&lt;/em&gt; in an access-list&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FW01/pri/act# show access-list inside | inc 10.10.1.(91|92)
  access-list inside line 8 extended permit udp host 10.10.1.91 host 10.1.2.199 eq 1001 (hitcnt=0) 0xd0cd20cd 
  access-list inside line 8 extended permit udp host 10.10.1.91 host 10.1.2.200 eq 1001 (hitcnt=0) 0xf94e6d62 
  access-list inside line 8 extended permit udp host 10.10.1.92 host 10.1.2.199 eq 1001 (hitcnt=0) 0x0bced66c 
  access-list inside line 8 extended permit udp host 10.10.1.92 host 10.1.2.200 eq 1001 (hitcnt=0) 0x9ceae405
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There's loads that can be done, &lt;a href="https://www.google.co.uk/?q=cisco+regex+example"&gt;google is your
friend&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Thu, 01 May 2014 17:28:00 +0100</pubDate><guid isPermaLink="false">tag:www.linickx.com,2014-05-01:cisco-asa-inc-regex-examples</guid><category>Blog</category><category>Cisco</category><category>regex</category></item><item><title>Using bootstrap on Cisco ISE</title><link>https://www.linickx.com/using-bootstrap-on-cisco-ise</link><description>&lt;p&gt;ISE 1.1 had horrible web portals which didn't render well on mobile
devices at all (&lt;em&gt;which was odd for a BYOD solution&lt;/em&gt;), anyway, Cisco have
&lt;u&gt;fixed that now in 1.2&lt;/u&gt; with the ability to enable a mobile
version... but what if you want something totally custom that works well
both on desktops and mobile?&lt;/p&gt;
&lt;p&gt;Enter &lt;a href="http://getbootstrap.com"&gt;bootstrap&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The trick to getting this working is know the correct paths for the
stylesheets so to make things easy &lt;strong&gt;I have created a gitgub project
called &lt;a href="https://github.com/linickx/ise-bootstrap"&gt;ise-bootstrap&lt;/a&gt;&lt;/strong&gt;. To
get started create a custom portal with the name &lt;code&gt;myportal&lt;/code&gt; and upload
&lt;a href="https://github.com/linickx/ise-bootstrap/archive/master.zip"&gt;the
files&lt;/a&gt;.
Change your authz result to point an the new file and enjoy the
responsive goodness!&lt;/p&gt;
&lt;p&gt;Here are some 1.1 screenshots of me creating the portal, the process is
pretty similar in 1.2 - I will upload some newer screenshots at some
point!&lt;/p&gt;
&lt;style type='text/css'&gt;
  #gallery-1 {
    margin: auto;
  }
  #gallery-1 .gallery-item {
    float: left;
    margin-top: 10px;
    text-align: center;
    width: 50%;
  }
  #gallery-1 img {
    border: 2px solid #cfcfcf;
  }
  #gallery-1 .gallery-caption {
    margin-left: 0;
  }
  /* see gallery_shortcode() in wp-includes/media.php */
&lt;/style&gt;

&lt;div id='gallery-1' class='gallery galleryid-3905 gallery-columns-2 gallery-size-thumbnail'&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-03-New-Cusctom-Portal.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-03-New-Cusctom-Portal.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-03-New-Cusctom-Portal-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 03 New Cusctom Portal" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-04-Tick-the-boxes-you-need.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-04-Tick-the-boxes-you-need.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-04-Tick-the-boxes-you-need-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 04 Tick the boxes you need" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;br style="clear: both" /&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-05-upload-all-the-files.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-05-upload-all-the-files.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-05-upload-all-the-files-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 05 upload all the files" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-06-map-filenames.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-06-map-filenames.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-06-map-filenames-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 06 map filenames" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;br style="clear: both" /&gt;
&lt;/div&gt;

&lt;p&gt;The only gotcha to be aware of are the
&lt;a href="http://getbootstrap.com/components/#glyphicons"&gt;Glyphicons&lt;/a&gt;, if you
want to use those then you need to customise the bootstrap download so
that it matches the name of your portal.&lt;/p&gt;
&lt;style type='text/css'&gt;
  #gallery-2 {
    margin: auto;
  }
  #gallery-2 .gallery-item {
    float: left;
    margin-top: 10px;
    text-align: center;
    width: 50%;
  }
  #gallery-2 img {
    border: 2px solid #cfcfcf;
  }
  #gallery-2 .gallery-caption {
    margin-left: 0;
  }
  /* see gallery_shortcode() in wp-includes/media.php */
&lt;/style&gt;
&lt;div id='gallery-2' class='gallery galleryid-3905 gallery-columns-2 gallery-size-thumbnail'&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-01-Defaults-Sprites-to-change.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-01-Defaults-Sprites-to-change.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-01-Defaults-Sprites-to-change-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 01 Defaults Sprites to change" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
  &lt;dt class='gallery-icon landscape'&gt;
    &lt;a onclick="javascript:pageTracker._trackPageview('/downloads/files/2013/09/ISE-1.1-02-Sprites-Path-must-match-portalname.png');"  href='https://www.linickx.com/files/2013/09/ISE-1.1-02-Sprites-Path-must-match-portalname.png' rel="lightbox[3905]"&gt;&lt;img src="https://www.linickx.com/files/2013/09/ISE-1.1-02-Sprites-Path-must-match-portalname-150x150.png" class="attachment-thumbnail" alt="ISE 1.1 02 Sprites Path must match portalname" /&gt;&lt;/a&gt;
  &lt;/dt&gt;&lt;/dl&gt;&lt;br style="clear: both" /&gt;
&lt;/div&gt;

&lt;p&gt;This is the end result...&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linickx.com/files/2013/09/ISE-1.1-07-example-login-page.png"&gt;&lt;img alt="ISE 1.1 07 example login
page" src="https://www.linickx.com/files/2013/09/ISE-1.1-07-example-login-page-300x211.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you get stuck, there is a
&lt;a href="https://github.com/linickx/ise-bootstrap/blob/master/README.md"&gt;README&lt;/a&gt;
which compliments this blog post.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Sun, 15 Sep 2013 11:55:00 +0100</pubDate><guid isPermaLink="false">tag:www.linickx.com,2013-09-15:using-bootstrap-on-cisco-ise</guid><category>Blog</category><category>Bootstrap</category><category>BYOD</category><category>Cisco</category><category>ISE</category><category>Security</category></item><item><title>Cisco.com &amp; Wget</title><link>https://www.linickx.com/cisco-com-wget</link><description>&lt;p&gt;Ever since cisco updated their website (you know like, a year ago), I've
struggled to find a way to wget software onto a box.&lt;/p&gt;
&lt;p&gt;This week, I found a bodge using &lt;strong&gt;firefox&lt;/strong&gt;. Sign into cisco.com and go
through the normal process, accepting agreements and begin the download.&lt;/p&gt;
&lt;p&gt;Once the download starts, pause it... right click and copy the download
link:&lt;/p&gt;
&lt;p&gt;[caption id="attachment_3875" align="aligncenter" width="300"]&lt;a href="https://www.linickx.com/files/2013/04/ffox-copy-link.png"&gt;&lt;img alt="Copy
link from
downloads" src="https://www.linickx.com/files/2013/04/ffox-copy-link-300x214.png" /&gt;&lt;/a&gt;
Copy link from downloads[/caption]&lt;/p&gt;
&lt;p&gt;Then from your terminal/linux box, you can paste the url into wget:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget -O ise-1.1.3.124.i386.iso "https://secure-us.esd.cisco.com/files/swc/sec/4_SDSP_59/bah/bah/ha?uid=linickxdotcom&amp;amp;key=go"
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Quick gotcha alert, the link you paste must be in speachmarks/double
quotes or the full url will not paste correctly.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Thu, 25 Apr 2013 18:20:00 +0100</pubDate><guid isPermaLink="false">tag:www.linickx.com,2013-04-25:cisco-com-wget</guid><category>Blog</category><category>Cisco</category><category>Linux</category><category>wget</category></item><item><title>Test post from iPhone</title><link>https://www.linickx.com/test-post-from-iphone</link><description>&lt;p&gt;Hello, yes I have an iPhone and yes this is a test... Move along,
nothing to see here. 😀&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nick</dc:creator><pubDate>Sun, 04 Nov 2012 18:09:00 +0000</pubDate><guid isPermaLink="false">tag:www.linickx.com,2012-11-04:test-post-from-iphone</guid><category>Blog</category><category>test</category></item></channel></rss>