<?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>Linux &#8211; Phocean.net</title>
	<atom:link href="/tag/linux/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Computer Security Blog</description>
	<lastBuildDate>Fri, 24 Feb 2017 21:17:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.10</generator>
	<item>
		<title>Lessons learned with Docker, Nodejs apps and volumes</title>
		<link>/2016/05/06/the-quest-for-a-secure-nodejs-app-docker-container.html</link>
		<pubDate>Fri, 06 May 2016 17:05:01 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Defense]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Dockerfile]]></category>
		<category><![CDATA[Etherpad]]></category>
		<category><![CDATA[Nodejs]]></category>

		<guid isPermaLink="false">http://phocean.net/?p=2099</guid>
		<guid isPermaLink="false">http://phocean.net/?p=2099</guid>
		<description><![CDATA[Context I have kept playing with Docker recently, just for fun and to learn. It is very powerful, but still young. It quickly shows some limit when it comes to security or persistence. There are some workarounds, yet more or less complex, more or less hacky. Indeed, I had some issues with Etherpad, which is...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2016/05/06/the-quest-for-a-secure-nodejs-app-docker-container.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<h2>Context</h2>
<p>I have kept playing with Docker recently, just for fun and to learn.</p>
<p>It is very powerful, but still young. It quickly shows some limit when it comes to security or persistence. There are some workarounds, yet more or less complex, more or less hacky.</p>
<p>Indeed, I had some issues with Etherpad, which is a Nodejs application, and its integration into Docker.</p>
<p>Initially, I made something quite simple, so my Dockerfile ended like that:</p>
<pre>USER etherpad
CMD ["node","/opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js"]</pre>
<p>Thus, I simply start the app with a low privileges user.</p>
<p>It worked, but I had two issues:</p>
<ol>
<li>Docker was not able to stop it nicely. Instead, it timed out after 10 sec and finally killed the app and the container altogether.</li>
<li>No persistence of any kind, of course.</li>
</ol>
<p>I decided to tackle these two issues to understand what was going on behind.</p>
<h2>The PID 1 issue</h2>
<p>I could not understand immediately the first issue: why was Docker unable to terminate the container properly?</p>
<p>After wandering a few hours on wrong paths (trying to get through with Nodejs nodemon or supervisor), I finally found some good articles, explaining that Docker misses an init system to catch signals, wich causes some issues with applications started with a PID = 1, which cannot be killed, or with Bash (the shell doesn&#8217;t handle transmitted signals.</p>
<p>I am not going to repeat poorly what has already been explained very well, so I encourage you to read this two excellent posts:</p>
<ul>
<li><a href="https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/">The PID 1 zombie reaping problem</a></li>
<li><a href="https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86#.wqy8msjbk">Trapping signals in Docker containers</a></li>
</ul>
<p>You will also find a lot of bug reports in the Docker github about this issue, and a lot of hacky or overkilling solutions.</p>
<p>In my opinion, the most elegant solution among them is to use a launcher program, very simple and dedicated to catch and handle signal.</p>
<p>I chose to use <a href="https://github.com/yelp/dumb-init">Dumb-init</a>, as it is well packaged (there are plenty of options) and seems to be well maintained.</p>
<p>So, after installing Dump-init in the Dockerfile, the CMD line should now look like this:</p>
<pre>USER etherpad
CMD ["dumb-init","node","/opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js"]</pre>
<p>And indeed, as expected, <em>docker stop</em> now works flawlessly.</p>
<h2>Volume permissions</h2>
<p>This is where I had the toughest issue, although it is supposed to be straightforward with volumes.</p>
<p>Volumes enable to share files or folders between host and containers, or between containers solely. There are plenty of possibilities, nicely illustrated on this blog:</p>
<ul>
<li><a href="https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/">Docker: storage patterns for persistence</a></li>
</ul>
<p>And it works very well&#8230;. as long as you application runs as root.</p>
<p>In my case, for instance, Etherpad runs with a low privileged user, which is highly recommended. At startup, it creates a sqlite database, etherpad.db,  in its ./var folder.</p>
<p>Mounting a volume, of any kind, over the ./var folder, would result in a folder with root only permissions. Subsequently, of course, the launch of Etherpad from the CMD command would fail miserably.</p>
<p>Simple solutions like <em>chown</em> in the Dockerfile don&#8217;t work, because they apply <em>before</em> the mount. The <em>mount</em> occurs at runtime and works like a standard Linux <em>mount:</em> it is created by the docker daemon, with <em>root</em> permissions, over possibly existing data.</p>
<p>My solution was to completely change the way Etherpad is started. I now use an external script which is started at runtime:</p>
<ol>
<li>First, it applies the appropriate permissions to the mounted volume with <em>chown,</em></li>
<li>Then, it starts Etherpad with a low privileged user thanks to a <em>su</em> hack.</li>
</ol>
<p>So now the Dockerfile ends with:</p>
<pre>VOLUME /opt/etherpad-lite/var
ADD run-docker.sh ./bin/
CMD ["./bin/run-docker.sh"]</pre>
<p>And here is the script:</p>
<pre>#!/bin/bash

chown -R etherpad:etherpad /opt/etherpad-lite/var
su etherpad -s /bin/bash -c  "dumb-init node /opt/etherpad-lite/node_modules/ep_etherpad-lite/no
de/server.js"</pre>
<p>I use a data volume for persistency, so the run command looks like this:</p>
<pre>docker run -d --name etherpad -p 80:9001 -v etherpad:/opt/etherpad-lite/var -t debian-etherpad</pre>
<p>Far from being ideal, but it works. I really hope some features are coming to bring more options in this area, especially in the Dockerfile.</p>
<h2>Some final thoughts</h2>
<p>Globally, we can still hope a lot of improvements in security, because when I look at many Dockerfiles around, I see two behaviors:</p>
<ul>
<li>A lot of people don&#8217;t care and everything is happily running as root, from unauthenticated third-party images or binaries&#8230;</li>
<li>Some people do care but end up with dirty hacks, because there is no other way to do so.</li>
</ul>
<p>It is scary and so far from the Linux philosophy. Let&#8217;s wait for the enhancements to come.</p>
<p>You can find the complete <em>updated</em> Dockerfile on <a href="https://github.com/phocean/dockerfile-debian-etherpad/blob/master/Dockerfile">this github page</a>.</p>
<p>While we are on this topic, have a look to <a href="http://blog.labianchin.me/2016/02/15/docker-tips-and-tricks">this nice post with some nice tips and tricks</a> for Docker.</p>
]]></content:encoded>
			</item>
		<item>
		<title>A journey with Btrfs</title>
		<link>/2016/03/20/a-journey-with-btrfs.html</link>
		<comments>/2016/03/20/a-journey-with-btrfs.html#comments</comments>
		<pubDate>Sun, 20 Mar 2016 15:35:59 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[snapper]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://phocean.net/?p=2064</guid>
		<guid isPermaLink="false">http://phocean.net/?p=2064</guid>
		<description><![CDATA[Why BTRFS ? I have recently tested Btrfs as the file system for my /home partition (which was previously on ext4). I have been impressed by what this file system enables to do, but also came to the conclusion that it is not for me. As a quick reminder, the goal of this file system is...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2016/03/20/a-journey-with-btrfs.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<h1>Why BTRFS ?</h1>
<p>I have recently tested Btrfs as the file system for my /home partition (which was previously on ext4).</p>
<p>I have been impressed by what this file system enables to do, but also came to the conclusion that it is not for me.</p>
<p>As a quick reminder, the goal of this file system is to bring to Linux a fully featured file system similar to zfs. Some of these features promise a lot of awesomeness: snapshots, native RAID, automatic defragmentation and repairs, etc.</p>
<p>Wouldn&#8217;t it be cool to have such a file system for your data? Among them, snapshotting really is a killer feature. See it as a global git for all your data. You can track any file history, make a diff comparison on them and revert back to a chosen version, anytime and on-line.</p>
<p>Btrfs has been under development for a while and it is still undergoing. However, the first stable version has finally been released last year.</p>
<p>Many people warn that it is not production ready yet. It seems obvious for critical production systems, under heavy load or using the most advanced features (e.g. RAID). But what about a simple /home, mainly using snapshots (which have been around for a while)?</p>
<p>You will see that there are still some issues with virtualization.</p>
<p><strong><em>Disclaimer 1: this is in no way a review or a benchmark of Btrfs. Consider it simply as some feedback for my specific use case.</em></strong></p>
<h1>Getting ready</h1>
<p>This chapter is a summary of procedures found in various resources, along with my feedback.</p>
<p><em><strong>Disclaimer 2: First of all, make several backup of your entire /home. And make sure that it is operational and complete. Anyway, beware that there is obviously some inherent risk for your data in manipulating your home partition. So, do not come back to insult me if you lose any data.</strong></em></p>
<p>First, note that there is a conversion utility <em>btrfs-convert</em>, to convert an existing ext4 partition to btrfs. While this sounds cool, it did not work well with my partition, leading to many corrupted inodes.</p>
<p>So my advice is to just make a good backup of your home:</p>
<pre>% rsync -av /home /your/backup/</pre>
<p>Then, log out and format the partition as root:</p>
<pre># mount | grep home
/dev/mapper/system-home on /home type ext4 (rw,noatime,data=ordered)
# umount /home
# mkfs.btrfs /dev/mapper/system-home</pre>
<p>Change the file system and its options in /etc/fstab. For example:</p>
<pre>/dev/system/home     /home     ext4     defaults,noatime     1 1</pre>
<p>should become (also note the change on the last digit):</p>
<pre>/dev/system/home   /home    btrfs  defaults,noatime,ssd,space_cache,compress=lzo    1 0</pre>
<p>Re-mount /home and you are done!</p>
<h1>Snapper</h1>
<p>The main purpose for me to test Btrfs was the snapshot feature, in the hope to keep a version history of each file and avoid accidental deletions and changes.</p>
<p>Of course, one could use the Btrfs commands and implement snapshots manually. But why reinventing the wheel?</p>
<p>The guys behind <a href="http://snapper.io/">snapper</a>  already made a service especially for that. It is basically a wrapper over Btrfs that will make automatic snapshots in the background, based on your frequency settings, and ease their handling.</p>
<p>Once installed, it can be enabled with the following command:</p>
<pre># snapper -c home create-config /home</pre>
<p>It has the effect of creating a configuration file, where you can adjust the number of snapshots you want to keep per day, week, month, etc. Of course, don&#8217;t keep too much data as it will waste free space, especially if you happen to move large amounts of data. Hourly and daily snapshots are OK, as they would be cleaned up quickly. But monthly or yearly snapshots would consume a lot of space and would be pretty useless for a /home.</p>
<p>Here is what I used, without consuming much more than 10 GB:</p>
<pre># subvolume to snapshot
SUBVOLUME="/home"

# filesystem type
FSTYPE="btrfs"

# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS="

# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"

# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"

# run daily number cleanup
NUMBER_CLEANUP="yes"

# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="10"
NUMBER_LIMIT_IMPORTANT="5"

# create hourly snapshots
TIMELINE_CREATE="yes"

# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"

# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
<strong>TIMELINE_LIMIT_HOURLY="10"</strong>
<strong>TIMELINE_LIMIT_DAILY="7"</strong>
<strong>TIMELINE_LIMIT_WEEKLY="2"</strong>
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"

# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"

# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="1800"</pre>
<p>Now, let&#8217;s play a little. In the following sequence, we create a file containing &#8220;Hello World!&#8221;, we then create a manual snapshot, change the file and display the differences:</p>
<pre># vim test.txt
# snapper -c home create --description "before test"
# vim test.txt
# sudo snapper -c home list
Type   | # | Pre # | Date                     | User | Cleanup  | Description  | Userdata
-------+---+-------+--------------------------+------+----------+--------------+---------
single | 0 |       |                          | root |          | current      | 
single | 1 |       | Sun Mar 13 19:44:21 2016 | root |          | before test  | 
single | 2 |       | Sun Mar 13 19:45:12 2016 | root |          | created test | 
single | 3 |       | Sun Mar 13 19:52:39 2016 | root |          | update test  | 
single | 4 |       | Sun Mar 13 20:00:01 2016 | root | timeline | timeline     | 
single | 5 |       | Sun Mar 13 21:00:01 2016 | root | timeline | timeline     | 
single | 6 |       | Sun Mar 13 22:00:01 2016 | root | timeline | timeline     | 
# snapper -c home status 1..0
--- "/home/.snapshots/2/snapshot/phocean/test.txt" 2016-03-13 19:44:53.370641373 +0100
+++ "/home/phocean/test.txt" 2016-03-13 19:45:27.226586459 +0100
@@ -1 +1,2 @@
Hell World!
+Good bye.
@@ -0,0 +1,2 @@
+Hell World!
+Good bye</pre>
<p>Neat, isn&#8217;t it? Now, what if we decide to restore the file to this snapshot:</p>
<pre>snapper -c home undochange 1..0 /home/phocean/test.txt</pre>
<p>That&#8217;s it!</p>
<p>Note that all these operations can be done against the entire partition (no argument needed), a folder or a file.</p>
<h1>Pros</h1>
<p>Regarding regular files, I had no issue at all. After a week of intensive use, I already the occasion to enjoy the benefits of having snapshots and being able to restore a file.</p>
<p>On the performance side, even though I haven&#8217;t done any benchmark, it is a least as fast as ext4. It is said that under some conditions, compression can be a big read rate boost.</p>
<p>On the compression side, on my partition of 400 GB, it allowed me to reclaim around 20 GB of space. Of course, the gain you can expect is totally related to the sorts of files you have (you won&#8217;t gain much on files that are already compressed or encrypted).</p>
<h1>Cons</h1>
<p>As warned on the official wiki itself, you should not use Btrfs as-is with database or virtualization solutions.</p>
<p>Dixit the official wiki:</p>
<blockquote><p>Files with a lot of random writes can become heavily fragmented (10000+ extents) causing trashing on HDDs and excessive multi-second spikes of CPU load on systems with an SSD or large amount a RAM.</p></blockquote>
<p>Indeed, I quickly experienced some issues with Virtualbox. Under heavy I/O operations, and having several machines running at a time, I had the guest file systems corrupted more than once. And so badly that the guest machine was unrecoverable (even with snapshots). Sometimes I got plenty of ext4 errors, or sometimes it just froze, while copying a bunch of file or doing an <em>apt-get upgrade.</em>..</p>
<p>The <a href="https://wiki.archlinux.org/index.php/Btrfs#Copy-On-Write_.28CoW.29">workarounds</a> did not make it for me:</p>
<ol>
<li>I even did not test disabling CoW for the whole partition. It kills one of the main advantages of using Btrfs.</li>
<li>I tried disabling CoW for all the VM folder. While the corruption frequency decreased, it still occurred after a while.</li>
</ol>
<p>So, I would simply adivse of not putting any virtual machine on the Btrfs partitions, until this thing definitely get sorted. I use virtual machines intensively at work and need them to be reliable.</p>
<h1>Conclusion</h1>
<p>Btrfs is awesome and pretty stable at this time, unless you need to host virtual machines. You could still have a dedicate ext4 partition for you VMs, and enjoy Btrfs for the rest of your home.</p>
<p>To be honest, I did not bother (not wanting to manage several partitions), and switched back to ext4 for all, in the expectation of better days. I am not sure if this should be addressed on the Btrfs, or the Virtualbox side (or both).</p>
<h1>References</h1>
<ul>
<li><a href="https://en.opensuse.org/openSUSE:Snapper_FAQ">Snapper FAQ</a></li>
<li><a href="https://fr.opensuse.org/openSUSE:Snapper_Tutorial">Snapper tutorial</a></li>
<li><a href="https://wiki.archlinux.org/index.php/Btrfs">Arch Linux Btrfs wiki</a></li>
<li><a href="https://wiki.gentoo.org/wiki/Btrfs">Gentoo Btrfs wiki</a></li>
<li><a href="http://www.nrtm.org/index.php/2012/03/13/the-joys-of-btrfs-and-opensuse-or-no-space-left-on-device/">The joys of btrfs and opensuse or no space left on device</a></li>
<li><a href="https://wiki.archlinux.org/index.php/Btrfs#Copy-On-Write_.28CoW.29">CoW workarounds</a></li>
<li><a href="https://btrfs.wiki.kernel.org/index.php/Gotchas">Btrfs wiki: gotchas</a> (virtual machines and databases)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>/2016/03/20/a-journey-with-btrfs.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installation of Metasploit on Fedora 21 / 22</title>
		<link>/2015/02/10/installation-of-metasploit-on-fedora-21.html</link>
		<comments>/2015/02/10/installation-of-metasploit-on-fedora-21.html#comments</comments>
		<pubDate>Tue, 10 Feb 2015 19:38:05 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Pentesting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Metasploit]]></category>

		<guid isPermaLink="false">http://phocean.net/?p=2021</guid>
		<guid isPermaLink="false">http://phocean.net/?p=2021</guid>
		<description><![CDATA[Update 2015/08/04: Works on Fedora 22 too. I recently applied the exact same procedure with success. A quick update from a previous post for setting Metasploit on Fedora 21, the latest version. It is mainly a copy and paste, except for a few typo fixes and some changes on the Ruby part. The good news is that...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2015/02/10/installation-of-metasploit-on-fedora-21.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<p><em><span style="color: #ff0000;"><span style="text-decoration: underline;">Update 2015/08/04</span>: Works on Fedora 22 too. I recently applied the exact same procedure with success.</span></em></p>
<p>A quick update from a previous <a href="/2014/02/23/metasploit-on-fedora-20.html">post</a> for setting Metasploit on Fedora 21, the latest version.</p>
<p>It is mainly a copy and paste, except for a few typo fixes and some changes on the Ruby part. The good news is that Metasploit was recently ported to Ruby 2.x, so we don&#8217;t need anymore the <em>rvm</em> stuff anymore, which makes the process much simpler.</p>
<h1>Preparing Postgresql</h1>
<p>Install:</p>
<pre> yum -y install postgresql-server postgresql-devel</pre>
<p>Initiate a new &#8220;cluster&#8221; and connect to the sql client through the <code>postgres</code> user:</p>
<pre># as root:
postgresql-setup initdb
systemctl start postgresql.service
su postgres
psql</pre>
<p>Inside the psql console, create the new Metasploit user and its database:</p>
<pre>create user msf;
alter user msf with encrypted password 'super password';
create database msfdb;
grant all privileges on database msfdb to msf;
\q</pre>
<p>Then, we will tell to Postgres how to accept local connections. ident necessitates an system account, trust means no password for any local account and md5 stands for a classic password authentication, which we will prefer.<br />
Back to a root terminal, add this line inside <code>/var/lib/pgsql/data/pg_hba.conf</code> and beware that the order is important:</p>
<pre># IPv4 local connections:
<span style="color: #ff0000;">host msfdb msf 127.0.0.1/32 md5</span>
host all all 127.0.0.1/32 ident</pre>
<p>Then we can restart the service and check with psql that the credentials are working:</p>
<pre>systemctl restart postgresql.service
psql -U msf msfdb -h localhost
\q</pre>
<h1>Setting Ruby</h1>
<p>Metasploit runs well with Ruby 1.9.3, so we will install this version and switch to it using <code>rbenv</code>.<br />
<code>rbenv</code> does a nice job at managing several version of ruby next to each other, installing dependancies (as OpenSSL) and setting <code>PATH</code>:</p>
<pre># as root:
yum install ruby rubygems ruby-devel rubygem-bundler</pre>
<h1>Getting and running Metasploit</h1>
<p>Install:</p>
<pre># as root in e.g. /opt
git clone https://github.com/rapid7/metasploit-framework.git msf
cd msf
yum -y install libpcap-devel sqlite-devel
./msfupdate</pre>
<p>The installation of ruby modules will take a while. Then, configure the database by creating <code>config/database.yml</code>:</p>
<pre>production:
    adapter: postgresql
    database: msfdb
    username: msf
    password: 
    host: 127.0.0.1
    port: 5432
    pool: 75
    timeout: 5</pre>
<p>Launch it and have fun :</p>
<pre># as root
./msfconsole
# check connection to the database
db_status</pre>
<p>You may want to add a <code>cron</code> entry in <code>/etc/crontab</code> to get regular updates (though it may break from time to time due to broken dependencies, so you are advised to check it sometimes):</p>
<pre># msfupdate every 2 hours
0 */2 * * * root /opt/msf/msfupdate 2&gt;&amp;1</pre>
]]></content:encoded>
			<wfw:commentRss>/2015/02/10/installation-of-metasploit-on-fedora-21.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The joy of dependencies: Metasploit on Fedora 20</title>
		<link>/2014/02/23/metasploit-on-fedora-20.html</link>
		<comments>/2014/02/23/metasploit-on-fedora-20.html#comments</comments>
		<pubDate>Sun, 23 Feb 2014 21:56:25 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Pentesting]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Metasploit]]></category>
		<category><![CDATA[rbenv]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=1934</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=1934</guid>
		<description><![CDATA[UPDATE 02/2015 : see there for the procedure on Fedora 21 As I started to use Fedora 20 at work &#8211; by the way, a solid distro with all security features enabled, I had the bad surprise to get similar issues to those on OS X. Again, we will have to face the joy of dependencies! Fedora...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2014/02/23/metasploit-on-fedora-20.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<p><em><span style="color: #ff0000;">UPDATE 02/2015 : see <a href="/2015/02/10/installation-of-metasploit-on-fedora-21.html">there</a> for the procedure on Fedora 21</span></em></p>
<p>As I started to use Fedora 20 at work &#8211; by the way, a solid distro with all <a href="http://https://fedoraproject.org/wiki/Security_Features?rd=Security/Features">security features enabled</a>, I had the bad surprise to get similar issues to <a href="/2013/05/05/installing-metasploit-on-os-x-mountain-lion.html">those on OS X</a>.<br />
Again, we will have to face the joy of dependencies! Fedora provides Ruby 2.0 by default, so firing <code>msfconsole</code> would fail with many openssl warnings, ending with:</p>
<p><span id="more-1934"></span></p>
<pre>/usr/share/ruby/openssl/cipher.rb:61:in `': superclass mismatch for class Cipher (TypeError)
from /usr/share/ruby/openssl/cipher.rb:22:in `'
from /usr/share/ruby/openssl/cipher.rb:21:in `'
from /usr/share/ruby/openssl.rb:20:in `require'
from /usr/share/ruby/openssl.rb:20:in `'
from /opt/pentest/exploit/msf/lib/msf/ui/console/driver.rb:144:in `require'
from /opt/pentest/exploit/msf/lib/msf/ui/console/driver.rb:144:in `initialize'
from ./msfconsole:148:in `new'
from ./msfconsole:148:in `'</pre>
<p>While the installation steps are globally the same than on Mac, there are some specific issues with rbenv and Postgresql.</p>
<h1>Preparing Postgresql</h1>
<p>Install:</p>
<pre> yum -y install postgresql-server postgresql-devel</pre>
<p>Initiate a new &#8220;cluster&#8221; and connect to the sql client through the <code>postgres</code> user:</p>
<pre># as root:
postgresql-setup initdb
systemctl restart postgresql.service
su postgres psql</pre>
<p>Inside the psql console, create the new Metasploit user and its database:</p>
<pre>create user msf;
alter user msf with encrypted password 'super password';
create database msfdb;
grant all privileges on database msfdb to msf;
\q</pre>
<p>Then, we will tell to Postgres how to accept local connections. ident necessitates an system account, trust means no password for any local account and md5 stands for a classic password authentication, which we will prefer.<br />
Add this line inside <code>/var/lib/pgsql/data/pg_hba.conf</code> and beware that the order is important:</p>
<pre># IPv4 local connections:
<span style="color: #ff0000;">host msfdb msf 127.0.0.1/32 md5</span>
host all all 127.0.0.1/32 ident</pre>
<p>Then we can restart the service and check with psql that the credentials are working:</p>
<pre>systemctl restart postgresql.service
psql -U msf msfdb -h localhost
\q</pre>
<h1>Setting Ruby</h1>
<p>Metasploit runs well with Ruby 1.9.3, so we will install this version and switch to it using <code>rbenv</code>.<br />
<code>rbenv</code> does a nice job at managing several version of ruby next to each other, installing dependancies (as OpenSSL) and setting <code>PATH</code>:</p>
<pre># as root:
# download and install rbenv
\curl -sSL https://get.rvm.io | bash
rvm install ruby-1.9.3 --autolibs=packages
rvm use ruby-1.9.3
# checking, should obviously return ruby 1.9.3
ruby --version</pre>
<h1>Getting and running Metasploit</h1>
<p>Install:</p>
<pre># as root in e.g. /opt
git clone https://github.com/rapid7/metasploit-framework.git msf
cd msf
yum -y install rubygem-bundler libpcap-devel
bundle install</pre>
<p>Configure the database creating <code>config/database.yml</code>:</p>
<pre>production:
    adapter: postgresql
    database: msfdb
    username: msf
    password: 
    host: 127.0.0.1
    port: 5432
    pool: 75
    timeout: 5</pre>
<p>Launch it and have fun :</p>
<pre><del>ln -s /opt/msf/msf* /usr/local/bin
sudo <span style="color: #ff0000;">-i</span> msfconsole</del>
# as root
./msfconsole
# check connection to the database
db_status</pre>
<p><del>Note that the <code>-i</code> option of <code>sudo</code> is mandatory, as it resets the environment for security purposes. That way it will get the environment of the target user, <code>root</code>, which should be just fine if you set <code>rbenv</code> with that user.</del></p>
<p><em><strong><span style="text-decoration: underline;">UPDATE 02/27/2014</span></strong>: I had some issues starting Metasploit with sudo and I actually failed to find a satisfying solution. I am now just launching it as root and in its work directory.</em></p>
<p>It is recommended to add a <code>cron</code> entry in <code>/etc/crontab</code> for regular updates:</p>
<pre># msfupdate every 2 hours
0 */2 * * * root /opt/msf/msfupdate 2&gt;&amp;1</pre>
]]></content:encoded>
			<wfw:commentRss>/2014/02/23/metasploit-on-fedora-20.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Misc rants on Linux desktop, Mac OS and Antivirus</title>
		<link>/2012/06/05/misc-rants-on-linux-desktop-mac-os-and-antivirus.html</link>
		<comments>/2012/06/05/misc-rants-on-linux-desktop-mac-os-and-antivirus.html#comments</comments>
		<pubDate>Tue, 05 Jun 2012 21:29:27 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Defense]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Antivirus]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[Sophos]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=1230</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=1230</guid>
		<description><![CDATA[Linux desktop is in bad shape&#8230; The culprits? Unity and Gnome 3. I am not talking about KDE, as I never felt good with it. I had tried KDE 4 and it did not change my opinion, not to mention that I suffered from several bugs. Unity? Like many people, I just don&#8217;t get it....<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2012/06/05/misc-rants-on-linux-desktop-mac-os-and-antivirus.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<h2>Linux desktop is in bad shape&#8230;</h2>
<p>The culprits? Unity and Gnome 3. I am not talking about KDE, as I never felt good with it. I had tried KDE 4 and it did not change my opinion, not to mention that I suffered from several bugs.</p>
<p>Unity? Like many people, I just don&#8217;t get it. It is pretty clumsy and feels unachieved. I also suffered from a lot of performance issues like <a title="Unity lag" href="https://bugs.launchpad.net/bugs/764330" target="_blank">this</a> that are never fixed and make it a pain to use daily.<br />
Gnome 3? Actually, I liked it. It looks nice, is pretty fast and smooth. What I like the most is the workflow. It really makes use of workspaces logical and optimum. But&#8230; it did not work for me! Instability, <a title="Gnome 3 VMWare hang" href="https://bugs.launchpad.net/bugs/869408" target="_blank">again</a> and <a title="Gnome 3 and ATI" href="http://ati.cchtml.com/show_bug.cgi?id=99" target="_blank">again</a>.<br />
You will tell me, that I should have stayed with Gnome 2 or go to XFCE / Openbox / etc. I have used all of them. They have qualities, sure, but we are in 2012 and I want something with more features.</p>
<p><strong>Conclusion</strong>: it is sad that after so many years, Linux is not yet ready for the desktop, because some guys decided to break everything again instead of doing incremental enhancements. Why breaking so suddenly things that work? I don&#8217;t get it. I felt really fustrated with the feeling that I was at the same point as 5 years ago, dealing with the same kind of bugs. I have long been a Linux advocate and I believed I was right a few years back when I told people it was promising and superior to the competition (Windows XP at the time). Now years have passed, and I started to feel I was lying, or hiding the truth that is Linux Desktop failed and went nowhere.<br />
Yes, I just got tired to fight with the computer to get basic things done. And considering the <a title="Linus Thorvalds on Gnome 3" href="https://plus.google.com/102150693225130002912/posts/UkoAaLDpF4i" target="_blank">Linus post</a> and several reactions into the comments, I am not alone in this case.</p>
<h2>&#8230; so I gave a try to Apple&#8230;</h2>
<p>I recently got a Mac Book Pro. The main reason is I wanted a very stable workstation to focus on my work. It was hard to admit after so many years using it, but I came to the conclusion that a Linux desktop could not meet this requirement anymore.</p>
<p>So I am going to be with Mac OS Lion for a while (though I am certainly not closing the door to the Linux desktop forever). I have to say that it is a nice OS and it is damned stable. It is good to have something that works out of the box, without any frustration or need to customize things to have something suitable.</p>
<p>And what about the stability of Mac OS? It is very eye candy, but is it stable?</p>
<p>At first, I actually had some serious troubles. It was freezing almost every day, forcing me to a cold reboot. I started to be seriously doubtful concerning the stability of Mac OS, when I found by chance that the freeze occured every time that Sophos Antivirus started an update&#8230;</p>
<h2>Antivirus and Mac OS&#8230;</h2>
<p>Wait, what? Antivirus? On Mac OS? I know it will be the reaction of many Mac users. I do also think that it is useless, but for a different reason than most of them.<br />
Of course, I don&#8217;t get the &#8220;Mac OS is secure&#8221; marketing. Actually, it has the less secure kernel around, even though it benefits from a robust Unix architecture.<br />
No, my point is that antivirus all fail anyway. In forensic analysis, we can even not trust an antivirus scan to decide if a machine is sane or not. Instead, we have to use specific tools and memory acquisition to make sure.<br />
It is simply because signature-based detection can always be worked around by malwares. There are hundreds of ways to achieve it successfully: changing binary headers, code obfuscation, encryption, hooking (see rootkits and bootkits).<br />
Ok, antivirus vendors claim that they also offer behavioral detection, sandboxes, etc. Yes, that&#8217;s a good move, but they can&#8217;t check all of the system activity and again there are many ways to bypass it. So why bother?</p>
<p>I mean, I still think it matters to have an antivirus on Windows. Especially for people who are not too techy. At least, it will detect the most basics threats and throw out alarms. There are thousands of such threats on Windows, and on this point antivirus offer a simple way to defeat them (though awareness and education are certainly more important).</p>
<p>But on Mac Os, and on Linux as well, there are very few threats. Once again, it is not that they are so much secure, but at the time I am writing, it is a fact.</p>
<p>So to summarize:</p>
<ul>
<li>very few threats on Mac OS and Linux</li>
<li>antivirus still massively rely on signature-based detection</li>
</ul>
<p>You see: if there is nothing much to detect, an antivirus is overhead. It will only eat some resources and fail anyway against coming threats.<br />
Just keeping the system up-to-date is certainly the best thing to do so far.</p>
<p>Well, so why did I set an antivirus? I was actually using it for my forensic analysis on Windows machines. It was a convenient way for me to have a local scanner that I could started on dumped suspicious processes, without having to connect on Viruscan. It used to be convenient when I was traveling without connection, but I can live without it.</p>
<h2>About Sophos for Mac OS</h2>
<p>So moreover this piece of software was crashing my laptop. The update part seems to be executed with root privileges, and for some reason it locks the system (not only mine, <a href="http://openforum.sophos.com/t5/Sophos-Anti-Virus-for-Mac-Home/Version-8-s-AutoUpdate-consistently-CRASHING/td-p/5957o29DA&amp;usg=AFQjCNGa-t6bKUNhGqDIdvtkicGvsdvMmg" target="_blank">look</a> <a href="http://openforum.sophos.com/t5/Sophos-Anti-Virus-for-Mac-Home/Sophos-AV-7-3-8C-Crashed-MacBook-Pro-AGAIN-Unacceptable-Software/td-p/5397" target="_blank">at</a> <a href="http://openforum.sophos.com/t5/Sophos-Anti-Virus-for-Mac-Home/Given-up-temporarily-on-Sophos-for-Mac/td-p/3703" target="_blank">the</a> forums). Not to mention that having such a component may offer more room to malicious code to exploit the kernel&#8230;</p>
<p>A shame, a pure piece of crap. Now that I removed it, I am enjoying an uptime of about 30 days!</p>
<p><img class="aligncenter size-full wp-image-1235" title="Sophos Antivirus for Mac OS: a piece of crap" src="/wp-content/uploads/2012/06/1086d0317ba5fbde3728edad856d5744.js" /></p>
<h2>Conclusion</h2>
<p>Sophos Antivirus for Mac OS is pure crap, run to remove it if it happens to be on your computer.</p>
<p>Anyway, you don&#8217;t need an antivirus on Mac OS. Moreover, it seems that several vendor offer solution that lack of maturity and testing on this platform. So you would actually degrade your system stability and security if you would installed on of these.</p>
<p>And Mac OS is a nice Unix-based desktop alternative to have the work done, even though sadly it is not open-source.</p>
]]></content:encoded>
			<wfw:commentRss>/2012/06/05/misc-rants-on-linux-desktop-mac-os-and-antivirus.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to physically identify a software RAID disk member</title>
		<link>/2010/09/25/how-to-physically-identify-a-software-raid-disk-member.html</link>
		<comments>/2010/09/25/how-to-physically-identify-a-software-raid-disk-member.html#comments</comments>
		<pubDate>Fri, 24 Sep 2010 23:22:14 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[SMART]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=907</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=907</guid>
		<description><![CDATA[What you need: a good earing smartmontools Indeed, so far, I haven&#8217;t found anything better than launching a process making a lot of disk activity. This command just do it: % sudo smartctl -t short /dev/sda The &#8220;short&#8221; test will give you a few minutes to carefully listen and select the right disk. Well, it...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2010/09/25/how-to-physically-identify-a-software-raid-disk-member.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<p>What you need:</p>
<ul>
<li>a good earing</li>
<li>smartmontools</li>
</ul>
<p>Indeed, so far, I haven&#8217;t found anything better than launching a process making a lot of disk activity.</p>
<p>This command just do it:</p>
<pre>% sudo smartctl -t short /dev/sda</pre>
<p>The &#8220;short&#8221; test will give you a few minutes to carefully listen and select the right disk.</p>
<p>Well, it sure is pretty primitive! But do you know anything better?</p>
<p>By the way, <a title="Raid recovery procedure" href="http://www.anchor.com.au/hosting/support/Linux_Software_RAID_Repair" target="_self">there</a> is a good article for the recovery procedure.</p>
]]></content:encoded>
			<wfw:commentRss>/2010/09/25/how-to-physically-identify-a-software-raid-disk-member.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenSSL : CVE-2009-3555 security fix and mod_ssl client authentication breakage</title>
		<link>/2009/11/28/openssl-cve-2009-3555-security-fix-and-mod_ssl-client-authentication-breakage.html</link>
		<comments>/2009/11/28/openssl-cve-2009-3555-security-fix-and-mod_ssl-client-authentication-breakage.html#comments</comments>
		<pubDate>Sat, 28 Nov 2009 16:08:50 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Vulnerability]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=524</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=524</guid>
		<description><![CDATA[A security advisory on OpenSSL has recently been published. Details are there and there. It is vulnerable to a MiTM attack where the attacker can intercept and retrieve the credential to a trusted HTTPS website, by intercepting the session cookie sent back to the client. A proof of concept of an attack against Twitter was...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2009/11/28/openssl-cve-2009-3555-security-fix-and-mod_ssl-client-authentication-breakage.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<p>A security advisory on OpenSSL has recently been published. Details are <a title="CVE-2009-3555" href="http://secunia.com/advisories/cve_reference/CVE-2009-3555/">there</a> and <a title="renegociation vulnerability" href="http://www.securegoose.org/2009/11/tls-renegotiation-vulnerability-cve.html">there</a>.</p>
<p>It is vulnerable to a <strong>MiTM attack </strong>where the attacker can intercept and retrieve the credential to a trusted HTTPS website, by intercepting the session cookie sent back to the client.</p>
<p>A proof of concept of an attack against Twitter was made.</p>
<p>Fine. But so far, <strong>the answer was to just disable any renegociation</strong>.</p>
<p>This actually causes some issues with SSL session timeout and totally broke client authentication.</p>
<p>I got into problems because of the latter. I am using client authentication for some location of my web server, and I recently could not connect anymore to these with the following log in apache :</p>
<pre>[Tue Nov 24 16:56:15 2009] [debug] ssl_engine_kernel.c(1912): OpenSSL:Exit: error in SSLv3 read client hello A
[Tue Nov 24 16:56:15 2009] [error] [client x.x.x.x] Re-negotiation handshake failed: Not accepted by client!?</pre>
<p>I first was not aware of the openssl patch and tried almost anything possible. My focus was, of course, on the certificate and the client.<br />
But, a nice guy on IRC #suse,<strong> Stittel</strong>, had a good hunch and suggested me to look at the CVE-2009-3555 fix.</p>
<p>After more tests, it was quickly confirmed to work well with older versions of OpenSSL (as shipped in Debian Lenny).<br />
Finally, I downgraded the OpenSSL version on my openSUSE box to a version prior to the CVE-2009-3555 fix and it just worked fine.</p>
<p>Then, I dig into it and found a lot of interesting reports <a href="https://bugzilla.redhat.com/show_bug.cgi?id=533125" target="_blank">there</a> and <a href="http://old.nabble.com/TLS-renegotiation-disabling-:-mod_ssl-and-OpenSSL--0.9.8l-td26285568.html" target="_blank">there</a>. So far it is a real mess.<br />
In short, the breakage will stay as long as browsers don&#8217;t also include a patch to avoid renegotiation.<br />
So far, I could not find a browser that does include a patch.<br />
If anyone reading it knows a version that does it, please let me know.</p>
<p>Meanwhile, you have actually the choice between :</p>
<ul>
<li>low security by deactivating client authentication on your server</li>
<li>low security by keeping a vulnerable version of OpenSSL</li>
</ul>
<p>As my server is not very exposed, I chose the latter, but that&#8217;s not satisfying.  It is not recommended, but if like me you need to use client authentication with mod_ssl on openSUSE 11.2, do :</p>
<pre>% zypper install --from repo-oss openssl openssl-certs libopenssl0_9_8 libopenssl0_9_8-32bit</pre>
<p>where repo-oss is the alias to the 11.2 release (without updates) on your system.</p>
<p>What a brutal way to fix an issues without much notification and consideration to the users ! Even the log message is wrong and just confusing the administrator&#8230;</p>
<p><em>PS 1 : thanks again to Stittel for the good hint (I hope you will come by here) and to the always nice and helpful #suse channel in general ;)</em></p>
<p><em>PS 2 : <a href="https://bugzilla.novell.com/show_bug.cgi?id=558176" target="_blank">bug reported</a> on openSUSE bugzilla</em></p>
]]></content:encoded>
			<wfw:commentRss>/2009/11/28/openssl-cve-2009-3555-security-fix-and-mod_ssl-client-authentication-breakage.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>openSUSE kernel sources : patching against sock_sendpage() NULL Pointer Dereference vulnerability</title>
		<link>/2009/08/17/opensuse-kernel-sources-patching-against-sock_sendpage-null-pointer-dereference-vulnerability.html</link>
		<comments>/2009/08/17/opensuse-kernel-sources-patching-against-sock_sendpage-null-pointer-dereference-vulnerability.html#comments</comments>
		<pubDate>Mon, 17 Aug 2009 12:47:34 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Defense]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[Vulnerability]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=405</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=405</guid>
		<description><![CDATA[I am using the 2.6.30 kernel sources from Kernel:linux-next and noticed that it has not yet been patched against the ’sock_sendpage()’ NULL Pointer Dereference vulnerability. The threat is serious as it could allow a local user to gain root privileges. Those who compile their own 2.6.x kernel should apply this patch (from Linus, check there...<br><i class="icon-right-hand"></i> <span class="read-more"><a href="/2009/08/17/opensuse-kernel-sources-patching-against-sock_sendpage-null-pointer-dereference-vulnerability.html">Continue Reading</a></span>]]></description>
				<content:encoded><![CDATA[<p>I am using the 2.6.30 kernel sources from Kernel:linux-next and noticed that it has not yet been patched against the <a title="Null pointer deference" href="http://www.securitytracker.com/alerts/2009/Aug/1022732.html" target="_blank"><strong>’sock_sendpage()’ NULL Pointer Dereference</strong></a> vulnerability.</p>
<p>The threat is serious as it could allow a local user to gain root privileges.</p>
<p>Those who compile their own <strong>2.6.x kernel</strong> should apply <a href="/wp-content/uploads/2009/08/sock_sendpage.patch">this patch</a> (from Linus, check <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e694958388c50148389b0e9b9e9e8945cf0f1b98">there</a> for more info) .</p>
<p>Within your kernel source folder :</p>
<pre>$ patch -u -p0 &lt; sock_sendpage.patch</pre>
<p>I hope an official patch will be released soon for all kernels. I did not check if the 11.1 kernel has already been patched or not.</p>
]]></content:encoded>
			<wfw:commentRss>/2009/08/17/opensuse-kernel-sources-patching-against-sock_sendpage-null-pointer-dereference-vulnerability.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Btrfs : a key feature coming to Linux</title>
		<link>/2009/04/23/btrfs-a-key-feature-coming-to-linux.html</link>
		<pubDate>Thu, 23 Apr 2009 14:17:25 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[File system]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=350</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=350</guid>
		<description><![CDATA[Great and clear article there from Linux magazine that sums up the new BTRFS file system. I can&#8217;t wait for it to become stable ! UPDATE 2009-02-05 : I hope to see this soon on a Linux distribution.]]></description>
				<content:encoded><![CDATA[<p><a title="BTRFS article" href="http://www.linux-mag.com/id/7308/1/" target="_blank">Great and clear article there from Linux magazine</a> that sums up the new BTRFS file system.</p>
<p>I can&#8217;t wait for it to become stable !</p>
<p>UPDATE 2009-02-05 : I hope to see <a href="http://blogs.sun.com/erwann/entry/new_time_slider_features_in">this</a> soon on a Linux distribution.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Linux vs Windows benchmark</title>
		<link>/2009/02/05/linux-vs-windows-benchmark.html</link>
		<pubDate>Thu, 05 Feb 2009 20:12:43 +0000</pubDate>
		<dc:creator><![CDATA[phocean]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.phocean.net/?p=331</guid>
		<guid isPermaLink="false">http://www.phocean.net/?p=331</guid>
		<description><![CDATA[I found this benchmark, comparing the performance of Ubuntu, Windows Vista and 7 worth reading. Our Linux kernel does a great job !]]></description>
				<content:encoded><![CDATA[<p>I found this <a href="http://www.tuxradar.com/node/33">benchmark</a>, comparing the performance of Ubuntu, Windows Vista and 7 worth reading.<br />
Our Linux kernel does a great job !</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
