<?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-5719460944195273704</id><updated>2012-02-02T16:22:55.497+08:00</updated><category term='9.04'/><category term='Godaddy'/><category term='11.04'/><category term='LAMP'/><category term='quota'/><category term='MySQL'/><category term='Performance'/><category term='10.04'/><category term='9.10'/><category term='Ksplice Uptrack'/><category term='Postfix'/><category term='WebDAV'/><category term='OpenOffice'/><category term='ssh'/><category term='Cherokee'/><category term='10.10'/><category term='MariaDB'/><category term='rootkit'/><category term='Fail2ban'/><category term='root'/><category term='Ksplice'/><category term='PHP'/><category term='11.10'/><category term='XCache'/><category term='PostgreSQL'/><category term='General'/><category term='Torrentflux-b4rt'/><category term='Sockso'/><category term='12.04'/><category term='Hiawatha'/><category term='ext4'/><category term='LogWatch'/><category term='vsFTPd'/><category term='Apparmor'/><category term='SSL'/><category term='sudoer'/><title type='text'>Almost Secure and Perfect Ubuntu Server</title><subtitle type='html'>Making an almost secure and perfect Ubuntu server is my interest.

I am going to share my experience in making it works.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://secure-ubuntu-server.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-7976067663943657673</id><published>2012-02-01T13:49:00.021+08:00</published><updated>2012-02-02T16:22:55.510+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='12.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 8.0 on Ubuntu 12.04 LTS Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 12.04 LTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Select unattendance update to your system.  It will push all the updates to your system when there is some.  Or, you can create a cron job later to update your system in a certain of time if you prefer.&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd ksplice&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of CMake at http://www.cmake.org/&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz&lt;br /&gt;tar -xvzf cmake-2.8.7.tar.gz&lt;br /&gt;cd cmake-2.8.7&lt;br /&gt;./configure&lt;br /&gt;sudo make install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 8.0).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-8.0.tar.gz&lt;br /&gt;tar -xzvf hiawatha-8.0.tar.gz&lt;br /&gt;cd hiawatha-8.0/extra&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./make_debian_package&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_8.0_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_8.0_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3a - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;br /&gt;cgi.fix_pathinfo = 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*** According to the &lt;a href="http://www.hiawatha-webserver.org/weblog/23"&gt;author of Hiawatha&lt;/a&gt;, the cgi.fix_pathinfo should be set to 0 at this moment. &lt;br /&gt;&lt;br /&gt;*** There will be something at the end of "disable_functions" at Ubuntu 12.04 LTS, you just append the captioned list to the end of the previous list.&lt;br /&gt;&lt;br /&gt;*** some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;script .. &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;script&amp;gt;alert("xss");&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CsCrIpT.*%3C%2FScRiPt%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CScRiPt.*%3C%2FsCrIpT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;meta .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;meta http-equiv="refresh" content='0; URL=http://some.domain"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cmeta.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMETA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMeTa.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CmEtA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;iframe .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Ciframe.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CIFRAME.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*** You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;*** If you do not implement "Step 7" below, please do not add "WrapCGI = Jail_mysite".&lt;br /&gt;&lt;br /&gt;*** "&lt;code&gt;PreventSQLi&lt;/code&gt;" is set to "&lt;code&gt;yes&lt;/code&gt;" when your web application is vulnerable to SQL Injection and you cannot fix it at the moment.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install the following packages :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install apparmor-profiles apparmor-utils&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;br /&gt;sudo chown www-data:www-data garbage.log&lt;br /&gt;sudo chown root:root system.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MySQL (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MySQL as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/03/howto-mysql-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - URL Rewrite rules (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For the url rewrite rules for your PHP applications, please refer to this &lt;a href="http://www.hiawatha-webserver.org/howto/url_rewrite_rules"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Make sure you add "UseToolkit" at the VirtualHost section.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 17 - Send email to GMail via Postfix (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://samiux.blogspot.com/2010/12/howto-send-mail-to-gmail-by-postfix-on.html"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;In order to further hardened your Hiawatha web server, please consider the following options :&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Optional #1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For SSH connection security, you also may consider to implement the &lt;a href="http://www.zeroflux.org/projects/knock"&gt;Port Knocking&lt;/a&gt; feature.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install knockd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Optional #2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You may also consider to enable your firewall at your router or on the Hiawatha Web Server with &lt;a href="https://help.ubuntu.com/community/UFW"&gt;UFW&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If ufw does not exist in your server, you can install it :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install ufw&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Optional #3 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Consider to place your web server behind this free service at &lt;a href="https://www.cloudflare.com/"&gt;Cloudflare&lt;/a&gt;.  The main point is you can manage the DNS yourself and have a fixed IP address.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-7976067663943657673?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7976067663943657673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7976067663943657673'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2012/02/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 8.0 on Ubuntu 12.04 LTS Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-2837647816462671493</id><published>2012-01-02T07:06:00.001+08:00</published><updated>2012-01-02T07:06:40.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice Uptrack'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='11.10'/><title type='text'>HOWTO : Bootless with Ksplice Uptrack on Ubuntu Server 11.10</title><content type='html'>With Ksplice Uptrack, your Ubuntu Server is not required to reboot when the kernel is updated or upgraded.  It makes your servers up to almost 99,99% uptime.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Go to the following link and get your access key.&lt;br /&gt;&lt;a href="https://www.ksplice.com/uptrack/key"&gt;Get Ksplice Uptrack Access Key&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nano /etc/apt/sources.list.d/ksplice.list&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;Add the following lines to the file ksplice.list.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://www.ksplice.com/apt oneiric ksplice&lt;br /&gt;deb-src http://www.ksplice.com/apt oneiric ksplice&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;Replace INSERT_ACCESS_KEY with your access key. Please use the same&lt;br /&gt;access key for all of your systems:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install ca-certificates&lt;br /&gt;wget -N https://www.ksplice.com/apt/ksplice-archive.asc&lt;br /&gt;sudo apt-key add ksplice-archive.asc&lt;br /&gt;echo 'uptrack uptrack/accesskey string INSERT_ACCESS_KEY' | sudo debconf-set-selections&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install uptrack&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nano /etc/uptrack/uptrack.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the following as is :&lt;br /&gt;&lt;code&gt;autoinstall = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;uptrack-upgrade -y&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Remarks :&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Ksplice Uptrack updates your running kernel in memory only.  Enabling &lt;code&gt;autoinstall&lt;/code&gt; does not mean the Uptrack client itself is automatically upgraded. You will be notified via e-mail when a new Uptrack client is available, and it can be upgraded through your package manager.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;uptrack-upgrade -y&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-2837647816462671493?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/2837647816462671493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/2837647816462671493'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2012/01/howto-bootless-with-ksplice-uptrack-on.html' title='HOWTO : Bootless with Ksplice Uptrack on Ubuntu Server 11.10'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-2509963373926280480</id><published>2012-01-02T06:44:00.003+08:00</published><updated>2012-01-03T09:26:31.305+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice Uptrack'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><category scheme='http://www.blogger.com/atom/ns#' term='11.10'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 8.0 beta on Ubuntu 11.10 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 11.10&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MariaDB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/5.1/ubuntu oneiric main&lt;br /&gt;deb-src http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/5.1/ubuntu oneiric main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1a - Apparmour of MySQL (Essential)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://askmonty.org/blog/ornery-oneiric/"&gt;Make change to the usr.sbin.mysqld at /etc/apparmor.d according to this link in order to make MariaDB compatible to MySQL in Ubuntu 11.10.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of CMake at http://www.cmake.org/&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz&lt;br /&gt;tar -xvzf cmake-2.8.7.tar.gz&lt;br /&gt;cd cmake-2.8.7&lt;br /&gt;./configure&lt;br /&gt;sudo make install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 8.0 beta).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-8.0-beta.tar.gz&lt;br /&gt;tar -xzvf hiawatha-8.0-beta.tar.gz&lt;br /&gt;cd hiawatha-8.0/extra&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./make_debian_package&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_8.0_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_8.0_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;br /&gt;cgi.fix_pathinfo = 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*** According to the &lt;a href="http://www.hiawatha-webserver.org/weblog/23"&gt;author of Hiawatha&lt;/a&gt;, the cgi.fix_pathinfo should be set to 0 at this moment. &lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;script .. &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;script&amp;gt;alert("xss");&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CsCrIpT.*%3C%2FScRiPt%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CScRiPt.*%3C%2FsCrIpT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;meta .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;meta http-equiv="refresh" content='0; URL=http://some.domain"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cmeta.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMETA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMeTa.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CmEtA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;iframe .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Ciframe.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CIFRAME.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;"&lt;code&gt;PreventSQLi&lt;/code&gt;" is set to "&lt;code&gt;yes&lt;/code&gt;" when your web application is vulnerable to SQL Injection.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 17 - Bootless with Ksplice Uptrack on Ubuntu Server 11.10 (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2012/01/howto-bootless-with-ksplice-uptrack-on.html"&gt;link&lt;/a&gt; shows you how to make your Ubuntu Server box bootless when kernel is updated or upgraded.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-2509963373926280480?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/2509963373926280480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/2509963373926280480'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2012/01/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 8.0 beta on Ubuntu 11.10 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-8814649872665044966</id><published>2011-11-23T02:04:00.004+08:00</published><updated>2011-11-23T02:10:35.663+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice Uptrack'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><category scheme='http://www.blogger.com/atom/ns#' term='11.10'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.8.2 on Ubuntu 11.10 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 11.10&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MariaDB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;br /&gt;deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;** Yes, it is Natty as the Oneiric is not available at the moment.  Natty version is compatible to Ubuntu 11.10.&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1a - Apparmour of MySQL (Essential)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://askmonty.org/blog/ornery-oneiric/"&gt;Make change to the usr.sbin.mysqld at /etc/apparmor.d according to this link in order to make MariaDB compatible to MySQL in Ubuntu 11.10.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.8.2).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-7.8.2.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.8.2.tar.gz&lt;br /&gt;cd hiawatha-7.8.2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.8.2_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.8.2_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;br /&gt;cgi.fix_pathinfo = 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*** According to the &lt;a href="http://www.hiawatha-webserver.org/weblog/23"&gt;author of Hiawatha&lt;/a&gt;, the cgi.fix_pathinfo should be set to 0 at this moment. &lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;script .. &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;script&amp;gt;alert("xss");&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CsCrIpT.*%3C%2FScRiPt%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CScRiPt.*%3C%2FsCrIpT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;meta .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;meta http-equiv="refresh" content='0; URL=http://some.domain"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cmeta.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMETA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMeTa.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CmEtA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;iframe .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Ciframe.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CIFRAME.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;"&lt;code&gt;PreventSQLi&lt;/code&gt;" is set to "&lt;code&gt;yes&lt;/code&gt;" when your web application is vulnerable to SQL Injection.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 17 - Bootless with Ksplice Uptrack on Ubuntu Server 11.04 (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/08/howto-bootless-with-ksplice-uptrack-on.html"&gt;link&lt;/a&gt; shows you how to make your Ubuntu Server box bootless when kernel is updated or upgraded.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-8814649872665044966?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/8814649872665044966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/8814649872665044966'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/11/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.8.2 on Ubuntu 11.10 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5309266620784995178</id><published>2011-08-24T12:29:00.003+08:00</published><updated>2011-08-24T12:36:59.531+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice Uptrack'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><title type='text'>HOWTO : Bootless with Ksplice Uptrack on Ubuntu Server 11.04</title><content type='html'>With Ksplice Uptrack, your Ubuntu Server is not required to reboot when the kernel is updated or upgraded.  It makes your servers up to almost 99,99% uptime.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Go to the following link and get your access key.&lt;br /&gt;&lt;a href="https://www.ksplice.com/uptrack/key"&gt;Get Ksplice Uptrack Access Key&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nano /etc/apt/sources.list.d/ksplice.list&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;Add the following lines to the file ksplice.list.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://www.ksplice.com/apt natty ksplice&lt;br /&gt;deb-src http://www.ksplice.com/apt natty ksplice&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;Replace INSERT_ACCESS_KEY with your access key. Please use the same&lt;br /&gt;access key for all of your systems:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install ca-certificates&lt;br /&gt;wget -N https://www.ksplice.com/apt/ksplice-archive.asc&lt;br /&gt;sudo apt-key add ksplice-archive.asc&lt;br /&gt;echo 'uptrack uptrack/accesskey string INSERT_ACCESS_KEY' | sudo debconf-set-selections&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install uptrack&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nano /etc/uptrack/uptrack.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the following as is :&lt;br /&gt;&lt;code&gt;autoinstall = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;uptrack-upgrade -y&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Remarks :&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Ksplice Uptrack updates your running kernel in memory only.  Enabling &lt;code&gt;autoinstall&lt;/code&gt; does not mean the Uptrack client itself is automatically upgraded. You will be notified via e-mail when a new Uptrack client is available, and it can be upgraded through your package manager.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;uptrack-upgrade -y&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5309266620784995178?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5309266620784995178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5309266620784995178'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/08/howto-bootless-with-ksplice-uptrack-on.html' title='HOWTO : Bootless with Ksplice Uptrack on Ubuntu Server 11.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-4829059263396455939</id><published>2011-08-24T01:24:00.011+08:00</published><updated>2011-09-16T16:57:30.389+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.6 on Ubuntu 11.04 Server</title><content type='html'>&lt;code&gt;&lt;b&gt;*** Please noted that I added some security settings to this post on September 16, 2011 (GMT +8), such as DenyBody and cgi.fix_pathinfo ***&lt;/b&gt;&lt;/code&gt;  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 11.04&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MariaDB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;br /&gt;deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.6).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-7.6.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.6.tar.gz&lt;br /&gt;cd hiawatha-7.6&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.6_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.6_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;br /&gt;cgi.fix_pathinfo = 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*** According to the &lt;a href="http://www.hiawatha-webserver.org/weblog/23"&gt;author of Hiawatha&lt;/a&gt;, the cgi.fix_pathinfo should be set to 0 at this moment. &lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;script .. &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;script&amp;gt;alert("xss");&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CsCrIpT.*%3C%2FScRiPt%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CScRiPt.*%3C%2FsCrIpT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CSCRIPT.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2FSCRIPT%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &amp;lt;meta .. /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# e.g. &amp;lt;meta http-equiv="refresh" content='0; URL=http://some.domain"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cmeta.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMETA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CMeTa.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3CmEtA.*%2F%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;"&lt;code&gt;PreventSQLi&lt;/code&gt;" is set to "&lt;code&gt;yes&lt;/code&gt;" when your web application is vulnerable to SQL Injection.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 17 - Bootless with Ksplice Uptrack on Ubuntu Server 11.04 (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/08/howto-bootless-with-ksplice-uptrack-on.html"&gt;link&lt;/a&gt; shows you how to make your Ubuntu Server box bootless when kernel is updated or upgraded.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-4829059263396455939?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/4829059263396455939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/4829059263396455939'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/08/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.6 on Ubuntu 11.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-3758391369570185913</id><published>2011-06-01T13:48:00.003+08:00</published><updated>2011-08-24T01:23:12.712+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.5 on Ubuntu 11.04 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 11.04&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MariaDB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;br /&gt;deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.5).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-7.5.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.5.tar.gz&lt;br /&gt;cd hiawatha-7.5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.5_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.5_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;"&lt;code&gt;PreventSQLi&lt;/code&gt;" is set to "&lt;code&gt;yes&lt;/code&gt;" when your web application is vulnerable to SQL Injection.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-3758391369570185913?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3758391369570185913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3758391369570185913'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/06/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.5 on Ubuntu 11.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-762354673619814950</id><published>2011-05-09T09:19:00.018+08:00</published><updated>2011-06-01T13:48:51.489+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.4.1 on Ubuntu 11.04 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  How secure?  Please refer to the &lt;a href="http://www.hiawatha-webserver.org/features"&gt;features&lt;/a&gt; of Hiawatha.&lt;br /&gt;&lt;br /&gt;For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 11.04&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MariaDB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;br /&gt;deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.4.1).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-7.4.1.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.4.1.tar.gz&lt;br /&gt;cd hiawatha-7.4.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.4.1_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.4.1_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;KickOnBan = yes&lt;br /&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; and &lt;code&gt;disable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/disable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can ignore the "&lt;code&gt;DenyBot&lt;/code&gt;" entries when you want the search engines to find your site easily.&lt;br /&gt;&lt;br /&gt;Furthermore, if you want to disable this virtual site, you can move the "&lt;code&gt;mysite.com&lt;/code&gt;" to &lt;code&gt;/etc/hiawatha/disable-sites/&lt;/code&gt; and then restart hiawatha server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mv /etc/hiawatha/enable-sites/mysite.com /etc/hiawatha/disable-sites/&lt;br /&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;link&lt;/a&gt; to make the LogWatch to know your Hiawatha webserver's log files.&lt;br /&gt;&lt;br /&gt;Please make sure to re-do this step when the logwatch is updated or upgraded as it will overwrite the configure file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 15 - Secure your Ubuntu Server in a passive way (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Please refer to this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html"&gt;link&lt;/a&gt; to secure your server in a passive way.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 16 - Setup a FTP server on Ubuntu Server (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html"&gt;link&lt;/a&gt; shows you how to setup a vsFTPd server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-762354673619814950?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/762354673619814950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/762354673619814950'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.4.1 on Ubuntu 11.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5126499916342017286</id><published>2011-05-09T09:09:00.000+08:00</published><updated>2011-05-09T09:10:24.737+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCache'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : MariaDB and XCache performance tuning on Ubuntu 11.04</title><content type='html'>The following settings is for tuning the MariaDB database performance on Ubuntu 11.04.  It is well tested on Intel Xeon 4 core CPU x 2 and 8 GB RAM.  It is also well tested on Drupal 6.2.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/mysql/my.cnf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the values as the following :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[mysqld_safe]&lt;br /&gt;nice = -5&lt;br /&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;key_buffer_size = 384M&lt;br /&gt;thread_cache_size = 384&lt;br /&gt;max_connections = 500&lt;br /&gt;table_cache = 1800&lt;br /&gt;# If you have 8 cores CPU, the value should be 16 (no. of processor x 2)&lt;br /&gt;thread_concurrency = 16&lt;br /&gt;query_cache_limit = 4M&lt;br /&gt;query_cache_size = 128M&lt;br /&gt;&lt;br /&gt;[isamchk]&lt;br /&gt;key_buffer = 64M&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo restart mysql&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you are using Hiawatha Web Server and PHP5, the following settings will further tune the performance also.&lt;br /&gt; &lt;br /&gt;&lt;code&gt;sudo apt-get install php5-xcache&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3a (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/conf.d/xcache.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the value of xcache.size as the following :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;xcache.size = 64M&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3b (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/php-fcgi restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3c (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To test if it is working or not :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-cgi -v&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you can see the "&lt;code&gt;with XCache v1.3.0, Copyright (c) 2005-2009, by mOo&lt;/code&gt;", your xcache is working.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5126499916342017286?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5126499916342017286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5126499916342017286'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html' title='HOWTO : MariaDB and XCache performance tuning on Ubuntu 11.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1096878175195439544</id><published>2011-05-09T09:07:00.004+08:00</published><updated>2011-05-16T16:15:33.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><title type='text'>HOWTO : MariaDB 5.2 on Ubuntu Server 11.04</title><content type='html'>Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2. It is compatible to MySQL and running much faster than MySQL too. You can use MariaDB as alternative. The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;br /&gt;deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.2/ubuntu natty main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;** You can also replace your MySQL to MariaDB in this way. The MySQL will be uninstall automatically. You can also use the &lt;code&gt;my.cnf&lt;/code&gt; of MySQL without any problem or replace by the new one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 : (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To tune the performance of MariaDB.  Please see this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-and-xcache-performance.html"&gt;link&lt;/a&gt; for reference.  The settings are the same.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1096878175195439544?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1096878175195439544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1096878175195439544'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-mariadb-52-on-ubuntu-server-1104.html' title='HOWTO : MariaDB 5.2 on Ubuntu Server 11.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-7488458095743351676</id><published>2011-05-09T08:59:00.000+08:00</published><updated>2011-05-09T09:02:21.810+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Logwatch for Hiawatha on Ubuntu 11.04 Server</title><content type='html'>Logwatch reads your log files and alert you about the unusual log entries.  It is working perfect for Apache.  However, the log directory of Hiawatha is different from Apache.  You should do something else on logwatch in order to make it to read Hiawatha log files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 0 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;code&gt;logwatch&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install logwatch&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;Make changes to the &lt;code&gt;logwatch&lt;/code&gt; configure file in order to tell her to send you a email report.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /usr/share/logwatch/default.conf/logwatch.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the settings of the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Output = mail&lt;br /&gt;Format = html&lt;br /&gt;MailTo = samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Make &lt;code&gt;logwatch&lt;/code&gt; to read &lt;code&gt;Hiawatha&lt;/code&gt; log files.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /usr/share/logwatch/default.conf/logfiles/http.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the following lines on the appropriate sections.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFile = hiawatha/*access.log&lt;br /&gt;LogFile = hiawatha/*access.log.1&lt;br /&gt;LogFile = hiawatha/*error.log&lt;br /&gt;LogFile = hiawatha/*error.log.1&lt;br /&gt;LogFile = hiawatha/*system.log&lt;br /&gt;LogFile = hiawatha/*system.log.1&lt;br /&gt;LogFile = hiawatha/*garbage.log&lt;br /&gt;LogFile = hiawatha/*garbage.log.1&lt;br /&gt;LogFile = hiawatha/*php-fcgi.log&lt;br /&gt;LogFile = hiawatha/*php-fcgi.log.1&lt;br /&gt;&lt;br /&gt;Archive = hiawatha/*access.log.*.gz&lt;br /&gt;Archive = hiawatha/*error.log.*.gz&lt;br /&gt;Archive = hiawatha/*system.log.*.gz&lt;br /&gt;Archive = hiawatha/*garbage.log.*.gz&lt;br /&gt;Archive = hiawatha/*php-fcgi.log.*.gz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-7488458095743351676?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7488458095743351676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7488458095743351676'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-logwatch-for-hiawatha-on-ubuntu.html' title='HOWTO : Logwatch for Hiawatha on Ubuntu 11.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1802770397329068468</id><published>2011-05-09T08:55:00.001+08:00</published><updated>2011-05-09T08:58:17.245+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fail2ban'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><category scheme='http://www.blogger.com/atom/ns#' term='sudoer'/><title type='text'>HOWTO : Secure your Ubuntu Server in a passive way on Ubuntu 11.04</title><content type='html'>&lt;b&gt;Root account access warning&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following to the top of the file &lt;code&gt;/root/.bashrc&lt;/code&gt; and you will be informed by email when the root account is being accessed.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;echo -e "Root Shell Access on `tty` \n `w`" | mail -s "Alert: Root Access" samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You are also required to add the captioned line at the sudoers' .bashrc file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;echo -e "Sudoer Shell Access on `tty` \n `w`" | mail -s "Alert: Sudoer Access" samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hardening SSH&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The official port of SSH is 22. You can change it to any port that between 1024 and 65535. You can do it at the router or firewall and you can do it at the configure file of SSH at &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;. You are recommended to disable the root account login via SSH even you are using Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Port 65535&lt;br /&gt;PermitRootLogin no&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/sshd restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Block all failed attempts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You are also required to install Fail2Ban in order to block all several time failed attempts.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install fail2ban&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the setting at &lt;code&gt;/etc/fail2ban/jail.conf&lt;/code&gt; when necessary.&lt;br /&gt;&lt;br /&gt;Restart the fail2ban after the changes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/fail2ban restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, enable firewall and only allow necessary ports to be access.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1802770397329068468?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1802770397329068468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1802770397329068468'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-secure-your-ubuntu-server-in.html' title='HOWTO : Secure your Ubuntu Server in a passive way on Ubuntu 11.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-7933088227007632794</id><published>2011-05-09T08:53:00.001+08:00</published><updated>2012-02-02T00:08:31.426+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='11.04'/><title type='text'>HOWTO : vsFTPd on Ubuntu Server 11.04</title><content type='html'>&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;Install the vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;br /&gt;sudo apt-get install vsftpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;Edit the configure file of vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/vsftpd.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the setting as the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# If you allow anonymous login then&lt;br /&gt;anonymous_enable=YES&lt;br /&gt;# If you do not allow anonymous login then&lt;br /&gt;#anonymous_enable=NO&lt;br /&gt;local_enable=YES&lt;br /&gt;write_enable=YES&lt;br /&gt;# Users are allowed to walk around at his directory only&lt;br /&gt;chroot_local_user=YES&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you are behind a firewall or router, the following setting should be implemented and append to the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pasv_enable=YES&lt;br /&gt;#pasv_promiscuous=YES&lt;br /&gt;pasv_min_port=50000&lt;br /&gt;pasv_max_port=50100&lt;br /&gt;# If your server's IP address is 192.168.0.15&lt;br /&gt;pasv_address=192.168.0.15&lt;br /&gt;&lt;br /&gt;local_root=/home&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make sure port 20, 21, and 50000-50100 are opened at your firewall or router.  The ports should be forwarded to and opened at the vsFTPd server.  Anonymous user can be download the files at /home/ftp directory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;Restart vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/vsftpd restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-7933088227007632794?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7933088227007632794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7933088227007632794'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/05/howto-vsftpd-on-ubuntu-server-1104.html' title='HOWTO : vsFTPd on Ubuntu Server 11.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5466362701841112797</id><published>2011-03-26T23:12:00.000+08:00</published><updated>2011-03-26T23:16:13.524+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='10.10'/><title type='text'>HOWTO : MariaDB 5.2 on Ubuntu Server 10.10</title><content type='html'>Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2. It is compatible to MySQL and running much faster than MySQL too. You can use MariaDB as alternative. The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirrors.xmission.com/mariadb/repo/5.2/ubuntu maverick main&lt;br /&gt;deb-src http://mirrors.xmission.com/mariadb/repo/5.2/ubuntu maverick main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;** You can also replace your MySQL to MariaDB in this way. The MySQL will be uninstall automatically. You can also use the &lt;code&gt;my.cnf&lt;/code&gt; of MySQL without any problem or replace by the new one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 : (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To tune the performance of MariaDB is the same as tuning MySQL.  Please see this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/03/howto-mysql-and-xcache-performance.html"&gt;link&lt;/a&gt; for reference.  The settings are the same.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5466362701841112797?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5466362701841112797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5466362701841112797'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/03/howto-mariadb-52-on-ubuntu-server-1010.html' title='HOWTO : MariaDB 5.2 on Ubuntu Server 10.10'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-7344082715564641239</id><published>2011-03-24T18:45:00.003+08:00</published><updated>2011-03-24T19:49:31.852+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='XCache'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='10.10'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : MySQL and XCache performance tuning on Ubuntu 10.10</title><content type='html'>The following settings is for tuning the MySQL database performance on Ubuntu 10.10.  It is well tested on Intel Xeon 4 core CPU x 2 and 8 GB RAM.  It is also well tested on Drupal 6.2.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/mysql/my.cnf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the values as the following :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[mysqld_safe]&lt;br /&gt;nice = -5&lt;br /&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;key_buffer = 384M&lt;br /&gt;thread_cache_size = 384&lt;br /&gt;max_connections = 500&lt;br /&gt;table_cache = 1800&lt;br /&gt;# If you have 8 cores CPU, the value should be 16 (no. of processor x 2)&lt;br /&gt;thread_concurrency = 16&lt;br /&gt;query_cache_limit = 4M&lt;br /&gt;query_cache_size = 128M&lt;br /&gt;&lt;br /&gt;[isamchk]&lt;br /&gt;key_buffer = 64M&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo restart mysql&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you are using Hiawatha Web Server and PHP5, the following settings will further tune the performance also.&lt;br /&gt; &lt;br /&gt;&lt;code&gt;sudo apt-get install php5-xcache&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3a (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/conf.d/xcache.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the value of xcache.size as the following :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;xcache.size = 64M&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3b (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/php-fcgi restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3c (Optional) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To test if it is working or not :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-cgi -v&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you can see the "&lt;code&gt;with XCache v1.3.0, Copyright (c) 2005-2009, by mOo&lt;/code&gt;", your xcache is working.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-7344082715564641239?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7344082715564641239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7344082715564641239'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/03/howto-mysql-and-xcache-performance.html' title='HOWTO : MySQL and XCache performance tuning on Ubuntu 10.10'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5406820838786460002</id><published>2011-02-06T22:06:00.000+08:00</published><updated>2011-02-06T22:07:45.655+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='10.10'/><title type='text'>HOWTO : vsFTPd on Ubuntu Server 10.10</title><content type='html'>&lt;b&gt;Step 1 :&lt;/b&gt;&lt;br /&gt;Install the vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;br /&gt;sudo apt-get install vsftpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 :&lt;/b&gt;&lt;br /&gt;Edit the configure file of vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/vsftpd.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the setting as the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# If you allow anonymous login then&lt;br /&gt;anonymous_enable=YES&lt;br /&gt;# If you do not allow anonymous login then&lt;br /&gt;#anonymous_enable=NO&lt;br /&gt;local_enable=YES&lt;br /&gt;write_enable=YES&lt;br /&gt;# Users are allowed to walk around at his directory only&lt;br /&gt;chroot_local_user=YES&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you are behind a firewall or router, the following setting should be implemented and append to the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pasv_enable=YES&lt;br /&gt;#pasv_promiscuous=YES&lt;br /&gt;pasv_min_port=50000&lt;br /&gt;pasv_max_port=50100&lt;br /&gt;# If your server's IP address is 192.168.0.15&lt;br /&gt;pasv_address=192.168.0.15&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make sure port 20, 21, and 50000-50100 are opened at your firewall or router.  The ports should be forwarded to and opened at the vsFTPd server.  Anonymous user can be download the files at /home/ftp directory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 :&lt;/b&gt;&lt;br /&gt;Restart vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/vsftpd restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5406820838786460002?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5406820838786460002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5406820838786460002'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2011/02/howto-vsftpd-on-ubuntu-server-1010.html' title='HOWTO : vsFTPd on Ubuntu Server 10.10'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-823940481799854585</id><published>2010-11-20T12:57:00.004+08:00</published><updated>2011-03-30T16:45:33.934+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fail2ban'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><category scheme='http://www.blogger.com/atom/ns#' term='sudoer'/><title type='text'>HOWTO : Secure your Ubuntu Server in a passive way</title><content type='html'>*** The original post is written on June 13, 2009 by me.  I repost here for reference.  The original post is at &lt;a href="http://samiux.wordpress.com/2009/06/13/howto-secure-your-ubuntu-9-04-server-in-a-passive-way/"&gt;here&lt;/a&gt;. ***&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Root account access warning&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following to the top of the file &lt;code&gt;/root/.bashrc&lt;/code&gt; and you will be informed by email when the root account is being accessed.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;echo -e "Root Shell Access on `tty` \n `w`" | mail -s "Alert: Root Access" samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You are also required to add the captioned line at the sudoers' .bashrc file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;echo -e "Sudoer Shell Access on `tty` \n `w`" | mail -s "Alert: Sudoer Access" samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hardening SSH&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The official port of SSH is 22. You can change it to any port that between 1024 and 65535. You can do it at the router or firewall and you can do it at the configure file of SSH at &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;. You are recommended to disable the root account login via SSH even you are using Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Port 65535&lt;br /&gt;PermitRootLogin no&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/sshd restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Block all failed attempts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You are also required to install Fail2Ban in order to block all several time failed attempts.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install fail2ban&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the setting at &lt;code&gt;/etc/fail2ban/jail.conf&lt;/code&gt; when necessary.&lt;br /&gt;&lt;br /&gt;Restart the fail2ban after the changes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/fail2ban restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, enable firewall and only allow necessary ports to be access.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-823940481799854585?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/823940481799854585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/823940481799854585'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2010/11/howto-secure-your-ubuntu-server-in.html' title='HOWTO : Secure your Ubuntu Server in a passive way'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-3882651567142659510</id><published>2010-11-19T01:17:00.023+08:00</published><updated>2011-04-19T12:38:33.259+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='10.10'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.4 on Ubuntu 10.10 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 10.10&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1a - Installation of PHP5 and MariaDB (Alternative)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since MySQL is now owned by Oracle, the developers of previous MySQL reformed and developed MariaDB under GPL v2.  It is compatible to MySQL and running much faster than MySQL too.  You can use MariaDB as alternative.  The commands and API are the same, such as "&lt;code&gt;mysql -u root -p&lt;/code&gt;".  &lt;br /&gt;&lt;br /&gt;Prepare for installation of MariaDB&lt;br /&gt;&lt;code&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/mariadb.list&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirrors.xmission.com/mariadb/repo/5.2/ubuntu maverick main&lt;br /&gt;deb-src http://mirrors.xmission.com/mariadb/repo/5.2/ubuntu maverick main&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Save the change and install the following.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mariadb-server mariadb-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg apache2-utils mini-httpd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;** You can also replace your MySQL to MariaDB in this way.  The MySQL will be uninstall automatically.  You can also use the &lt;code&gt;my.cnf&lt;/code&gt; of MySQL without any problem or replace by the new one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.4).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.hiawatha-webserver.org/files/hiawatha-7.4.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.4.tar.gz&lt;br /&gt;cd hiawatha-7.4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.4_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.4_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cgi.rfc2616_headers = 1&lt;br /&gt;&lt;br /&gt;zlib.output_compression = On&lt;br /&gt;zlib.output_compression_level = 6&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 30&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 30/1:300&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;KickOnBan = yes&lt;br /&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/snmp/snmp.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/tmp/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://secure-ubuntu-server.blogspot.com/2009/09/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;HOWTO : Logwatch for Hiawatha on Ubuntu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Change the ownership of the log files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/log/hiawatha&lt;br /&gt;sudo chown www-data:www-data access.log&lt;br /&gt;sudo chown www-data:www-data error.log&lt;br /&gt;sudo chown www-data:www-data exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* "&lt;code&gt;php-fcgi.log&lt;/code&gt;" and "&lt;code&gt;system.log&lt;/code&gt;" leave them untouched (root:root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11a - Change ownership of all directories and files at the /var/www/mysite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put the web application files to /var/www/mysite and then change the ownership of all directories and files under /var/www/mysite to root:root.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd /var/www/mysite&lt;br /&gt;sudo chown -R root:root *&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 12 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 13 - Performance tuning for MySQL or MariaDB (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the MySQL or MariaDB as per this &lt;a href="http://secure-ubuntu-server.blogspot.com/2011/03/howto-mysql-and-xcache-performance.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 14 - Performance tuning for Ubuntu (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can fine tune the Ubuntu Server as per this &lt;a href="http://samiux.blogspot.com/2011/04/howto-performance-tuning-on-ubuntu.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remarks :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you encounter "&lt;code&gt;500 Internal Server Error&lt;/code&gt;", you may consider to make the Apparmor to "&lt;code&gt;Complain mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-complain hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After several days browsing the website, you may consider to turn the Apparmor to "&lt;code&gt;Enforce mode&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is because the captioned &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; may not 100% work for you.&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-3882651567142659510?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3882651567142659510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3882651567142659510'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2010/11/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.4 on Ubuntu 10.10 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-6166739513129284318</id><published>2010-08-14T05:13:00.008+08:00</published><updated>2010-08-21T07:53:36.337+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><category scheme='http://www.blogger.com/atom/ns#' term='10.04'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 7.3 on Ubuntu 10.04 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a very secure and fast web server in the market.  It supports PHP, Perl, Python and Ruby.  It is also very lightweight, easy to configure and setup too.  For the performance, please refer to the study of SaltwaterC at &lt;a href="http://www.hiawatha-webserver.org/files/PHP_web_serving_study.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This tutorial is writing for setting up the highest secured web server.  Please also to apply the "Optional" steps mentioned below for making the highest secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;code&gt;OpenSSH&lt;/code&gt; and &lt;code&gt;Mail Server&lt;/code&gt; when installing &lt;code&gt;Ubuntu Server 10.04 LTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Update the fresh install system to the latest status.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you are required to reboot your system before going further.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Installation of PHP5 and MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache php5-suhosin php5-ffmpeg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation of Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install required dependenices for Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Hiawatha (the current version at this writing is 7.3).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo wget http://www.hiawatha-webserver.org/files/hiawatha-7.3.tar.gz&lt;br /&gt;tar -xzvf hiawatha-7.3.tar.gz&lt;br /&gt;cd hiawatha-7.3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.3_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_7.3_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5 (Optional for security only)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following settings are for making PHP5 more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*some PHP applications may require &lt;code&gt;safe_mode = off&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure php-fcgi (PHP's FastCGI)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line and change it as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data ; /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by the following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Hiawatha (Part 1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;Interface = 127.0.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5a (Optional for security purpose) :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;ConnectionsTotal = 1000&lt;br /&gt;ConnectionsPerIP = 10&lt;br /&gt;SystemLogfile = /var/log/hiawatha/system.log&lt;br /&gt;GarbageLogfile = /var/log/hiawatha/garbage.log&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes for the following entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 300&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;BanOnTimeout = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;BanOnDeniedBody = 300&lt;br /&gt;BanOnSQLi = 300&lt;br /&gt;BanOnFlooding = 10/1:15&lt;br /&gt;BanlistMask = deny 192.168.0.0/24, deny 127.0.0.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;KickOnBan = yes&lt;br /&gt;ReconnectDelay = 3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5b :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt; should be looking like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5c :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Include /etc/hiawatha/enable-sites/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*Make sure the make a directory &lt;code&gt;enable-sites&lt;/code&gt; under &lt;code&gt;/etc/hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /etc/hiawatha/enable-sites&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Configure Hiawatha (Part 2)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If your domain is mysite.com, you are required to create a file namely &lt;code&gt;mysite.com&lt;/code&gt; and place it under &lt;code&gt;/etc/hiawatha/enable-sites/mysite.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.mysite.com, mysite.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/mysite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 15&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBody = ^.*%3Cscript.*%3C%2Fscript%3E.*$&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail_mysite&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - Configure Hiawatha (Part 3) (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail_mysite ; /var/www/mysite ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8 - Configure Apparmor (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Execute the following command and then let the web site running for a while, maybe a week or so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;About one week later or the web page/site is misbehaving, issue the following command to update the profile.  Remember to reload the profile after the command has been issued.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-logprof&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or, if you are impatient, you can edit the following file instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The content of &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt; should look like this or make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Jun  3 01:52:13 2010&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/apache2-common&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/nameservice&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/php5&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fowner,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability fsetid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/sys/devices/system/cpu/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib/postfix/cleanup rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/logfiles/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/logfiles/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/log/hiawatha/** w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/run/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/pid/** wk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/hiawatha/ r,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (activate the above settings).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 9 - Enhance the security of cgi-wrapper (Optional for security purpose)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on cgi-wrapper.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of getcap :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 10 - Configure logwatch (Optional)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://secure-ubuntu-server.blogspot.com/2009/09/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;HOWTO : Logwatch for Hiawatha on Ubuntu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 11 - Start, Stop and Restart Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha start&lt;br /&gt;sudo /etc/init.d/hiawatha stop&lt;br /&gt;suod /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all!  See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-6166739513129284318?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6166739513129284318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6166739513129284318'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2010/08/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 7.3 on Ubuntu 10.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-7201634483647858980</id><published>2009-12-20T10:57:00.002+08:00</published><updated>2009-12-21T12:14:57.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.10'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server 6.19 on Ubuntu 9.10 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a web server that equipped with a lot of security features.  It is developed by Hugo Leisink since 2002.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Hiawatha supports PHP, Perl, Python and Ruby.  It is a lightweight and fast as well as secured web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation of &lt;u&gt;L&lt;/u&gt;inux, &lt;u&gt;H&lt;/u&gt;iawatha, &lt;u&gt;M&lt;/u&gt;ySQL and &lt;u&gt;P&lt;/u&gt;HP - LHMP&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 0 - Install Ubuntu 9.10&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;code&gt;Ubuntu 9.10 Server&lt;/code&gt; and &lt;code&gt;OpenSSH&lt;/code&gt;.&amp;nbsp; If your web application requires email function, you should also install &lt;code&gt;Mail Server&lt;/code&gt; also.&lt;br /&gt;&lt;br /&gt;Make sure you have perform the following commands at the terminal (or console).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you should reboot your computer/server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Install PHP5 and MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some modules will not be required, such as php5-sqlite and php5-snmp.&amp;nbsp; If your web application requires them, make sure to install them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Install Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Download the current Hiawatha, 6.19 at this time of writing.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo wget http://www.hiawatha-webserver.org/files/hiawatha-6.19.tar.gz&lt;br /&gt;tar -xzvf hiawatha-6.19.tar.gz&lt;br /&gt;cd hiawatha-6.19&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install requires dependenices.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At the &lt;code&gt;hiawatha-6.19&lt;/code&gt; directory, build the Hiawatha deb package.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The deb package will be created at your home directory, such as &lt;code&gt;/home/samiux&lt;/code&gt;.&amp;nbsp; You can install it now.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 64-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.19_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 32-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.19_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Edit the &lt;code&gt;php.ini&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make change as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some PHP application may requires &lt;code&gt;safe_mode = Off&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Edit Hiawatha's &lt;code&gt;php-fcgi.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line.&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Activate &lt;code&gt;php-fcgi&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Edit the file &lt;code&gt;hiawatha.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.  Apache compatible log file format.&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;ExploitLogfile = /var/log/hiawatha/exploit.log&lt;br /&gt;ServerString = Apache&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 60&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;br /&gt;BanOnSQLi = 60&lt;br /&gt;BanOnFlooding = 10/1:15&lt;br /&gt;BanlistMask = allow 192.168.0.0/24&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : Make change to the &lt;code&gt;Banlistmask&lt;/code&gt; in order to meet your network requirement.&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;php5-cgi&lt;/code&gt; and &lt;code&gt;CGIextension&lt;/code&gt; lines.&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;FastCGIserver&lt;/code&gt; and rename &lt;code&gt;ConnectTo&lt;/code&gt; to &lt;code&gt;127.0.0.1:2005&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Optional&lt;/u&gt; - Create the following lines under &lt;code&gt;URL TOOLKIT&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;UrlToolkit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolkitID = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI isfile Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI exists Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match ^/(favicon.ico|robots.txt|sitemap.xml)$ Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .*\?(.*) Rewrite /index.php?$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .* Rewrite /index.php&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : &lt;code&gt;UrlToolkit&lt;/code&gt; is similar to Apache's mod_rewrite.&lt;br /&gt;&lt;br /&gt;Create a &lt;code&gt;VirtualHost&lt;/code&gt; for your site.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = samiux.blogspot.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#Alias = /php_my_admin:/usr/share/phpmyadmin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/blog&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/blog_access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/blog_error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#UseFastCGI = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = taptubot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Configure &lt;code&gt;cgi-wrapper.conf&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes to the file.&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;CGIhandler = /usr/bin/python&lt;br /&gt;CGIhandler = /usr/bin/ruby&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail ; /var/www ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : &lt;code&gt;DenyBot&lt;/code&gt; entries are optional.&amp;nbsp; If you do not want spiders and bots to crawl your site, you should enable it.&amp;nbsp; Those entries are examples only.&amp;nbsp; &lt;code&gt;UseToolKit&lt;/code&gt; is also optional.&lt;br /&gt;&lt;br /&gt;Make sure &lt;code&gt;/var/log/hiawatha/blog&lt;/code&gt; exists (example) and its ownership is &lt;code&gt;www-data&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;If not, make it as is.&lt;br /&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/log/hiawatha/blog&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Restart Hiawatha.&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, make sure the ownership of &lt;code&gt;access.log&lt;/code&gt; and &lt;code&gt;error.log&lt;/code&gt; are &lt;code&gt;www-data&lt;/code&gt;.&amp;nbsp; If not, make them as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chown www-data:www-data /var/log/hiawatha/blog/*&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Apparmor (to make Hiawatha more safety)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create Apparmor profile for Hiawatha.&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Edit the profile &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the entries look like this.&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Oct  1 10:00:57 2009&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;br /&gt;&lt;br \&gt;&lt;br /&gt;/usr/sbin/hiawatha {&lt;br /&gt;  #include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&lt;br \&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability net_bind_service,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability sys_chroot,&lt;br /&gt;&lt;br \="" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;network inet tcp,&lt;br /&gt;&lt;br \="" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/group r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/cgi/php.ini r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/conf.d/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/conf.d/**.ini r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/**.cf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/hiawatha mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/dbconfig-common/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/file/magic.mime r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/mysql/charsets/Index.xml r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/zoneinfo/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/lib/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/* rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/* r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/hiawatha.pid rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/spool/postfix/maildrop/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/public/pickup w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rw,&lt;br /&gt;}&lt;/abstractions&gt;&lt;/tunables&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* suppose you are using postfix.&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (active).&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Improve the security of CGI-Wrapper&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on &lt;code&gt;cgi-wrapper&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of &lt;code&gt;getcap&lt;/code&gt; :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7 - logwatch configuration&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://secure-ubuntu-server.blogspot.com/2009/09/howto-logwatch-for-hiawatha-on-ubuntu.html"&gt;LogWatch configuration as per Ubuntu 9.04&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reference :&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/manpages"&gt;Hiawatha Manual&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/features"&gt;Hiawatha Features&lt;/a&gt;&lt;br /&gt;&lt;a href="https://help.ubuntu.com/community/AppArmor"&gt;AppArmor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Known Issue&lt;/b&gt;&lt;br /&gt;&lt;code&gt;Alias&lt;/code&gt; cannot be functioned with this configuration so far.&lt;br /&gt;&lt;br /&gt;That's all.&amp;nbsp; See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-7201634483647858980?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7201634483647858980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/7201634483647858980'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/12/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server 6.19 on Ubuntu 9.10 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-4982295933661628522</id><published>2009-10-01T11:09:00.007+08:00</published><updated>2009-10-01T21:00:43.992+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Highest secured Hiawatha Web Server (6.17.1) on Ubuntu 9.04 Server</title><content type='html'>&lt;b&gt;What is Hiawatha?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a web server that developed by Hugo Leisink since 2002.&amp;nbsp; Hiawatha is not as well known as Apache; however, it has some unique features that Apache lacks of.&amp;nbsp; Apache requires some modules to do the security purpose, such as modsecurity and mod_rewrite.&amp;nbsp; Hiawatha is already built-in.&amp;nbsp; She can ban some bad traffic and bad activities on your web server.&amp;nbsp; Her footprint is also small, that is 130kb, surprise?!&amp;nbsp; She is the default web server for Austrumi and Puppy Linux.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Although the user manual at her official site is not detail enough (at the time of this writing), it is quite easy to configure and runs on a production server.&amp;nbsp; There may be a bug at cgi-wrapper in Hiawatha 6.17.1 and it requires to modify the source code to solve the problem.&lt;br /&gt;&lt;br /&gt;Hiawatha runs MySQL and PHP great in cgi mode.&amp;nbsp; It can run in Windows environment too (but not yet tried).&amp;nbsp; This tutorial is going to show you how to configure Hiawatha to work with MySQL and PHP.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation of &lt;u&gt;L&lt;/u&gt;inux, &lt;u&gt;H&lt;/u&gt;iawatha, &lt;u&gt;M&lt;/u&gt;ySQL and &lt;u&gt;P&lt;/u&gt;HP - LHMP&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 0 - Install Ubuntu 9.04&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;code&gt;Ubuntu 9.04 Server&lt;/code&gt; and &lt;code&gt;OpenSSH&lt;/code&gt;.&amp;nbsp; If your web application requires email function, you should also install &lt;code&gt;Mail Server&lt;/code&gt; also.&lt;br /&gt;&lt;br /&gt;Make sure you have perform the following commands at the terminal (or console).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you should reboot your computer/server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Install PHP5 and MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some modules will not be required, such as php5-sqlite and php5-snmp.&amp;nbsp; If your web application requires them, make sure to install them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Install Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Download the current Hiawatha, 6.17.1 at this time of writing.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo wget http://www.hiawatha-webserver.org/files/hiawatha-6.17.1.tar.gz&lt;br /&gt;tar -xzvf hiawatha-6.17.1.tar.gz&lt;br /&gt;cd hiawatha-6.17.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install requires dependenices.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Fix bug on Hiawatha.&lt;br /&gt;&lt;code&gt;sudo nano cgi-wrapper.c&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At line 103, just below &lt;code&gt;rest = uncomment(line);&lt;/code&gt; add the following lines :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;if (*rest == '\0') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At the &lt;code&gt;hiawatha-6.17.1&lt;/code&gt; directory, build the Hiawatha deb package.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The deb package will be created at your home directory, such as &lt;code&gt;/home/samiux&lt;/code&gt;.&amp;nbsp; You can install it now.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 64-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.17.1_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 32-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.17.1_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Configure PHP5&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Edit the &lt;code&gt;php.ini&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make change as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some PHP application may requires &lt;code&gt;safe_mode = Off&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Edit Hiawatha's &lt;code&gt;php-fcgi.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line.&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Activate &lt;code&gt;php-fcgi&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4 - Configure Hiawatha&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Edit the file &lt;code&gt;hiawatha.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.  Apache compatible log file format.&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;br /&gt;CGIwrapper = /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 60&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;br /&gt;BanOnSQLi = 60&lt;br /&gt;BanOnFlooding = 10/1:15&lt;br /&gt;BanlistMask = allow 192.168.0.0/24&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : Make change to the &lt;code&gt;Banlistmask&lt;/code&gt; in order to meet your network requirement.&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;php5-cgi&lt;/code&gt; and &lt;code&gt;CGIextension&lt;/code&gt; lines.&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;#CGIhandler = /usr/bin/python:py&lt;br /&gt;#CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;#CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;FastCGIserver&lt;/code&gt; and rename &lt;code&gt;ConnectTo&lt;/code&gt; to &lt;code&gt;127.0.0.1:2005&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Optional&lt;/u&gt; - Create the following lines under &lt;code&gt;URL TOOLKIT&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;UrlToolkit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolkitID = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI isfile Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI exists Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match ^/(favicon.ico|robots.txt|sitemap.xml)$ Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .*\?(.*) Rewrite /index.php?$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .* Rewrite /index.php&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : &lt;code&gt;UrlToolkit&lt;/code&gt; is similar to Apache's mod_rewrite.&lt;br /&gt;&lt;br /&gt;Create a &lt;code&gt;VirtualHost&lt;/code&gt; for your site.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = samiux.blogspot.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#Alias = /php_my_admin:/usr/share/phpmyadmin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/blog&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/blog/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/blog/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#UseFastCGI = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCMDi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = YoudaoBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = ParchBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Curl:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = msnbot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = NaverBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WrapCGI = jail&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Configure &lt;code&gt;cgi-wrapper.conf&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/cgi-wrapper.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make changes to the file.&lt;br /&gt;&lt;code&gt;CGIhandler = /usr/bin/perl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi&lt;br /&gt;#CGIhandler = /usr/bin/python&lt;br /&gt;#CGIhandler = /usr/bin/ruby&lt;br /&gt;#CGIhandler = /usr/bin/ssi-cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Wrap = jail ; /var/www ; www-data:www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : Some CMS will not well when &lt;code&gt;PreventCMDi = yes&lt;/code&gt;.&amp;nbsp; &lt;code&gt;DenyBot&lt;/code&gt; entries are optional.&amp;nbsp; If you do not want spiders and bots to crawl your site, you should enable it.&amp;nbsp; Those entries are examples only.&amp;nbsp; &lt;code&gt;UseToolKit&lt;/code&gt; is also optional.&lt;br /&gt;&lt;br /&gt;Make sure &lt;code&gt;/var/log/hiawatha/blog&lt;/code&gt; exists (example) and its ownership is &lt;code&gt;www-data&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;If not, make it as is.&lt;br /&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/log/hiawatha/blog&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Restart Hiawatha.&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, make sure the ownership of &lt;code&gt;access.log&lt;/code&gt; and &lt;code&gt;error.log&lt;/code&gt; are &lt;code&gt;www-data&lt;/code&gt;.&amp;nbsp; If not, make them as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chown www-data:www-data /var/log/hiawatha/blog/*&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 5 - Configure Apparmor (to make Hiawatha more safety)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create Apparmor profile for Hiawatha.&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Edit the profile &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the entries look like this.&lt;br /&gt;&lt;code&gt;# Last Modified: Thu Oct  1 10:00:57 2009&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;br /&gt;&lt;br \&gt;&lt;br /&gt;/usr/sbin/hiawatha {&lt;br /&gt;  #include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&lt;br \&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability net_bind_service,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability sys_chroot,&lt;br /&gt;&lt;br \="" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;network inet tcp,&lt;br /&gt;&lt;br \="" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/bin/dash rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/group r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/host.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hosts r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/mailname r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/cgi/php.ini r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/conf.d/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/php5/conf.d/**.ini r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/postfix/**.cf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/protocols r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/resolv.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/services r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/lib{,32,64}/** mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/hiawatha mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/postdrop rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/sendmail rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/dbconfig-common/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/file/magic.mime r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/mysql/charsets/Index.xml r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/zoneinfo/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/lib/** rwk,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/* rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/* r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/hiawatha.pid rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner /var/spool/postfix/maildrop/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/spool/postfix/public/pickup w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rw,&lt;br /&gt;}&lt;/abstractions&gt;&lt;/tunables&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;* suppose you are using postfix.&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (active).&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &amp;lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 6 - Improve the security of CGI-Wrapper&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, your hiawatha is very secure but I would like to make it more secure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libcap2-bin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Apply Capabilities on &lt;code&gt;cgi-wrapper&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo chmod u-s /usr/sbin/cgi-wrapper&lt;br /&gt;sudo setcap cap_setgid,cap_setuid+ep /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result of &lt;code&gt;getcap&lt;/code&gt; :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo getcap /usr/sbin/cgi-wrapper&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will display :&lt;br /&gt;&lt;code&gt;/usr/sbin/cgi-wrapper = cap_setgid,cap_setuid+ep&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reference :&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/manpages"&gt;Hiawatha Manual&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hiawatha-webserver.org/features"&gt;Hiawatha Features&lt;/a&gt;&lt;br /&gt;&lt;a href="https://help.ubuntu.com/community/AppArmor"&gt;AppArmor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Known Issue&lt;/b&gt;&lt;br /&gt;&lt;code&gt;Alias&lt;/code&gt; cannot be functioned with this configuration so far.&lt;br /&gt;&lt;br /&gt;That's all.&amp;nbsp; See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-4982295933661628522?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/4982295933661628522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/4982295933661628522'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/10/howto-highest-secured-hiawatha-web.html' title='HOWTO : Highest secured Hiawatha Web Server (6.17.1) on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5686384107356076382</id><published>2009-09-20T12:20:00.001+08:00</published><updated>2009-09-20T12:20:52.860+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Logwatch for Hiawatha on Ubuntu 9.04 Server</title><content type='html'>Logwatch reads your log files and alert you about the unusual log entries.  It is working perfect for Apache.  However, the log directory of Hiawatha is different from Apache.  You should do something else on logwatch in order to make it to read Hiawatha log files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 0 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;code&gt;logwatch&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install logwatch&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;Make changes to the &lt;code&gt;logwatch&lt;/code&gt; configure file in order to tell her to send you a email report.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /usr/share/logwatch/default.conf/logwatch.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Change the settings of the following lines.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Output = mail&lt;br /&gt;Format = html&lt;br /&gt;MailTo = samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You should also change the setting at the daily cron job.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/cron.daily/00logwatch&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the entry like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/logwatch --mailto samiux@gmail.com&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Step 3 :&lt;br /&gt;&lt;br /&gt;Make &lt;code&gt;logwatch&lt;/code&gt; to read &lt;code&gt;Hiawatha&lt;/code&gt; log files.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /usr/share/logwatch/default.conf/logfiles/http.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the following lines on the appropriate sections.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LogFile = hiawatha/*access.log&lt;br /&gt;LogFile = hiawatha/*access.log.1&lt;br /&gt;LogFile = hiawatha/*error.log&lt;br /&gt;LogFile = hiawatha/*error.log.1&lt;br /&gt;LogFile = hiawatha/*system.log&lt;br /&gt;LogFile = hiawatha/*system.log.1&lt;br /&gt;LogFile = hiawatha/*garbage.log&lt;br /&gt;LogFile = hiawatha/*garbage.log.1&lt;br /&gt;LogFile = hiawatha/*php-fcgi.log&lt;br /&gt;LogFile = hiawatha/*php-fcgi.log.1&lt;br /&gt;&lt;br /&gt;Archive = hiawatha/*access.log.*.gz&lt;br /&gt;Archive = hiawatha/*error.log.*.gz&lt;br /&gt;Archive = hiawatha/*system.log.*.gz&lt;br /&gt;Archive = hiawatha/*garbage.log.*.gz&lt;br /&gt;Archive = hiawatha/*php-fcgi.log.*.gz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;See also (Hiawatha 6.17.1 installation) :&lt;/strong&gt;&lt;br /&gt;&lt;a href=http://samiux.blogspot.com/2009/09/howto-most-secure-web-server-hiawatha.html&gt;Samiux's Blog&lt;/a&gt;&lt;br /&gt;or&lt;br /&gt;&lt;a href=http://secure-ubuntu-server.blogspot.com/2009/09/howto-most-secure-web-server-hiawatha.html&gt;Almost Secure and Perfect Ubuntu Server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5686384107356076382?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5686384107356076382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5686384107356076382'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/09/howto-logwatch-for-hiawatha-on-ubuntu.html' title='HOWTO : Logwatch for Hiawatha on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1660474550276461000</id><published>2009-09-15T23:42:00.002+08:00</published><updated>2009-09-16T00:48:27.412+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Most secure web server (Hiawatha 6.17.1) on Ubuntu 9.04 Server</title><content type='html'>&lt;strong&gt;What is Hiawatha?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=http://www.hiawatha-webserver.org/&gt;Hiawatha&lt;/a&gt; is a web server that developed by Hugo Leisink since 2002.  Hiawatha is not as well known as Apache; however, it has some unique features that Apache lacks of.  Apache requires some modules to do the security purpose, such as modsecurity and mod_rewrite.  Hiawatha is already built-in.  She can ban some bad traffic and bad activities on your web server.  Her footprint is also small, that is 130kb, surprise?!  She is the default web server for Austrumi and Puppy Linux.  &lt;br /&gt;&lt;br /&gt;Although the user manual at her official site is not detail enough (at the time of this writing), it is quite easy to configure and runs on a production server.  There may be a bug at cgi-wrapper in Hiawatha 6.17.1 and it cannot be configured to run PHP5 in cgi-wrapper mode at the moment.  However, perl is no problem.&lt;br /&gt;&lt;br /&gt;Hiawatha runs MySQL and PHP great in cgi mode.  It can run in Windows environment too (but not yet tried).  This tutorial is going to show you how to configure Hiawatha to work with MySQL and PHP.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Installation of &lt;u&gt;L&lt;/u&gt;inux, &lt;u&gt;H&lt;/u&gt;iawatha, &lt;u&gt;M&lt;/u&gt;ySQL and &lt;u&gt;P&lt;/u&gt;HP - LHMP&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 0 - Install Ubuntu 9.04&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;code&gt;Ubuntu 9.04 Server&lt;/code&gt; and &lt;code&gt;OpenSSH&lt;/code&gt;.  If your web application requires email function, you should also install &lt;code&gt;Mail Server&lt;/code&gt; also.&lt;br /&gt;&lt;br /&gt;Make sure you have perform the following commands at the terminal (or console).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the kernel or kernel modules have been updated, you should reboot your computer/server.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 - Install PHP5 and MySQL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some modules will not be required, such as php5-sqlite and php5-snmp.  If your web application requires them, make sure to install them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 - Install Hiawatha&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Download the current Hiawatha, 6.17.1 at this time of writing.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo wget http://www.hiawatha-webserver.org/files/hiawatha-6.17.1.tar.gz&lt;br /&gt;tar -xzvf hiawatha-6.17.1.tar.gz&lt;br /&gt;cd hiawatha-6.17.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install requires dependenices.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At the &lt;code&gt;hiawatha-6.17.1&lt;/code&gt; directory, build the Hiawatha deb package.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure&lt;br /&gt;make deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The deb package will be created at your home directory, such as &lt;code&gt;/home/samiux&lt;/code&gt;.  You can install it now.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd ..&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 64-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.17.1_amd64.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For 32-bit system :&lt;br /&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.17.1_i386.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 - Configure PHP5&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Edit the &lt;code&gt;php.ini&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make change as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : some PHP application may requires &lt;code&gt;safe_mode = Off&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Edit Hiawatha's &lt;code&gt;php-fcgi.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line.&lt;br /&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Activate &lt;code&gt;php-fcgi&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you make any change on &lt;code&gt;php-fcgi.conf&lt;/code&gt;, make sure to restart it by following commands.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;br /&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4 - Configure Hiawatha&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Edit the file &lt;code&gt;hiawatha.conf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the following line at the &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.  Apache compatible log file format.&lt;br /&gt;&lt;code&gt;LogFormat = extended&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 60&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;br /&gt;BanOnSQLi = 0&lt;br /&gt;BanOnFlooding = 10/1:15&lt;br /&gt;BanlistMask = allow 192.168.0.0/24&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : Make change to the &lt;code&gt;Banlistmask&lt;/code&gt; in order to meet your network requirement.&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;php5-cgi&lt;/code&gt; and &lt;code&gt;CGIextension&lt;/code&gt; lines.&lt;br /&gt;&lt;code&gt;#CGIhandler = /usr/bin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php&lt;br /&gt;#CGIhandler = /usr/bin/python:py&lt;br /&gt;#CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;#CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;CGIextension = cgi&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;FastCGIserver&lt;/code&gt; and rename &lt;code&gt;ConnectTo&lt;/code&gt; to &lt;code&gt;127.0.0.1:2005&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Optional&lt;/u&gt; - Create the following lines under &lt;code&gt;URL TOOLKIT&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;UrlToolkit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolkitID = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI isfile Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI exists Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match ^/(favicon.ico|robots.txt|sitemap.xml)$ Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .*\?(.*) Rewrite /index.php?$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .* Rewrite /index.php&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : &lt;code&gt;UrlToolkit&lt;/code&gt; is similar to Apache's mod_rewrite.&lt;br /&gt;&lt;br /&gt;Create a &lt;code&gt;VirtualHost&lt;/code&gt; for your site.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = samiux.blogspot.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alias = /php_my_admin:/usr/share/phpmyadmin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/blog&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/blog/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/blog/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForCGI = 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = CMS_common&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecuteCGI = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCMDi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Googlebot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = twiceler:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = MSNBot:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = yahoo:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = BaiDuSpider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Ask:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yahoo! Slurp:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou web spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sogou-Test-Spider:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Baiduspider+:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Yandex:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = UniversalFeedParser:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Mediapartners-Google:/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DenyBot = Sosospider+:/&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;*&lt;u&gt;Note&lt;/u&gt; : Some CMS will not well when &lt;code&gt;PreventCMDi = yes&lt;/code&gt;.  &lt;code&gt;DenyBot&lt;/code&gt; entries are optional.  If you do not want spiders and bots to crawl your site, you should enable it.  Those entries are examples only.  &lt;code&gt;UseToolKit&lt;/code&gt; is also optional.&lt;br /&gt;&lt;br /&gt;Make sure &lt;code&gt;/var/log/hiawatha/blog&lt;/code&gt; exists (example) and its ownership is &lt;code&gt;www-data&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;If not, make it as is.&lt;br /&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/log/hiawatha/blog&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Restart Hiawatha.&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, make sure the ownership of &lt;code&gt;access.log&lt;/code&gt; and &lt;code&gt;error.log&lt;/code&gt; are &lt;code&gt;www-data&lt;/code&gt;.  If not, make them as is.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo chown www-data:www-data /var/log/hiawatha/blog/*&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 5 - Configure Apparmor (to make Hiawatha more safety)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create Apparmor profile for Hiawatha.&lt;br /&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Edit the profile &lt;code&gt;usr.sbin.hiawatha&lt;/code&gt;.&lt;br /&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the entries look like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Last Modified: Tue Sep  1 10:28:15 2009&lt;br /&gt;#include &amp;lt;tunables/global&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability net_bind_service,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability sys_chroot,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;network inet tcp,&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/group r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/hiawatha mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/dbconfig-common/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/* rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/* r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/blog/* r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/blog/** a,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/hiawatha.pid w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rw,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Make the profile in enforce mode (active).&lt;br /&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have change some settings, you should reload the profile.&lt;br /&gt;&lt;code&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to disable this profile.&lt;br /&gt;&lt;code&gt;sudo ln -s /etc/apparmor.d/usr.sbin.hiawatha /etc/apparmor.d/disable/&lt;br /&gt;sudo apparmor_parser -R &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want to re-enable this profile after it has been disabled.&lt;br /&gt;&lt;code&gt;sudo rm /etc/apparmor.d/disable/usr.sbin.hiawatha&lt;br /&gt;sudo apparmor_parser -r &lt; /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 6 - Configure CGI-Wrapper&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To be continue ....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reference :&lt;/strong&gt;&lt;br /&gt;&lt;a href=http://www.hiawatha-webserver.org/manpages&gt;Hiawatha Manual&lt;/a&gt;&lt;br /&gt;&lt;a href=http://www.hiawatha-webserver.org/features&gt;Hiawatha Features&lt;/a&gt;&lt;br /&gt;&lt;a href=https://help.ubuntu.com/community/AppArmor&gt;AppArmor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1660474550276461000?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1660474550276461000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1660474550276461000'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/09/howto-most-secure-web-server-hiawatha.html' title='HOWTO : Most secure web server (Hiawatha 6.17.1) on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-729807107548491455</id><published>2009-08-30T17:05:00.004+08:00</published><updated>2009-09-01T10:58:50.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Apparmor'/><category scheme='http://www.blogger.com/atom/ns#' term='Hiawatha'/><title type='text'>HOWTO : Hiawatha 6.16 web server on Ubuntu 9.04 Server</title><content type='html'>&lt;a href="http://www.hiawatha-webserver.org/"&gt;Hiawatha&lt;/a&gt; is a web server which is developed by Hugo Leisink who is in a great interest in IT security.  It is designed with security in mind.  It comes with Cross-site Scripting (XSS) prevention, Cross-site Request Forgery (CSRF) prevention, DoS/flooding protection, and SQL injection prevention.&lt;br /&gt;&lt;br /&gt;It works with PHP and MySQL.  Therefore, the LAMP (Linux, Apache, MySQL and PHP) should be renamed to LHMP (Linux, Hiawatha, MySQL and PHP).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 0 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install Ubuntu 9.04 Server and OpenSSH as usual.  Make sure to perform the following.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Download Hiawatha, the current version at this writing is 6.16, at &lt;code&gt;http://www.hiawatha-webserver.org/download&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo wget http://www.hiawatha-webserver.org/files/hiawatha-6.16.tar.gz&lt;br /&gt;tar -xzvf hiawatha-6.16.tar.gz&lt;br /&gt;cd hiawatha-6.16&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Configure and compile the Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install build-essentail libc6-dev libssl-dev dpkg-dev debhelper fakeroot libxml2-dev libxslt1-dev&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo ./configure&lt;br /&gt;sudo make deb&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The deb package will be created at &lt;code&gt;/home/samiux&lt;/code&gt;.  You can install it by :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.16_amd64.deb&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;or&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo dpkg -i hiawatha_6.16_i386.deb&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install mysql and php5.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client php5-cgi php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Enter the password for the MySQL and write it down for further usage.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following line :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;Server = /usr/bin/php5-cgi ; 127.0.0.1:2005 ; www-data&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Activate &lt;code&gt;php-fcgi&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo php-fcgi -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Kill it with -k, such as :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo php-fcgi -k -c /etc/hiawatha/php-fcgi.conf&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;*Make sure you have been activated &lt;code&gt;php-fcgi&lt;/code&gt;; otherwise, php5 cannot be run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/hiawatha/hiawatha.conf&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment &lt;code&gt;ServerId&lt;/code&gt; at &lt;code&gt;GENERAL SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;ServerId = www-data&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment the following entries at &lt;code&gt;BINDING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;Binding {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port = 80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxKeepAlive = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForRequest = 3,20&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries at &lt;code&gt;BANNING SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;BanOnGarbage = 300&lt;br /&gt;BanOnMaxPerIP = 60&lt;br /&gt;BanOnMaxReqSize = 300&lt;br /&gt;KickOnBan = yes&lt;br /&gt;RebanDuringBan = yes&lt;br /&gt;BanOnSQLi = 0&lt;br /&gt;BanOnFlooding = 10/1:15&lt;br /&gt;BanlistMask = allow 192.168.0.0/24&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries at &lt;code&gt;COMMON GATEWAY INTERFACE (CGI) SETTINGS&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;CGIhandler = /usr/hin/perl:pl&lt;br /&gt;CGIhandler = /usr/bin/php5-cgi:php,php5&lt;br /&gt;CGIhandler = /usr/bin/python:py&lt;br /&gt;CGIhandler = /usr/bin/ruby:rb&lt;br /&gt;CGIhandler = /usr/bin/ssi-cgi:shtml&lt;br /&gt;GCIextension = cgi&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;FastCGIserver&lt;/code&gt; and rename &lt;code&gt;ConnectTo&lt;/code&gt; to &lt;code&gt;127.0.0.1:2005&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;FastCGIserver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FastCGIid = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ConnectTo = 127.0.0.1:2005&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Extension = php, php5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SessionTimeout = 30&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;URL TOOLKIT&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;UrlToolkit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolkitID = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestURI isfile Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match ^/(favicon.ico|robots.txt|sitemap.xml)$ Return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .*\?(.*) Rewrite /index.php?$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Match .* Rewrite /index.php&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uncomment all the entries of &lt;code&gt;VIRTUAL HOSTS&lt;/code&gt; and alert it when necessary.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;VirtualHost {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname = www.samiux.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebsiteRoot = /var/www/www.samiux.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartFile = index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AccessLogfile = /var/log/hiawatha/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLogfile = /var/log/hiawatha/error.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TimeForGCI = 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseFastCGI = PHP5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseToolkit = banshee&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventCSRF = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventSQLi = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreventXSS = yes&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Assumed that your domain name is &lt;code&gt;samiux.com&lt;/code&gt; and the site is at &lt;code&gt;/var/www/www.samiux.com&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 5 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Change the following line to &lt;code&gt;Off&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;allow_url_fopen = Off&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 6 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Restart the Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo /etc/init.d/hiawatha restart&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 7 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Use AppArmor with Hiawatha.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo aa-genprof hiawatha&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/apparmor.d/usr.sbin.hiawatha&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add the following lines.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;#include &amp;lt;tunables/global&amp;gt;&lt;br /&gt;/usr/sbin/hiawatha {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &amp;lt;abstractions/base&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability chown,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability dac_override,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability net_bind_service,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setgid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability setuid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;capability sys_chroot,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;network inet tcp,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/group r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/hiawatha/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/nsswitch.conf r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/passwd r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/bin/php5-cgi rix,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/cgi-wrapper mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/sbin/hiawatha mr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/dbconfig-common/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/share/phpmyadmin/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/** r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/lib/hiawatha/* rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/log/hiawatha/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/run/hiawatha.pid w,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/ r,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/var/www/** rw,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/home/*/public_html/** r,&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Make it enforce.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo aa-enforce hiawatha&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-729807107548491455?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/729807107548491455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/729807107548491455'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/08/howto-hiawatha-616-web-server-on-ubuntu.html' title='HOWTO : Hiawatha 6.16 web server on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5511910816740676715</id><published>2009-08-18T00:05:00.000+08:00</published><updated>2009-08-18T00:06:34.568+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='quota'/><category scheme='http://www.blogger.com/atom/ns#' term='ext4'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Quota with ext4 on Ubuntu 9.04 Server</title><content type='html'>There is a bug in quota package when filesystem is ext4 in Ubuntu 9.04 Server.  You cannot activate quota function under ext4 on Ubuntu 9.04.  However, we can use Ubuntu 9.10's package instead.  It is in alpha stage at the moment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Download the package at &lt;a href="http://packages.ubuntu.com/karmic/admin/quota"&gt;here&lt;/a&gt; and the current version is 3.17-3 by this writing.&lt;br /&gt;&lt;br /&gt;Install the package and configure the package as usual.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo dpkg -i &amp;lt;package_name&amp;gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Edit &lt;code&gt;/etc/fstab&lt;/code&gt; and add "&lt;code&gt;usrquota,grpquota&lt;/code&gt;" on the partition with the mount point /.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo touch /quota.user /quota.group&lt;br /&gt;sudo chmod 600 /quota.*&lt;br /&gt;sudo mount -o remount /&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo quotacheck -avugm&lt;br /&gt;sudo quotaon -avug&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5511910816740676715?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5511910816740676715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5511910816740676715'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/08/howto-quota-with-ext4-on-ubuntu-904.html' title='HOWTO : Quota with ext4 on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-8183649300324379110</id><published>2009-08-15T08:43:00.007+08:00</published><updated>2009-08-15T22:28:20.379+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Cherokee'/><category scheme='http://www.blogger.com/atom/ns#' term='Torrentflux-b4rt'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Torrentflux-b4rt with Cherokee on Ubuntu 9.04 Server</title><content type='html'>I am going to build a Bittorrent server with Cherokee web server instead of Apache.  I call it as LCMP - Linux, Cherokee, MySQL and PHP.  It may be the fastest web server in the world so far.  You are not require to edit the config files.  All settings are completed by your browser.&lt;br /&gt;&lt;br /&gt;Bittorrent server front-end is using Torrentflux-b4rt.  It is running on PHP and MySQL with bittornado.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 0 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Install Ubuntu 9.04 Server edition as usual.  Select OpenSSH only when install.&lt;br /&gt;&lt;br /&gt;After the installation, perform the system update.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Assume your server's IP is 192.168.0.200&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/cherokee.list&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add the following lines.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;deb http://ppa.launchpad.net/cherokee-webserver/ppa/ubuntu jaunty main&lt;br /&gt;deb-src http://ppa.launchpad.net/cherokee-webserver/ppa/ubuntu jaunty main&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add the key.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBA7BD49&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install cherokee&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install mysql-server mysql-client&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Enter the MySQL root password when asked.  Make sure you have write it down.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install php5-cgi&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/php5/cgi/php.ini&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Append the following line at the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cgi.fix_pathinfo = 1&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo /etc/init.d/cherokee restart&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install php5 php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo /etc/init.d/cherokee restart&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo cherokee-admin -b&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The following will be displayed.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;Login:&lt;br /&gt; User:              admin&lt;br /&gt; One-time Password: W0K2jR961aYaeiwu&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;Web Interface:&lt;br /&gt; URL:               http://localhost:9090/&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;Cherokee Web Server 0.99.22 (Aug  5 2009): Listening on port ALL:9090, TLS disabled, IPv6 disabled, using epoll, 4096 fds system limit, max. 2041 connections, caching I/O, single thread&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Open browser and point to &lt;code&gt;http://192.168.0.200:9090&lt;/code&gt; or &lt;code&gt;http://localhost:9090&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Enter the user name as "admin" and password as "W0K2jR961aYaeiwu" (which will be changed each time).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 5 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Clone a virtual host from default.  Add the domain name, document root and etc.&lt;br /&gt;&lt;br /&gt;The document root should be "/var/www/torrentflux".&lt;br /&gt;&lt;br /&gt;Go back to the terminal and press Ctrl + C to quit the Cherokee's admin page.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo /etc/init.d/cherokee restart&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 6 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo apt-get install unrar unzip vlc uudeview build-essential bittornado&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Download and compile cksfv that is required by torrentflux-b4rt.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wget http://zakalwe.fi/~shd/foss/cksfv/files/cksfv-1.3.14.tar.bz2&lt;br /&gt;tar -xjvf cksfv-1.3.14.tar.bz2&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd cksfv-1.3.14&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Get and install torrentflux-b4rt.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;wget http://download.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2&lt;br /&gt;tar -xjvf torrentflux-b4rt_1.0-beta2.tar.bz2&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cd torrentflux-b4rt_1.0-beta2&lt;br /&gt;sudo cp -R html /var/www/torrentflux&lt;br /&gt;sudo chmod -R 0777 /var/www/torrentflux/inc/config&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo mkdir /home/samiux/torrent&lt;br /&gt;sudo chmod -R 0777 /home/samiux/torrent&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 7 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Point your browser to &lt;code&gt;http://192.168.0.200/setup.php&lt;/code&gt; and configure it.&lt;br /&gt;&lt;br /&gt;** You keyin the username and password on the torrentflux-b4rt will be recorded for the admin account.  Please write it down.&lt;br /&gt;&lt;br /&gt;The download directory should be "/home/samiux/torrent".&lt;br /&gt;&lt;br /&gt;After the configuration, delete the setup.php.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo rm /var/www/torrentflux/setup.php&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 8 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Make sure to forward the default ports 49160 to 49300 at your router or firewall.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 9 (Optional) :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://secure-ubuntu-server.blogspot.com/2009/07/howto-vsftpd-on-ubuntu-server-904.html"&gt;Install vsftpd when necessary.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;** Make sure you change the IP address at "pasv_address".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 10 (Optional) :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://secure-ubuntu-server.blogspot.com/2009/07/howto-rebootless-with-ksplice-uptrack.html"&gt;Make your server bootless.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-8183649300324379110?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/8183649300324379110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/8183649300324379110'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/08/howto-torrentflux-b4rt-with-cherokee-on.html' title='HOWTO : Torrentflux-b4rt with Cherokee on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1976149262603008136</id><published>2009-07-31T12:14:00.005+08:00</published><updated>2009-08-11T18:26:20.665+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Postfix'/><category scheme='http://www.blogger.com/atom/ns#' term='Godaddy'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Godaddy.com's Relay Mail Server with Postfix on Ubuntu 9.04 Server</title><content type='html'>Your Internet Services Provider (ISP) may block SMTP port (Port 25) if you are not using a business plan (like in Hong Kong).  However, you can still send email with reverse lookup of your domain name when your domain registrar is Godaddy.com.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create and enable your free email account at Godaddy.com when you have a domain name there.  Set the password accordingly.  Your username of the account may be look like this : yourname@yourdomain.&lt;br /&gt;&lt;br /&gt;Incoming Mail Server Type : POP3&lt;br /&gt;Incoming Mail Server : pop.secureserver.net&lt;br /&gt;Incoming Mail Server Port : 110&lt;br /&gt;&lt;br /&gt;Outgoing Mail Server : smtpout.secureserver.net&lt;br /&gt;Outgoing Mail Server Port : 25, 80, 587 or 3535&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a file namely "sasl_passwd".&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/postfix/sasl/sasl_passwd&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Add the following line.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;smtpout.secureserver.net   username:password&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2a :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Save and quit.  Issue the following commands.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;chown root:root /etc/postfix/sasl/sasl_passwd&lt;br /&gt;chmod 600 /etc/postfix/sasl/sasl_passwd&lt;br /&gt;postmap /etc/postfix/sasl/sasl_passwd&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Step 3 :&lt;br /&gt;&lt;br /&gt;Go to your mail server (Postfix).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/postfix/main.cf&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Edit or/and add the following lines.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;relayhost = [smtpout.secureserver.net]&lt;br /&gt;smtp_sasl_auth_enable = yes&lt;br /&gt;smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd&lt;br /&gt;smtp_sasl_security_options = noanonymous&lt;br /&gt;mynetworks = 192.168.0.0/24, 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;*If your network is 192.168.0.0/24, otherwise; change it accordingly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restart the Postfix to make it work.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/postfix restart&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, you can send email with reverse lookup via Godaddy.com's relay mail server.  Your email will not be blocked or redirected to "Junk Mail" folder by Gmail, Yahoo Mail or others.&lt;br /&gt;&lt;br /&gt;Be keep in mind that you have 250 quota every day.  Or, you are required to purchase more quota.&lt;br /&gt;&lt;br /&gt;Point to your email server on other servers that will send email.&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1976149262603008136?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1976149262603008136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1976149262603008136'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-goddaycoms-relay-mail-server-with.html' title='HOWTO : Godaddy.com&apos;s Relay Mail Server with Postfix on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5338939984752501689</id><published>2009-07-26T17:35:00.003+08:00</published><updated>2009-07-31T12:39:48.154+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>HOWTO : Performance tuning for PostgreSQL on Ubuntu 9.04 Server</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Edit postgresql.conf.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The performance tuning setting is as the following :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(1) shared_buffers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 0.25 * Available Memory&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(2) work_mem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : Available Memory / max_connections&lt;br /&gt;(If your queries tend to be more complicated, then divide that by 2.  If you typically run very close to max_connections connections, then consider dividing by 2 again.  If that gives you a number that isn't at least 16MB, buy more memory.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(3) maintenance_work_mem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : Available Memory / 8&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(4) wal_buffers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 8MB&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(5) checkpoint_segments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 16 to 128&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(6) effective_cache_size&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : Available Memory * 0.75&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(7) cpu_tuple_cost &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 0.0030&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(8) cpu_index_tuple_cost &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 0.0010&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(9) cpu_operator_cost &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 0.0005&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(10) fsync &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : off&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Warning : If “fsync” is set to “off”, you may encounter data loss when the power failure unless you have a battery backup unit at your hardware RAID card.&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;(11) max_connection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 140% (100 clients average means 140 max connections)&lt;br /&gt;&lt;br /&gt;(&lt;span style="font-weight: bold;"&gt;12) checkpoint_timeout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recommended : 1h&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restart PostgreSQL server.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/postgresql-8.3 restart&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it produces error message and cannot restart, change the setting for "kernel.shmmax" on sysctl.conf as suggested.&lt;br /&gt;&lt;br /&gt;Edit the sysctl.conf as suggested.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/sysctl.conf&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Reference #1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following is the my setting of a 8GB RAM server which is running PostgreSQL.&lt;br /&gt;&lt;br /&gt;/etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;max_connections = 140&lt;br /&gt;shared_buffers = 2GB&lt;br /&gt;temp_buffers = 8MB&lt;br /&gt;work_mem = 16MB&lt;br /&gt;maintenance_work_mem = 1GB&lt;br /&gt;wal_buffers = 8MB&lt;br /&gt;checkpoint_segments = 128&lt;br /&gt;effective_cache_size = 6GB&lt;br /&gt;cpu_tuple_cost = 0.0030&lt;br /&gt;cpu_index_tuple_cost = 0.0010&lt;br /&gt;cpu_operator_cost = 0.0005&lt;br /&gt;fsync = off&lt;br /&gt;checkpoint_timeout = 1h&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Reference #2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following is my setting of sysctl.conf on the same server.&lt;br /&gt;&lt;br /&gt;/etc/sysctl.conf&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;kernel.sem = 250 32000 100 128&lt;br /&gt;kernel.shmall = 2097152&lt;br /&gt;kernel.shmmax = 2209914880&lt;br /&gt;kernel.shmmni = 4096&lt;br /&gt;fs.file-max = 262140&lt;br /&gt;vm.vfs_cache_pressure = 50&lt;br /&gt;vm.min_free_kbytes = 65536&lt;br /&gt;&lt;br /&gt;net.core.rmem_default = 33554432&lt;br /&gt;net.core.rmem_max = 33554432&lt;br /&gt;net.core.wmem_default = 33554432&lt;br /&gt;net.core.wmem_max = 33554432&lt;br /&gt;net.ipv4.tcp_rmem = 10240 87380 33554432&lt;br /&gt;net.ipv4.tcp_wmem = 10240 87380 33554432&lt;br /&gt;net.ipv4.tcp_no_metrics_save = 1&lt;br /&gt;net.ipv4.tcp_window_scaling = 1&lt;br /&gt;net.ipv4.tcp_timestamps = 1&lt;br /&gt;net.ipv4.tcp_sack = 1&lt;br /&gt;net.core.netdev_max_backlog = 5000&lt;br /&gt;net.ipv4.tcp_mem = 786432 1048576 26777216&lt;br /&gt;net.ipv4.ip_local_port_range = 1024 65535&lt;br /&gt;net.ipv4.tcp_max_tw_buckets = 360000&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add the following parameters to the kernel tag of Grub.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;reservation,nodiratime,noatime&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo mount -a&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If no error message produced, issue the following command to make it work.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo mount -o remount /&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5338939984752501689?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5338939984752501689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5338939984752501689'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-performance-tuning-for-postgresql.html' title='HOWTO : Performance tuning for PostgreSQL on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5159916980019265744</id><published>2009-07-17T21:17:00.009+08:00</published><updated>2009-08-11T18:08:40.765+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Sockso'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Sockso 1.1.8 (Music Server) on Ubuntu 9.04 Server</title><content type='html'>&lt;a href="http://sockso.pu-gh.com/"&gt;Sockso&lt;/a&gt; is a cross platform music server and requires no installation. She runs on a standalone personal computer or on a server. For running on personal computer with GUI, please refer to her official site.&lt;br /&gt;&lt;br /&gt;The client computer requires no mp3 player to play the music but needs a Flash player.&lt;br /&gt;&lt;br /&gt;The advantage of Sockso is that you can listen to your mp3 files at anytime and anywhere under the condition that fast internet connection is available. The disadvantage is that you should have at least IEEE 802.11g (54M) Wifi connection for smooth operation.&lt;br /&gt;&lt;br /&gt;Sockso requires Sun Java only and it is requires no Apache or other web server to run.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sockso requires Sun Java to work.  You should install the following packages.&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install sun-java6-bin sun-java6-fonts sun-java6-jre unzip&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Download the latest version of Sockso.  The current version is 1.1.8 at the time of this writing.&lt;br /&gt;&lt;blockquote&gt;wget http://sockso.googlecode.com/files/sockso-1.1.8.zip&lt;br /&gt;&lt;br /&gt;unzip sockso-1.1.8.zip&lt;br /&gt;&lt;br /&gt;sudo mkdir /usr/share/sockso&lt;br /&gt;&lt;br /&gt;sudo cp -R /home/samiux/sockso-1.1.8/* /usr/share/sockso/*&lt;br /&gt;&lt;br /&gt;sudo mkdir /var/sockso&lt;br /&gt;sudo chmod -R 0755 /var/sockso&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run the Sockso at command prompt.&lt;br /&gt;&lt;blockquote&gt;sudo sh /usr/share/sockso/linux.sh --nogui --datadir /var/sockso&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you have some mp3 at /home/samiux/music and /home/mary/mp3, just runs the following command to make the music collection.&lt;br /&gt;&lt;blockquote&gt;#SockSo#&amp;gt;coladd /home/samiux/music&lt;br /&gt;#SockSo#&amp;gt;coladd /home/mary/mp3&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you want to list all collections, use the following command.&lt;br /&gt;&lt;blockquote&gt;collist&lt;/blockquote&gt;If you want to delete one of the collections, use the following command.&lt;br /&gt;&lt;blockquote&gt;coldel&lt;/blockquote&gt;Add a user to the Sockso.&lt;br /&gt;&lt;blockquote&gt;#SockSo#&amp;gt;useradd samiux &amp;lt;your_password_here&amp;gt; samiux@gmail.com&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To exit the #SockSo#&amp;gt; command prompt.&lt;br /&gt;&lt;blockquote&gt;exit&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copy the init.d script to /etc/init.d/&lt;br /&gt;&lt;blockquote&gt;sudo cp /usr/share/sockso/scripts/init.d/sockso /etc/init.d/sockso.pl&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Create a sockso script file.&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/init.d/sockso&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;-------- CUT HERE ---------&lt;/span&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;perl /etc/init.d/sockso.pl $1&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-------- CUT HERE ---------&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Edit the sockso.pl as the following.&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/init.d/sockso.pl&lt;br /&gt;&lt;br /&gt;use constant SOCKSO_DIR =&gt; "/usr/share/sockso/";&lt;br /&gt;&lt;br /&gt;system( 'sh linux.sh --nogui --datadir /var/sockso &gt; /dev/null 2&gt;&amp;amp;1 &amp;amp;' );&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, you can start the sockso with the following command.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo chmod +x /etc/init.d/sockso&lt;br /&gt;sudo chmod +x /etc/init.d/sockso.pl&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/sockso start&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can also stop the sockso with the following command.&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/sockso stop&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Listen to the music with your browser.&lt;br /&gt;&lt;blockquote&gt;http://192.168.0.100:4444&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make the script to be ran automatically after reboot.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo update-rc.d sockso defaults&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remarks&lt;/span&gt; : Make sure you have stopped the Sockso before reboot or shutdown; otherwise, the mp3 databases would be corrupted.  If so, you should delete everything inside /var/sockso and redo the Step 3.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Remarks : Don't broadcast copyrighted musics or songs.  Or, you may be in lawsuit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5159916980019265744?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5159916980019265744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5159916980019265744'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/sockso-is-cross-platform-music-server.html' title='HOWTO : Sockso 1.1.8 (Music Server) on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-3849972700524639994</id><published>2009-07-14T15:38:00.007+08:00</published><updated>2009-08-09T15:50:10.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDAV'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : WebDAV on Ubuntu 9.04 Server</title><content type='html'>&lt;p&gt;WebDAV is a file manager that running on web server.  You can access it like on your desktop.  Easy and enjoyable.&lt;/p&gt; &lt;p&gt;Install Ubuntu 9.04 server as usual and select LAMP and OpenSSH when asked for choice. You can also install vsFTPd if you want to but it is optional.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo a2enmod dav_fs&lt;br /&gt;sudo a2enmod dav&lt;br /&gt;sudo a2enmod dav_lock&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;sudo a2dissite default&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo /etc/init.d/apache2 restart&lt;span style="font-family:Georgia,serif;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;To create a virtual host for the WebDAV.&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo mkdir -p /var/www/webdav&lt;br /&gt;chown www-data /var/www/webdav&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/webdav&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo nano /etc/apache2/sites-available/webdav&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Make the a portion of the file as the following :&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&lt;br /&gt;....&lt;br /&gt;DocumentRoot /var/www/webdav&lt;br /&gt;&lt;directory&gt;&amp;lt;Directory /var/www/webdav/&amp;gt;&lt;br /&gt;   Options Indexes FollowSymLinks MultiViews&lt;br /&gt;   AllowOverride None&lt;br /&gt;   Order allow,deny&lt;br /&gt;   allow from all&lt;br /&gt;&lt;/directory&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;location&gt;&amp;lt;Location /&amp;gt;&lt;br /&gt;   DAV On&lt;br /&gt;   AuthType Basic&lt;br /&gt;   AuthName "webdav"&lt;br /&gt;   AuthUserFile /var/www/.passwd.dav&lt;br /&gt;   Require valid-user&lt;br /&gt;   DavMinTimeout 600&lt;br /&gt;   &amp;lt;LimitExcept GET PUT HEAD OPTIONS POST&amp;gt;&lt;limitexcept&gt;&lt;br /&gt;      Require valid-user&lt;br /&gt;   &amp;lt;/LimitExcept&amp;gt;&lt;/limitexcept&gt;&lt;br /&gt;&lt;/location&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;....&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo htpasswd -c /var/www/.passwd.dav samiux&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;chown root:www-data /var/www/.passwd.dav&lt;br /&gt;chmod 640 /var/www/.passwd.dav&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;suod chmod -R 0777 /var/www/webdav&lt;br /&gt;sudo chown www-data:www-data /var/www/webdav&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo /etc/init.d/apache2 restart&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Step 4 :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;To test if WebDAV works or not.&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo apt-get install cadaver&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo cadaver http://localhost/&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If you got “&lt;code&gt;dav:/&lt;/code&gt;” prompt, enter “&lt;code&gt;quit&lt;/code&gt;” to quit.  Otherwises, fix the problem.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 5 (Windows only) :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Download NetDrive at &lt;a href="http://www.netdrive.net/"&gt;http://www.netdrive.net/&lt;/a&gt; and set it accordingly.  The port should be 80.&lt;/p&gt; &lt;p&gt;Now you can access your WebDAV server from Windows.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 6 (Ubuntu only) :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Go to “&lt;code&gt;Place&lt;/code&gt;” &gt; “&lt;code&gt;Connect to Server&lt;/code&gt;“.  Select “&lt;code&gt;WebDAV (HTTP)&lt;/code&gt;“.  Enter the IP of your WebDAV server and then press “&lt;code&gt;Connect&lt;/code&gt;“.  Submit the username and password.  An icon will be displayed on your desktop.  Double click it and go.&lt;/p&gt; &lt;p&gt;Now you can access your WebDAV server from Ubuntu.&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;OpenOffice&lt;/p&gt;If you open the OpenOffice files on the WebDAV by clicking, you can only open it in read only mode. However, there is method to overcome this problem. You open OpenOffice Write (for example), click the “&lt;code&gt;Open file&lt;/code&gt;” and at the “&lt;code&gt;Name of file&lt;/code&gt;” enter the following : &lt;blockquote&gt;&lt;p&gt;&lt;code&gt;vnd.sun.star.webdav://192.168.0.100/openoffice_readonly_on_webdav.odt&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now you can edit and save it on WebDAV.&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Limitation of WebDAV&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can paste a file onto WebDAV directly but there is a file size limitation, that is, the file should be less than 1GB.  If you want to paste a file larger than 1GB, I suggest to use FTP instead.&lt;br /&gt;&lt;br /&gt;Make sure to change the ownership of the files that you have uploaded by FTP.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/www/webdav&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That’s all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-3849972700524639994?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3849972700524639994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3849972700524639994'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-webdav-on-ubuntu-904-server.html' title='HOWTO : WebDAV on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-3775174929181327552</id><published>2009-07-10T20:40:00.004+08:00</published><updated>2009-07-12T20:38:22.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='Ksplice Uptrack'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Rebootless with Ksplice Uptrack on Ubuntu 9.04 Server</title><content type='html'>&lt;p&gt;By using Ksplice Uptrack, your Ubuntu Server 9.04 will become rebootless even the kernel is updated.&lt;/p&gt; &lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Get the access key of Ksplice Uptrack at the following link.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;http://www.ksplice.com/uptrack/key &lt;/blockquote&gt;&lt;br /&gt;The access key will email to you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/apt/sources.list.d/ksplice.list &lt;/blockquote&gt;&lt;br /&gt;Append the following lines to the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;deb http://www.ksplice.com/apt jaunty ksplice&lt;br /&gt;deb-src http://www.ksplice.com/apt jaunty ksplice&lt;/blockquote&gt;&lt;br /&gt;Add the key to repository.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo wget -N https://www.ksplice.com/apt/ksplice-archive.asc&lt;br /&gt;sudo apt-key add ksplice-archive.asc&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Install Ksplice Uptrack.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install uptrack&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;When installing uptrack, you will be asked for the access key. Go to your email and copy the just received access key to the space provided on the screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/uptrack/uptrack.conf&lt;/blockquote&gt;&lt;br /&gt;Change the following line and makes Ksplice Uptrack to be installed automatically.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;autoinstall = yes&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/uptrack restart&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-3775174929181327552?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3775174929181327552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3775174929181327552'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-rebootless-with-ksplice-uptrack.html' title='HOWTO : Rebootless with Ksplice Uptrack on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-146729208539485428</id><published>2009-07-10T20:33:00.002+08:00</published><updated>2009-07-10T20:37:48.047+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : SSH to use RSA key for login</title><content type='html'>Generate RSA key.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh-keygen -t rsa -b 2048&lt;/blockquote&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh-keygen -t rsa -b 4096&lt;/blockquote&gt;&lt;br /&gt;“Enter file in which to save the key (/home/samiux/.ssh/id_rsa): (Hit Enter)”&lt;br /&gt;&lt;br /&gt;Press “Enter”&lt;br /&gt;&lt;br /&gt;“Enter passphrase (empty for no passphrase):”&lt;br /&gt;&lt;br /&gt;Enter your password twice.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;nano /home/samiux/.ssh/id_rsa.pub&lt;/blockquote&gt;&lt;br /&gt;Copy the content.&lt;br /&gt;&lt;br /&gt;SSH to your server. At the username directory.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo mkdir .ssh&lt;/blockquote&gt;&lt;blockquote&gt;sudo nano /home/username/.ssh/authorized_keys&lt;/blockquote&gt;&lt;br /&gt;Then pasted the previous copied key onto the authorized_keys file. Save it.&lt;br /&gt;&lt;br /&gt;Still at the server.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/ssh/sshd_config&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Change the following settings as is.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;AuthorizedKeysFile %h/.ssh/authorized_keys&lt;br /&gt;IgnoreUserKnownHosts yes&lt;br /&gt;PasswordAuthentication no&lt;br /&gt;#UseLogin no&lt;br /&gt;UsePAM no&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/ssh restart&lt;/blockquote&gt;&lt;br /&gt;When you login to the server again, you will ask for your RSA key passphrase once. Later, you will not be asked for any passphrase or password in the same session.&lt;br /&gt;&lt;br /&gt;For Ubuntu Desktop users, you may consider to install SSHMenu.  It will make your work more easily.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;http://sshmenu.sourceforge.net/&lt;/blockquote&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-146729208539485428?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/146729208539485428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/146729208539485428'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-ssh-to-use-rsa-key-for-login.html' title='HOWTO : SSH to use RSA key for login'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-9021066686987756597</id><published>2009-07-10T20:25:00.004+08:00</published><updated>2009-07-17T09:46:24.395+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fail2ban'/><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Fail2ban on Ubuntu 9.04 Server</title><content type='html'>Fail2ban cannot work properly with Ubuntu 9.04 Server as Ubuntu installed with Python 2.6. It is very easy to overcome this problem.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install python2.5&lt;br /&gt;&lt;br /&gt;sudo nano /usr/bin/fail2ban-server&lt;/blockquote&gt;&lt;br /&gt;Change the first line from&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#!/usr/bin/python&lt;/blockquote&gt;to&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#!/usr/bin/python2.5&lt;/blockquote&gt;&lt;br /&gt;Set the /etc/fail2ban/jail.conf as usual.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/fail2ban restart&lt;/blockquote&gt;&lt;br /&gt;Make change to the related services to "True".  By default, any unauthorized access will be blocked after 6 invalid attempts.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/fail2ban/jail.conf&lt;/blockquote&gt;&lt;br /&gt;After that, restart fail2ban.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/fail2ban restart&lt;/blockquote&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-9021066686987756597?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/9021066686987756597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/9021066686987756597'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-fail2ban-on-ubuntu-904-server.html' title='HOWTO : Fail2ban on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-5629763821682994109</id><published>2009-07-10T20:18:00.002+08:00</published><updated>2009-07-10T20:22:50.017+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='rootkit'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Make sure no rootkit on Ubuntu 9.04 Server</title><content type='html'>To ensure your server will not be installed rootkits or trojans as well as worm without your approval, you should check it frequently.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ChkRootKit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Get the chkrootkit package :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install chkrootkit&lt;/blockquote&gt;&lt;br /&gt;Make a Cron Job to do the scan daily at 0700 hours :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo crontab -e&lt;br /&gt;&lt;br /&gt;0 7 * * * /usr/sbin/chkrootkit; /usr/sbin/chkrootkit -q 2 &gt;&amp;amp;1 | mail -s "Daily ChkRootKit Scan" samiux@gmail.com&lt;/blockquote&gt;&lt;br /&gt;Do a manual scan :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /usr/sbin/chkrootkit&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Rootkit Hunter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install rkhunter&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Make a Cron Job to do the scan daily at 0500 hours :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo crontab -e&lt;br /&gt;&lt;br /&gt;0 5 * * * rkhunter --cronjob --rwo | mail -s "Daily Rootkit Hunter Scan" samiux@gmail.com&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Do a manual scan :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo rkhunter --check&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Forensic tool to find hidden processes and ports – unhide&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Get the unhide package :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install unhide&lt;/blockquote&gt;&lt;br /&gt;Make a Cron Job to do the scan daily between 0800 and 0930 hours :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo crontab -e&lt;br /&gt;&lt;br /&gt;0 8 * * * unhide proc; unhide proc -q 2 &gt;&amp;amp;1 | mail -s "Daily unhide proc Scan" samiux@gmail.com&lt;br /&gt;&lt;br /&gt;30 8 * * * unhide sys; unhide sys -q 2 &gt;&amp;amp;1 | mail -s "Daily unhide sys Scan" samiux@gmail.com&lt;br /&gt;&lt;br /&gt;0 9 * * * unhide brute; unhide brute -q 2 &gt;&amp;amp;1 | mail -s "Daily unhide brute Scan" samiux@gmail.com&lt;br /&gt;&lt;br /&gt;30 9 * * * unhide-tcp; unhide-tcp -q 2 &gt;&amp;amp;1 | mail -s "Daily unhide-tcp Scan" samiux@gmail.com&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Do a manual scan :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo unhide proc&lt;br /&gt;sudo unhide sys&lt;br /&gt;sudo unhide brute&lt;br /&gt;sudo unhide-tcp&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Beware :&lt;/span&gt;&lt;br /&gt;There will be produced some false positive by RootKit Hunter or ChkRootKit when your packages or files had been updated or have the similar behavior as the rootkit.&lt;br /&gt;&lt;br /&gt;If this happened, you can do the following the reset it if anything is alright.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo rkhunter --propupd&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remarks :&lt;/span&gt;&lt;br /&gt;It is not 100% to proof that your system is away from the attack of Rootkits.&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-5629763821682994109?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5629763821682994109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/5629763821682994109'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-make-sure-no-rootkit-on-ubuntu.html' title='HOWTO : Make sure no rootkit on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-6483611599305354312</id><published>2009-07-10T20:10:00.001+08:00</published><updated>2009-09-04T08:16:31.883+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='LogWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Logwatch on Ubuntu 9.04 Server</title><content type='html'>Logwatch reads your log files and can send you email daily about the most interesting parts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;br /&gt;sudo apt-get install logwatch&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /usr/share/logwatch/default.conf/logwatch.conf&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Change the following as shown :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Output = mail&lt;br /&gt;Format = html&lt;br /&gt;MailTo = samiux@gmail.com&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo nano /etc/cron.daily/00logwatch&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;/usr/sbin/logwatch --mailto samiux@gmail.com&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-6483611599305354312?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6483611599305354312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6483611599305354312'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-logwatch-on-ubuntu-904-server.html' title='HOWTO : Logwatch on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-957024841694582944</id><published>2009-07-10T05:00:00.003+08:00</published><updated>2010-01-07T09:19:18.413+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Secure Ubuntu 9.04 Server in a passive way</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Part 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When root or sudoers access the server, you will be informed.  It will also alert you when crackers gain rights of your server.&lt;br /&gt;&lt;br /&gt;Add the following to the top of the file /root/.bashrc or sudoer's account and you will be informed by email when the root or sudoer account is being accessed.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;echo -e "Root Shell Access on `tty` \n `w`" | mail -s "Alert: Root Access" samiux@gmail.com&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;echo -e "Sudoer Shell Access on `tty` \n `w`" | mail -s "Alert: Sudoer Access" samiux@gmail.com&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The official port of SSH is 22. You can change it to any port that between 1024 and 65535. You can do it at the router or firewall and you can do it at the configure file of SSH at /etc/ssh/sshd_config. You are recommended to disable the root account login via SSH even you are using Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Port 65535&lt;br /&gt;PermitRootLogin no&lt;br /&gt;&lt;br /&gt;sudo /etc/init.d/sshd restart&lt;br /&gt;&lt;/blockquote&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-957024841694582944?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/957024841694582944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/957024841694582944'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-secure-ubuntu-904-server-in.html' title='HOWTO : Secure Ubuntu 9.04 Server in a passive way'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-6231114306559927773</id><published>2009-07-10T02:25:00.001+08:00</published><updated>2009-07-10T02:28:15.125+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='vsFTPd'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : vsFTPd on Ubuntu Server 9.04</title><content type='html'>Your LAMP server requires FTP server to upload files to the related directory.&lt;br /&gt;&lt;br /&gt;Install the vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;br /&gt;sudo apt-get install vsftpd&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Edit the configure file of vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/vsftpd.conf&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Change the setting as the following.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;# If you allow anonymous login then&lt;br /&gt;anonymous_enable=YES&lt;br /&gt;# If you do not allow anonymous login then&lt;br /&gt;#anonymous_enable=NO&lt;br /&gt;local_enable=YES&lt;br /&gt;write_enable=YES&lt;br /&gt;# Users are allowed to walk around at his directory only&lt;br /&gt;chroot_local_user=YES&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you are behind a firewall or router, the following setting should be implemented and append to the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;pasv_enable=YES&lt;br /&gt;pasv_promiscuous=YES&lt;br /&gt;pasv_min_port=50000&lt;br /&gt;pasv_max_port=50100&lt;br /&gt;# If your server's IP address is 192.168.0.15&lt;br /&gt;pasv_address=192.168.0.15&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Make sure port 20 and 21 are opened at your firewall or router.  Anonymous user can be download the files at /home/ftp directory.&lt;br /&gt;&lt;br /&gt;Restart vsFTPd.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/vsftpd restart&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-6231114306559927773?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6231114306559927773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/6231114306559927773'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-vsftpd-on-ubuntu-server-904.html' title='HOWTO : vsFTPd on Ubuntu Server 9.04'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-939932248129372337</id><published>2009-07-10T02:10:00.002+08:00</published><updated>2009-07-10T02:17:00.766+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Secure Socket Layer (SSL) for LAMP on Ubuntu 9.04 Server</title><content type='html'>Enable the mod_ssl module.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo a2enmod ssl&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Edit the default or copy the default to another file for editing.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/apache2/sites-available/default&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Add the following inside the mod_rewrite.c bracket.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;RewriteCond %{HTTPS} !=on&lt;br /&gt;RewriteRule ^/(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Enable the default-ssl site.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo a2ensite default-ssl&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Restart apache to reload the setting and make it active.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-939932248129372337?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/939932248129372337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/939932248129372337'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-secure-socket-layer-ssl-for-lamp.html' title='HOWTO : Secure Socket Layer (SSL) for LAMP on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1604868999803608806</id><published>2009-07-08T12:25:00.006+08:00</published><updated>2009-07-21T16:17:42.981+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>HOWTO : Performance tuning of LAMP and Ubuntu 9.04 Server</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;Performance tuning of LAMP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To control the bandwidth and allow faster cgi browsing, you should install the following modules.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install libapache2-mod-bw libapache2-mod-fastcgi&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo a2enmod deflate&lt;br /&gt;&lt;br /&gt;sudo nano /etc/apache2/conf.d/deflate.conf&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add the following lines at the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;IfModule mod_deflate.c&amp;gt;&lt;br /&gt;   DeflateCompressionLevel 6&lt;br /&gt;   AddOutputFilterByType DEFLATE text/plain&lt;br /&gt;   AddOutputFilterByType DEFLATE text/html&lt;br /&gt;   AddOutputFilterByType DEFLATE text/xml&lt;br /&gt;   AddOutputFilterByType DEFLATE text/css&lt;br /&gt;   AddOutputFilterByType DEFLATE application/xhtml+xml&lt;br /&gt;   AddOutputFilterByType DEFLATE application/xml&lt;br /&gt;   AddOutputFilterByType DEFLATE application/rss+xml&lt;br /&gt;   AddOutputFilterByType DEFLATE application/atom_xml&lt;br /&gt;   AddOutputFilterByType DEFLATE application/x-javascript&lt;br /&gt;   AddOutputFilterByType DEFLATE application/x-httpd-php&lt;br /&gt;   AddOutputFilterByType DEFLATE application/x-httpd-fastphp&lt;br /&gt;   AddOutputFilterByType DEFLATE application/x-httpd-eruby&lt;br /&gt;   AddOutputFilterByType DEFLATE image/svg+xml&lt;br /&gt;   AddOutputFilterByType DEFLATE application/postscript&lt;br /&gt;   &amp;lt;IfModule mod_headers.c&amp;gt;&lt;br /&gt;      Header append Vary User-Agent&lt;br /&gt;   &amp;lt;/IfModule&amp;gt;&lt;br /&gt;&amp;lt;/IfModule&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;sudo /etc/init.d/apache2 restart&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2&lt;br /&gt;&lt;br /&gt;tar xvf eaccelerator-0.9.5.3.tar.bz2&lt;br /&gt;&lt;br /&gt;sudo apt-get install build-essential php5-dev&lt;br /&gt;&lt;br /&gt;cd eaccelerator-0.9.5.3&lt;br /&gt;phpize&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;&lt;br /&gt;sudo mkdir /tmp/eaccelerator&lt;br /&gt;sudo chmod 0777 /tmp/eaccelerator&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/php5/apache2/php.ini&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Append the following lines at the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;extension="eaccelerator.so"&lt;br /&gt;; shm_size default is 16, you may change to 64 or 128 depends on your RAM&lt;br /&gt;eaccelerator.shm_size="16"&lt;br /&gt;eaccelerator.cache_dir="/tmp/eaccelerator"&lt;br /&gt;eaccelerator.enable="1"&lt;br /&gt;eaccelerator.optimizer="1"&lt;br /&gt;eaccelerator.check_mtime="1"&lt;br /&gt;eaccelerator.debug="0"&lt;br /&gt;eaccelerator.filter=""&lt;br /&gt;eaccelerator.shm_max="0"&lt;br /&gt;eaccelerator.shm_ttl="0"&lt;br /&gt;eaccelerator.shm_prune_period="0"&lt;br /&gt;eaccelerator.shm_only="0"&lt;br /&gt;eaccelerator.compress="1"&lt;br /&gt;eaccelerator.compress_level="9"&lt;br /&gt;&lt;br /&gt;sudo /etc/init.d/apache2 restart&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Performance tuning of Ubuntu 9.04 Server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/sysctl.conf&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Append the following lines at the end of the file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;kernel.sem = 250 32000 100 128&lt;br /&gt;kernel.shmall = 2097152&lt;br /&gt;kernel.shmmax = 2147483648&lt;br /&gt;kernel.shmmni = 4096&lt;br /&gt;# If you have more than 512MB RAM, use this setting (uncomment it and comment the setting just below)&lt;br /&gt;#fs.file-max = 262140&lt;br /&gt;# If you have 512MB RAM or less, use this setting&lt;br /&gt;fs.file-max = 65535&lt;br /&gt;vm.swappiness = 1&lt;br /&gt;vm.vfs_cache_pressure = 50&lt;br /&gt;vm.min_free_kbytes = 65536&lt;br /&gt;&lt;br /&gt;net.core.rmem_default = 33554432&lt;br /&gt;net.core.rmem_max = 33554432&lt;br /&gt;net.core.wmem_default = 33554432&lt;br /&gt;net.core.wmem_max = 33554432&lt;br /&gt;net.ipv4.tcp_rmem = 10240 87380 33554432&lt;br /&gt;net.ipv4.tcp_wmem = 10240 87380 33554432&lt;br /&gt;net.ipv4.tcp_no_metrics_save = 1&lt;br /&gt;net.ipv4.tcp_window_scaling = 1&lt;br /&gt;net.ipv4.tcp_timestamps = 1&lt;br /&gt;net.ipv4.tcp_sack = 1&lt;br /&gt;net.core.netdev_max_backlog = 5000&lt;br /&gt;net.ipv4.tcp_mem = 786432 1048576 26777216&lt;br /&gt;net.ipv4.ip_local_port_range = 1024 65535&lt;br /&gt;net.ipv4.tcp_max_tw_buckets = 360000&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /sbin/sysctl -p&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/rc.local&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Add the following lines before "exit 0".&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;echo 1024 &gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;echo 256 &gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;*The captioned lines are for sda only.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 7 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/fstab&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add "noatime" before "relatime".  For example :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;UUID=0e57987f-...... / ext3 noatime,relatime,errors=remount-ro 0 1&lt;/blockquote&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;UUID=0e57987f-...... / ext4 noatime,relatime,errors=remount-ro 0 1&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo mount -a&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If there is no error message, you can now reboot your system.&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1604868999803608806?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1604868999803608806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1604868999803608806'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-performance-tuning-of-lamp-and.html' title='HOWTO : Performance tuning of LAMP and Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-1056709173604286838</id><published>2009-07-07T13:14:00.008+08:00</published><updated>2009-07-14T16:19:07.149+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Hardening your Apache and PHP on Ubuntu 9.04 Server</title><content type='html'>You have installed LAMP and OpenSSH on your Ubuntu 9.04 Server.  The first thing to do is to harden it in order to avoid some kind of attacks.&lt;br /&gt;&lt;br /&gt;You can do the following steps in front of your Ubuntu 9.04 Server or remote access it via OpenSSH.&lt;br /&gt;&lt;br /&gt;For OpenSSH, your Ubuntu 9.04 Server is at 192.168.0.10 :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh 192.168.0.10 -l samiux&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The avoid someone to list your files on your Apache directory, you should do the following step.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/apache2/sites-available/default&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Add a minus "-" in the front of "Indexes" and it will looking like this :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;Options -Indexes FollowSymLinks MultiViews&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;AllowOverride None&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;Order allow,deny&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 2 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To enable the rewrite module of Apache.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo a2enmod rewrite&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To avoid Cross-Site-Tracing attack.  Add the following lines within "&lt;virtualhost&gt; &amp;lt;VirtualHost *:80&amp;gt;" :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;RewriteEngine On&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;&lt;tt&gt; &lt;/tt&gt;RewriteRule .* - [F]&lt;br /&gt;&amp;lt;/IfModule&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To avoid HTTP DoS, DDoS or Brute Force attack, you should install this module.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install libapache2-mod-evasive&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 4 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To screen out bad URL requests, such as /etc/shadow or MySQL injection and etc.  You should install mod_security module.  If you installed a amd64 (64-bit) version of Ubuntu Server, please replaced i386 with amd64 for the following commands.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/libapache-mod-security_2.5.9-1_i386.deb&lt;br /&gt;&lt;br /&gt;wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/mod-security-common_2.5.9-1_all.deb&lt;br /&gt;&lt;br /&gt;sudo dpkg -i libapache-mod-security_2.5.9-1_i386.deb mod-security-common_2.5.9-1_all.deb&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 5 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not allow any Apache and Ubuntu Server information to be print on the error pages.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/apache2/conf.d/security&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Change the following lines as the following :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ServerToken Prod&lt;br /&gt;ServerSignature Off&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 6 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, it is time to harden the PHP.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/php5/apache2/php.ini&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Change the following lines as the following :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;display_errors = Off&lt;br /&gt;log_errors = On&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;safe_mode = On&lt;br /&gt;expose_php = Off&lt;br /&gt;enable_dl = Off&lt;br /&gt;disable_functions = system, show_source, symlink, exec, dl, shell_exec, passthru, phpinfo, escapeshellarg, escapeshellcmd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 7 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Final step is to restart Apache server.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/apache2 restart&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 8 :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo nano /etc/sysctl.conf&lt;/blockquote&gt;Uncomment the following line and make it look like this.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#Enable TCP SYN Cookie Protection&lt;br /&gt;net.ipv4.tcp_syncookies = 1&lt;/blockquote&gt;&lt;br /&gt;Make the change active.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo /sbin/sysctl -p&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;/virtualhost&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-1056709173604286838?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1056709173604286838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/1056709173604286838'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-hardening-your-apache-and-php-on_07.html' title='HOWTO : Hardening your Apache and PHP on Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-5719460944195273704.post-3142850663752888366</id><published>2009-07-05T17:17:00.003+08:00</published><updated>2009-07-05T17:38:33.730+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>HOWTO : Install Ubuntu 9.04 Server</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ubuntu.com"&gt;Ubuntu&lt;/a&gt; is one of the most user-friendly Linux in the world so far.  Not only her Desktop edition is user-friendly but so her Server edition.  The current version of Ubuntu Desktop and Server edition is 9.04 at the time of this writing.&lt;br /&gt;&lt;br /&gt;9.04 stands for released on April 2009.  The next version will be 9.10, that is October 2009.  Normally, she will release new version on every April and October.  However, there is an exceptional.  It is 6.06 which is released on June 2006 due to delay of bugs fix.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Hardware requirements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I suggest you have at least a Pentium 4 CPU with 512MB RAM and 40GB hard drive.  For the minimum hardware requirement, please see her &lt;a href="http://www.ubuntu.com"&gt;official site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can also install it on &lt;a href="http://www.vmware.com/"&gt;VMWare&lt;/a&gt;, Linux KVM (Kernal based Virtual Machine) or &lt;a href="http://www.virtualbox.org"&gt;VirtualBox&lt;/a&gt;.  It is running flawlessly on them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Installation of Ubuntu 9.04 Server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, I am going to talk about how to install Ubuntu Server 9.04.  First of all, you should download Ubuntu 9.04 from her &lt;a href="http://www.ubuntu.com"&gt;official site&lt;/a&gt;.  Burn the .iso file as &lt;span style="font-weight: bold;"&gt;disk image&lt;/span&gt; with your disc burning software, such as Nero (in Windows) or K3b (in Linux).  Please do not extract the files from the .iso or just burn the file directly on a CD-R.&lt;br /&gt;&lt;br /&gt;I suggest to change the ext3 filesystem to ext4 as it is much faster and it will be the next generation of Linux default filesystem.  Selects LVM on the entire disk when asking.  You may ask for entering user name and password.  Please use a more complicated password which should includes uppercase and lowercase letters, numbers and symbols.  In addition, it should be longer than 8 characters. &lt;br /&gt;&lt;br /&gt;At the end of installation, you may asked to select some servers to install, such as LAMP, mail server, OpenSSH, virtual machine and etc.  If you want to build a web server, I suggest you select LAMP, mail server and OpenSSH.  I assumed you install LAMP, mail server and OpenSSH as it will be discussed in future tutorials of mine.&lt;br /&gt;&lt;br /&gt;Make sure you are connecting to the internet while you are installing Ubuntu.  The system will be reboot after the install.&lt;br /&gt;&lt;br /&gt;That's all.  See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5719460944195273704-3142850663752888366?l=secure-ubuntu-server.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3142850663752888366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5719460944195273704/posts/default/3142850663752888366'/><link rel='alternate' type='text/html' href='http://secure-ubuntu-server.blogspot.com/2009/07/howto-install-ubuntu-904-server.html' title='HOWTO : Install Ubuntu 9.04 Server'/><author><name>samiux</name><uri>http://www.blogger.com/profile/18065979766005810905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_oTFWRIyRPCM/Sk8dlekjrUI/AAAAAAAAAAM/1pKjWhuX2qk/S220/1161885554914.jpg'/></author></entry></feed>
