OpenSSH is a secure shell protocol that provides a secure channel over an unsecured network. It allows the system administrator to manage Linux servers remotely over a secure channel. It works on a client-server architecture and allows users to connect to the SSH server remotely. Unlike unsecured protocols, SSH encrypts the traffic, login sessions, and passwords. OpenSSH is one of the most popular and widely used protocols.
In this post, we will show you how to secure an SSH server on Arch Linux.
Step 1 – Configure Repository
By default, the default repository is outdated in Arch Linux, so you will need to modify the default mirror list. You can do it by editing the mirrorlist configuration file:
nano /etc/pacman.d/mirrorlist
Remove all lines and add the following lines:
## Score: 0.7, United States Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch ## Score: 0.8, United States Server = http://lug.mtu.edu/archlinux/$repo/os/$arch Server = http://mirror.nl.leaseweb.net/archlinux/$repo/os/$arch ## Score: 0.9, United Kingdom Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch ## Score: 1.5, United Kingdom Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch Server = http://archlinux.dcc.fc.up.pt/$repo/os/$arch ## Score: 6.6, United States Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch ## Score: 6.7, United States Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch ## Score: 6.8, United States Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch ## Score: 7.1, India Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch ## Score: 10.1, United States Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
Save and close the file then update all the package indexes with the following command:
pacman -Syu
Step 2 – Change SSH Default Port
By default, SSH listens on port 22. So it is vulnerable to DDoS attacks. In this case, it would be recommended to change the default SSH port to a port greater than 1024.
To change the SSH port, edit the SSH configuration file.
nano /etc/ssh/sshd_config
Find the following line:
Port 22
And, replaced it with the following line:
Port 8087
Save and close the file then restart the SSH service to apply the changes.
systemctl restart sshd
Step 3 – Disable SSH Root Login
The root user has unlimited access to the file system, so the root account is the most valuable target for hackers. You can disable the SSH root login by editing the SSH configuration file.
nano /etc/ssh/sshd_config
Find the following line:
#PermitRootLogin prohibit-password
Replaced it with the following line.
PermitRootLogin no
Save and close the file then restart the SSH service to apply the changes.
Step 4 – Limit SSH Access
It is also a good practice to grant only limited users access to the SSH server remotely. You can define the allow and deny list via SSH configuration file.
nano /etc/ssh/sshd_config
Add the following line:
AllowUsers user1 user2 user3
Save and close the file, then restart the SSH service to apply the changes.
systemctl restart sshd
Step 5 – Enable Key-based Authentication
It is a good idea to use an SSH key instead of a password to authenticate the SSH server. To do so, first, edit the SSH configuration file and enable the key-based authentication.
nano /etc/ssh/sshd_config
Change the following line:
PubkeyAuthentication yes
Save and close the file then restart the SSH service.
systemctl restart sshd
Step 6 – Disable Password Login
It is also a good idea to disable password authentication and enable key-based authentication.
nano /etc/ssh/sshd_config
Find and change the following line:
PasswordAuthentication no
Save and close the file, then restart the SSH service to apply the changes.
systemctl restart sshd
Conclusion
In this post, we explained how to secure an OpenSSH server on Arch Linux. I hope this guide will help you to secure your SSH server in a production environment. You can secure the SSH server on VPS server hosting from Atlantic.Net!