<rdf:RDF
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xml:base='http://bliki.rimuhosting.com/rdf'>
    <s:Snip rdf:about='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/Securing+Your+Server'
         s:cUser='david'
         s:oUser=''
         s:mUser='david'>
        <s:name>knowledgebase/Security/Securing Your Server</s:name>
        <s:content>Server security requires diligence and it?s not just a list of steps you do once and then forget about.  It?s an ongoing process by which you monitor what?s going on with your server.   The below tips are meant as rough guidelines for getting your configuration to be more secure while still keeping a relative amount of convenience for you in your day-to-day server operation.&#xD;&#xA;&#xD;&#xA;1 Eliminate Unnecessary Services&#xD;&#xA;&#xD;&#xA;One of the most important steps to take when securing your server is to make sure that only necessary services are running.  The fewer service ports you have exposed to outside connections, the smaller your attack surface is.&#xD;&#xA;&#xD;&#xA;1 Checking Which Services Are Running&#xD;&#xA;&#xD;&#xA;To check what services you are currently running, type:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# ps -ax&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;On a Redhat-based distro, you can examine the services configured to automatically start at boot time via:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# chkconfig --list | grep 3:on&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;On a Debian-variant, you can view which startup scripts are enabled via:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# ls /etc/rc3.d/&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;1 Managing Which Services Automatically Start Via Chkconfig&#xD;&#xA;&#xD;&#xA;You might want to stop a service from running without removing the package from your system.  In that case, managing the startup scripts will allow you to stop or start a service from automatically running at boot time.  On Redhad-based distros, you can accomplish this with chkconfig:&#xD;&#xA;&#xD;&#xA;{code} &#xD;&#xA;#prevent iptables from starting at boot time&#xD;&#xA;[root@server ~]# chkconfig iptables off&#xD;&#xA;#start postfix automatically at boot time&#xD;&#xA;[root@server ~]# chkconfig postfix on&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;Debian variant startup scripts can be managed via update-rc.d or directly by manually adjusting the startup scripts located in /etc/rc3.d/.&#xD;&#xA;&#xD;&#xA;1 Keeping Your Server Patched&#xD;&#xA;&#9;&#xD;&#xA;As new vulnerabilities are found, each distro releases updates to existing packages which incorporate security fixes.  All of the distros we offer are configured to use apt-get to update and maintain your packages which makes it very simple to check for and install new updates.&#xD;&#xA;&#xD;&#xA;1 When To Patch?&#xD;&#xA;&#xD;&#xA;In my opinion, updating is something which should be done at least weekly because new security flaws are found all the time.  If you&apos;re not going to patch on a regular basis, you should at least monitor the mailing lists where security announcements are made and then you can be informed when you are facing a vulnerability in software you are running.  See the following link for some tips which involved a recent webmin exploit:&#xD;&#xA;&#xD;&#xA;http://bliki.rimuhosting.com/space/knowledgebase/filtered+webmin&#xD;&#xA;&#xD;&#xA;Here are a few key security mailing lists:&#xD;&#xA;&#xD;&#xA;http://www.redhat.com/mailman/listinfo&#xD;&#xA;http://www.debian.org/MailingLists/subscribe&#xD;&#xA;http://lists.ubuntu.com/&#xD;&#xA;http://www.us-cert.gov/cas/signup.html&#xD;&#xA;&#xD;&#xA;From time-to-time, you might find that a vulnerability exists, however no patch has been made public.  In this case, disabling the service until a patch is available might be your best bet to remain secure.&#xD;&#xA;&#xD;&#xA;1 Manual Updates&#xD;&#xA;&#xD;&#xA;To manually update your system, do the following from the command line:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#install new updates&#xD;&#xA;[root@server ~]# apt-get update&#xD;&#xA;[root@server ~]# apt-get upgrade&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;1 Automatic Updates&#xD;&#xA;&#xD;&#xA;As I mentioned, it&apos;s best to stay on top of updates as frequently as possible.  One way to do this is to configure your system to automatically update itself via a cron job.&#xD;&#xA;&#xD;&#xA;Place the following in a file called &apos;apt-upgrade&apos; located in /etc/cron.daily&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#!/bin/bash&#xD;&#xA;apt-get update&#xD;&#xA;apt-get -y upgrade &gt; /var/log/apt-upgrade.log&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;Change the permissions to make it executable:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# chmod +x /etc/cron.daily/apt-upgrade&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;This will automatically run each day and log any automatic upgrades in a log file so you can inspect it at a later date to see what was done.&#xD;&#xA;&#xD;&#xA;1 User Account Security&#xD;&#xA;&#xD;&#xA;Keeping tabs on system users can help you prevent unauthorized users from gaining access to your system via an account with a weak password (or no password).  It&apos;s also important to keep in mind which users actually need shell access to your system; you should eliminate shell access when it is not needed for a particular user.&#xD;&#xA;&#xD;&#xA;1 Disable Unnecessary Accounts&#xD;&#xA;&#xD;&#xA;An annoying inclusion with many distros is the presence of a log list of entries in /etc/passwd for application user accounts.  Sometimes these users will exists for packages that you don&apos;t even have installed.  Leaving these users around will probably not result in an attacker gaining access, however, it is often to be on the safe side in regards to security.&#xD;&#xA;&#xD;&#xA;If you don&apos;t know whether or not an account is active, you can try to determine this by searching for files owned by that user and checking their last modified date.&#xD;&#xA;&#xD;&#xA;Finding files owned by a user:&#xD;&#xA;{code}&#xD;&#xA;#print file names/locations&#xD;&#xA;[root@server ~]# find / -user USER&#xD;&#xA;&#xD;&#xA;#check last modified date&#xD;&#xA;[root@server ~]# ls -lu FILENAME&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;If the user doesn&apos;t own any files or if the files haven&apos;t been modified by many months, it might be a safe bet to go ahead and remove that user from your system.  You can do so via:&#xD;&#xA;&#xD;&#xA;Remove user&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# userdel USER&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;At the very least, if you don&apos;t remove the user you can disable shell access by changing the last field in /etc/passwd from their current shell to /sbin/nologin.  Another option would be to add a line explicitly granting SSH access to certain users directly to your ssh configuration file.&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# echo ?AllowUsers USER1 USER2 USER3 USER4? &gt;&gt; /etc/sshd/sshd_config&#xD;&#xA;[root@server ~]# /etc/init.d/sshd restart&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;Restrict shell access to a particular group of users by adding an AllowGroup directive to etc/sshd/sshd_config&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#create new group&#xD;&#xA;[root@server ~]# groupadd shellusers&#xD;&#xA;&#xD;&#xA;#add members to group&#xD;&#xA;[root@server ~]# usermod -a -G shellusers USER&#xD;&#xA;&#xD;&#xA;#add directive to ssh configuration&#xD;&#xA;[root@server ~]# echo &quot;AllowGroups shellusers&quot; &gt;&gt; /etc/sshd/sshd_config&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;1 Checking For Users With No Password&#xD;&#xA;&#xD;&#xA;Even worse than a weak password is no password at all.  Application accounts without shell access probably don&apos;t have existing passwords so the following script will turn up some users without passwords which are perfectly safe.  (i.e. the postfix user would be an example of that).&#xD;&#xA;&#xD;&#xA;Check for missing passwords&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# awk -F: &apos;$2 == &quot;!!&quot; { print $1, &quot;has empty password!&quot; }&apos; /etc/shadow&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;1 SSH Security&#xD;&#xA;&#xD;&#xA;By default ssh is pretty secure, however there are a few measure you can take to step up the security a bit.  You can find various settings located in /etc/ssh/sshd_config.&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#disable protocol 1&#xD;&#xA;Protocol 2&#xD;&#xA;#reduce maximum login attempts&#xD;&#xA;MaxAuthTries 4&#xD;&#xA;#move ssh from default port (22)&#xD;&#xA;Port 2022&#xD;&#xA;#decrease time user has to authenticate&#xD;&#xA;LoginGraceTime 30s&#xD;&#xA;#deny root user to authenticate without ssh keypair&#xD;&#xA;PermitRootLogin without-password&#xD;&#xA;#throttle concurrent login attempts&#xD;&#xA;#allow 3 concurrent connections and randomly reject connetions (75% probability)&#xD;&#xA;#until 10 connections are running concurrently.  anything beyond 10 is rejected&#xD;&#xA;MaxStartups 3:75:10&#xD;&#xA;{code}&#xD;&#xA;&#9;&#xD;&#xA;1 Generating SSH Keypairs&#xD;&#xA;&#xD;&#xA;Using cryptographic keypairs for authentication makes authentication much easier for you and allows you to completely disable password authentication on your server (if you wish) which is a much more secure way of handling authentication since password guessing is rendered useless in that case. &#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#generate public/private keypair&#xD;&#xA;[root@server ~]# ssh-keygen -b 1024 -C user@domain.com&#xD;&#xA;&#xD;&#xA;#copy contents of public key to your list of authorized keys&#xD;&#xA;[root@server ~]# cat /root/.ssh/id_rsa.pub &gt;&gt; /root/.ssh/authorized_keys&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;The above command will also generate a private keyfile (id_rsa by default) and you&apos;ll want to make sure to protect that key.  Do not leave it on your server if it is also used to authenticate to your server.&#xD;&#xA;&#xD;&#xA;If your home system is running Linux, you can use that keyfile directly to authenticate via ssh.  If you are connecting through Putty, you&apos;ll want to download a copy of Puttygen and use that to convert your private key into a format which is compatible with Putty.&#xD;&#xA;&#xD;&#xA;1 Logging System Events&#xD;&#xA;&#xD;&#xA;Keeping an eye on what&apos;s going on with your system via system logs is a good way to stay informed whether or not your system is an active target of hacking attempts.  Once a system has been compromised, system logs may prove meaningless as they can be easily manipulated, however they remain a good indicator that your system is being actively attacked.&#xD;&#xA;&#xD;&#xA;Syslog is the tried-and-true Unix logging facility.  It accepts log information from the kernel, local processes and can even be configured to accept messages from remote systems.  Its flexibility is one of its greatest assets and you can configure it to record only the information in which you are interested (which makes it easier to parse logs later).&#xD;&#xA;&#xD;&#xA;When a logging message is received, syslog uses the values specified in /etc/syslog.conf in order to determine whether or not that message should be logged.  Here is an example excerpt from a syslog.conf file:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;# Log anything (except mail) of level info or higher.&#xD;&#xA;# Don&apos;t log private authentication messages!&#xD;&#xA;*.info;mail.none;authpriv.none;cron.none                /var/log/messages&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;Logging preferences are defined via the use of facilities and priorities.  &#xD;&#xA;&#xD;&#xA;Facilities: auth, auth-priv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, uucp, local{0-7}, *&#xD;&#xA;Priorities: debug, info, notice, warning, err, crit, alert, emerg&#xD;&#xA;&#xD;&#xA;When selecting a logging priority, your selection refers to that priority and any higher priority as well.  For instance, mail.warning would log all information for (mail.warning, mail.err, mail.crit, mail.alert as well as mail.emerg).&#xD;&#xA;&#xD;&#xA;1 Managing Log Files&#xD;&#xA;&#xD;&#xA;Logging all this information is useful for keeping informed of what is going on with your server, but all this information is useless if you don&apos;t keep it organized.  Limiting the amount of data you have on-hand can keep your searches for useful information as quick as possible.&#xD;&#xA;&#xD;&#xA;Most distros come with a pre-configured logrotate scheme.  Usually the default configuration will be sufficient for your needs, but you might want to configure it to rotate more often in order to conserve disk space.&#xD;&#xA;&#xD;&#xA;When logrotate is run, it evaluates all scripts located in /etc/logrotate.d.  When a package is installed, quite commonly the package author has included a default logrotate script which should be place in /etc/logrotate.d automatically for you.&#xD;&#xA;&#xD;&#xA;Here is a simplified version of your typical /etc/logrotate.conf file&#xD;&#xA;{code}&#xD;&#xA;# Global options to rotate logs monthly while saving last 4 copies.&#xD;&#xA;# Error messages will be sent to &apos;root&apos;.  If no log exists, a new&#xD;&#xA;# file will be created (via touch)&#xD;&#xA;monthly&#xD;&#xA;rotate 4&#xD;&#xA;errors root&#xD;&#xA;create&#xD;&#xA;   &#xD;&#xA;# Watch on /var/log/messages&#xD;&#xA;/var/log/messages {&#xD;&#xA;   size 200k&#xD;&#xA;   create&#xD;&#xA;   postrotate&#xD;&#xA;      /bin/kill -HUP `cat /var/run/syslog-ng.pid 2&gt; /dev/null` 2&gt; /dev/null || true&#xD;&#xA;   endscript&#xD;&#xA;}&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;These directives will function as the default rotate scheme for any logfiles not explicitly included by its own logrotate file.  The logrotate script can be found in /etc/cron.daily.  If you would like to run this less often, you might consider moving that script to /etc/cron.weekly, but anyting less often is not recommended.&#xD;&#xA;&#xD;&#xA;1 Firewall Configuration&#xD;&#xA;&#xD;&#xA;Restricting traffic to and from your server via a firewall (typically iptables) is a great way to limit the access others have to your server.  There&apos;s not enough room here to go over all the possible options you could explore with iptables, but I&apos;ll provide a simple script to setup some basic firewall rules for your server.&#xD;&#xA;&#xD;&#xA;The following code should be placed in a file such as /root/firewall.sh and chmod&apos;d as executable via chmod +x firewall.sh.  After that you can run ./firewall.sh and you&apos;ll have yourself a capable, if not basic, firewall in place.&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#!/bin/bash&#xD;&#xA;&#xD;&#xA;# Flush default chains&#xD;&#xA;iptables -F INPUT&#xD;&#xA;iptables -F FORWARD&#xD;&#xA;iptables -F OUTPUT&#xD;&#xA;&#xD;&#xA;# Allow ssh connections&#xD;&#xA;iptables -A INPUT -p tcp --dport 22 -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow ssh connections from only specific IPs (must comment above rule)&#xD;&#xA;#iptables -A INPUT -p tcp -s YOURIP --dport 22 -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Individual ip address rejects&#xD;&#xA;#iptables -A INPUT -s BLOCKEDIP -j DROP&#xD;&#xA;&#xD;&#xA;# Allow traffic for established connections&#xD;&#xA;iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow traffic over the loopback interface&#xD;&#xA;iptables -A INPUT -i lo -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow incoming pings&#xD;&#xA;iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow email MTA (Postfix/Sendmail)&#xD;&#xA;iptables -A INPUT -p tcp --dport 25 -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow IMAP/IMAPS/POP3/POP3S&#xD;&#xA;iptables -A INPUT -p tcp --dport 143 -j ACCEPT&#xD;&#xA;iptables -A INPUT -p tcp --dport 993 -j ACCEPT&#xD;&#xA;iptables -A INPUT -p tcp --dport 110 -j ACCEPT&#xD;&#xA;iptables -A INPUT -p tcp --dport 995 -j ACCEPT&#xD;&#xA;&#xD;&#xA;# Allow http requests (standard &amp; ssl)&#xD;&#xA;iptables -A INPUT -p tcp --dport 80 -j ACCEPT&#xD;&#xA;iptables -A INPUT -p tcp --dport 443 -j ACCEPT&#xD;&#xA;&#xD;&#xA;# GLOBAL REJECTS&#xD;&#xA;iptables -A INPUT -j DROP&#xD;&#xA;iptables -A FORWARD -j REJECT&#xD;&#xA;&#xD;&#xA;# Save this settings so that they are applied during the next reboot:&#xD;&#xA;iptables-save &gt; /etc/sysconfig/iptables&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;I&apos;ve placed comments above each firewall rule in the above script so that you can comment out any rules you do not want.  The script will save the rules and they will be active even after you reboot your server (as long as the rules are being restored properly by your system).&#xD;&#xA;&#xD;&#xA;To ensure that iptables runs by default at boot time, enter the following command (on a Redhat-based system):&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# chkconfig iptables on&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;For a Debian-variant (Debian/Ubuntu), you might want to roll your own init script for iptables.  Below is a sample init script you could place in /etc/init.d/iptables&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#!/bin/sh&#xD;&#xA;# Uncomment either iptables or ipchains&#xD;&#xA;PROGRAM=/usr/sbin/iptables&#xD;&#xA;&#xD;&#xA;FIREWALL=`/bin/basename $PROGRAM`&#xD;&#xA;RULES_FILE=/etc/sysconfig/${FIREWALL}&#xD;&#xA;LOADER=${PROGRAM}-restore&#xD;&#xA;FORWARD_BIT=/proc/sys/net/ipv4/ip_forward&#xD;&#xA;&#xD;&#xA;if [ ! -f ${RULES_FILE} ]&#xD;&#xA;then&#xD;&#xA;        echo &quot;$0: Cannot find ${RULES_FILE}&quot; 1&gt;&amp;2&#xD;&#xA;        exit 1&#xD;&#xA;fi&#xD;&#xA;&#xD;&#xA;case &quot;$1&quot; in&#xD;&#xA;        start)&#xD;&#xA;                echo 1 &gt; ${FORWARD_BIT}&#xD;&#xA;                ${LOADER} &lt; ${RULES_FILE} || exit 1&#xD;&#xA;                ;;&#xD;&#xA;        stop)&#xD;&#xA;                ${PROGRAM} -F                   # Flush all rules&#xD;&#xA;                ${PROGRAM} -X                   # Delete user-defined chains&#xD;&#xA;                echo 0 &gt; ${FORWARD_BIT}&#xD;&#xA;                ;;&#xD;&#xA;        *)&#xD;&#xA;                echo &quot;Usage: $0 start|stop&quot; 1&gt;&amp;2&#xD;&#xA;                exit 1&#xD;&#xA;                ;;&#xD;&#xA;esac&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;Then modify it to be executable.&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# chmod +x /etc/init.d/iptables&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;You can then start/stop your firewall via /etc/init.d/iptables start|stop.  It will automatically read your firewall rules from /etc/sysconfig/iptables upon initialization.  To automatically load that at boot time, enter the following commands:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;#start iptables on runlevels 2,3,4,5&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc2.d/S08iptables&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc4.d/S08iptables&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc5.d/S08iptables&#xD;&#xA;#stop iptables on runlevels 0,1,6&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc0.d/K92iptables&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc1.d/K92iptables&#xD;&#xA;[root@server ~]# ln -s /etc/init.d/iptables /etc/rc6.d/K92iptables&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;1 check security with scanner&#xD;&#xA;&#xD;&#xA;Hackers scan your server for open ports and other vulnerabilities (exploitable services) and you should too.  By monitoring which ports you have exposed to outside access, you can keep track if anything suddenly changes (such as an irc daemon being installed to control botnets).&#xD;&#xA;&#xD;&#xA;Nmap (http://insecure.org/nmap/) is the gold standard for port scanning.  You can often find it in the repository for your distro and install it via:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# apt-get install nmap&#xD;&#xA;#run a sample scan to see visible ports&#xD;&#xA;[root@server ~]# nmap -sTUR -F -P0 SERVER&#xD;&#xA;{code}&#xD;&#xA;&#xD;&#xA;If you see anything out of the ordinary, you can investigate that yourself or pop in a support ticket and have us take a look for you if you&apos;re not sure what a particular service might be.&#xD;&#xA;&#xD;&#xA;Nessus (http://www.nessus.org/) is a security scanner/analysis tool.  The authors maintain an up-to-date security vulnerability database which can be updated so that you stay on top of announced vulnerabilities.  There are clients for Windows and Linux and scans can be ran remotely or on the local machine.  For instructions on how to use this tool, visit the homepage.&#xD;&#xA;&#xD;&#xA;Chkrootkit (http://www.chkrootkit.org/) is a tool for scanning your system&apos;s files to look for traces of an installed rootkit.  New releases are out with fair regularity so you should make sure that you&apos;re always using the latest release.  Below is some sample code which will download, unpack and run the application:&#xD;&#xA;&#xD;&#xA;{code}&#xD;&#xA;[root@server ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz&#xD;&#xA;[root@server ~]# tar xvfz chkrootkit.tar.gz&#xD;&#xA;[root@server ~]# ./chkrootkit*/chkrootkit&#xD;&#xA;{code}&#xD;&#xA;&#9;&#xD;&#xA;1 Additional Resources&#xD;&#xA;&#xD;&#xA;Keeping up-to-date on the latest security trends/vulnerabilities is crucial to your long term success in keeping your server secure.  I&apos;ve listed a few of the top security resources below.  I recommend subscribing to the relevent security mailing lists (especially the security announce lists) listed below.&#xD;&#xA;&#xD;&#xA;Security-related websites:&#xD;&#xA;http://www.securityfocus.com/&#xD;&#xA;http://www.sans.org/&#xD;&#xA;http://www.redhat.com/security/resources/&#xD;&#xA;http://www.cert.org/&#xD;&#xA;&#xD;&#xA;Security-related mailing lists:&#xD;&#xA;http://www.redhat.com/mailman/listinfo&#xD;&#xA;http://www.debian.org/MailingLists/subscribe&#xD;&#xA;https://lists.ubuntu.com/&#xD;&#xA;http://www.us-cert.gov/cas/signup.html</s:content>
        <s:mTime>2009-08-07 18:18:33.0</s:mTime>
        <s:cTime>2007-04-26 10:02:10.0</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='#snipsnap-search'/>
                <rdf:li rdf:resource='#knowledgebase'/>
                <rdf:li>
                    <s:Snip rdf:about='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/Securing+Your+Server'>
                        <s:attachments
                             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
                    </s:Snip>
                </rdf:li>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/Responding to attacks using fail2ban'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/postfixadmin on debian sarge'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/webserver/apache/mod_security'/>
                <rdf:li rdf:resource='#snipsnap-index'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/Security'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#virtualmin notes'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/security/securing your server'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/ruby on rails'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/webserver/plesk notes'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java/Running Tomcat infinitely via Daemontools'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/postfix notes'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/misc/disk quotas'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java/-Xmx settings'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/roundcube'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/Securing%2bYour%2bServer'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/webserver/apache/mod_deflate'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/rimuhosting/rimuhosting ssh access'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/mail not going through'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/Security/Securing+Your+Server/'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/monit service monitoring'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/webmin'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/rpm based mysql5 install'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/rimuhosting/argh my server was exploited'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#start/beast forum install'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/rimuhosting/vps backups'/>
                <rdf:li rdf:resource='#domingos'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/misc/Preventing Brute Force SSH Attacks'/>
                <rdf:li rdf:resource='#jetty'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/postfixadmin on RHEL4'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/bugzilla'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/misc/xen notes'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java/running tomcat infinitely via daemontools'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/rimuhosting/load+balancing+and+failover'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/misc/where has my disk space gone'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/auto-restart'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/rpm based php5.1 install'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/miscapplications/svn notes'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#start/mediawiki password reset'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/maildrop with mysql support on debian sarge'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/dkfilter'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/networking'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/misc/memory troubleshooting'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/webserver/apache/mod_security/'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/mail/Postfix mbox to Maildir conversion'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java/tomcat on plesk'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/webserver/apache/php'/>
                <rdf:li rdf:resource='http://bliki.rimuhosting.com/rdf#knowledgebase/linux/java/liferay install on tomcat 5.5'/>
            </rdf:Bag>
        </s:snipLinks>
    </s:Snip>
</rdf:RDF>
