Five steps every new Debian or Ubuntu server needs

If you are setting up a new server here are some basic but crucial steps that are needed to be prepare your Ubuntu 14.04 for running securely and smoothly.

0. Remove Ubuntu and install Debian :)

Step 0 was added by popular demand by few senior admins who suggested not to ever use Ubuntu as server :)
I can't argue with that, when I have the choice I usually install Debian or Centos, depending of the task or service which will be used.

1. Make sure server is updated
apt-get update && apt-get upgrade
2. Change ssh service to different port, add your public key and disable password logins.
vim /etc/ssh/sshd_config

change from Port 22 to some port you will remember :) Best to use some random port in range 10000-65535. We will call this number <ssh-port>.

Changing ssh port won't give you added security if you are attached by a targeted attack, but it will definitely lover the noise in your logs because most scripts just try ssh on port 22 an move along if they don't find service running on port 22.

Copy your public ssh key from ~/.ssh/id_rsa.pub to your servers /root/.ssh/authorized_keys file.

Edit /etc/ssh/sshd_config and change

#PasswordAuthentication yes

to

PasswordAuthentication no
3. Install, configure and enable fail2ban
apt-get install fail2ban
vim /etc/fail2ban/jail.conf

Now change bantime and findtime to 86400, scroll down to [ssh] part and change port = 22 to <ssh-port>.

Now enable fail2ban so it start on boot:

 update-rc.d fail2ban enable

And then check to see the status of how many IPs you have caught and blocked:

 fail2ban-client status ssh
4. Install and configure nullmailer

Nullmailer is an awesome software, simple, elegant, secure, small and gets the job done. If you have a dedicated server for email, or want to use your service providers email server, or even Gmail to send out mails then nullmailer is what you want.

apt-get install nullmailer

Make sure you use secure ways of connecting to you smtp server, for example if you use Gmail then your /etc/nullmailer/remotes should look like this:

smtp.gmail.com smtp --port=587 --auth-login --user=you@gmail.com --pass=Yourpassword --starttls
5. Block all ports

Use these simple iptables settings to close all ports, except your <ssh-port>, of course.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport <ssh-port> -j ACCEPT
iptables -P INPUT DROP

Now save your rules:

iptables-save > /etc/iptables

And edit /etc/rc.local so your iptables firewall rules are loaded on boot, add this line before exit 0:

iptables-restore < /etc/iptables
Bonus: 6. Change locale

If you use German VPS providers like me then you won't be surprised that defualt locale is set to LANG=de_DE.UTF-8. Interestingly enough Ubuntu documentation for changing default locale is lacking crucial information. First install locale you need:

apt-get install language-pack-en

To check installed locales on your system list them with:

locale -a

On Debian build and configure locales with this command:

dpkg-reconfigure locales

For Ubuntu change default locale by editing these two files:

vim /etc/default/locale

I changed from LANG=de_DE.UTF-8 to LANG="en_US" and also

vim /etc/profile

from

export LANG="de_DE.utf8"
export LANGUAGE="de_DE.utf8"
export LC_ALL="de_DE.utf8"

to

export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"

Links: