<?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/"
	>

<channel>
	<title>UKFast Blog &#187; Pingu</title>
	<atom:link href="http://www.ukfastblog.co.uk/author/pingu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ukfastblog.co.uk</link>
	<description>News and views from the UK&#039;s best hosting provider</description>
	<lastBuildDate>Tue, 07 Sep 2010 16:44:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Potency of SQL Injection &#8211; A Technical Perspective</title>
		<link>http://www.ukfastblog.co.uk/2010/08/16/the-potency-of-sql-injection-a-technical-perspective/</link>
		<comments>http://www.ukfastblog.co.uk/2010/08/16/the-potency-of-sql-injection-a-technical-perspective/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 12:08:43 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=7037</guid>
		<description><![CDATA[Most web developers know that they should sanitize their web input. However recent figures from the UK Security Breach Investigations Report 2010 indicate that 40 per cent of all website attacks are due to SQL injections. SQL injection attacks allow perpetrators to leak data, usually by making a web application perform a query it wasn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_7131" class="wp-caption alignright" style="width: 310px"><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/sql-piechart.png"><img class="size-medium wp-image-7131" title="SQL Piechart" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/sql-piechart-300x168.png" alt="SQL Piechart" width="300" height="168" /></a><p class="wp-caption-text">Break down of attack types</p></div>
<p>Most web developers know that they should sanitize their web input. However recent figures from the <a href="http://www.7safe.com/breach_report/">UK Security Breach Investigations Report 2010</a> indicate that 40 per cent of all website attacks are due to <strong>SQL injections.</strong></p>
<p>SQL injection attacks allow perpetrators to leak data, usually by making a web application perform a query it wasn&#8217;t intended to do. However, what most fail to realize is under the right conditions SQL injection attacks can be much more potent than data exposure (which is a serious breach in itself). A well crafted attack has the potential to subvert your entire system where circumstances allow.</p>
<p>To begin, let&#8217;s discuss what the SQL injection attack is, and how it works.</p>
<h1>A Basic Example</h1>
<p>We shall take a PHP MySQL query and consider the problem with it.</p>
<pre class="code">mysql_query("SELECT id,username,password FROM user_table \
 WHERE username="'.$_GET['username']."');</pre>
<p>So when a user executes a query genuinely, the variable will typically be replaced and the query such, I.E:</p>
<pre class="code">mysql_query("SELECT id,username,password FROM user_table WHERE username='matthew'");</pre>
<p>The problem arises however when the data input contains characters which are meaningful in an SQL statement. Consider for example logging in with the username <em>ma&#8217;tthew</em> (note the intentional quotes in the middle of the username). When we do the variable expansion the query ends up appearing as:</p>
<pre class="code">mysql_query("SELECT id,username,password FROM user_table WHERE username='ma'tthew";</pre>
<p>When you run this, the query is invalid SQL because the entire statement is syntactically incorrect. What has happened is the attacker has altered the behaviour of the SQL statement &#8211; actually gaining control of it. This allows the attacker to <span style="text-decoration: underline;">continue</span> the statement altering to fetch data that is normally not permitted by the original statement.</p>
<p>This kind of attack is well known by web developers. Unfortunately for system administrators and web developers alike the problem doesn&#8217;t stop here. If the privileges that have been set by the system/database administrator are too lax it&#8217;s possible to reap data right off the disk and worse still, deploy arbitrary data onto the disk.</p>
<h1>The Worst Case Scenario</h1>
<div>Lets analyze the worst possible situation demonstrating this. A lax web developer has written a very simple table described below. To save time and effort he&#8217;s simply used the admin&#8217;s (root) user details in this webapp, along with all other webapps on the server.</div>
<pre class="code">﻿mysql&gt; desc data;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| info  | varchar(32) | YES  |     | Nothing |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)</pre>
<p>The webpage used is PHP written as follows:</p>
<pre class="code">&lt;?php
mysql_connect('localhost','root','xxxxxx') or die(mysql_error());
mysql_select_db('mywebapp') or die(mysql_error());

echo "&lt;table&gt;\n";
echo "&lt;tr&gt;&lt;td&gt;ID&lt;/td&gt;&lt;td&gt;Info&lt;/td&gt;&lt;/tr&gt;\n";

if (isset($_GET['search'])) {
   $r = mysql_query("SELECT * from data where info like '".$_GET['search']."'") \
      or die(mysql_error());
   echo "SELECT * from data where info like '".$_GET['search']."'";
else {
   $r = mysql_query("SELECT * from data") or die(mysql_error());
}

while ($row = mysql_fetch_array($r, MYSQL_NUM)) {
   echo "&lt;tr&gt;&lt;td&gt;$row[0]&lt;/td&gt;&lt;td&gt;$row[1]&lt;/td&gt;&lt;/tr&gt;\n";
}

echo "&lt;/table&gt;";
?&gt;

&lt;form name="test"&gt;
Search: &lt;input type=text name=search value=""&gt;&lt;br/&gt;
&lt;input type="submit"/&gt;
&lt;/form&gt;</pre>
<p>However, the developer also has also run &#8220;<em>chmod 777</em>&#8221; on a directory called &#8220;images&#8221; which is used for another part of the website. This is a common work-around used to avoid permission problems when creating files, by allowing anyone to create files.</p>
<p>The SQL injection vulnerability occurs on line 9. Because the input is not sanitized, the user can perform a fake search and take control of the SQL. The attacker, having already tried standard SQL injection techniques has seen little data of interest remains on the databases. Rather than find the other databases, the attacker wants to spawn a shell. But, can this be done from within mysql?</p>
<p>The answer is, yes of course it can. This is because the db user has the FILE privilege set that means he can read files in and write files out. The attacker needs to know where the document root is for the website. It&#8217;s not outright retrievable from SQL but it is readable in the httpd.conf.</p>
<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/sql-inject-read1.png"><img class="alignright size-medium wp-image-7153" title="sql-inject-read" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/sql-inject-read1-300x157.png" alt="" width="300" height="157" /></a>By utilizing the LOAD_FILE privilege and UNION selecting it out, the attacker can add it to the existing table to read the total contents of the file! It&#8217;s not a pretty read but thats not relevent. By exploiting the FILE privilege the attacker has obtained a means to get the sites document root.</p>
<p>Armed with this infomation, we can look at the design/layout/source code (again, with more LOAD_FILE tricks it&#8217;s possible to determine the most likely place that has a globally writable directory). For example an images/avatar folder for perhaps, joomla, if the site was written as such would be a great target. Because there is a tendency to make folders world-writable when they cannot be normally written to, the attacker can exploit this weakness to deploy a new file within the sites&#8217; document root through mysql. Normally an attacker wants to deploy PHP code into the document root because it will execute. Since it contains lots of meta-characters the attacker typically translates the actual code he wants to use into hexadecimal output. Using the INTO OUTFILE syntax in MySQL he can dump the contents of said file right into his target directory. In this example I will be using simple PHP code that generates &#8220;hello world&#8221; when the page visits.</p>
<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/mysql-inject-write1.png"><img class="alignright size-medium wp-image-7152" title="mysql-inject-write" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/mysql-inject-write1-300x157.png" alt="" width="300" height="157" /></a>The image illustrates what&#8217;s happened here. The attacker has injected his own custom string and dumped it into an outfile that&#8217;s globally writable and present in the document root of an existing website. Now all that&#8217;s left is to visit the file you wrote. The big issue with this type of attack is that it will subvert any coding you might put in place, typically in uploads, to prevent php files being written into sensitive areas on disk.</p>
<h1>In Conclusion</h1>
<p>The potency of SQL injection and commonness of not sanitizing input is a real threat to system security over and above what&#8217;s contained inside of your database. A series of failures have to be reached to get to a point like the one demonstrated above. These failures may include: not enforcing least privileges on database users, not sanitizing all input that comes from a untrusted source, lax file permissions in directories and no defensive layers in sensitive directories.</p>
<p>The trouble is, it&#8217;s incredibly simple for a web developer to overlook the sanitization of input, especially with the tight deadlines and rapid application development process that is typical. Not only this but the general consensus to use vulnerable libraries to connect to mysql make such situations common and a concern. Most people are unaware that it&#8217;s possible to convert a data leakage vulnerability into a system compromize which can mean IT managers dont give SQL injection threats the priority they deserve in the development process.</p>
<h1>Fixing the Situation</h1>
<p>There are many ways to fix SQL injection:</p>
<ul>
<li><strong>Sanitize your input!</strong></li>
<li>Use MySQLi or another modern SQL library that supports prepared (or pseudo prepared) SQL satements.</li>
<li>Use the <em>setfacl</em> command to give apache only access to directories that are meant to be writable by it.</li>
<li>Deploy .htaccess files into sensitive folders (like uploads) to whitelist what files should be accessible in the folder, so image folders should only allow access to jpg, png and gif for example.</li>
<li>Dont give FILE privileges to DB users if they dont need it.</li>
<li>Use SELinux as a last line of defense (its not possible for mysql to write to http content in SELinux).</li>
</ul>
<p>Such exploits are the result of lax security measures and poor coding and can undermine the confidence of visitors to your site. There&#8217;s <strong>no need</strong> to be victim to the most common form of web attack.</p>
<p><!-- pre.code { font-size: 100%; padding: 0.5em; border: 1px dashed #ffffff; color: Black; background-color: #363636; overflow: auto; color: #ffffff; } --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2010/08/16/the-potency-of-sql-injection-a-technical-perspective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Role Based Access Controls in Enterprise Linux 6</title>
		<link>http://www.ukfastblog.co.uk/2010/08/16/role-based-access-controls-in-enterprise-linux-6/</link>
		<comments>http://www.ukfastblog.co.uk/2010/08/16/role-based-access-controls-in-enterprise-linux-6/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 11:18:22 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SELinux]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=7012</guid>
		<description><![CDATA[I&#8217;ve been really excited about the potential of Red Hat Enterprise Linux 6 (RHEL6/CentOS6) and the beta has not let me down. Most of the more prominent features are laid out at the Redhat website but one of the things it neglects to mention is how much more access control it comes with. Role Based [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/selinux-penguin-1.jpg"><img class="alignright size-full wp-image-7051" title="SELinux Penguin" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/selinux-penguin-1.jpg" alt="SELinux Penguin" width="200" height="181" /></a>I&#8217;ve been really excited about the potential of <strong>Red Hat Enterprise Linux 6</strong> (RHEL6/CentOS6) and the beta has not let me down.</p>
<p>Most of the more prominent features are laid out at the Redhat website but one of the things it neglects to mention is how much more access control it comes with.<span id="more-7012"></span></p>
<p><strong>Role Based Access Controls</strong> (RBAC) offer a system or security administrator a means to define a role of some sort. In our example below we&#8217;ll be using a web admin role.</p>
<p>Since Fedora 9, the SELinux maintainers for Redhat have pulled out all the stops to properly deploy a framework for SELinux that is more flexible than what you see with EL5. The problem with EL5&#8242;s SELinux policy is that although it works, it really does not scratch the surface of how powerful SELinux really is. RBAC simply is not implemented. This means that delegation of trust and enforcement of a corporate security policy is difficult.</p>
<p>Normal access controls are fraught with problems of trust. To make somebody a true webadmin in traditional Linux systems requires a lot of effort:</p>
<ul>
<li>The user must be able to read/write web content.</li>
<li>The user must be able read/write configuration files.</li>
<li>The user must be able to restart web services.</li>
<li>The user must be able to alter php configuration files.</li>
<li>The user must be able to read/write home directory content (if say apache uses mod_userdir).</li>
<li>The user must be able to read/write the temporary files that the http service generates (php sessions and genuine temp files).</li>
<li>The user must be able to change permissions of web content.</li>
</ul>
<p>To manage this level of access on a traditional system would be nigh on impossible. You might be able to get a lot of it done through the use of file ACLs and sudo but it would be a nightmare to manage and make sure not to permit too much or too little access.</p>
<p>EL6 dips more than just its toe into the water of SELinux and with it comes a more flexible implementation of role based access control that is worthy of consideration.</p>
<p>Normally one needs to be able to define what the limits of the role are in order to implement it. But the SELinux policy in EL6 already comes with predefined roles, such as web admin which can be implemented without too much trouble.</p>
<h1>Demonstrating RBAC</h1>
<p>I am going to demonstrate how to do the above in a secure way which gives a system administrator the confidence to delegate trust.</p>
<p>For starters you&#8217;ll need either an Fedora 12 box or EL6 Beta. Once here we can prepare our system to do this in a few relatively simple steps.</p>
<p>Firstly, we&#8217;ll add the user onto the system as a web administrator.</p>
<pre class="code">[root@krbsrv ~]# useradd webadministrator
[root@krbsrv ~]# passwd webadministrator
Changing password for user webadministrator.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.</pre>
<p>Next, we&#8217;ll create an SELinux User and assign our UID to use it.</p>
<pre class="code">[root@krbsrv ~]# semanage user -a -R "staff_r system_r webadm_r" -L s0 -r s0 webadm_u
[root@krbsrv ~]# semanage login -a -r s0 -L s0 -s webadm_u webadministrator</pre>
<p>Line 1 creates the webadm_u SELinux user (this is distinctly different from a UNIX user account) which is mapped to roles it can be part of.</p>
<p>What we have done is assigned it to the staff, system and webadm roles. &#8216;Staff&#8217; is a restricted account which can su and sudo which is what we&#8217;re going to need to permit, the system role is used here because its needed to run init scripts (to start/stop httpd), and finally our webadm role is the actual primary role of this user. It&#8217;s not possible to map the webadm role directly and only to this user because webadm_r doesnt actually have enough privileges to get it to login via SSH. So instead we use the loginable staff role and transition to the webadm role when we want to do work. The -l and -r  are sensitivities. This isnt used in SELinux but its mandatory to pass something to it.</p>
<p>Line 2 maps the actual UNIX user webadministrator to the SELinux user webadm_u, so when the user logs in this will be their identifiable user.</p>
<p>Now we have done this theres still a few more steps left yet.</p>
<p>We have listed 3 roles the SELinux user webadm_u can transition into. But, how do we know which one to transition into by default? Well &#8211; the answer to this is the folder: <em>/etc/selinux/targeted/contexts/users</em>. This folder contains a list of SELinux users you already have. If you open the file <em>staff_u</em> file you&#8217;ll see something like this:</p>
<pre class="code">system_r:local_login_t:s0	staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
system_r:remote_login_t:s0	staff_r:staff_t:s0
system_r:sshd_t:s0		staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
system_r:crond_t:s0		staff_r:staff_t:s0
system_r:xdm_t:s0		staff_r:staff_t:s0
staff_r:staff_su_t:s0		staff_r:staff_t:s0
staff_r:staff_sudo_t:s0		staff_r:staff_t:s0
system_r:initrc_su_t:s0		staff_r:staff_t:s0
staff_r:staff_t:s0		staff_r:staff_t:s0
sysadm_r:sysadm_su_t:s0		sysadm_r:sysadm_t:s0
sysadm_r:sysadm_sudo_t:s0	sysadm_r:sysadm_t:s0</pre>
<p>This file is a two columned list of which role/types to map to users depending on how they enter the system. So for example the type &#8220;local_login_t&#8221; represents accessing from a console directly whereas the type &#8220;sshd_t&#8221; represents logging in via SSH. To the right of these entries is a left-to-right priority list of what contexts the staff_u user ends up getting when they login. Its not important to know all about how this works. All we really need to do is copy this file and name it webadm_u in the same directory.</p>
<pre class="code">[root@krbsrv ~]# cp /etc/selinux/targeted/contexts/users/staff_u \
/etc/selinux/targeted/contexts/user/webadm_u</pre>
<p>OK so now we have initialized our webadm_u user for logging in. But theres one final task..</p>
<p>The UNIX user webadministrator cant do some of the things it needs to to properly function &#8211; such as restart the httpd service or change file ownerships/permissions when necessary. To do this webadm must become root. Becoming root means nothing to SELinux. It will enforce its policy all the same, so even as root webadministrator is restricted purely to the role that is needed. Thus we can safely do this without compromizing our system. We use sudo to do this which takes special tags we use to transition to our webadm role automatically so the user doesnt need to worry about the selinux particulars:</p>
<pre class="code">[root@krbsrv ~]# echo 'web_admin ALL=(ALL) TYPE=webadm_t ROLE=webadm_r ALL' &gt;&gt; /etc/sudoers</pre>
<p>This means that when the webadministrator runs sudo it will automatically transition into the webadm_t type and webadm_r role.</p>
<p>Great, now we&#8217;ve fixed up our user lets test him out!</p>
<pre class="code">[root@krbsrv ~]# ssh webadministrator@192.168.122.73
webadministrator@192.168.122.73's password:
Last login: Wed Aug 11 22:55:45 2010 from 192.168.122.1

[webadministrator@krbsrv ~]$ id -Z
webadm_u:staff_r:staff_t:s0

[webadministrator@krbsrv ~]$ sudo -s
[root@krbsrv ~]# id -Z
webadm_u:webadm_r:webadm_t:s0</pre>
<p>So, we login via SSH as per the norm. When we login we check our ID (getting SELinux context). You can see we have logged in with webadm_u as the user but staff_r as the role and staff_t as the type. We can&#8217;t do much to our web content in this role and we&#8217;re also not root. When we sudo what happens is sudo auto-transitions the user into the webadm_r role and webadm_t type &#8211; just what the doctor ordered.</p>
<p>This role runs a very restricted set of actions it can take. Lets see what we can do&#8230;</p>
<p><strong>We should be able to change the apache configuration and restart the service:</strong></p>
<pre class="code">[root@krbsrv ~]# echo "# Add a comment to this file" &gt;&gt; /etc/httpd/conf/httpd.conf
[root@krbsrv ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
<p><strong>However we can&#8217;t restart other services:</strong></p>
<pre class="code">[root@krbsrv ~]# /etc/init.d/sshd restart
bash: /etc/init.d/sshd: Permission denied</pre>
<p><strong>We can read, create and modify files in the document root:</strong></p>
<pre class="code">[root@krbsrv ~]# cd /var/www/html
[root@krbsrv html]# touch new_file.txt
[root@krbsrv html]# rm new_file.txt</pre>
<p><strong>However we can&#8217;t modified files outside this:</strong></p>
<pre class="code">[root@krbsrv ~]# echo "Port 20000" &gt;&gt; /etc/ssh/sshd_config
bash: /etc/ssh/sshd_config: Permission denied
[root@krbsrv ~]# cat /etc/shadow
cat: /etc/shadow: Permission denied</pre>
<p><strong>Looks good!</strong></p>
<p>So, here we are. As you can see, in the webadm role we can restart httpd (which webadministrator needs to do), write to our configuration files and alter our webcontent. However we can&#8217;t change anything outside of our remit or attempt to perform anything nefarious &#8211; all despite the fact we are root!</p>
<h1>In Conclusion..</h1>
<p>Practically speaking, the SELinux policy that comes with EL6 is meant to be a framework, not <em>really </em>a turn-key solution to just fit in with your current system. mAs such webadm as a role itself needs tweaking.</p>
<p>For starters, in the webadm role you can&#8217;t read your own home directory which is a little impractical. But also you can&#8217;t manage the <em>php.ini</em> or any session files created within <em>php.ini</em>. Therefore I&#8217;ve tweaked the policy and added the ability for webadm to be able to test websites from within the role, resolve DNS name entries and also allow SSL certificates to be written in the appropriate places. I decided not to permit webadministrator to be able to use FTP to download files directory in the webadm role. If he wants to do this however he can use the non-root login (using the staff role) to download to his home directory and then copy it accross in the webadm role afterwards. I have supplied the policy I wrote as an idea of how you would do this (download here: <a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/08/mywebadm.zip">mywebadm</a>).</p>
<p>It should be worth nothing that nearly every SELinux policy needs fine-tuning to suit your needs. One size definitely does not fit all. SELinux policy however gives you the specific tools you need to build a working, guaranteed access policy meaning you can delegate system administrator work without giving away root privileges and assign the specialists in their fields the power they need to do their work and no more.</p>
<p>I&#8217;m a bit of a fan of what SELinux is and does and I thought it was a shame that Redhat failed to mention the amount of effort and progress gone into the policy EL6 ships with. In the real world managing security threats outside and <strong>inside</strong> your network is a high priority. EL6 finally gives Linux the power to do this.</p>
<p>At least control groups gets a mention. But thats a story for another time&#8230;</p>
<p><!-- pre.code { font-size: 100%; padding: 0.5em; border: 1px dashed #ffffff; color: Black; background-color: #363636; overflow: auto; color: #ffffff; } --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2010/08/16/role-based-access-controls-in-enterprise-linux-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Measuring Driver Performance in Perf</title>
		<link>http://www.ukfastblog.co.uk/2010/08/09/linux-2-6-35-and-smp-support-for-incoming-network-load/</link>
		<comments>http://www.ukfastblog.co.uk/2010/08/09/linux-2-6-35-and-smp-support-for-incoming-network-load/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 10:09:27 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[8139]]></category>
		<category><![CDATA[mii]]></category>
		<category><![CDATA[mpstat]]></category>
		<category><![CDATA[perf]]></category>
		<category><![CDATA[resource management]]></category>
		<category><![CDATA[virt]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=6905</guid>
		<description><![CDATA[A couple of weeks ago the Linux Kernel 2.6.35 was officially released. For me, this release hasn&#8217;t been as exciting as say, 2.6.30 but one thing that whet my appetite was the support for distributed incoming network load. But what&#8217;s the fuss all about? Here I demonstrate how spreading incoming network I/O over multiple CPUs [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago the Linux Kernel <a href="http://kernelnewbies.org/Linux_2_6_35#head-94daf753b96280181e79a71ca4bb7f7a423e302a" target="_blank">2.6.35</a> was officially released. For me, this release hasn&#8217;t been as exciting as say, <a href="http://kernelnewbies.org/Linux_2_6_30">2.6.30</a> but one thing that whet my appetite was the support for distributed incoming network load. But what&#8217;s the fuss all about? Here I demonstrate how spreading incoming network I/O over multiple CPUs (especially since multicore is the norm these days) will help speed up these boards.</p>
<p>First, a little background. Many of the consumer grade motherboards on the market use low-end NICs which under high network load can incur a substantial cost compared to enterprise grade NICs. This is because of shortcuts that have been used for getting the device onto the market.</p>
<p>With this in mind, lets take a closer look at what impact a bad NIC can have on Linux compared to one that has been properly optimized.</p>
<h1>The Test Setup</h1>
<p>Our test machine is a virtual machine running with QEMU + KVM. Configured on the VM are two network devices, an emulated <em>rt8139 </em>chipset device (eth1) and the newer, and hopefully more efficient <em>virt-io </em>paravirtualized network device (eth0).</p>
<pre class="code">ip address show
[...]
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 52:54:00:73:67:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.73/24 brd 192.168.122.255 scope global eth0
inet6 fe80::5054:ff:fe73:6773/64 scope link
valid_lft forever preferred_lft forever

3: eth1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:73:67:74 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.177/24 brd 192.168.122.255 scope global eth1
inet6 fe80::5054:ff:fe73:6774/64 scope link
valid_lft forever preferred_lft forever
[...]</pre>
<p>And just to be thorough, the kernel modules we&#8217;re running:</p>
<pre class="code">lsmod | egrep '^(8139|virtio_net)'
8139too                27638  0
8139cp                 19191  0
virtio_net             14013  0</pre>
<h1>The Benchmarking</h1>
<p>To start we&#8217;ll take down the <em>virt-io </em>device and see what kind of performance we are able to obtain from the <em>8139</em> device when we give it some work to do:</p>
<pre class="code">ip link set dev eth0 down</pre>
<p>To benchmark this properly requires the use of a system profiler and we have two options; <a href="http://oprofile.sourceforge.net">Oprofile</a> and <a href="https://perf.wiki.kernel.org/">Perf</a>.</p>
<p><em>Perf</em> is typically the one you should choose on newer kernels, and since test server is running Fedora 12 we&#8217;ll be using this as our profiler.</p>
<p>The way that profiling works is through special hardware performance counter registers on the CPUs which are utilized to obtain our statistics with very little overhead and thus causing lesser fudging of our benchmark.</p>
<p>The test file we&#8217;ll be downloading is a file of random data using <em>wget</em> on the hypervisor itself. The idea here is that we attempt to max our throughput by selecting a file on a neighbouring machine where as little network interference could effect our results. <em>Perf </em>will record the data which we can analyze:</p>
<pre class="code">perf record -af wget http://192.168.122.1/stuff/bigfile.img
--2010-08-09 14:08:22--  http://192.168.122.1/stuff/bigfile.img
Connecting to 192.168.122.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 419419444 (400M) [application/octet-stream]
Saving to: "bigfile.img.1"

100%[===================================================&gt;] 419,419,444 21.0M/s   in 14s

2010-08-09 14:08:37 (27.9 MB/s) - "bigfile.img.1"

[ perf record: Woken up 15 times to write data ]
[ perf record: Captured and wrote 2.413 MB perf.data (~105447 samples) ]</pre>
<p>What we have done here is got the profiler to monitor the entire system at the same time running the &#8216;<em>wget</em>&#8216; command. This has given us reference samples. The percentages that the report creates are relative to the total load the system produced, thus to get the overall load on the system at the same time we have ran <em>mpstat </em>to collate overall system load. These results are listed below:</p>
<pre class="code">02:17:35 PM  CPU      %usr   %nice    %sys...
02:17:36 PM  all      0.00    0.00    0.00...
02:17:37 PM  all      2.00    0.00    8.00...
02:17:38 PM  all      0.00    0.00   17.44...
02:17:39 PM  all      1.01    0.00   18.18...
02:17:40 PM  all      0.00    0.00   12.12...
02:17:41 PM  all      1.01    0.00    9.09...
02:17:42 PM  all      0.00    0.00    4.08...
02:17:43 PM  all      1.00    0.00   11.00...
02:17:44 PM  all      0.00    0.00   16.83...
02:17:45 PM  all      0.00    0.00    2.02...
02:17:46 PM  all      0.94    0.00    5.66...
02:17:47 PM  all      0.00    0.00    5.56...
02:17:48 PM  all      0.00    0.00    2.11...
02:17:49 PM  all      0.98    0.00   16.67...
02:17:50 PM  all      0.00    0.00    9.20...
02:17:51 PM  all      0.99    0.00    7.92...
02:17:52 PM  all      0.00    0.00    2.08...</pre>
<p>You can see here during the run system cpu load ramped up to about 13% whilst the download took place.</p>
<p>The results for our <em>perf </em>and our <em>8139 </em>module grepped out are thus listed. They give us more insight as to what is going on:</p>
<pre class="code">perf report | grep 8139
7.15%          swapper  [kernel] [k] cp_start_xmit        [8139cp]
4.72%          swapper  [kernel] [k] cp_interrupt [8139cp]
3.88%             wget  [kernel] [k] cp_rx_poll   [8139cp]
3.23%             wget  [kernel] [k] cp_start_xmit        [8139cp]
1.73%             wget  [kernel] [k] cp_interrupt [8139cp]
0.92%          swapper  [kernel] [k] cp_rx_poll   [8139cp]
0.17%      flush-253:0  [kernel] [k] cp_start_xmit        [8139cp]
0.12%      flush-253:0  [kernel] [k] cp_interrupt [8139cp]
0.03%             sshd  [kernel] [k] cp_start_xmit        [8139cp]
0.03%          swapper  [kernel] [k] dma_unmap_single_attrs.clone.2       [8139cp]
0.02%      flush-253:0  [kernel] [k] cp_rx_poll   [8139cp]
0.02%          swapper  [kernel] [k] dma_map_single_attrs.clone.1 [8139cp]
0.02%             sshd  [kernel] [k] cp_interrupt [8139cp]
0.01%             wget  [kernel] [k] dma_unmap_single_attrs.clone.2       [8139cp]
0.01%            ata/0  [kernel] [k] cp_start_xmit        [8139cp]
0.01%            ata/0  [kernel] [k] cp_interrupt [8139cp]
0.01%             sshd  [kernel] [k] cp_rx_poll   [8139cp]
0.01%             wget  [kernel] [k] dma_map_single_attrs.clone.1 [8139cp]
0.01%          kswapd0  [kernel] [k] cp_interrupt [8139cp]
0.01%  hald-addon-stor  [kernel] [k] cp_interrupt [8139cp]
0.01%          swapper  [kernel] [k] netif_wake_queue     [8139cp]
0.01%  hald-addon-stor  [kernel] [k] cp_start_xmit        [8139cp]
0.01%        scsi_eh_0  [kernel] [k] cp_start_xmit        [8139cp]
0.01%                X  [kernel] [k] cp_start_xmit        [8139cp]</pre>
<p>Of the total load on the system, the 8139 driver used about 20% of the entire load. If we take our 15% system usage from before and take 20% from it this indicates that about 3% of the cpu was used handling the network traffic.</p>
<p>Lets take a look at <em>virt-io</em>. We&#8217;ll enable it and run the same test.</p>
<pre class="code">perf record -af wget http://192.168.122.1/stuff/bigfile.img
--2010-08-09 14:25:35--  http://192.168.122.1/stuff/bigfile.img
Connecting to 192.168.122.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 419419444 (400M) [application/octet-stream]
Saving to: "bigfile.img.7"

100%[================================================&gt;] 419,419,444 59.1M/s   in 6.0s

2010-08-09 14:25:41 (66.6 MB/s) - "bigfile.img.7"</pre>
<p>Interesting,  this ran actually took half the time.</p>
<pre class="code">02:25:34 PM  CPU    %usr   %nice    %sys[...]
02:25:35 PM  all    4.00    0.00   23.00
02:25:36 PM  all    2.67    0.00   52.00
02:25:37 PM  all    1.23    0.00   33.33
02:25:38 PM  all    1.00    0.00   17.00
02:25:39 PM  all    0.00    0.00    2.00
02:25:40 PM  all    3.03    0.00   36.36
02:25:41 PM  all    0.00    0.00    6.93
02:25:42 PM  all    0.00    0.00    1.01</pre>
<p>So, system load was much higher this run using virt-io. Lets check our perf results:</p>
<pre class="code">0.18%          swapper  [kernel] [k] virtnet_poll      [virtio_net]
0.08%             wget  [kernel] [k] virtnet_poll      [virtio_net]
0.04%          swapper  [kernel] [k] try_fill_recv     [virtio_net]
0.03%      flush-253:0  [kernel] [k] virtnet_poll      [virtio_net]
0.01%          swapper  [kernel] [k] start_xmit        [virtio_net]
0.01%          kswapd0  [kernel] [k] virtnet_poll      [virtio_net]
0.01%             wget  [kernel] [k] xmit_skb  [virtio_net]
0.01%             wget  [kernel] [k] start_xmit        [virtio_net]
0.01%             wget  [kernel] [k] try_fill_recv     [virtio_net]
0.00%          swapper  [kernel] [k] xmit_skb  [virtio_net]
0.00%          swapper  [kernel] [k] free_old_xmit_skbs        [virtio_net]
0.00%          kswapd0  [kernel] [k] free_old_xmit_skbs        [virtio_net]
0.00%      flush-253:0  [kernel] [k] free_old_xmit_skbs        [virtio_net]
0.00%      flush-253:0  [kernel] [k] start_xmit        [virtio_net]
0.00%      flush-253:0  [kernel] [k] try_fill_recv     [virtio_net]</pre>
<p>Well, this is much better. virt-io uses about 1% of the average 25% system usage for the task, thats 0.25% of the total CPU, about 12 times more efficient!</p>
<p>So, what does this show us?</p>
<p>Well, this test would be a no-contest race anyway because on a VM like this <em>8139 </em>is not paravirtualized whereas <em>virt-io </em>is. Virt-IO was bound to win.</p>
<p>But what this does demonstrate is the difference in driver implementations can broadly affect the CPU. On consumer systems especially cheap NICs reduce performance over the long term by perhaps 3-4% of the CPU. This might not seem like a lot now, but when we delve into the realms of 10G ethernet, this will start to show on more modern CPUs. Having multiple CPUs handling incoming traffic will spread this load out leaving your system free to handle other tasks &#8211; or at least not block so much which could lead to increased throughput.</p>
<h1>Conclusion</h1>
<p>This change, ultimately, will make Linux CPUs perform better in very high speed networks. With the enterprise trend beginning to move to high speed SANS using ISCSI, and perhaps further in the future Fibre Channel over Ethernet, it becomes important for system adminstrators to know where their overheads are. 10G NICs in these environments will really benefit from multi-core CPUs which by the time 10G becomes the norm, most people should be using.</p>
<p>As a system administrator myself, I have a keen interest in resource accounting. Measuring efficiency is important in our business and improving it without having to do much effort on my own behalf I will always welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2010/08/09/linux-2-6-35-and-smp-support-for-incoming-network-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Unnoticed Internet Milestone</title>
		<link>http://www.ukfastblog.co.uk/2010/03/24/the-unnoticed-internet-milestone/</link>
		<comments>http://www.ukfastblog.co.uk/2010/03/24/the-unnoticed-internet-milestone/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 14:40:10 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=6480</guid>
		<description><![CDATA[Last month a significant milestone was achieved, but it would have passed by most people unnoticed. The Apache HTTP Server announced its 15th anniversary. Anyone worth their salt in the world of technology has used Apache, and every single internet user will have been visited sites powered by it. The press release reinforces all of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/03/apache.gif"><img class="alignright size-full wp-image-6482" title="Apache Logo" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/03/apache.gif" alt="Apache Logo" width="350" height="185" /></a>Last month a significant milestone was achieved, but it would have passed by most people unnoticed. The Apache HTTP Server announced its 15th anniversary.<span id="more-6480"></span></p>
<p>Anyone worth their salt in the world of technology has used Apache, and every single internet user will have been visited sites powered by it.</p>
<p>The <a href="http://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces2" target="_blank">press release</a> reinforces all of the achievements of the project during the last decade and a half. But one of the introductory paragraphs sums it up nicely:</p>
<blockquote><p>A triumph for the all-volunteer Foundation, the Apache HTTP Server reliably delivers petabytes of data across the world’s most demanding uses, including real-time news sources, Fortune 100 enterprise portals, cloud computing clusters, financial services platforms, mission-critical military intelligence applications, aerospace communications networks, and more. The server software can be downloaded, modified and installed by anyone free of charge.</p></blockquote>
<p>Well done to the Apache Foundation, and all the developers who have contributed to the HTTP Server project over the years, and made it the most popular webserver on the planet!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2010/03/24/the-unnoticed-internet-milestone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.4 (Lucid Lynx) Beta 1 released</title>
		<link>http://www.ukfastblog.co.uk/2010/03/24/ubuntu-10-4-lucid-lynx-beta-1-released/</link>
		<comments>http://www.ukfastblog.co.uk/2010/03/24/ubuntu-10-4-lucid-lynx-beta-1-released/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 13:01:48 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Lucid Lynx]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=6449</guid>
		<description><![CDATA[This week provides a little extra excitement in the world of Linux. The newest version of Ubuntu (10.4) has been released for testing! Usual warning: this is a testing beta release, so don&#8217;t rely on it just yet! Firstly, one intersting point that people don&#8217;t realize &#8211; the Ubuntu version numbers are simply a reflection [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2010/03/ubuntu1.png"><img class="alignright size-thumbnail wp-image-6457" title="Ubuntu Logo" src="http://www.ukfastblog.co.uk/wp-content/uploads/2010/03/ubuntu1-150x150.png" alt="" width="150" height="150" /></a>This week provides a little extra excitement in the world of Linux. The newest version of Ubuntu (10.4) has been released for testing!<span id="more-6449"></span></p>
<p><strong>Usual warning:</strong> this is a testing beta release, so don&#8217;t rely on it just yet!</p>
<p>Firstly, one intersting point that people don&#8217;t realize &#8211; the Ubuntu version numbers are simply a reflection of the date they were released. Therefore this version, 10.4, will be released April 2010. This is key part of Ubuntu&#8217;s organization &#8211; that the release cycle is planned in advance, so everyone know what to expect.</p>
<p>The significance of this particular realase is that this is a <strong>LTS version</strong>, Ubuntu&#8217;s &#8220;Long Term Support&#8221; version, which are only released every two years. These special versions are supported for an extended period, three years on the Desktop version and five years on the Server version.</p>
<p>The result of this is that as a server admin you can install the LTS version, and be assured that security and bug fixes will continue to be supplied for the next five years. This means you can avoid having to upgrade your operating system every couple of months just to stay secure, like you do for other distributions.</p>
<p>The actually <a href="http://lwn.net/Articles/379709/" target="_blank">release notes</a> are pretty long and detailed, however I&#8217;ve extract some of the keys changes over the last few months:</p>
<blockquote><p>Ubuntu 10.04 LTS Desktop and Netbook Editions continue the trend of ever-faster boot speeds, with improved startup times and a streamlined, smoother boot experience.</p>
<p>Ubuntu 10.04 LTS brings many improvements over Ubuntu 8.04 LTS to keep your servers safe and secure for the next five years, including AppArmor profiles for many key services, kernel hardening, and an easy-to-configure firewall.</p></blockquote>
<p>And for those who like version numbers (as all Linux geeks should!), here&#8217;s some key details to oggle over:</p>
<p><strong>On the Desktop:</strong> GNOME 2.30, KDE SC 4.4, XFCE 4.6.1, OpenOffice.org 3.2.0, X.Org server 1.7.5</p>
<p><strong>On the Server:</strong> Apache 2.2, PostgreSQL 8.4, PHP 5.3.1, LTSP 5.2</p>
<p><strong>Under the hood:</strong> GCC 4.4.3, eglibc 2.11, Linux 2.6.32.9, Python 2.6.5</p>
<p>Of course all the information is publically avaliable, and worth a read over here on the <a href="http://www.ubuntu.com/testing/lucid/beta1" target="_blank">beta release site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2010/03/24/ubuntu-10-4-lucid-lynx-beta-1-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>beauty in numbers</title>
		<link>http://www.ukfastblog.co.uk/2009/10/19/beauty-in-numbers/</link>
		<comments>http://www.ukfastblog.co.uk/2009/10/19/beauty-in-numbers/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 14:22:55 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=6119</guid>
		<description><![CDATA[Every day I deal with tens of critically important servers. Database servers, web servers, mail servers &#8211; pretty much any machine used in a live setup is important, which makes checking the health of the server critical too. Every decent application produces logs, but turning these logs into something that you actually want to check [...]]]></description>
			<content:encoded><![CDATA[<p>Every day I deal with tens of critically important servers. Database servers, web servers, mail servers &#8211; pretty much any machine used in a live setup is important, which makes checking the health of the server critical too. Every decent application produces logs, but turning these logs into something that you actually want to check daily is the key to making sure you know the most about your servers.</p>
<p>I want to give you two examples taken from live severs to demonstrate the usefulness for monitoring servers, and in particular graphing their stats to show problems and illustrate long term trends which may need addressing in future.</p>
<h2>short term graphing</h2>
<p>If you&#8217;re processing hundreds of thousands of emails a day it&#8217;s hard, if not impossible to spot trends in your activity. If one day you send 12,000 messages instead of 8,000 how can you easily notice, and more importantly if it&#8217;s extraordinary?</p>
<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/mail_graph1.jpg"><img class="aligncenter size-full wp-image-6122" title="mail_graph" src="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/mail_graph1.jpg" alt="mail_graph" width="603" height="298" /></a></p>
<p>Firstly doesn&#8217;t that look pretty? OK, maybe in quite a geeky way, but it shows you some important things which lets you make some presumptions.</p>
<ul>
<li>Most legitimate emails are sent and received during working hours Monday to Friday.</li>
<li>At the weekend a lot less legitimate emails are sent and received.</li>
<li>The background level of rejecting illegitimate email doesn&#8217;t adhere to a weekly cycle.</li>
</ul>
<p>On the whole the mail service seem pretty health, and shows a steady weekly pattern. It&#8217;s worth pointing out this server isn&#8217;t under huge load so the numbers aren&#8217;t massive. However it demonstrates the point well.</p>
<h2>longer term graphing</h2>
<p>Now for a  graphs which shows how various serious extraordinary activities can be easily identified in a longer time period. Take a plot from another server over the last year, this time of its load average.</p>
<p><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/load-captions.jpg"><img class="aligncenter size-full wp-image-6126" title="load-captions" src="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/load-captions.jpg" alt="load-captions" width="603" height="228" /></a></p>
<p>Again, a pretty looking graph, with three key events:</p>
<ul>
<li>A complete gap in the graph in November.</li>
<li>A unique spike in load in March.</li>
<li>A drop in average load from the start of August.</li>
</ul>
<p>Let&#8217;s address these points in order. The gap in graphing could represent the server going down (a power outage, hardware failure etc). Now in reality it is actually due to the graphing system itself being upgraded, but for this article let&#8217;s call it an outage to demonstrate what it would like look if it really had happened. We can see after the outage the machine returned to around normal (for that period) load.</p>
<p>The second point, the massive spike in load was due to a DDOS attack against one of the hosted websites. It didn&#8217;t bring the server down (due to well configured apache, and quick action by the administrators) but it made the server work a lot harder than for the rest of the entire year. The results of this attack made us look at the general load levels of the server, and with a little more tweaking after the attack you can see the load average was leveled out to a more even average.</p>
<p>Four months later, and after trying to reduce the average load and memory usage further we decided to update the RAM in the server. The use of other graphs (not shown here) indicated that swap usage was increasing, as a physical memory upgrade was on the books. The results of this upgrade (which took so little time that you can&#8217;t see it on the graph) has dropped the average load to a fraction of the amount.</p>
<h2>in summary</h2>
<p>Graphing your stats provides a long term record of health and performance, and gives an interesting interactive method of keeping track of your servers. I certainly wouldn&#8217;t pore over pages of numbers to check the server daily, but instead I can at a glance see things are normal. For those wanting to try it themselves, I would recommend the powerful (bit a little complex) <a href="http://www.cacti.net/" target="_blank">Cacti</a> graphing suite, which is based on SNMP and rrdtool. There are simpler systems such as <a href="http://munin.projects.linpro.no/" target="_blank">Munin</a> too, but all run on LAMP systems well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/10/19/beauty-in-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 weeks until Karmic Koala (aka Ubuntu Server 9.10)</title>
		<link>http://www.ukfastblog.co.uk/2009/10/13/2-weeks-until-karmic-koala-aka-ubuntu-server-9-10/</link>
		<comments>http://www.ukfastblog.co.uk/2009/10/13/2-weeks-until-karmic-koala-aka-ubuntu-server-9-10/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 13:58:15 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=6089</guid>
		<description><![CDATA[It&#8217;s been planned for months, the changes are all documented and even the next in line is already being worked on. None the less the excitement around the upcoming Ubuntu release is mounting! The new version of Ubuntu brings the usual bug fixes and package updates, but also lots of new software. This release includes [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been planned for months, the changes are all documented and even the next in line is already being worked on.  None the less the excitement around the upcoming Ubuntu release is mounting!</p>
<p>The new version of Ubuntu brings the usual bug fixes and package updates, but also lots of new software. This release includes more support for virtualization technology, both natively on Ubuntu servers themselves and via third parties services like Amazon. It now offers an entire enterprise grade platform for running virtual servers, all for free.</p>
<p>All the information about Ubuntu releases are <a href="https://wiki.ubuntu.com/KarmicReleaseSchedule" target="_blank">publicly available</a> long in advance. There are no surprises when the final version is ready for download. No excuse for developers to claim unexpected changes have broken the website &#8211; new features and bug fixes are addressed and added to the public development version of Ubuntu daily. You can download and install any development branch, which can give you a feel of an upcoming version in advance of it&#8217;s official <em>stable</em> release. Users can give their feedback and criticism to the developers and then submit their own fixes to problems, just like all well maintained Open Source projects.</p>
<p>It&#8217;s worth pointing out that Karmic is a standard 18 month support release, running through to April 2011, after which users will be expected to have moved onto a newer version in order to be kept secure and stable. But don&#8217;t worry! Ubuntu&#8217;s next <em>Long Term Support</em> (LTS) edition is due in April 2010, and will keep servers secure through to 2015.</p>
<div id="attachment_6096" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/koala-timeline-1024x478.jpg"><img class="size-medium wp-image-6096" title="koala-timeline-1024x478" src="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/koala-timeline-1024x478-300x140.jpg" alt="Ubuntu Timeline" width="300" height="140" /></a><p class="wp-caption-text">Ubuntu Timeline</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/10/13/2-weeks-until-karmic-koala-aka-ubuntu-server-9-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>celebration of an Open Source gem</title>
		<link>http://www.ukfastblog.co.uk/2009/10/06/celebration-of-an-open-source-gem/</link>
		<comments>http://www.ukfastblog.co.uk/2009/10/06/celebration-of-an-open-source-gem/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 11:32:32 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=5999</guid>
		<description><![CDATA[Barely a few days ago the most recent version of one of the widest used security applications on the internet was released &#8211; OpenSSH 5.3. This little application has now reached it&#8217;s 10th birthday, and provides a set of tools which every system administrator who&#8217;s worth their salt uses daily. For the uninitiated (catch up [...]]]></description>
			<content:encoded><![CDATA[<p>Barely a few days ago the most recent version of one of the widest used security applications on the internet was released &#8211; <a href="http://www.openssh.com/" target="_blank">OpenSSH 5.3</a>. This little application has now reached it&#8217;s 10th birthday, and provides a set of tools which every system administrator who&#8217;s worth their salt uses daily.</p>
<p>For the uninitiated (catch up Windows!), SSH gives you an encrypted connection to your server wherever on the internet it is. OpenSSH has evolved greatly from what a lot of people perceive to be a secure version of telnet, but the modern truth is far from it. The feature list of OpenSSH is very impressive, and it not only allows seemless secure command line, it can handle dynamic SOCKS proxying for impromptu VPNs, public-key logins for password-less access, along with port fowarding and file transfers. Using the highly flexible X display system it can even forward graphical displays to remote machines as if they were on our own PC. These are all techniques which someone who wants the most from their system should learn to use.</p>
<p>OpenSSH has evolved from an extra layer of security into a whole suite of networking tools &#8211; all of which just happen to be fully encrypted and secure to use across public internet connections at the same time! It has also been ported to a whole raft of platforms (Windows, Solaris, HP, etc) and so taken a place right at the heart of the internet.</p>
<p>All this is a testament to the power of Open Source software, and demonstrates how a transparent and public security policy when developing software leads to very great things.</p>
<p style="text-align: center;"><img class="alignleft" title="openssh" src="http://www.ukfastblog.co.uk/wp-content/uploads/2009/10/openssh2.png" alt="openssh" width="194" height="191" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/10/06/celebration-of-an-open-source-gem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>open source &#8211; a sign of things to come?</title>
		<link>http://www.ukfastblog.co.uk/2009/08/24/open-source-%e2%80%93-a-sign-of-things-to-come/</link>
		<comments>http://www.ukfastblog.co.uk/2009/08/24/open-source-%e2%80%93-a-sign-of-things-to-come/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 10:33:01 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[UKFast]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[pingu]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=5974</guid>
		<description><![CDATA[Traditionally, change is brought about by ideas, contributions, team work and communities. This is no less so in IT. Just a few years ago software and applications were seen as magical entities and few people understood how they worked. This lack of understanding inevitably led to problems like users being locked into applications that vendors [...]]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p>Traditionally, change is brought about by ideas, contributions, team work and communities. This is no less so in IT.</p>
<p>Just a few years ago software and applications were seen as magical entities and few people understood how they worked. This lack of understanding inevitably led to problems like users being locked into applications that vendors no longer promoted, even while they continued to collect support fees.</p>
<p>But now, as our lives plunge into the digital, people are more understanding of how applications work and in turn more able and willing to contribute to the science of IT. Today online organisations and businesses have a vision of how they want things to work, they want more flexibility online and are willing to fund the building of bespoke software.</p>
<p>UKFast puts 25 per cent of all resources into its R&amp;D department to develop software and applications. Most of our systems are written in-house by the UKFast R&amp;D community, to the exact specifications that our business needs.</p>
<p>Community is how Linux has developed over the years and with Google opening its speeding the web applications to the scrutiny of programmers we see a level of outsider contribution here too.</p>
<p>Facebook and other social networking sites have allowed third parties to create add-on applications which contribute to the level of customer enjoyment. But what about those companies that charge us for licence fees and bar us from personal modifications – well even they’re on the turn, it seems.</p>
<p>Microsoft has over the past year, <a title="Microsoft donates code " href="http://news.idg.no/cw/art.cfm?id=3E8FFC06-1A64-6A71-CEB8414EFC373373" target="_self">donated code to PHP</a>, offered support to the Apache Foundation, and it made its first code submission to the Linux kernel just last month.</p>
<p>There have also been suggestions of more schools and workplaces adopting open source in their organisations to cut license costs. It’s long been part of the battle that the world’s kids are introduced to Microsoft at a young and pliable age – so many don’t even know there is an alternative.</p>
<p>So maybe the future is different. Will we see IT lessons shift from creating a PowerPoint presentation to building the programme itself? I certainly hope so!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/08/24/open-source-%e2%80%93-a-sign-of-things-to-come/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wine &#8211; the Linux drink of choice</title>
		<link>http://www.ukfastblog.co.uk/2009/02/22/wine-the-linux-drink-of-choice/</link>
		<comments>http://www.ukfastblog.co.uk/2009/02/22/wine-the-linux-drink-of-choice/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 20:09:35 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[Wine]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=3255</guid>
		<description><![CDATA[So, as my ongoing quest to expand the Linux user base continues, I want to mention the middle ground people often get stuck in. It&#8217;s often perceived as a no-mans lands between the two waring sides, however there is a &#8220;bridge of peace&#8221; between the two so to speak. This comes in the unexpected form, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://winehq.org/images/winehq_logo_glass.png" alt="" width="120" height="188" />So, as my ongoing quest to expand the Linux user base continues, I want to mention the middle ground people often get stuck in. It&#8217;s often perceived as a no-mans lands between the two waring sides, however there is a <em>&#8220;bridge of peace&#8221;</em> between the two so to speak. This comes in the unexpected form, of a much enjoyed tasty drink: <strong>Wine</strong>.</p>
<p>OK, obviously I lie, Wine is actually a program which lets you run Windows software in Linux. For many this idea seems a bit crazy &#8211; in most respects Windows &amp; Linux are so different just running a program built for one OS, out of the box on the other is pretty much inconceivable.</p>
<p>So before I go further, let me just give you the proper definition of Wine, as taken from the development team&#8217;s website: <a href="http://www.winehq.org" target="_blank">Wine HQ</a>.</p>
<blockquote><p>Wine is a translation layer (a program loader) capable of running Windows applications on Linux and other POSIX compatible operating systems.  Windows programs running in Wine act as native programs would, running without the performance or memory usage penalties of an emulator, with a similar look and feel to other applications on your desktop.</p></blockquote>
<p>There&#8217;s one little line in that definiton that gives rise to Wine&#8217;s name, &#8220;<em>without the performance or memory usage penalties of an emulator</em>&#8220;. Wine stands for (in the classic Linux <a href="http://en.wikipedia.org/wiki/Recursive_acronym" target="_blank">Recursive Acronym</a> way): <strong>W</strong>ine <strong>I</strong>s <strong>N</strong>ot an <strong>E</strong>mulator. Now I&#8217;m not going to go into the details of how it works, but you can consider modern versions of wine as almost stripped-down versions of Windows.</p>
<p>And there are actual real life examples of this &#8211; Windows application which run better on Linux than on their native OS. Yes, programs never designed to run on Linux, actually performing better on the same hardware.</p>
<div class="wp-caption alignright" style="width: 310px"><a href="http://farm4.static.flickr.com/3183/2553058293_d911d98f33.jpg"><img src="http://farm4.static.flickr.com/3183/2553058293_d911d98f33.jpg" alt="" width="300" height="188" /></a><p class="wp-caption-text">Word running on Linux? Yes!</p></div>
<p>Now being a true Linux advocate, I&#8217;d always prefer running software developed by the open source community. However I also understand sometimes you have no other choice &#8211; which of course is what drives the development of Wine. The biggest driving force of this development &#8211; Games. There was big fanfare when tests showed Quake 3 out performing the native Windows version.</p>
<p>However over here at <a href="http://www.ukfast.co.uk">UKFast</a> the call of Wine in day-to-day use is not great, indeed generally in the world of <a href="http://www.ukfast.co.uk/linux-server.html" target="_blank">high-spec Linux servers</a>, running Windows software is not needed. But the simple reason I wanted to discuss it was to help people try, and eventually full-migrate to, Linux, and as my previous post said &#8211; <strong>Submerge Yourself in Linux.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/02/22/wine-the-linux-drink-of-choice/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>submerge yourself in Linux &#8211; without drowning</title>
		<link>http://www.ukfastblog.co.uk/2009/02/10/submerge-yourself-in-linux-without-drowning/</link>
		<comments>http://www.ukfastblog.co.uk/2009/02/10/submerge-yourself-in-linux-without-drowning/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 15:45:29 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=4533</guid>
		<description><![CDATA[As the title of my first post touched on, Linux has a steep learning curve, and I don&#8217;t think many people would disagree. The power, freedom and control of Linux is certainly what draws and maintains the vast majority of its users. The first steps into Linux could be from the demands of an over-worked [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 330px"><img src="http://farm3.static.flickr.com/2052/2459390671_327ff7bdf4.jpg" alt="" width="320" height="240" /><p class="wp-caption-text">A Modern Linux Desktop: not so scary any more!</p></div>
<p>As the title of my first post touched on, Linux has a steep learning curve, and I don&#8217;t think many people would disagree.</p>
<p>The power, freedom and control of Linux is certainly what draws and maintains the vast majority of its users. The first steps into Linux could be from the demands of an over-worked office mail server, right down to getting frustrated one too many times with having to reboot your Windows desktop computer.</p>
<p>In the last five years the development of the Linux desktop has been amazing, and has done a massive amount to recruit new users, most of whom want to escape the frustration of day to day Windows use. However in the world of servers, firewalls, routers and racks, the image of a flashing white cursor on a black background is not escapable regardless of how much the desktop distributions have developed. As the endless blinking continues, awaiting your beckoning command, for many uninitiated users, this gives a sense of horror &#8211; &#8220;What on Earth do I do?&#8221;</p>
<p>Actually &#8211; take that back &#8211; my previous statement isn&#8217;t entirely correct. You <em>can </em>bypass the blinking light, and administer a server, hosted in a purpose build <a href="http://www.manoc.co.uk/" target="_blank">datacentre</a> in a remote location without punching commands into a console. Control panels like <a href="http://www.ukfast.co.uk/Plesk-hosting-guide.html" target="_blank">Plesk</a>, which we provide to many clients, allow access to the internal workings of a Linux server, without getting your hands dirty. But I&#8217;ve always questioned how much this actually teaches about the system your running, regardless of its operating system. I&#8217;ve learnt so much from my exploration of Linux that I encourage everybody to explore and learn for them selves what&#8217;s going on.</p>
<p>Inversely to the horror experienced by many first-timers, the command line is something I, and my colleagues on the Linux team adore. Its immediate uninhibited access to control the machine is something you become so used to, having it withdrawn from you can make you feel utterly powerless (as I do when presented with a graphical desktop and told to &#8220;fix the web server!&#8221;).</p>
<p>So how do you go about submerging yourself in Linux without scarying yourself witless. The <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> Linux distribution is an excellent example of how to approach Linux with this intent. It provides a feature rich and easy to install desktop environment, which is straight forward enough for a long term Windows user to pick up in a minute.</p>
<p>But the code and software behind the scenes is <strong>exactly </strong>the same as runs the <a href="http://www.ubuntu.com/products/whatisubuntu/serveredition" target="_blank"><em>server edition</em></a> of Ubuntu. Actually, the desktop edition is just an extension of the server edition, the same edition we supply in the rack-mounted, quad-core, ultra-quick, super-dooper servers we host for some of our largest clients.</p>
<p>And I would encourage everyone to try it. Get it installed, play around &#8211; and then one day, click that little icon of white text on black background. You may have no idea what to do when you see that blinking cursor, however the entire evolution of Linux has been based on communities (something else I plan on discussing in a later post), and now they are stronger than ever. So just pop over to the <a href="http://ubuntuforums.org/" target="_blank">Ubuntu Forums</a> and say hi, you&#8217;ll probably see one of us chipping in. Hopefully one day you&#8217;ll end up with a blinking cursor on a high-spec <a href="http://www.ukfast.co.uk/linux-server.html" target="_blank">UKFast Linux server</a> all of your own!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/02/10/submerge-yourself-in-linux-without-drowning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Learning Curve</title>
		<link>http://www.ukfastblog.co.uk/2009/02/07/linux-learning-curve/</link>
		<comments>http://www.ukfastblog.co.uk/2009/02/07/linux-learning-curve/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 18:51:14 +0000</pubDate>
		<dc:creator>Pingu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://www.ukfastblog.co.uk/?p=3285</guid>
		<description><![CDATA[Whilst thinking about where to start this newly extended Linux section of the UKFast blog, it dawned on me to simply start at the beginning and grow from there. A curious statement you may say, but one I had to think about in order to qualify. For me it started around ten years ago with [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst thinking about where to start this newly extended Linux section of the UKFast blog, it dawned on me to simply start at the beginning and grow from there. A curious statement you may say, but one I had to think about in order to qualify.</p>
<p>For me it started around ten years ago with an inspirational school teacher, a CD burner and a bit of free time. Looking back at this makes me think about how exactly I was able to turn this serendipitous introduction into a profession.</p>
<p>For myself, the astounding power and freedom of the Linux operating system makes it a natural choice. However this comes around from a confidence I have developed in its use and abilities (including fixing it when it goes wrong!). But I don&#8217;t think many people will disagree with the statement that Linux has a steep learning curve &#8211; people just can&#8217;t get off the ground.</p>
<p>Just the other day I overheard a brilliant example which embodies probably the very central issue new users have: &#8220;The Black Screen With White Text&#8221;.</p>
<div id="attachment_4293" class="wp-caption alignleft" style="width: 208px"><img class="size-full wp-image-4293" title="linux" src="http://www.ukfastblog.co.uk/wp-content/uploads/2009/02/linux.jpg" alt="Black screen with white writing" width="198" height="179" /><p class="wp-caption-text">Black screen with white text</p></div>
<p>But there are many ways to overcome this &#8211; including the use of the Plesk control panel &#8211; which we will talk about in one of my next posts.</p>
<p>For me, one of the main reasons to keep learning is being able to put back into the community I&#8217;ve taken from. Just like the teacher who inspired me in the first place a decade ago. The pleasure of being able to give back knowledge after you&#8217;ve taken so much is excellent. This strong driving force of the open source community is something I certainly plan on talking about more in my up coming posts.</p>
<p>However, the queston I&#8217;ll tackle next time is &#8211; How to submerge yourself in linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ukfastblog.co.uk/2009/02/07/linux-learning-curve/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
