====== Ubuntu Server Setup ====== This document should outline a few steps that are useful after a fresh install of an Ubuntu Server - last updated for 20.04. ===== Install Useful Tools ===== sudo apt install mlocate htop ncdu ranger tldr tree vim ===== More Software ===== ==== Samba / CIFS ==== If you need to mount Windows network drives: sudo apt install cifs-utils ==== Java ==== Ubuntu provides multiple versions of OpenJDK, e.g.: sudo apt install openjdk-17-jdk-headless If you need other versions check https://adoptium.net (previously named adoptopenjdk). Unfortunately as of 2021-10 they don't provide ppas but only .tar.gz files. But this may change soon. ===== Lighttpd ===== Their documentation is a little messy, here are the relevant pages: * http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration * http://redmine.lighttpd.net/projects/1/wiki/HowToSimpleSSL * http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_SSL ===== OpenSSH ===== Disable root login in ''/etc/ssh/sshd_config'': PermitRootLogin no A good baseline is to only allow logins via public key authentication (disable password authentication), except for a fallback user with a very long and complex password. See these lines in ''/etc/ssh/sshd_config'': PasswordAuthentication no # # Match-block at end of file for exceptions: Match User fallbackuser PasswordAuthentication yes Ubuntu tutorials: [[https://help.ubuntu.com/community/SSH/OpenSSH/Keys]] \\ [[https://help.ubuntu.com/community/SSH/OpenSSH/Configuring]] Further harden OpenSSH according to the [[https://stribika.github.io/2015/01/04/secure-secure-shell.html|secure secure shell guide]] ===== Enable Automatic Security Updates ===== Install unattended-upgrades: sudo apt install unattended-upgrades Or reconfigure it if it's already installed: sudo dpkg-reconfigure -plow unattended-upgrades This creates the file ''/etc/apt/apt.conf.d/20auto-upgrades''. To avoid filling up small hard drives over time (e.g. with multiple kernel versions) it may be useful to activate the equivalent of ''sudo apt autoremove'': Set ''Unattended-Upgrade::Remove-Unused-Dependencies'' to ''true'' in ''/etc/apt/apt.conf.d/50unattended-upgrades''. See also: * ''/etc/apt/apt.conf.d/20auto-upgrades'' (and ''man apt.conf'') * [[https://help.ubuntu.com/community/AutomaticSecurityUpdates]]\\ * [[https://ubuntu.com/server/docs/package-management]] ===== Decrease Swappiness ===== Add a line to ''/etc/sysctl.conf'' and override the default swappiness of 60 with a much lower value, e.g. vm.swappiness=10 [[http://wiki.ubuntuusers.de/Swap]] ===== Root Kit & Intrusion Detection ===== Have a look at at e.g. [[http://wiki.ubuntuusers.de/chkrootkit|chkrootkit]] and tiger [[http://www.nongnu.org/tiger/|tiger]] ===== Greeting ===== If you fancy a nice greeting message: #!/bin/bash # http://patorjk.com/software/taag/#p=display&h=1&f=Calvin%20S&t=my-server-name # http://patorjk.com/software/taag/#p=display&h=1&v=0&f=ANSI%20Regular&t=my-server-name echo "┌┬┐┬ ┬ ┌─┐┌─┐┬─┐┬ ┬┌─┐┬─┐ ┌┐┌┌─┐┌┬┐┌─┐" echo "│││└┬┘───└─┐├┤ ├┬┘└┐┌┘├┤ ├┬┘───│││├─┤│││├┤ " echo "┴ ┴ ┴ └─┘└─┘┴└─ └┘ └─┘┴└─ ┘└┘┴ ┴┴ ┴└─┘" # or alternatively # figlet my-server-name Don't forget to make the file executable. When using ''byobu'' delete ''~/.hushlogin'' to still see the greeting (and all other info you usually get when logging in). ===== More Resources ===== [[https://www.ubuntupit.com/best-linux-hardening-security-tips-a-comprehensive-checklist/]]