<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3951135871975901019</id><updated>2011-12-01T03:19:39.411-08:00</updated><category term='php php5 design patterns singleton mvc oop object oriented'/><title type='text'>Digital Patch - Linux, Open Source &amp; Technologies Tutorials</title><subtitle type='html'>In this blog I'll talk you about Linux and solutions regarding security, software development and my own FOSS projects. All tutorials and Videos here contained are licensed under &lt;i&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"&gt;Creative Commons License&lt;/a&gt;&lt;/i&gt;&lt;br&gt;&lt;br&gt;If you are interested in IT Security,&lt;b&gt; join&lt;/b&gt; us at &amp;quot;GNU/Linux Security &amp;amp; Hardening&amp;quot; group on Linkedin&lt;br&gt;&lt;br&gt;"I'm not a coder better than others... My vision about things makes the difference..." AF</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Angelo F.</name><uri>http://www.blogger.com/profile/18348616343123193453</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-2065000482002570993</id><published>2011-09-26T11:27:00.000-07:00</published><updated>2011-09-27T12:09:12.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php php5 design patterns singleton mvc oop object oriented'/><title type='text'>Implementing Singleton Design Pattern with PHP 5 (only-one persistent object in Session, MVC approach, etc.)</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;u&gt;(Draft version, It could be improved or modified)&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In this article I'll explain you how to implement an application based on &lt;i&gt;Singleton&lt;/i&gt; design pattern by using object oriented PHP 5.x.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before starting, You must know some concepts for understanding the whole article.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Please, read the paragraph below before continue.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Requirements&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;You need to know:&lt;br /&gt;&lt;br /&gt;1) The concepts about "&lt;i&gt;static&lt;/i&gt;" methods and properties of a &lt;i&gt;Php Class &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2) What is a &lt;i&gt;MVC&lt;/i&gt; (Model / View / Controller ) paradigma and how it works&lt;br /&gt;&lt;br /&gt;3) What are "&lt;i&gt;sessions&lt;/i&gt;" in &lt;i&gt;Php&lt;/i&gt; and how they works&lt;br /&gt;&lt;br /&gt;4) Obviously you need to know the &lt;i&gt;"Design Patterns"&lt;/i&gt; concepts and in particular what is a "&lt;i&gt;Singleton&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Let's start&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before starting, I think that is important to specify that every time you call a PHP script, all the variables, handlers, etc. will &lt;i&gt;"born" &lt;/i&gt;when the script is called (request) and they will be &lt;i&gt;"destroyed"&lt;/i&gt; when the script ends.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Indeed for the Php engine, every script is considered a stand alone "&lt;i&gt;entity&lt;/i&gt;" althought it is part of an application &lt;i&gt;(&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: 14px;"&gt;Shared Nothing Architecture)&lt;/span&gt;&lt;/i&gt;; each script must be considered&amp;nbsp;&lt;i&gt;"unlinked"&lt;/i&gt; from the status of the other scripts(... and itself if you call it one more time...);&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This means that every time you need to process something in different scripts (e.g. database, files, variables, objects, etc.) you need to re-open a connection to a databases, re-instantiate and object, etc.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you need to pass internal information between scripts (eg. a value, a correct users authentication, permissions, etc.) you need to use "&lt;i&gt;sessions&lt;/i&gt;".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;By using "&lt;i&gt;session&lt;/i&gt;", you can store values (or sometimes entire objects) and passing them between scripts; by using this method you can &lt;i&gt;"simulate"&lt;/i&gt; a persistence of data in your "application" and a "connection" between scripts(in a similar way of Java).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;Note that:&lt;br /&gt;&lt;br /&gt;1) Php resources (like db connection or files handlers) cannot be stored into session, so you need to reopen them in EVERY script.&lt;br /&gt;2) The session allows the developer to store information for each single user, so information cannot be "&lt;i&gt;shared&lt;/i&gt;" between users&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Some notes about the implementation of the singleton design pattern with PHP&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;What I wrote previously is very important according to the&amp;nbsp;&lt;i&gt;"Singleton"&lt;/i&gt; concepts (when applied to Php).&lt;br /&gt;Singleton-model based class indeed requires that its &lt;i&gt;"status"&lt;/i&gt; must &lt;i&gt;"survive"&lt;/i&gt; in the whole &lt;i&gt;application&lt;/i&gt; and not on a single script, so the only way to satisfy this concept is the use of Php Sessions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Another important thing, because &lt;i&gt;Sessions&lt;/i&gt; cannot be shared between users the application cannot have a single istance of a Singleton class, but a the developer had to create an "indipendent" singleton class for each user.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;A pratical example of Singleton design pattern&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;When you read about &lt;i&gt;Singleton&lt;/i&gt; on blogs, books, magazine you'll find that it is usually used for storing the &lt;i&gt;"status"&lt;/i&gt; of the actions made by one or more users into an &lt;i&gt;"application"&lt;/i&gt;. In other words they talks about "&lt;i&gt;logging&lt;/i&gt;".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The code that you'll find in this page, will show you how to keep track of clicks on one or more php pages by using a only one object (which implements singleton) that will be "passed" between scripts.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As required by the singleton design pattern, only one object will we created by using PHP static members and properties. Before the end of the excecution of a script, the object is serialized and stored in session so it'll survive to the &lt;i&gt;"garbage collector"&lt;/i&gt; of the Php engine.&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;The Code&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In the example, I use a separation between &lt;i&gt;business logic&lt;/i&gt; and &lt;i&gt;view&lt;/i&gt; (html pages) so it's more easily to describe code and make the things "clean".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you don't know this coding approach on Php, I suggest you to take a look to Model/View/Controller (MVC) concepts by googling around.&lt;/div&gt;&lt;br /&gt;Anyway, files involved into the example are:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;header.html&lt;/i&gt; -&amp;nbsp;This file will be included in view scripts for generating a valid "header" for&amp;nbsp;&lt;i&gt;xhtml&amp;nbsp;&lt;/i&gt;document&amp;nbsp;&amp;nbsp;&lt;i&gt;(page1.php, page2.php, clear.php, print.php)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;footer.html&lt;/i&gt;&amp;nbsp;- This file will be included in view scripts for generating a valid "footer" for&amp;nbsp;&lt;i&gt;xhtml &lt;/i&gt;document &amp;nbsp;&lt;i&gt;(page1.php, page2.php, clear.php, print.php). &lt;/i&gt;It also displays a set of links for calling every page of the "application".&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;controller.php&lt;/i&gt; - This file is the "controller" for the MVC model, it receives the parameter "func" by GET method and selects the correct action. When no parameter are passed, it'll will call the &lt;i&gt;print.php&lt;/i&gt; script that shows the content of the "log" stored into the singleton object&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;singleton.class.php&lt;/i&gt; - The implementation of a very simple class based on the Singleton design pattern.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;page1.php&lt;/i&gt; - When you click on the link for page1 (showed by footer.html), the &lt;i&gt;controller.php&lt;/i&gt; will be called, it will store on the log (by using singleton object) a "&lt;i&gt;track&lt;/i&gt;" of the page calling than it will show page1.php. This page represents one of the "view" side of the application.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;page2.php&lt;/i&gt; - Same as page1.php&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;clear.php&lt;/i&gt; - It'll clear all the log entries&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;print.php&lt;/i&gt; -&amp;nbsp;When you click on the link for page1 (showed by &lt;i&gt;footer.html&lt;/i&gt;), the &lt;i&gt;controller.php&lt;/i&gt; will be called, than the content of the log will be showed on the browser (taken from Singleton object)&lt;/div&gt;&lt;br /&gt;The aim of the whole application is to show how the singleton object will be inherit one time only and, because it's stored on session, it'll survive to garbage collecting of the Php Engine.&amp;nbsp;Indeed it's status (log lines) is not lost.&lt;br /&gt;For details about how every file works, see comments inside code.&lt;br /&gt;&lt;br /&gt;Note: All the code inside is released under GNU/GPL license version 2.1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The singleton class (singleton.class.php)&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phpclass singleton_class{private $log=array();private static $instance=NULL;        private function __construct()        {        }        private function __clone()        {        }        function add_log_line($line)        {                $this-&amp;gt;log[]=$line." logged at ".date("Y-m-d H:m:s");        }        function GetLog()        {                return($this-&amp;gt;log);        }        function LogReset()        {                $this-&amp;gt;log=array();        }        public static function get_singleton()        {                if(self::$instance==NULL) self::$instance=new singleton_class();                return(self::$instance);        }// When the singleton object is serialized/unserialized// the value of static variable will be lost// so you need to re-assign to the static $instance// the object by using restore_instance member (setter function)        public function restore_instance($session_instance)        {                self::$instance=$session_instance;        }}?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The controller (controller.php)&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phpsession_start();require "singleton.class.php";// Get parameter for controllerif(isset($_GET["func"])) $func=(int)$_GET["func"]; else $func=0;// Persistence of singleton object by using web server session if(isset($_SESSION["my_singleton"])) {// When the singleton object is serialized/unserialized// for passing it via $_SESSION// the value of static variables of the object will be lost// so you need to re-assign to the static $instance// the object by using restore_instance member (setter function)// after getting it from the $_SESSION  $singleton=unserialize($_SESSION["my_singleton"]);   $singleton-&amp;gt;restore_instance($singleton);  }else  { $singleton=singleton_class::get_singleton(); $singleton-&amp;gt;add_log_line("Logging start at:\n "); }switch ($func){ case 1:  $singleton-&amp;gt;add_log_line("PAGE1 ");  require("page1.php");  break; case 2:  $singleton-&amp;gt;add_log_line("PAGE2");  require("page2.php");  break; case 3:  $singleton-&amp;gt;LogReset();  $singleton-&amp;gt;add_log_line("Log reset ");  require("clear.php");  break; default:  $singleton-&amp;gt;GetLog();  require("print.php");  break;}$_SESSION["my_singleton"]=serialize($singleton);?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Page1 view (page1.php)&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phpinclude "header.html";echo "PAGE1 LOGGED ";include "footer.html";?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Page2 view (page2.php)&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phpinclude "header.html";echo "PAGE2 LOGGED";include "footer.html";?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Print log view (print.php)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phprequire "header.html";echo "&amp;lt;h2&amp;gt;Actions logged&amp;lt;/h2&amp;gt;\r\n";$i=0;foreach($log as $value)        {                echo "Line $i: $value&amp;lt;br /&amp;gt;\r\n";                $i++;        }require "footer.html";?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The log reset view (clear.php)&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?phpinclude "header.html";echo "Log reset done! ";include "footer.html";?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The "header" and "footer" template files&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Filename: header.html&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;&lt;textarea cols="60" rows="10"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt; &amp;lt;head&amp;gt;  &amp;lt;title&amp;gt;    A PHP-OOP application that implements a Class(object), based on the Singleton design pattern, which is persistent during the whole life of a user session    &amp;lt;/title&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;body&amp;gt;&amp;lt;!-- BODY (php script output) --&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Filename: footer.html&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;textarea cols="60" rows="10"&gt;&amp;lt;!-- FOOTER --&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;a href='controller.php'&amp;gt;Main page&amp;lt;/a&amp;gt; |&amp;lt;a href='controller.php?func=1'&amp;gt;Page 1&amp;lt;/a&amp;gt; |&amp;lt;a href='controller.php?func=2'&amp;gt;Page 2&amp;lt;/a&amp;gt; |&amp;lt;a href='controller.php?func=3'&amp;gt;Clear Log&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Some "Screenshots"&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Example1 - &lt;/b&gt;controller.php called without parameters&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;Actions logged&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Line 0: Logging start at: logged at 2011-09-26 16:09:54&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Main page&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Page 1&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Page 2&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Clear Log&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;b&gt;Example2 -&amp;nbsp;&lt;/b&gt;controller.php called with parameter func=1&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="display: inline !important; font-family: 'Times New Roman'; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;(The page1 is "visited", so a line in the log is stored)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;div style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;PAGE1 LOGGED&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Main page&amp;nbsp;|&amp;nbsp;Page 1&amp;nbsp;|&amp;nbsp;Page 2&amp;nbsp;|&amp;nbsp;Clear Log&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Example3 -&amp;nbsp;&lt;/b&gt;controller.php called without parameters but the with 1 event in the log&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;Actions logged&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Line 0: Logging start at: logged at 2011-09-26 16:09:54&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Line 1: PAGE1 logged at 2011-09-26 16:09:18&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Main page&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Page 1&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Page 2&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;|&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;Clear Log&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Notes&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I hope my code will help you! Let me know! ;)&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;See you, sincerely&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Angelo Fonzeca&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license" style="clear: left; color: #0b5394; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left; text-decoration: none;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;span class="Apple-style-span" style="border-color: initial; border-width: initial;"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; border-width: initial; position: relative;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt;&amp;nbsp;by&amp;nbsp;&lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" style="color: #073763; text-decoration: underline;" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo Fonzeca&lt;/a&gt;&amp;nbsp;are licensed under a&amp;nbsp;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license" style="color: #0b5394; text-decoration: none;"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; font-size: 15px; line-height: 20px;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: x-small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Courier New', Courier, FreeMono, monospace; font-size: 15px; line-height: 20px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-2065000482002570993?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/2065000482002570993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2011/09/implementing-singleton-design-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/2065000482002570993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/2065000482002570993'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2011/09/implementing-singleton-design-pattern.html' title='Implementing Singleton Design Pattern with PHP 5 (only-one persistent object in Session, MVC approach, etc.)'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-750397973187231354</id><published>2010-10-15T07:14:00.000-07:00</published><updated>2011-05-04T08:07:24.554-07:00</updated><title type='text'>How-to: Harden a Linux Web Server (Overview)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Introduction&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Last weeks on "System administrators" group on Linkedin, the members talked about how to harden a GNU/Linux web server for an hacking contest.&lt;br /&gt;Because I think it was born an intersting "to do" list about the argument during a post of mine, I have taken the decision to report in this article the ideas and my vision of the problem.&lt;br /&gt;&lt;br /&gt;The following words are what I wrote...&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hardening Linux step-by-step&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you need to protect a server with in mind an high level of security, I suggest you to think to three level of hardening. &lt;b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;High level (client side web services)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;You should consider what type of &amp;nbsp;&lt;i&gt;“services”&lt;/i&gt; will run &lt;i&gt;“inside”&lt;/i&gt; your daemons.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;For example: a &lt;i&gt;“LAMP application”&lt;/i&gt;, &lt;i&gt;CMS&lt;/i&gt; or &lt;i&gt;“simple html pages”&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;In the first two cases you should harden every service like &lt;i&gt;Linux  Kernel&lt;/i&gt;(see next), &lt;i&gt;Apache web server&lt;/i&gt; (and its modules), &lt;i&gt;Mysql&lt;/i&gt; and &lt;i&gt;Php&lt;/i&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;One of the best solution for Apache, as told previously, is &lt;i&gt;mod_security&lt;/i&gt;. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;It allows to deny some types of escalation by blocking some possible  attack techniques. This also helps to improve the strength of the whole  services, because potentially could block issues relative to some  technologies (e.g. Php bug/Exploit) not fixed yet by the O.S. Vendor.  Mod security also logs every attack.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;You should also:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;write your php software (and configure mysql) to deny, for example, sql injection&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;modify php.ini properly and use some solutions like “Suhosin”&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;If you use only “&lt;i&gt;html&lt;/i&gt;”, you could use only mod_security.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Mid level ( System services – Mailserver, OpenSSH, etc.)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;If an attacker will pass the previous protections, you should give to  your system service a second &lt;i&gt;possibility&lt;/i&gt; to “&lt;i&gt;survive&lt;/i&gt;” and/or block  priviledges escalation.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;div style="text-align: left;"&gt;A good start is isolatating every service by using &lt;i&gt;chroot&lt;/i&gt;. Postfix, for  example, supports natively chroot environments. Apache and other  services can be used in chroot without problems by following how-tos  around the web.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Low Level&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;If the attacker will pass the previous two levels... He is skilled and smart! :)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;So, if you want to really improve the strength of your system... you  should use patched kernel and MAC (Mandatory Access Control) to limitate  damages and (maybe) it could prevent root escalation.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If an attacker will pass ALL the previous protections, he will win the contest! (No good thing... I think )&amp;nbsp;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Last but not least...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many daemons can be hardened to prevent attacks in easily manner by using their internal configuration. Indeed all the services you use on your system could introduce security issues. But for each one there is a solution ;)&lt;br /&gt;&lt;br /&gt;In particular in the past - on my blog - I wrote a set of articles regarding the hardening of OpenSSH (if you need to have access to your system remotely):&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;* OpenSSH daemon hardening - Modify the configuration file&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fdigitalpatch%2Eblogspot%2Ecom%2F2010%2F02%2Fintroducing-openssh-openssh-is-deamon%2Ehtml&amp;amp;urlhash=aVjB" target="_blank" title="New window will open"&gt;http://digitalpatch.blogspot.com/2010/02/introducing-openssh-openssh-is-deamon.html&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;div style="text-align: left;"&gt;* How to use RSA/DSA Keys&lt;/div&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fdigitalpatch%2Eblogspot%2Ecom%2F2010%2F02%2Fopenssh-hardening-part-2-how-to-use-rsa%2Ehtml&amp;amp;urlhash=jRjl" target="_blank" title="New window will open"&gt;http://digitalpatch.blogspot.com/2010/02/openssh-hardening-part-2-how-to-use-rsa.html&lt;/a&gt; &lt;/div&gt;&lt;span class="text"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;* Setup a chroot environment on CentOS 5 with JailKit&lt;/div&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fdigitalpatch%2Eblogspot%2Ecom%2F2010%2F03%2Fopenssh-daemon-hardening-part-3-setup%2Ehtml&amp;amp;urlhash=ACnc" target="_blank" title="New window will open"&gt;http://digitalpatch.blogspot.com/2010/03/openssh-daemon-hardening-part-3-setup.html&lt;/a&gt; &lt;/div&gt;&lt;span class="text"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;* File Integrity Checkers and Rootkit Revealers for Gnu/Linux (incomplete)&lt;/div&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fdigitalpatch%2Eblogspot%2Ecom%2F2010%2F04%2Ffile-integrity-check-and-rootkit%2Ehtml&amp;amp;urlhash=eCUp" target="_blank" title="New window will open"&gt;http://digitalpatch.blogspot.com/2010/04/file-integrity-check-and-rootkit.html&lt;/a&gt; &lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;As told previously for the Apache webserver you should use "&lt;i&gt;mod_security&lt;/i&gt;", a sort of "&lt;i&gt;firewall&lt;/i&gt;"  for the http protocol (it is useful for preventing attacks to php apps  and/or unsecure modules of Apache or bugs not fixed yet). You will find other info at&amp;nbsp;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Emodsecurity%2Eorg%2F&amp;amp;urlhash=-eDI" target="_blank" title="New window will open"&gt;http://www.modsecurity.org/&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;For preventing brute force attacks to OpenSSH (e.g. password guessing) you could use&amp;nbsp;&lt;i&gt;fail2ban. &lt;/i&gt;See&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Efail2ban%2Eorg%2Fwiki%2Findex%2Ephp%2FMain_Page&amp;amp;urlhash=hbEq" target="_blank" title="New window will open"&gt;http://www.fail2ban.org/wiki/index.php/Main_Page&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;If you are "paranoic" (&lt;u&gt;read: high level of security for critical server&lt;/u&gt;) you should use:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;&lt;i&gt;Grsecurity&lt;/i&gt; - &lt;/span&gt;                                                      &lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fgrsecurity%2Enet%2F&amp;amp;urlhash=R0xO" target="_blank" title="New window will open"&gt;http://grsecurity.net/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;li&gt;&lt;span class="text"&gt;&lt;i&gt;SELinux&lt;/i&gt; - &lt;/span&gt;                                                      &lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fit%2Ewikipedia%2Eorg%2Fwiki%2FSecurity-Enhanced_Linux&amp;amp;urlhash=sClo" target="_blank" title="New window will open"&gt;http://it.wikipedia.org/wiki/Security-Enhanced_Linux&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;All the above "fixes" will help you to prevent the escalation of priviledges to attackers at many levels.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Finally:&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Keep your distro updated (apt-get, yum, etc) and check logs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Turn off the running services  that aren't important for the aims of your server and keep secure your  polices.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Don't give your users the option to choose "&lt;i&gt;stupid&lt;/i&gt;" (not too much complex) password&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;One more suggestion!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you are interested in IT Security,&lt;b&gt;&amp;nbsp;join&lt;/b&gt;&amp;nbsp;us at "GNU/Linux Security &amp;amp; Hardening" group on&amp;nbsp;&lt;i&gt;&lt;a href="http://it.linkedin.com/pub/angelo-fo/8/686/180"&gt;Linkedin&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Thank you.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span class="comment-body" data-li-comment-text=""&gt;&lt;span class="text"&gt;Bye&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Your&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Angelo F.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" style="font-size: small;" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F.&lt;/a&gt; are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-750397973187231354?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/750397973187231354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/10/how-to-harden-linux-web-server-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/750397973187231354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/750397973187231354'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/10/how-to-harden-linux-web-server-overview.html' title='How-to: Harden a Linux Web Server (Overview)'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-1863562945339460349</id><published>2010-09-27T06:48:00.000-07:00</published><updated>2011-05-04T08:07:55.915-07:00</updated><title type='text'>GStreamer Introduction (Draft Version)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this post, I'll give you an "introduction" to the "GStreamer Framework", which allows easily manipulation/transformation of digital "media" like audio, video,&amp;nbsp;etc. under GNU/Linux and Windows.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What is GStreamer?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;GStreamer is a framework, specifically a set of libraries written in C language,&amp;nbsp;which&amp;nbsp;allows a developer (you) to manage/manipulate/transform multimedia content through a standard programming approach&amp;nbsp;&amp;nbsp;which can be applied to sound and/or video data.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Key concepts of the tools are the use of elements concatenation, each with a&amp;nbsp;very specific function, and the so-called "pipeline".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The correct approach is to view "elements" and "pipelines" as a sort of "blackboxes"&amp;nbsp; which are linked together using special "Links".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This allows to pass the content (e.g. mp3 file), produced by a single element, to another&amp;nbsp;element - by using the pipeline - thanks to the use of Input / Output "ports"&amp;nbsp;(Called pad sink / source pad).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Thus an information can be introduced into the pipeline cascade process, so it&amp;nbsp;will pass between multiple&lt;/div&gt;&lt;div style="text-align: justify;"&gt;"stages" to be manipulated, transformed, then it can be stored and/or played.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A classical example is the need to convert a media file in the format "x" into a media&amp;nbsp; file in the format&amp;nbsp;"y".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If this operation is made from scratch by a programmer, it is required in-depth&amp;nbsp;knowledge of both formats and the necessary expertise to treat them, interpret&amp;nbsp;and make the appropriate conversions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What happens if is it necessary to convert the file to another format "z"?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It would be necessary to modify most part of the software for interpreting information and&amp;nbsp;convert and adapt it appropriately to the new format.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This structure will be particularly rigid and it not will be easy exchange&amp;nbsp;"direction" between source and destination (eg. convert "z" format "x" format) &amp;nbsp; unless&amp;nbsp;start defining standards for interfacing and makes interchangeable the various&amp;nbsp;stages( e. g. random concatenation of the stages )&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The approach of the GStreamer framework is an 'extremims' of this concept.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It basically uses 'black box' with specific functions (manipulation of audio or video) and the possibility to create a&amp;nbsp;concatenation - in an arbitrary manner - between them (pipeline) so the developer can easily solve all problems exposed in the previous example.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following is a brief definition of the elements that are part of&amp;nbsp;"Gstreamer" with the specific methods for operate with them.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Elements&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The main concept of the framework is the 'element' (also called plug-in). It's a&amp;nbsp;sort of 'black box' that against a number of inputs and outputs "ports" - called "pads" - is able&amp;nbsp;to manipulate (modify or transform) an information (eg Convert an information in&amp;nbsp;"x" format into an information of "y" format).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There are three types of elements, namely:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;● Source elements, these elements are able to 'introduce' data into the pipeline flow.&amp;nbsp;Consider, for example, an element capable of reading information sampled and&amp;nbsp;digitized&amp;nbsp;through a sound card in your PC and turn it into inside the pipeline in a very&amp;nbsp;specific format (e.g. raw samples)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;● Sink elements, these elements - placed at the end of the chain in the pipeline&amp;nbsp;- allow to store/redirect a manipulated "data flow" to a destination such as a file or an hardware device (eg.&amp;nbsp;soundcard audio output)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;● Filter elements are those 'black boxes' that have one or more inputs and one&amp;nbsp;or more outputs and essentially allow the manipulation of information (e.g. raising the&amp;nbsp;volume of a sound of a certain percentage, add delay effect, chorus effect, etc.)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The elements are connected by the "links'" by using special inputs or outputs ports - called pads -&amp;nbsp;which allows the "communication" between "black box(elements)".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Link pads, caps&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A 'link' represents a connection between the output of an element to the input of&amp;nbsp;another, which allows of enriching the content between "black boxes" connected in series.&amp;nbsp;The inputs and the outputs ports are called "source pads" and "sink pads"; pads can be connected&amp;nbsp;to each other only if there is a "compatibility" between them.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For example, you can connect two elements that manipulate sounds with pads that&amp;nbsp;are "compatible" with data processed (e.g. use of sounds with 16bit format,&amp;nbsp;44.1kHz sampling, in raw form by both).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To determine if a pad "output" is compatible with a pad "input", each of them&amp;nbsp;has an associated information called "capabilities" (Caps) that can provide if an "element"can be properly connected.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It is also possible to set the elements for using a particular format, according&amp;nbsp;with requirements (of course if they provides multiple formats).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;By analogy with reality, you could consider a&amp;nbsp;sound system that consists of an electric guitar, a "distortion" effect and an amplifier.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this case the guitar is the "source element" , thanks to its output&amp;nbsp; jack connector (Source pad) and its cable (link) carries the sound into a &lt;i&gt;distortion&lt;/i&gt; effect&amp;nbsp;(filter&amp;nbsp;element) that with it's input port transforms (distort) the sound and put it out&amp;nbsp;(Source pad) - by another cable (link) - to the amplifier that reproduces the sound (sink element).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The caps in this "real" case represent the physical specifications of the&amp;nbsp;connectors of each device, the currents involved, the impedence, and the&amp;nbsp;electrical signals that every device can receive and emit.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Thread, State, and Signal Bus GStreamer&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once the developer has defined the pipeline and properly set the link between the pads of&amp;nbsp;each element involved, it is easy to start the processing of multimedia data.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is done by setting the value of the "state" of the pipeline and its elements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The states where a pipeline can be (or be forced to be) are different and they are&amp;nbsp;described below:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1) GST_STATE_NULL "Default state" - Resources are not allocated and are&amp;nbsp;de-allocated if comes from a different state&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2) GST_STATE_READY - Resources are allocated and ready for use&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3) GST_STATE_PAUSE - The resources are setting up but currently "paused"&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4) GST_STATE_PLAYING - Resources are processed by the elements in the pipeline&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once a pipiline is set to the status of 'Playing', It will start a separate threads (a part of code that runs as 'individual' and in 'parallel'&amp;nbsp;respecting to&amp;nbsp;main program) managed directly by the framework.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When in "playing" state, the process above takes the flow of multimedia data from the source pad and&amp;nbsp;gradually pass it between the various "stages" (elements) of the pipeline.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Each one will makes its appropriate data processing and then pass the result&amp;nbsp;through its sinkpad.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;However, this thread is totally separate from the user control which cannot act&amp;nbsp;directly during the whole process.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For this reason GStreamer manages the so called 'signals' and uses the concept of 'bus'.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Basically the information signals are sent to the various elements by the&amp;nbsp;programmer in order to allow the intervention on the data flow in "real time".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These signals "pass" through the "bus". The bus can be constantly questioned&amp;nbsp;(polls) or, if specific signals are present, it is possible to call special&amp;nbsp;functions connected to them.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Usually the signals are intercepted asynchronously. They are placed in a "queue"&amp;nbsp;and none can known when the framework will examine the signal flow.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;However, with proper precautions, you can force the interception of synchronous&amp;nbsp;signals, so you can check and control the pipeline in "real time" manner, when&amp;nbsp;an event occurs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As discussed below, in fact, sometimes it is appropriate to intercept signals&amp;nbsp;synchronously when a specific characteristics is changing 'in progress' and in&amp;nbsp;the exact moment when a 'signal' is issued.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What's next?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In a future post I'll show you how to use GStreamer with C language(under&amp;nbsp;GNU/Linux) starting from a real "case" of audio manipulation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stay tuned!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-1863562945339460349?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/1863562945339460349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/09/gstreamer-introduction-draft-version.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/1863562945339460349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/1863562945339460349'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/09/gstreamer-introduction-draft-version.html' title='GStreamer Introduction (Draft Version)'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-5380631781544650550</id><published>2010-07-18T01:40:00.000-07:00</published><updated>2011-05-04T09:49:09.860-07:00</updated><title type='text'>How to survive to OpenSuse 11.3 upgrade on PCs with NVIDIA Video Cards</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;i&gt;Introduction&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In my opinion OpenSuse is one of the best GNU/Linux distribution... It is stable, it has maniac precision for the particulars, "branded" desktop... so you are REALLY productive since the first login and It's cool!&lt;br /&gt;&lt;br /&gt;Another invaluable feature is th "YAST2 tool", a very fast, smart and useful control panel for services and system.&lt;br /&gt;&lt;br /&gt;Anyway, I use this OS in my production PCs... OpenSuse never disappointed me!&lt;br /&gt;&lt;br /&gt;On 15/07/2010 the 11.3 release has been published! I was excited to upgrade my systems (usually I never made upgrade of my OS as soon as a distribution is released, but I trust in Novell/OpenSuse quality of service, so I upgraded).&lt;br /&gt;&lt;br /&gt;According to my upgrade experience, in this guide I'll show you how to&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Upgrade the system easily (from 11.2)&lt;/li&gt;&lt;li&gt;How to prevent a xorg start failure after the first reboot ( if you have an NVIDIA card )&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Requirements&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;1) Patience&lt;br /&gt;2) Fast Connection (if you have not too much patience)&lt;br /&gt;3) A recent backup of you home directory and important files&lt;br /&gt;4) 8gb free space on your /&lt;br /&gt;5) .........Patience ;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;First step! (Only if you have a NVIDIA card)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to&amp;nbsp;&lt;a bitly="BITLY_PROCESSED" href="http://www.nvidia.it/Download/index5.aspx?lang=en"&gt;http://www.nvidia.it/Download/index5.aspx?lang=en&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Select your operating system (Linux 64bit or 32bit) and your language&lt;/li&gt;&lt;li&gt;Accept agreement if you like it, then click on buttons for download.&lt;/li&gt;&lt;li&gt;Download the file&amp;nbsp;NVIDIA-Linux-x86_64-256.35.run (or newer)&lt;/li&gt;&lt;li&gt;Save it into your home directory!&lt;/li&gt;&lt;li&gt;Connect your pc to UPS!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Step two!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Briefly, go to your terminal console, become "root" and follow these steps&amp;nbsp;&amp;nbsp;(full description&amp;nbsp;&lt;a bitly="BITLY_PROCESSED" href="http://en.opensuse.org/SDB:System_upgrade"&gt;here&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;1) Run&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper modifyrepo --enable repo-update&lt;/pre&gt;&lt;br /&gt;2) Add the update repository&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper addrepo --check --name 'openSUSE-11.2-Update' &lt;a bitly="BITLY_PROCESSED" class="external free" href="http://download.opensuse.org/update/11.2/" rel="nofollow" style="background-attachment: scroll; background-clip: initial; background-color: transparent; background-image: url(http://en.opensuse.org/skins/bento/http.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #006699; cursor: pointer; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 18px; padding-top: 0px; text-decoration: none;" title="http://download.opensuse.org/update/11.2/"&gt;http://download.opensuse.org/update/11.2/&lt;/a&gt; repo-update&lt;/pre&gt;&lt;br /&gt;3) Update the system&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper refresh&lt;br /&gt;zypper update&lt;/pre&gt;&lt;br /&gt;4) Install your kernel source (will be used later...)&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper install kernel-source&lt;/pre&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Step three! It's time to upgrade&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Disable old repositories&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;zypper modifyrepo --all --disable&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;And set the 11.3 repositories&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper addrepo --name "openSUSE-11.3 OSS" &lt;a bitly="BITLY_PROCESSED" class="external free" href="http://download.opensuse.org/distribution/11.3/repo/oss/" rel="nofollow" style="background-attachment: scroll; background-clip: initial; background-color: transparent; background-image: url(http://en.opensuse.org/skins/bento/http.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #006699; cursor: pointer; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 18px; padding-top: 0px; text-decoration: none;" title="http://download.opensuse.org/distribution/11.3/repo/oss/"&gt;http://download.opensuse.org/distribution/11.3/repo/oss/&lt;/a&gt; repo-11.3-oss&lt;br /&gt; zypper addrepo --name "openSUSE-11.3 Non-OSS" &lt;a bitly="BITLY_PROCESSED" class="external free" href="http://download.opensuse.org/distribution/11.3/repo/non-oss/" rel="nofollow" style="background-attachment: scroll; background-clip: initial; background-color: transparent; background-image: url(http://en.opensuse.org/skins/bento/http.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #669933; cursor: pointer; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 18px; padding-top: 0px; text-decoration: underline;" title="http://download.opensuse.org/distribution/11.3/repo/non-oss/"&gt;http://download.opensuse.org/distribution/11.3/repo/non-oss/&lt;/a&gt; repo-11.3-non-oss&lt;br /&gt; zypper addrepo --name "openSUSE-11.3 Updates" &lt;a bitly="BITLY_PROCESSED" class="external free" href="http://download.opensuse.org/update/11.3/" rel="nofollow" style="background-attachment: scroll; background-clip: initial; background-color: transparent; background-image: url(http://en.opensuse.org/skins/bento/http.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #006699; cursor: pointer; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 18px; padding-top: 0px; text-decoration: none;" title="http://download.opensuse.org/update/11.3/"&gt;http://download.opensuse.org/update/11.3/&lt;/a&gt; repo-11.3-update&lt;/pre&gt;&lt;br /&gt;Then write&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper ref&lt;/pre&gt;&lt;br /&gt;Finally write&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Trebuchet MS', Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;zypper dup --download "in-advance"&lt;/pre&gt;&lt;br /&gt;The previous command downloads all the packages before upgrading (more and more secure procedure).&amp;nbsp;Go away from your system and come back... the next day...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Step four! Many hours later... (Keep attention! Before rebooting make the following modify! )&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;With your favourite editor (eg. vi, nano, etc),&amp;nbsp;edit the following&lt;br /&gt;&lt;br /&gt;&lt;i&gt;/boot/grub/menu.lst&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Search for:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;###Don't change this comment - YaST2 identifier: Original name: linux###&lt;br /&gt;title Desktop -- openSUSE 11.3 - 2.6.34-12&lt;br /&gt;    root (hd0,6)&lt;br /&gt;    kernel /boot/vmlinuz-2.6.34-12-desktop root=/dev/disk/by-id/ata-xxxxxxxx resume=/dev/disk/by-id/ata-yyyyyyyyy splash=silent quiet showopts vga=0x314 &lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;i&gt;(note: root and resume parameter could be different)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;After&amp;nbsp;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;&lt;i&gt;vga=0x31&lt;/i&gt;4 option add the following&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt; nomodeset&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;So the line will be like this:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;###Don't change this comment - YaST2 identifier: Original name: linux###&lt;br /&gt;title Desktop -- openSUSE 11.3 - 2.6.34-12&lt;br /&gt;    root (hd0,6)&lt;br /&gt;    kernel /boot/vmlinuz-2.6.34-12-desktop root=/dev/disk/by-id/ata-xxxxxxxx resume=/dev/disk/by-id/ata-yyyyyyyyy splash=silent quiet showopts vga=0x314 &lt;b&gt;nomodeset&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Step five! Reboot and fix!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;It's time to restart the system! If you haven't NVIDIA card your system will start normally, else follow these steps:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1) With NVIDIA cards.... if all has been done well... the xorg won't run! ;)&amp;nbsp;No panic!&amp;nbsp;Login with your usual account, then become root.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;2) Go to the your home directory, change runlevel and run your NVIDIA card driver setup with&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; white-space: normal;"&gt;telinit 2&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f6f6; background-image: initial; background-origin: initial; border-bottom-color: rgb(102, 153, 0); border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(102, 153, 0); border-left-style: dotted; border-left-width: 1px; border-right-color: rgb(102, 153, 0); border-right-style: dotted; border-right-width: 1px; border-style: initial; border-top-color: rgb(102, 153, 0); border-top-style: dotted; border-top-width: 1px; color: #333333; font-family: monospace; font-size: 13px; margin-bottom: 1em; margin-left: 15px; margin-right: 15px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;sh ./NVIDIA-Linux-x86_64-256.35.run&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;/pre&gt;3) Follow the NVIDIA setup steps&lt;br /&gt;&lt;br /&gt;4) Reboot your system&lt;br /&gt;&lt;br /&gt;5) Now it should be ok else... write me!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy with your new OpenSuse 11.3 and NVIDIA Cards! :)&lt;br /&gt;&lt;br /&gt;A&amp;gt;ngelo F.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;if you use the command&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;&amp;nbsp;&lt;i&gt;zypper dup --download "in-advance"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;you could interrupt the download as you like (&lt;i&gt;ctrl-c&lt;/i&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;when you restart the command above the system will download starting from the last package retreived.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 15px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'trebuchet ms', verdana, arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 15px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a bitly="BITLY_PROCESSED" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a bitly="BITLY_PROCESSED" href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F.&lt;/a&gt; are licensed under a &lt;a bitly="BITLY_PROCESSED" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a bitly="BITLY_PROCESSED" href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-5380631781544650550?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/5380631781544650550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/07/how-to-survive-to-opensuse-113-upgrade.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/5380631781544650550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/5380631781544650550'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/07/how-to-survive-to-opensuse-113-upgrade.html' title='How to survive to OpenSuse 11.3 upgrade on PCs with NVIDIA Video Cards'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-7687938758087155364</id><published>2010-06-05T11:29:00.000-07:00</published><updated>2011-05-04T08:10:38.603-07:00</updated><title type='text'>How to run and test Android 2.2 Froyo SDK on OpenSuse 11.2</title><content type='html'>&lt;b&gt;What is Android?&lt;/b&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Android - in my opinion - is one of the best O.S. for smartphones; anyway it could be interesting to run it on your PC because it could help you to test software before installing on your real device, for developing purpose or... Just For Fun!&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;There are two solutions to reach this aim:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1) The first option is to use Android on real or virtualized hardware by download &lt;a bitly="BITLY_PROCESSED" href="http://code.google.com/p/android-x86/"&gt;Android&amp;nbsp;X86&lt;/a&gt;. Currently you can run only the 1.6 or 2.0 old version. (But it supports EEEPC too).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2) The second option (&lt;u&gt;explained in this tutorial&lt;/u&gt;), is "emulating" the Android 2.2 Froyo environment by using the &lt;a bitly="BITLY_PROCESSED" href="http://developer.android.com/sdk/index.html"&gt;SDK&lt;/a&gt; from Google (Usually used for development purposes....)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Ok, we have chosen the option two! Another requirement is that we want to install the platform on Linux/OpenSuse 11.2... How can we do it?&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The answer is... follow these steps ;)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Note for mobile lovers: Android is a powerful GNU/Linux based OS and it has many web2.0 oriented application easy to install by using the appliance "Android Market", so I suggest you to give it a try if you make the decision to buy a new smartphone! You will love it! (Note for readers: Android Market &lt;u&gt;doesn't&lt;/u&gt; works on SDK Version...)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Step 1- Download and install the Android SDK for GNU/Linux&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Get it from&amp;nbsp;&lt;a bitly="BITLY_PROCESSED" href="http://developer.android.com/sdk/index.html"&gt;http://developer.android.com/sdk/index.html&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;after the download, open the terminal and&amp;nbsp;unpack the SDK by using:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;tar zxvf android-sdk_r06-linux_86.tgz&lt;/i&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;now go to Android directory by typing:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;cd android-sdk-linux_86&lt;/i&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;and write:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;tools/android update sdk&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;{followed by enter key...}&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;After that, a GUI will be started...&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now, unselect all platform - by double clicking on title - but not:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1) &amp;nbsp;SDK Android 2.2 and Samples for API&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2) Click on "Accept" and then on "Install"&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;3) Wait for platform download&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;It could take a long time... Take a cup of tea ;)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;When the download is finished, click on "CLOSE" button&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You should be in the situation showed on the following snapshot:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a bitly="BITLY_PROCESSED" href="http://3.bp.blogspot.com/_WYNlGrS10us/TAqRwmcw3YI/AAAAAAAAABI/PauSfW02V2w/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://3.bp.blogspot.com/_WYNlGrS10us/TAqRwmcw3YI/AAAAAAAAABI/PauSfW02V2w/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now go to "Virtual Devices" option and click on "New" button.&lt;br /&gt;&lt;br /&gt;On the popup window write as title "Froyo", and select as target "Android 2.2 - Api Level 8".&lt;br /&gt;Then choose "Size" for sd card (e.g. 900MB); now select your resolution as showed in the following picture:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a bitly="BITLY_PROCESSED" href="http://3.bp.blogspot.com/_WYNlGrS10us/TAqVzAYWJAI/AAAAAAAAABg/KUUFOrAxUWM/s1600/2c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_WYNlGrS10us/TAqVzAYWJAI/AAAAAAAAABg/KUUFOrAxUWM/s400/2c.png" width="297" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;then click "Create AVD" button.&lt;br /&gt;&lt;br /&gt;Exit from GUI and from the command line&lt;br /&gt;write:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;tools/android&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;{followed by enter key...}&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now click go to "Virtual Device", select "Froyo" and click on "Start"... Wait... Now you have an Android 2.2 test system on your PC! ;)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a bitly="BITLY_PROCESSED" href="http://2.bp.blogspot.com/_WYNlGrS10us/TAqW03N6otI/AAAAAAAAABo/tQ9IbSP_V_Y/s1600/froyo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://2.bp.blogspot.com/_WYNlGrS10us/TAqW03N6otI/AAAAAAAAABo/tQ9IbSP_V_Y/s400/froyo.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a bitly="BITLY_PROCESSED" href="http://2.bp.blogspot.com/_WYNlGrS10us/TAqXYeSYojI/AAAAAAAAABw/g8qpMAXmIug/s1600/froyo1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://2.bp.blogspot.com/_WYNlGrS10us/TAqXYeSYojI/AAAAAAAAABw/g8qpMAXmIug/s400/froyo1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Let me know! Enjoy! Bye&lt;br /&gt;&lt;br /&gt;&lt;a bitly="BITLY_PROCESSED" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a bitly="BITLY_PROCESSED" href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a bitly="BITLY_PROCESSED" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a bitly="BITLY_PROCESSED" href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-7687938758087155364?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/7687938758087155364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/06/how-to-run-and-test-android-22-froyo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/7687938758087155364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/7687938758087155364'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/06/how-to-run-and-test-android-22-froyo.html' title='How to run and test Android 2.2 Froyo SDK on OpenSuse 11.2'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WYNlGrS10us/TAqRwmcw3YI/AAAAAAAAABI/PauSfW02V2w/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-4107110662895555173</id><published>2010-05-06T02:16:00.000-07:00</published><updated>2011-05-04T08:13:12.987-07:00</updated><title type='text'>How to easily setup VNC Server on Windows Clients in LAN Enterprises Environments</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;How many time during your administration of many Pc Windows Clients do you say &lt;i&gt;"If I was there..."..&lt;/i&gt;. and the second thought is &lt;i&gt;"...I could use UltraVNC for remote managing but it's too difficult to install for that user..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A good compromise in this situation is creating and share &lt;i&gt;UltraVnc&lt;/i&gt; in Lan in a customized and simplified form (very easy to prepare).&lt;br /&gt;&lt;br /&gt;So, according to this&amp;nbsp;&lt;a href="http://forum.ultravnc.info/viewtopic.php?t=7014"&gt;article&lt;/a&gt;,&amp;nbsp;you can easily improve the user vnc setup experience (and you needn't to take away from you nice office chair... ;) )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;It's simple&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1) Make a folder (eg. _VNC)&lt;br /&gt;2) Download latest version of VNC setup from http://www.uvnc.com and save it in the new folder&lt;br /&gt;3) Rename the setup file to "UltraVNC.exe"&lt;br /&gt;4) Create setup.bat script (if you use Linux remember to call unix2dos after making the file) with this lines inside:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;n&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;et use v: /del&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;; REMEMBER change the following line with the path of you share folder on lan....&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;net use v: \\share\utility\_VNC&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;c:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;cd \&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;"%PROGRAMFILES%\realvnc\vnc4\unins000.exe" /silent&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;net stop uvnc_service&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;sc delete uvnc_service&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;start /w v:\UltraVNC.exe /verysilent /loadinf=v:\ultravnc.inf&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;net stop uvnc_service&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;xcopy v:\ultravnc.ini "c:\UltraVNC\" /R /Y&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;net start uvnc_service&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;net use v: /del&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;5) Save it into your folder (eg. _VNC)&lt;br /&gt;6) Make a simple &lt;i&gt;ultravnc.inf&lt;/i&gt; file with this lines inside:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;[Setup]&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;Lang=en&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;Dir=c:\UltraVNC&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;Group=UltraVNC&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;NoIcons=0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;SetupType=server&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;Components=ultravnc_server&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;Tasks=installservice,properties&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7) Save it into your folder (eg _VNC)&lt;/div&gt;&lt;div&gt;8) Now you should have in your _VNC directory:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;UltraVNC.exe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;ultravnc.inf&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;setup.bat&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9) If it's all ok, copy the _VNC folder to your shared folder and test by running setup.bat&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10) This procedure installs&amp;nbsp;&lt;u&gt;a very basic&lt;/u&gt;&amp;nbsp;UltraVNC server&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;11) Call the user that needs your help in LAN, and guide him to start the simplified setup&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;12) If you like, you could improve &lt;i&gt;ultravnc.inf&lt;/i&gt;&amp;nbsp;&amp;nbsp;for having DSM plugin or others functionalities into setup... Please refer to this&amp;nbsp;&lt;a href="http://forum.ultravnc.info/viewtopic.php?t=7014"&gt;article&lt;/a&gt;&amp;nbsp;for further details.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have a nice day!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Sincerely&lt;br /&gt;AngeloF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-4107110662895555173?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/4107110662895555173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/05/how-to-easily-setup-vnc-server-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4107110662895555173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4107110662895555173'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/05/how-to-easily-setup-vnc-server-on.html' title='How to easily setup VNC Server on Windows Clients in LAN Enterprises Environments'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-5361069256930737938</id><published>2010-04-12T09:25:00.000-07:00</published><updated>2011-09-15T03:33:41.137-07:00</updated><title type='text'>File Integrity Checkers and Rootkit Revealers for Gnu/Linux - Part 1</title><content type='html'>&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Are you afraid that your system has been compromised by an unauthorized access?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Have you got discovered abnormal network activities and/or do you suspect that your system has been infected by trojans or rootkit?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Is this your nightmare? ;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;No problem, there are some solutions which help system administrators to check their servers, so they can be more &lt;i&gt;serene&lt;/i&gt; about security of their machines.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Two types of "&lt;i&gt;tools&lt;/i&gt;" can be used to search &lt;i&gt;anomalies &lt;/i&gt;into the system.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The first ones are called &lt;i&gt;"File Integrity Checkers" (FIC)&lt;/i&gt; and can be used to check if a set of files has been changed during time.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;For example, if you keep track of changing of the executables into folders like "/bin", "/sbin", etc. you can see if "someone" has changed "something". In this case, FIC will notify you about that. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Obiviously changes on executable could be normal (e.g. system updates), in this case you can notify your&lt;i&gt; "File Integrity checker" (FIC)&lt;/i&gt; that changes are authorized.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;On the other hand, your system could be &lt;i&gt;compromised&lt;/i&gt;, so if you haven't done any upgrade or manual modifies to the system, the &lt;i&gt;FIC &lt;/i&gt;can give evidence of changes.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;This type of software, may be considered one of the solutions available for &lt;u&gt;discovering&lt;/u&gt; something wrong. &lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The second type of "&lt;i&gt;checkers&lt;/i&gt;" is called "&lt;i&gt;rootkit revealers&lt;/i&gt;" and/or "&lt;i&gt;antivirus&lt;/i&gt;". This can be considered "similar" to the windows security tools available today like Comodo, Avast, Norton, Spybot, etc.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Usually these tools are not "realtime" like MS Windows products so they must be run using cron daemon.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;For the best protection of your GNU/Linux systems, you should consider the use of &lt;a href="http://en.wikipedia.org/wiki/Mandatory_access_control"&gt;MAC&lt;/a&gt; (Mandatory Access Control) or RBAC.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;For example, &lt;a href="http://www.grsecurity.net/"&gt;GRsecurity/Pax&lt;/a&gt; or &lt;a href="http://www.nsa.gov/research/selinux/index.shtml"&gt;Selinux&lt;/a&gt; add this feature to GNU/Linux (by patching the kernel).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;I will discuss about them in my future posts.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Anyway,&amp;nbsp;&lt;i&gt;"rootkit revealers"&lt;/i&gt; and &lt;i&gt;"antivirus"&lt;/i&gt; software should help you to &lt;u&gt;identify&lt;/u&gt; which kind of "&lt;i&gt;enemy&lt;/i&gt;" has compromised your system.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;File Integrity Checkers (FIC)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;There are many FIC software around, one of the most famous in the Unix environments is &lt;i&gt;"Tripwire". &lt;/i&gt;By the way, I prefer&lt;i&gt; "Afick" &lt;/i&gt;a FIC that is totally free and more simple to install and use.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Afick, as many other FIC solution, works by making md5 signs of "set" of files, that you will indicate into the configuration file the first time you use it.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;For example, if you want keep track of the modifies of the /bin directory, Afick will generate a databases of all the md5 sign of each file contained into that directory.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The next time you will run Afick, it will check if the md5 sum of each file are the same of its database, if not it will notify you.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you modify or update the system, you can notify &lt;i&gt;Afick &lt;/i&gt;to update its database without producing warning alerts.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;i&gt;FICs &lt;/i&gt;are very simple and smart but they have some limitations.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;1) You must keep track of each operation of the system that could modify your files and "notify" afick about modify&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;2) If the system will be compromised and some executable and/or file used by FIC software will be modified too, it will give you false "negatives".&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;So, if you suspect that something is wrong into your system, it's usefull running FIC software by starting your system from a bootable CD (e.g. Knoppix) and check it.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;What are the rootkits?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;A good point of start for defining what "&lt;i&gt;rootkits&lt;/i&gt;" are is &lt;a href="http://en.wikipedia.org/wiki/Rootkit"&gt;Wikipedia&lt;/a&gt;.&amp;nbsp;It describes them as "&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;A&amp;nbsp;&lt;b&gt;rootkit&lt;/b&gt;&amp;nbsp;is software that enables continued privileged access to a computer while actively hiding its presence from administrators by subverting standard operating system functionality or other applications. The term&amp;nbsp;rootkit&amp;nbsp;is a&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Concatenation" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Concatenation"&gt;concatenation&lt;/a&gt;&amp;nbsp;of&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Superuser" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Superuser"&gt;"root"&lt;/a&gt;&amp;nbsp;(the traditional name of the privileged account on&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Unix" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Unix"&gt;Unix&lt;/a&gt;&amp;nbsp;operating systems) and the word "kit" (which refers to the software components that implement the tool). The term "rootkit" has negative connotations through its association with malware.&lt;sup class="reference" id="cite_ref-McAfee1_0-0" style="font-weight: normal; line-height: 1em;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #0645ad; text-decoration: none; white-space: nowrap;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Rootkit#cite_note-McAfee1-0" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none; white-space: nowrap;"&gt;[&lt;/a&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Rootkit#cite_note-McAfee1-0" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #0645ad; text-decoration: none; white-space: nowrap;"&gt;&lt;span class="Apple-style-span" style="color: #0645ad;"&gt;&lt;span class="Apple-style-span" style="background-attachment: initial; background-clip: initial; background-color: initial; background-origin: initial; white-space: nowrap;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #0645ad; text-decoration: none; white-space: nowrap;"&gt;]&lt;/span&gt;&lt;/a&gt;"&lt;/sup&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;In other words, a &lt;i&gt;rookit&lt;/i&gt; is software that allows someone to control or have priviledges on your system... and you (the administrator) you don't know... &lt;u&gt;It's a terrible thing!&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Think for a minute how many crazy people are outside there... software pirates, black hats, irc bots installers, script-kiddies, etc...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;All of these men, can use your system for bad purpouses.. And you'll pay for them, if they makes illegal things...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;What we need to do? There are some tools called &lt;i&gt;"rootkits revealers"&lt;/i&gt;... In the second part of this article I'll explain you how to use them. But remember, the first rules is... be "proactive" and harden your system!&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Virus/Trojan threats&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-weight: normal; line-height: 18px;"&gt;Virus and Trojans are software that compromize the correct functionalities of a machine.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-weight: normal; line-height: 18px;"&gt;Virus are spreaded on Windows enviroments, so there are a large number of "antivirus" for protecting these systems.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-weight: normal; line-height: 18px;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-weight: normal; line-height: 18px;"&gt;GNU/Linux Distros usually are not subject to viruses, but the services offered by the O.S. could be &lt;i&gt;"the way"&lt;/i&gt; to spread a desease. &lt;i&gt;(E.g. An infected file shared by Samba could infect a windows machine).&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; color: #333333; font-weight: normal; line-height: 18px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;So GNU/Linux has many antivirus to detect virus and block them! In the second part we I'll talk about them&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, FreeMono, monospace; font-weight: normal; line-height: 20px;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;One more suggestion!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: 15px; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you are interested in IT Security,&lt;b&gt;&amp;nbsp;join&lt;/b&gt;&amp;nbsp;us at "GNU/Linux Security &amp;amp; Hardening" group on&amp;nbsp;&lt;i&gt;&lt;a href="http://it.linkedin.com/pub/angelo-fo/8/686/180" style="text-decoration: none;"&gt;Linkedin&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Last update: 7 Dic 2010&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" linkindex="60" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" linkindex="61" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" linkindex="62" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" linkindex="63" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-5361069256930737938?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/5361069256930737938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/04/file-integrity-check-and-rootkit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/5361069256930737938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/5361069256930737938'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/04/file-integrity-check-and-rootkit.html' title='File Integrity Checkers and Rootkit Revealers for Gnu/Linux - Part 1'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-127867767494363993</id><published>2010-03-02T08:19:00.000-08:00</published><updated>2011-05-04T08:14:25.651-07:00</updated><title type='text'>OpenSSH daemon hardening ( Part 3 ) - Setup a chroot enviroment on CentOS 5 with JailKit</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;[Note: This is a &lt;u&gt;draft&lt;/u&gt;  version of the post; it'll be revised as soon as possible]&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;big&gt;&lt;span style="font-size: large;"&gt; Introduction - What is a chroot?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/big&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;"A &lt;b&gt;chroot&lt;/b&gt; on &lt;a href="http://en.wikipedia.org/wiki/Unix" linkindex="46" title="Unix"&gt;Unix&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Operating_system" linkindex="47" title="Operating system"&gt;operating systems&lt;/a&gt; is an operation that changes the apparent disk &lt;a href="http://en.wikipedia.org/wiki/Root_directory" linkindex="48" title="Root directory"&gt;root directory&lt;/a&gt;&lt;br /&gt;for the current running process and its children. A program that is&lt;br /&gt;re-rooted to another directory cannot access or name files outside that&lt;br /&gt;directory, and the directory is called a "chroot &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Jail_%28computer_security%29" linkindex="49" title="Jail (computer security)"&gt;jail&lt;/a&gt;" or (less commonly) a "chroot prison". The term "chroot" may refer to the &lt;tt&gt;chroot(2)&lt;/tt&gt; &lt;a href="http://en.wikipedia.org/wiki/System_call" linkindex="50" title="System call"&gt;system call&lt;/a&gt; or the &lt;tt&gt;chroot(8)&lt;/tt&gt; wrapper program."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id="siteSub"&gt;&lt;span style="color: #666666;"&gt;&lt;b&gt;&lt;small&gt;&lt;small&gt;(&lt;a href="http://en.wikipedia.org/wiki/Chroot" linkindex="51" target="_blank"&gt;Definition&lt;/a&gt; from Wikipedia, the free encyclopedia)&lt;/small&gt;&lt;/small&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;b&gt;&lt;small&gt;&lt;/small&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;A system administrator can use "&lt;i&gt;chrooted"&amp;nbsp;&lt;/i&gt;environments for improving the &lt;i&gt;strength&amp;nbsp;&lt;/i&gt;of a Unix system, by limiting logged users to use a small environment with few/basic functionalities.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Chroot &lt;/i&gt;can also be used for "&lt;i&gt;running inside&lt;/i&gt;" Unix daemons, so services are "&lt;i&gt;entrapped&lt;/i&gt;" into the jail and they can "see" only a limited part of the filesystem.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;In this post we will create a chroot environment for giving access to users with sftp/ssh protocol and/or basic shell access. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;Note:&lt;/u&gt; The chroot environments don't assure "&lt;i&gt;security&lt;/i&gt;", but in combination with others hardening tricks (&lt;a href="http://digitalpatch.blogspot.com/" linkindex="52"&gt;see my other posts&lt;/a&gt;)&amp;nbsp; may improve the strength of the system and put&amp;nbsp; "&lt;i&gt;on the way&lt;/i&gt;" more &lt;i&gt;obstacles &lt;/i&gt;to the attackers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Indeed a chroot-jail can be break... for example visit &lt;a href="http://www.bpfh.net/simes/computing/chroot-break.html" linkindex="53"&gt;chroot break page&lt;/a&gt; &lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;Let's start installing!&lt;/div&gt;&lt;small&gt;&lt;b&gt;&lt;big&gt; &lt;/big&gt;&lt;/b&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;b&gt;&lt;big&gt;&lt;br /&gt;&lt;big&gt;&amp;nbsp;&lt;/big&gt;&lt;/big&gt;&lt;/b&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;b&gt;&lt;big&gt;&lt;big&gt;Step 1 - Download JailKit from&lt;/big&gt;&lt;/big&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;$ wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.bz2&lt;/i&gt;&lt;br /&gt;&lt;big&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;big&gt;Step 2 - Uncompress and install&lt;/big&gt;&lt;/b&gt;&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;$ tar jxvf jailkit-2.11.tar.bz2&lt;/i&gt;&lt;big&gt;&lt;br /&gt;&lt;br /&gt;With a non root user launch:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;$ cd jailkit-2.11&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;then&lt;br /&gt;&lt;br /&gt;&lt;i&gt;$ su&lt;br /&gt;# make install&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;b&gt;&lt;big&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Step 3 - Modify the ini file&lt;/span&gt;&lt;/big&gt;&lt;/b&gt;&lt;/big&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;small&gt;&lt;big&gt; If you use 64bit version of Debian or other distros (e.g. CentOS) you &lt;u&gt;must&lt;/u&gt; change some paths.&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt; Check the &lt;i&gt;jk_init.ini &lt;/i&gt;and verify that &lt;i&gt;paths&lt;/i&gt; of the sections you are interested in, are correct.&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;small&gt;&lt;big&gt;For example: &lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;small&gt;&lt;big&gt; &lt;br /&gt;# vi /etc/jailkit/jk_init.ini&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&amp;nbsp;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;On CentOS 5&amp;nbsp; we need to change the "paths" parameter with&lt;br /&gt;&lt;br /&gt;&lt;i&gt;paths=/usr/libexec/openssh/sftp-server&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;on &lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;Utuntu 8.04 Lts (64Bit) with&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;paths=/usr/lib/openssh/sftp-server&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&amp;nbsp;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;br /&gt;under the&lt;i&gt; [sftp] &lt;/i&gt;section&lt;br /&gt;&lt;small&gt;&lt;br /&gt;(save the conf with [escape]:wq)&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Step 4 - Let's create the chroot Jail&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# su -&lt;br /&gt;&lt;br /&gt;# jk_init -v -j /WEBJAIL2 basicshell ssh sftp&lt;br /&gt;&lt;br /&gt;The above command creates a jail (called WEBJAIL2) with "basicshell" commands, ssh and sftp support.&lt;br /&gt;&lt;br /&gt;Take a look to jk_init.ini for various options available or consult the JailKit manual at &lt;a href="http://olivier.sessink.nl/jailkit/jailkit.8.html" linkindex="54" target="_blank"&gt;http://olivier.sessink.nl/jailkit/jailkit.8.html&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;big&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Step 5 - Create users&lt;/span&gt;&lt;/big&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create with the &lt;i&gt;adduser&lt;/i&gt;&amp;nbsp; command a new users as usual.&lt;br /&gt;&lt;br /&gt;For example&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# adduser sftptest&lt;/i&gt;&lt;br /&gt;# passwd sftptest&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Put the user into the &lt;i&gt;cage&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;i&gt;  &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;In CentOS 5 setup, an error occurred if I do not copy first &lt;i&gt;jk_lsh&lt;/i&gt; to &lt;i&gt;jail&lt;/i&gt;; so I use:&lt;br /&gt;&lt;br /&gt;# jk_cp -j /WEBJAIL2 /usr/sbin/jk_lsh&lt;br /&gt;&lt;br /&gt;then i can "import" the user to the jail with:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# jk_jailuser -m -j /WEBJAIL2/ sftptest&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Step 6a - Sftp/SCP access ONLY&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;If you want that your server users can have access to the Sftp/SCP only, after the previous steps, you must edit &lt;i&gt;jk_lsh.ini&lt;/i&gt; in the jail. &lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;If the jailkit directory doesn't exist, use:&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;# mkdir -p /jail/etc/jailkit&lt;/i&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;Now you can authorize &lt;i&gt;jk_lsh&lt;/i&gt; command to execute sftp&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;(If you use jk_lsh "shell" you must specify which command can be executed,&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;indeed &amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;jk_lsh is not an interactive shell but it allows the access&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;only&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;via ssh for executing commands in chroot jail)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;# vi /WEBJAIL2/etc/jailkit/jk_lsh.ini&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;An example of jk_lsh.ini for &lt;u&gt;CentOS 5&lt;/u&gt; could be:&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;[sftptest]&lt;br /&gt;paths = /usr/libexec/openssh/&lt;br /&gt;executables = /usr/libexec/openssh/sftp-server&lt;br /&gt;allow_word_expansion = 0&lt;/i&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;An example of jk_lsh.ini for &lt;u&gt;Ubuntu 8.04&lt;/u&gt; Lts could be:&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;[sftptest]&lt;/i&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;paths = /usr/lib/openssh/&lt;br /&gt;executables = /usr/lib/openssh/sftp-server&lt;br /&gt;allow_word_expansion = 0 &lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Step 6b - Full SSH Access by using Bash as shell&lt;/b&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;Modify as follow the &lt;i&gt;/etc/passwd&lt;/i&gt; into the &lt;i&gt;chrooted &lt;/i&gt;environment for example:&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;vi /WEBJAIL2/etc/passwd&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;change&amp;nbsp;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;sftptest:x:505:506::/home/devel01:/usr/sbin/jk_lsh&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;with&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;sftptest:x:505:506::/home/devel01:/bin/bash&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;then copy &lt;i&gt;.bashrc&lt;/i&gt; from your "real" user to the chrooted one. For example&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;i&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;cp /home/sftptest/.bashrc /WEBJAIL2/home/sftptest/&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/i&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Step 7 - Verify if all is done&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Try to view if in &lt;i&gt;/etc/passwd&lt;/i&gt; the shell and the path of the chrooted user has been changed:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# cat /etc/passwd | grep sftptest&lt;/i&gt;&lt;br /&gt;&lt;i&gt;# sftptest:x:505:506::/WEBJAIL2/./home/sftptest:/usr/sbin/jk_chrootsh&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;Try if the home directory has been created on the jail&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# ls -ld /WEBJAIL2/home/sftptest&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If all is ok, then try to connect to the system with&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# ssh sftptest@yourserver.net&amp;nbsp;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;(if you had used "Step 6b" option)&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;# sftp sftptest@yourserver.net&amp;nbsp;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;(if you had used "Step 6a" option)&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;If you are logged in, you can browse the jail filesystem; you will see that you can do only simple operation on it&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;big&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt; &lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Step 8 - Check the Jail&lt;/span&gt;&lt;/b&gt;&lt;/big&gt;&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;When you update your system (e.g. by using &lt;i&gt;YUM&lt;/i&gt;), it's important to upgrade the files into the jail too; in this way you can avoid security issues.&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt; &lt;br /&gt;You need to modify the &lt;i&gt;jk_check.ini&lt;/i&gt; file one time with:&lt;br /&gt;&lt;br /&gt;# vi /etc/jailkit/jk_check.ini&lt;br /&gt;&lt;br /&gt;A very basic content of the file could be:&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;i&gt;[/WEBJAIL2]&lt;br /&gt;&lt;br /&gt;ignorepathoncompare = /WEBJAIL2/home/, /WEBJAIL2/etc/&lt;br /&gt;ignorewritableforgroup = /WEBJAIL2/home/&lt;br /&gt;ignorewritableforothers = /WEBJAIL2/home/tmp/&lt;br /&gt;&lt;br /&gt;# jk_check tests for setuid root and setgid root files&lt;br /&gt;# if you deliberately have such files specify them here&lt;br /&gt;#ignoresetuidexecuteforuser = /home/testchroot/usr/bin/smbmnt, /home/testchroot/usr/bin/smbumount&lt;br /&gt;#ignoresetuidexecuteforgroup = /home/testchroot/usr/bin/smbmnt, /home/testchroot/usr/bin/smbumount&lt;br /&gt;#ignoresetuidexecuteforothers =&lt;br /&gt;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;I suggest you to run &lt;i&gt;jk_check&lt;/i&gt; as soon as possible your distro update procedure is done.&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;Last trick! See the &lt;a href="http://olivier.sessink.nl/jailkit/jk_check.8.html" linkindex="55" target="_blank"&gt;jk_check command manual&lt;/a&gt; for further details about the meaning of the parameters.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;br /&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px;"&gt;&lt;b&gt;One more suggestion!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="font-size: medium; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;small&gt;&lt;big&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-size: medium; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;small&gt;&lt;big&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you are interested in IT Security,&lt;b&gt;&amp;nbsp;join&lt;/b&gt;&amp;nbsp;us at "GNU/Linux Security &amp;amp; Hardening" group on&amp;nbsp;&lt;i&gt;&lt;a href="http://it.linkedin.com/pub/angelo-fo/8/686/180"&gt;Linkedin&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;div&gt;&lt;small&gt;&lt;big&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/big&gt;&lt;/small&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;small&gt;&lt;big&gt;&lt;big&gt;&lt;b&gt;Reference and Links&lt;/b&gt;&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html" linkindex="56" target="_blank"&gt;http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html" linkindex="57" target="_blank"&gt;http://olivier.sessink.nl/jailkit/howtos_sftp_scp_only.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html" linkindex="58" target="_blank"&gt;http://en.wikipedia.org/wiki/Chroot&lt;/a&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;a href="http://www.bpfh.net/simes/computing/chroot-break.html" linkindex="59"&gt;&lt;span style="font-size: small;"&gt;http://www.bpfh.net/simes/computing/chroot-break.html&lt;/span&gt;&lt;/a&gt;&lt;small&gt;&lt;big&gt;&amp;nbsp;&amp;nbsp;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; line-height: 19px;"&gt;&lt;i&gt;&lt;u&gt;NOTE&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; line-height: 19px;"&gt;&lt;i&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" linkindex="60" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" linkindex="61" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" linkindex="62" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" linkindex="63" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-127867767494363993?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/127867767494363993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/03/openssh-daemon-hardening-part-3-setup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/127867767494363993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/127867767494363993'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/03/openssh-daemon-hardening-part-3-setup.html' title='OpenSSH daemon hardening ( Part 3 ) - Setup a chroot enviroment on CentOS 5 with JailKit'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-4536369042709698485</id><published>2010-02-26T11:39:00.000-08:00</published><updated>2011-05-04T08:14:51.002-07:00</updated><title type='text'>OpenSSH daemon hardening ( Part 2 ) - How to use RSA/DSA Keys</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;[Note: This is a &lt;u&gt;draft&lt;/u&gt;  version of the post; it'll be revised as soon as possible]&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In my &lt;a href="http://digitalpatch.blogspot.com/2010/02/introducing-openssh-openssh-is-deamon.html" linkindex="15"&gt;previous post&lt;/a&gt;, I explained you how to configure OpenSSH for improving its security. By the way, if your SSH service is available on the Internet and accessible by any IP address (e.g. You connect your client on the internet with a dynamic IP address and/or you want reach your server from anywhere...), it can be more exposed to brute force attacks! So a new "hardening procedure" is necessary!&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this case, a good idea is the use of RSA/DSA Keys, instead of a couple of &amp;nbsp;"&lt;i&gt;username/password&lt;/i&gt;".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;RSA/DSA Keys may be considered a sort of "long and complex" password, which replace the classical "login", and identify in unique manner the owner of the credential.&lt;/div&gt;&lt;br /&gt;I talk about DSA/RSA because the setup procedure is the same, but&amp;nbsp; you have the oppurtunity to choose two different types of key generation algorithm with OpenSSH:&lt;br /&gt;&lt;br /&gt;RSA ( &lt;a href="http://en.wikipedia.org/wiki/Rsa"&gt;http://en.wikipedia.org/wiki/Rsa&lt;/a&gt; ) &lt;br /&gt;&lt;br /&gt;DSA ( &lt;a href="http://en.wikipedia.org/wiki/Digital_Signature_Algorithm"&gt;http://en.wikipedia.org/wiki/Digital_Signature_Algorithm&lt;/a&gt; )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;How does the RSA/DSA keys authentication method works?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RSA/DSA Keys authentication scheme follows this logic:&lt;br /&gt;&lt;br /&gt;1) The sysadmin (You...) generates a pair of RSA/DSA Keys on his system (one is the &lt;i&gt;"private key"&lt;/i&gt; and the other one is the &lt;i&gt;"public key"&lt;/i&gt;)&lt;br /&gt;2) After that, his&amp;nbsp;&lt;i&gt;public &lt;/i&gt;RSA/DSA key will be published (copied) to the home directory of the remote server account that will be used for RSA/DSA authentication (The system admin will repeats this step for each server he wants to manage/access)&lt;br /&gt;3) Only the owner of a&amp;nbsp;&lt;i&gt;private &lt;/i&gt;key (the sysadmin) can have access to systems containing his public rsa/dsa key&lt;br /&gt;4) If the &lt;i&gt;sysadmin &lt;/i&gt;connects to a server specifying on his pc client the rsa keys path,&amp;nbsp;he will have "&lt;i&gt;direct&lt;/i&gt;" access to the called system without inserting any password. Indeed his openssh client will search the private key of the sysadmin and uses it for accessing the remote server in the same manner of the classical login... But in the case... the machines handshake (client with server) will be done automatically by using keys.&lt;br /&gt;&lt;br /&gt;Why this method is better than &lt;i&gt;username/password&lt;/i&gt; login?&lt;br /&gt;&lt;br /&gt;The answer is simple...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1) &lt;u&gt;No brute force attacks with dictionary can be done&lt;/u&gt; (no passwords...)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2) The &lt;u&gt;RSA/DSA keys are&amp;nbsp;complex by themselves&lt;/u&gt;, no needs to create/remember/store complex password&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3) The Private and Public key can be carried on a pendrive (protect them by encryptation and passphrase!!!)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4) It is possible to automatize exchange of data between servers via SSH (by using two couples of RSA/DSA Keys) without "human" intervention&lt;/div&gt;&lt;br /&gt;The negative aspect...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;One and only one... If you loose your private key you are fired!!! (Back up them on CDROM)&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;&lt;/u&gt;In this case... The only way to access to the system is by doing a login using the physical keyboard of the real system...&amp;nbsp;Than you can change the rsa public key...&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Let's Start!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In real world... Follow these steps:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1) Go into your client GNU/Linux console and login with the user you usually use. On the command prompt write:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;ssh-keygen -t dsa&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;Note: &lt;/b&gt;If a passphrase is required, if you press enter you don't need to insert an "unlock" password before have access to your keys. If you choose to use passphrase you must write that every time you need to connect with RSA authentication method to a remote system. (Replace "dsa" word with "rsa" if you want to use RSA algorithm.)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Anyway, if you have installed your GNU/Linux system on a PenDrive, for security reason it is important to insert the passphrase.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;2) A pair of &lt;i&gt;dsa_keys &lt;/i&gt;will be&amp;nbsp;generated. One public and one private. It will be called &lt;i&gt;id_dsa.pu&lt;/i&gt;b and &lt;i&gt;id_dsa&lt;/i&gt; rispectively and you will find them into the&amp;nbsp;&lt;i&gt;.ssh&lt;/i&gt;&amp;nbsp;hidden directory (inside your home directory...)&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;3) Now it's time to copy your public key to the home directory of the user you have access on the remote server.&amp;nbsp;Use the &lt;i&gt;scp &lt;/i&gt;command to do that.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;scp /home/youruser/.ssh/id_dsa.pub yourremoteuser@server:/home/yourremoteuser&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;&lt;i&gt;scp /home/angel/.ssh/id_dsa.pub admin@testserver.net:/home/admin&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;4) Now you must connect to your remote server (with your account on that machine) and add the RSA/DSA key to authorized_keys2 file &amp;nbsp;(a sort of rsa/dsa keys wallet)&lt;/div&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;&lt;i&gt;ssh admin@testserver.net&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;(insert the password)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;when you're logged in write:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;&lt;i&gt;cat /home/admin/id_dsa.pub &amp;gt;&amp;gt;/home/admin/.ssh/authorized_keys2&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and then&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;&lt;i&gt;chmod 700 .ssh&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;&lt;i&gt;chmod 600&amp;nbsp;.ssh/authorized_keys2&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Replace "admin" with your user on remote server...)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;5) Logout from the server&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;6) If you have followed correctly the instructions above you can connect to your server without insert any &amp;nbsp;password (only a &lt;i&gt;passphrase &lt;/i&gt;if you've inserted one during key creation).&lt;/div&gt;&lt;br /&gt;On the command line of the client write:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;ssh -i /home/yourusername/.ssh/id_dsa username@yourserver.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Note: add the option "-p port" if the remove server ssh daemon answer to a port different from 22&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;For example (for the user "&lt;i&gt;admin&lt;/i&gt;") you could use:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #cccccc;"&gt;ssh -p1138 -i /home/angel/.ssh/id_dsa admin@testserver.net&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;It'll connect the user "&lt;i&gt;angel&lt;/i&gt;" to the remote system "testserver.net" with user "admin" by using dsa authentication. The server also uses the port 1138 for the SSH service, so we have got specified the "-p" option.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Another step for improving hardening...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;If your remote system is configured for using both authentication method (user/password and rsa keys...), you can force the &lt;i&gt;openssh daemon &lt;/i&gt;to accept only rsa authentication.&lt;br /&gt;&lt;br /&gt;To do that, change the PasswordAuthentication parameter to &lt;i&gt;no &lt;/i&gt;into the /etc/sshd_config file!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, FreeMono, monospace; line-height: 20px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;One more suggestion!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: medium; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-size: 15px; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you are interested in IT Security,&lt;b&gt;&amp;nbsp;join&lt;/b&gt;&amp;nbsp;us at "GNU/Linux Security &amp;amp; Hardening" group on&amp;nbsp;&lt;i&gt;&lt;a href="http://it.linkedin.com/pub/angelo-fo/8/686/180" style="text-decoration: none;"&gt;Linkedin&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #333333; font-size: 15px;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That's all!&amp;nbsp;See you! (If you like my posts, I'll be pleased if you became a follower of my blog and my Twitter!)&lt;br /&gt;&lt;br /&gt;Have a nice day!&lt;br /&gt;Angelo Fonzeca&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-4536369042709698485?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/4536369042709698485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/02/openssh-hardening-part-2-how-to-use-rsa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4536369042709698485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4536369042709698485'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/02/openssh-hardening-part-2-how-to-use-rsa.html' title='OpenSSH daemon hardening ( Part 2 ) - How to use RSA/DSA Keys'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-6232241734261567006</id><published>2010-02-22T07:01:00.000-08:00</published><updated>2011-05-04T08:15:14.280-07:00</updated><title type='text'>OpenSSH daemon hardening ( Part 1 ) - Modify the configuration file</title><content type='html'>&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;OpenSSH is a daemon (a "service" in Unix environments) which helps system administrators to manage server remotely.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The SSH daemon is "similar" to "telnet" in the sense that it provides a remote &lt;i&gt;shell&lt;/i&gt; for accessing Unix or GNU/Linux systems.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The main difference is that the latter doesn't use encryptation during&amp;nbsp; the session, so it's easily to intercept the content of the communication between two machines (typically a &lt;i&gt;client/server&lt;/i&gt; communication) by using a "man-in-the-middle" attack.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On the contrary, OpenSSH allows encrypted communication between two "points" so it's more difficult to intercept information for third subjects.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The service also supports "&lt;i&gt;tunneling&lt;/i&gt;" so it's easily to interact with other services on machine in addition to SSH, by using a secure &lt;i&gt;tunnel&lt;/i&gt; and &lt;i&gt;port-forwarding&lt;/i&gt; created by the ssh connection itself.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For example, if you have your lan behind a Linux Based Firewall which offers only a SSH access from the internet to itself, by connecting a client via SSH you will have access to the Firewall BUT you could have also access to an &lt;i&gt;intranet&lt;/i&gt; db behind the firewall (e.g. Mysql). That's why OpenSSH can also forward communication to a destination port on another machine.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This feature helps system administrators to provide services without having to open (expose to attack) all the daemons(on the same or other machines) directly to the Internet. (It's ok, VPN could be implemented for intranets... but this is another story).&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Another feature of OpenSSH is that it allows secure FTP. It is a sort of FTP but the communications are encrypted. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;There is another type of attack called "brute force attack"... It consists of sending - by using a particular software - passwords taken from a dictionary associated with common usernames (eg. root, admin, test, ecc.) of your server.&lt;/div&gt;&lt;div style="margin: 0px; text-align: justify;"&gt;If the users of the server have not set good password, the attacker could&lt;i&gt; "guess" &lt;/i&gt;it so he/she had access to the system.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the next paragraph, I'll show you how to &lt;i&gt;harden&lt;/i&gt; OpenSSH (make more robust)&amp;nbsp; by modifying its basic configuration and, if it's possible, by activating access via RSA keys method so you can by-pass many of the problems described above.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;These improvements are very important, especially if you need to expose your OpenSSH service to the Internet for reaching your server from anywhere and you can't limit the access from specific static IP Addresses (e.g. you connect yourself to the server by using a smartphone and you have a dynamic IP...).&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Anyway, always follow these rules:&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;1) The most important action you can do to deny attacks to SSH... is upgrading your service as soon as possible when bug fixes are available&lt;/div&gt;&lt;div style="margin: 0px;"&gt;2) Set the system to require complex passwords when a user set it&lt;/div&gt;&lt;div style="margin: 0px;"&gt;3) Analyze &lt;i&gt;logs &lt;/i&gt;and cast a glance to "&lt;i&gt;strange&lt;/i&gt;" access&lt;/div&gt;&lt;div style="margin: 0px;"&gt;4) Limit the access to few users only (if you can) and limit the access to the server from well-know IP addresses (if you access with static IP address) by using your firewall, &lt;i&gt;iptables&lt;/i&gt; on GNU/Linux or by limiting them using the OpenSSH configuration files.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Why an attack could be possible?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;You know... All software are subject to "bugs" (errors in the code). Bugs are used by the attackers (&amp;nbsp; people who wants to have access to your private data ) for introducing themselves illegally into a system. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;For example, if you have a bug into your OpenSSH daemon it could cause a "vulnerability" which could allow attackers to penetrate your system and steal your data. Indeed, they use "&lt;i&gt;exploit&lt;/i&gt;" software that utilize a vulnerability to "broke" the daemon and have privilege escalation.&lt;br /&gt;&lt;br /&gt;If you need more information about this aspect, take a look to:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Exploit_%28computer_security%29" linkindex="15"&gt;http://en.wikipedia.org/wiki/Exploit_(computer_security)&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Anyway... To avoid some of these problems, there are some parameters of the configuration file that allows the system administrator ( that's you! ) making more "robust" the daemon setup.&lt;br /&gt;In the next paragraph, you will see some "tricks" regarding OpenSSH.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Step 1 - Modify the SSH daemon configuration file&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;OpenSSH can be configured by modifying the configuration file located into&amp;nbsp; &lt;i&gt;/etc/ssh/sshd_config. &lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These are &lt;i&gt;&lt;u&gt;a very basic set of parameters&lt;/u&gt;&lt;/i&gt; which can improve the security of the service. Anyway, for further information, &lt;u&gt;study&lt;/u&gt; the man pages of sshd_config&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Open &lt;i&gt;/etc/sshd_config&lt;/i&gt; by using your favorite editor (&lt;i&gt;nano, vi, emacs, krita, etc&lt;/i&gt;.)&amp;nbsp; and modify the parameters as follow:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Protocol"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description: &lt;i&gt;Set the protocol to accept connection only with the protocol 2 version (more robust)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Set to&lt;i&gt;: Protocol 2&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"PermitRootLogin"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description: &lt;i&gt;This parameter disables authentication from root. You must define a "common" user (use "strange" names like adminXZT) allowed to access the system and then acquire root privileges by using "su" command or by putting your user into "/etc/sudoers" list.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Set to: &lt;i&gt;PermitRootLogin no&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"PasswordAuthentication"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description: &lt;i&gt;This option allows connecting to the service by using username/password. The alternative is to use the "RSA authentication" only, by disabling this option (it will described in another post).&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Set to: &lt;i&gt;PasswordAuthentication yes&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"&lt;/b&gt;&lt;b&gt;X11Forwarding"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description: Disables port forwarding for the &lt;i&gt;xserver&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Set to:&amp;nbsp;&lt;/span&gt;X11Forwarding no&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"AllowUser" and "&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;AllowGroups"&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description:&lt;i&gt; As&amp;nbsp;&lt;/i&gt;&lt;i&gt;previously&amp;nbsp;&lt;/i&gt;&lt;i&gt;described, another import parameter is AllowUsers followed by the list of the users that can access the system via ssh. This limits "brute force attacks" because if the system allows all users and if one of the user has a simple password that could be "guessed", the system may be unsecured.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;If you decide which users can access to the system, you can easily have much more control on their access.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Set to(for example): &lt;i&gt;AllowUser AdminTWZ MrSecureAbC etc.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you need to give access to many users you could use "&lt;i&gt;AllowGroups&lt;/i&gt;" option. (see notes)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Set to(for example): &lt;i&gt;AllowGroups Admins Users&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;(use spaces for items separation)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Note&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;As described in sshd_config man page, these are other options you can use:&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;"AllowUsers -&amp;nbsp; This keyword can be followed by a list of user name patterns, separated by spaces.&amp;nbsp; If specified, login is allowed only for user names that match one of the patterns.&amp;nbsp; Only user names are valid; a numerical user ID is not recognized.&amp;nbsp; By default, login is allowed for all users.&amp;nbsp; If the pattern takes the form USER@HOST then USER and HOST are separately checked, restricting logins to particular users from particular hosts.&amp;nbsp; The allow/deny directives are processed in the following order: DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups." (See man sshd_config for further details...)&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;PermitEmptyPasswords&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Description:&lt;i&gt; Self explained option&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Set to: &lt;i&gt;PermitEmptyPasswords no&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Port&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Description: &lt;i&gt;OpenSSH server "answers" on port 22; many brute force dictionary-based-attacks are done by sending a pair of username/password on that port.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;For example, If you see a typical webserver log, you could find many failed login with strange and/or common names.&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;To reduce this type of attacks change the default port to an higher value (for example 13243).&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Set to(for example): Port 13243&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;i&gt;Note&lt;/i&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;i&gt;Your firewall MUST be re-configured to give access (forwarding) to the new port specified&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UsePrivilegeSeparation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Description (from man of "sshd_config"): &lt;i&gt;"Specifies whether sshd(8) separates privileges by creating an unprivileged child process to deal with incoming network traffic. &amp;nbsp;After successful authentication,&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; another process will be created that has the privilege of the authenticated user. &amp;nbsp;The goal of privilege separation is to prevent privilege escalation by containing&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;any corruption within the unprivileged processes. &amp;nbsp;The default is “yes”."&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Set to:&amp;nbsp;&lt;i&gt;UsePrivilegeSeparation Yes&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;If you need more information and options for OpenSSH, use &lt;i&gt;man sshd_config&lt;/i&gt; from your Gnu/Linux command line.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, FreeMono, monospace; font-style: normal; font-weight: normal; line-height: 20px;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;One more suggestion!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="font-size: medium; font-weight: normal;"&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-size: 15px; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If you are interested in IT Security,&lt;b&gt;&amp;nbsp;join&lt;/b&gt;&amp;nbsp;us at "GNU/Linux Security &amp;amp; Hardening" group on&amp;nbsp;&lt;i&gt;&lt;a href="http://it.linkedin.com/pub/angelo-fo/8/686/180" style="text-decoration: none;"&gt;Linkedin&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Digital Patch Posts&lt;/span&gt; by &lt;a href="http://digitalpatch.blogspot.com/" property="cc:attributionName" rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#"&gt;Angelo F&lt;/a&gt;.&amp;nbsp;are licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/" rel="license"&gt;Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License&lt;/a&gt;.&lt;br /&gt;Based on a work at &lt;a href="http://digitalpatch.blogspot.com/" rel="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;digitalpatch.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-6232241734261567006?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/6232241734261567006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2010/02/introducing-openssh-openssh-is-deamon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/6232241734261567006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/6232241734261567006'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2010/02/introducing-openssh-openssh-is-deamon.html' title='OpenSSH daemon hardening ( Part 1 ) - Modify the configuration file'/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3951135871975901019.post-4947037268071014811</id><published>2009-06-29T10:59:00.000-07:00</published><updated>2009-07-01T10:26:50.552-07:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;The Story...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In the last few days, I choose to upgrade my &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;Asus&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;EEEPC 900&lt;/span&gt;&lt;span style="font-family:arial;"&gt; to &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;EEEBUNTU NBR 3.0&lt;/span&gt; (based on &lt;strong  style="font-style: italic; font-weight: normal;font-family:arial;"&gt;Ubuntu 9.04 &lt;span class="version"&gt;Desktop Jaunty).&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong  style="font-style: italic; font-weight: normal;font-family:arial;"&gt;&lt;span class="version"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WYNlGrS10us/SkkG4JyqGFI/AAAAAAAAAAM/CxrJu07HozM/s1600-h/nbr_1_400.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 192px;" src="http://2.bp.blogspot.com/_WYNlGrS10us/SkkG4JyqGFI/AAAAAAAAAAM/CxrJu07HozM/s320/nbr_1_400.png" alt="" id="BLOGGER_PHOTO_ID_5352817193877379154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;strong  style="font-weight: normal;font-family:arial;"&gt;&lt;span class="version"&gt;After the installation, it was unbelievable how it worked badly...&lt;br /&gt;&lt;br /&gt;The mouse pointer was tilting (as the mouse ball was unclean since 1990... Amiga like style!)...&lt;br /&gt;&lt;br /&gt;Anyway all the system was very very very SLOOOOWWWWWWwwwww.&lt;br /&gt;&lt;br /&gt;Oh My God!!!!!&lt;br /&gt;&lt;br /&gt;Well, the solution was behind the corner... as far as 2-3 hours of googling!!! (Sigh!) Here it is!!!&lt;br /&gt;&lt;br /&gt;The problem was the EEEPC 900 i915 video card related to the driver included into Jaunty!&lt;br /&gt;&lt;br /&gt;If you like, you can find more info here: &lt;a href="https://wiki.ubuntu.com/X/Troubleshooting/IntelPerformance"&gt;https://wiki.ubuntu.com/X/Troubleshooting/IntelPerformance&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Here we go... The solution!!!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It was Very Very simple! I need to revert to 2.4 Intel driver according to &lt;a href="https://wiki.ubuntu.com/ReinhardTartler/X/RevertingIntelDriverTo2.4"&gt;https://wiki.ubuntu.com/ReinhardTartler/X/RevertingIntelDriverTo2.4&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;How to... Step by step!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;P&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;ress Alt+F2 and write &lt;span style="font-style: italic;"&gt;xterm&lt;/span&gt; then the following:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;span style="font-style: italic;"&gt;1) sudo su&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; (...and insert your password)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="backtick"  style="font-size:100%;"&gt;2) vi /etc/apt/sources.list&lt;/span&gt;&lt;br /&gt;&lt;span class="backtick"  style="font-size:100%;"&gt;&lt;br /&gt;3) (copy&amp;amp;paste the following into the file, than press ESC key and write &lt;span style="font-style: italic;"&gt;:wq&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;            &lt;br /&gt;   deb http://ppa.launchpad.net/siretart/ppa/ubuntu jaunty main&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;                                 deb-src http://ppa.launchpad.net/siretart/ppa/ubuntu jaunty main&lt;br /&gt;&lt;/span&gt;  &lt;br /&gt;4) sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xce90d8983e731f79&lt;br /&gt;5) sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install xserver-xorg-video-intel-2.4&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Reboot the system! (you can write &lt;span style="font-style: italic;"&gt;reboot&lt;/span&gt; into the console)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Last reccomendation!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Before rebooting &lt;/span&gt;&lt;span style="font-family:arial;"&gt;upgrade to 2.6.29-1 Kernel&lt;/span&gt;&lt;span style="font-family:arial;"&gt; by typing:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;apt-get install linux-headers-2.6.29-1-netbook linux-image-2.6.29-1-netbook&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway If you need some help, write me! :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.eeebuntu.org/index.php?page=nbr"&gt;&lt;br /&gt;http://www.eeebuntu.org/index.php?page=nbr&lt;/a&gt;&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/X/Troubleshooting/IntelPerformance"&gt;https://wiki.ubuntu.com/X/Troubleshooting/IntelPerformance&lt;/a&gt;&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/ReinhardTartler/X/RevertingIntelDriverTo2.4"&gt;https://wiki.ubuntu.com/ReinhardTartler/X/RevertingIntelDriverTo2.4&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;strong  style="font-weight: normal;font-family:arial;"&gt;&lt;span class="version"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3951135871975901019-4947037268071014811?l=digitalpatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digitalpatch.blogspot.com/feeds/4947037268071014811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://digitalpatch.blogspot.com/2009/06/story.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4947037268071014811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3951135871975901019/posts/default/4947037268071014811'/><link rel='alternate' type='text/html' href='http://digitalpatch.blogspot.com/2009/06/story.html' title=''/><author><name>Angelo F.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_WYNlGrS10us/S_uIYRaTiNI/AAAAAAAAAAY/a-qBLYfc568/S220/skull.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WYNlGrS10us/SkkG4JyqGFI/AAAAAAAAAAM/CxrJu07HozM/s72-c/nbr_1_400.png' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
