Building my own infrastructure II

At the first post of this series I have explained the background and planned the system.
Once I had a running instance of ubuntu server, first thing I did was secure it a little bit. What I wanted was to avoid intrusions and decrease risks in case of them. To do that, I created a sudo user, closed root and password ssh logins, changed ssh port to prevent sniffer scripts to find it easily and setup a firewall.
Here are the steps:
Login as root on your server.
Create your user, add a password to it and make it sudoer:
useradd -m -s /bin/bash myuser
passwd myuser
usermod -aG sudo myuser
exit
Generate your ssh key (if not already done), add it to your server user trusted keys and ssh into server:
ssh-keygen
ssh-copy-id myuser@serverip
ssh myuser@serverip
Configure and activate firewall:
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 322/tcp # for ssh later use
sudo ufw --force enable
Edit ssh config to make it more secure (close password and root login and change ssh port):
sudo vim /etc/ssh/sshd_config
----------------------------------
Port 322
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
----------------------------------
sudo systemctl restart ssh
exit
Now you can log in again and delete ssh ufw rule:
ssh -p 322 myuser@serverip
sudo ufw delete allow ssh
Once that was done, I installed all the needed software:
- Docker
- HAProxy
- Nginx
- Jenkins
- AWS cli (to store db backups)
- Letsencrypt certbot (to generate ssl certificates)
Commands to install all these packages are explained in detail
on project README
but almost all of them were installed using apt install.
Keep it reading how I built my own infrastructure!