Servers worden vaak aangevallen door geautomatiseerde bots. Bij Linux-servers proberen zij (in bijna alle gevallen) via SSH-poort 22 als root-gebruiker binnen te dringen door middel van brute force aanvallen.
Wij raden daarom aan om je SSH-poort te veranderen, SSH-keys te gebruiken (en daarbij SSH-toegang via een wachtwoord niet langer toe te staan) en toegang tot SSH als root-gebruiker uit te zetten op je VPS. Dit laatste is al automatisch toegepast op onze DirectAdmin-, Plesk- en cPanel-VPS'en.
In dit artikel laten wij zien hoe je je SSH-poort verandert. Het veranderen van je SSH-poort is een vorm van 'security through obscurity'; je maakt zo je VPS (gedeeltelijk) onvindbaar voor het overgrote deel van de aanvallende bots. Een bijkomend voordeel is dat je log bestanden overzichtelijker blijven en je een duidelijker beeld krijgt wanneer je VPS daadwerkelijk gericht wordt aangevallen.
Gebruik je DirectAdmin, Plesk, of cPanel? Bekijk dan voor het veranderen van je SSH-poort onze artikelen die over het beveiligen van deze controlepanelen gaan:
Stap 1
Verbind met je VPS via de VPS console. Via SSH zal je verbinding anders wegvallen terwijl je de wijzigingen verwerkt.
Stap 2
Controleer je gebruikte poorten met het commando:
sudo netstat -tulpn | less
Een overzicht zoals in het screenshot hier onder verschijnt. In dit overzicht zijn de poort nummers de getallen in de rij 'Local Address' achter de dubbele punt.
Kies een willekeurig poort nummer tussen 0 en 65535 dat niet in het overzicht getoond wordt (bijvoorbeeld 47592) en druk op 'q' om netstat te stoppen.
Stap 3
Open het SSH-configuratiebestand met het onderstaande commando. Je kunt hiervoor ook vim gebruiken.
sudo nano /etc/ssh/sshd_config
Stap 4
Het configuratiebestand opent en je ziet onder andere het onderstaande stuk code.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Uncomment / verwijder de # voor '#Port 22' en verander het nummer naar het nummer dat je onder stap 2 hebt gekozen, bijvoorbeeld:
Port 47592
Sla het bestand op en sluit het bestand af door achtereenvolgens op ctrl+ x > y > enter te drukken.
Ubuntu 22.10 en later:
De SSH service in nieuwere versies van Ubuntu gebruikt een activatiemodel gebaseerd op sockets. Hiervoor is een aanpassing in de socket in /etc/systemd/system/ssh.socket.d/ vereist, of je kunt een eigen custom configuratie toevoegen:
-
De bestaande socket aanpassen:
Open de SSH socket-configuratie:sudo nano /etc/systemd/system/ssh.socket.d/override.conf
Verander het ‘ListenStream’ poortnummer naar het nieuwe poortnumber, bijvoorbeeld:ListenStream=47592
Sla de wijzigingen op en sluit het bestand door achtereenvolgens ctrl + x> y> enter in te drukken.
-
Een aangepaste socketconfiguratie maken:
Maak een custom configuratiebestand:sudo nano /etc/systemd/system/ssh.socket.d/override.conf
Voeg de volgende inhoud toe:[Socket]
ListenStream=47592
Sla de wijzigingen op en sluit het bestand door achtereenvolgens ctrl + x> y> enter in te drukken.
Herlaad systemd om de wijzigingen te verwerken:
sudo systemctl daemon-reload
Stap 6
Voeg de gekozen poort toe aan je firewall en sluit poort 22 in je firewall. Hieronder hebben wij voorbeelden van enkele veelgebruikte firewalls. Vervang 47592 door het poortnummer dat je in stap 2 hebt gekozen.
De VPS-firewall in het controlepaneel
Stap 1
Log in op je controlepaneel en navigeer naar de betreffende VPS.
Stap 2
Klik op het tandwiel achter 'Netwerk' (direct onder de VPS-console) en klik op 'VPS-Firewall'.
Stap 3
Verwijder de huidige SSH-regel indien aanwezig, en voeg een custom regel toe voor SSH. Klik tot slot op 'Opslaan' om de wijziging te verwerken.
FirewallD (CentOS Stream, AlmaLinux, Rocky Linux)
sudo firewall-cmd --permanent --zone=public --add-port=47592/tcp
sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp
sudo firewall-cmd --reload
Optioneel kun je SSH ook enkel open zetten voor specifieke IP-adressen of IP-ranges in Firewalld als volgt:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="47592" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="123.123.123.0/24" port protocol="tcp" port="47592" accept'
sudo firewall-cmd --reload
Ufw (Ubuntu, Debian)
sudo ufw allow 47592/tcp
sudo ufw deny 22/tcp
Optioneel kun je SSH ook enkel open zetten voor specifieke IP-adressen of IP-ranges in Ufw als volgt:
sudo ufw allow from 123.123.123.123 to any port 47592 proto tcp
sudo ufw allow from 123.123.123.0/24 to any port 22 proto tcp
Stap 7
Herstart tot slot SSH met het onderstaande commando.
CentOS Stream/AlmaLinux/Rocky Linux
sudo systemctl restart sshd
Ubuntu/Debian:
sudo systemctl restart ssh
Optioneel: Stap 8 - Selinux
Gebruik je Selinux (te controleren met het commando 'sestatus')? Voeg dan ook de gekozen poort toe aan Selinux:
sudo semanage port -a -t ssh_port_t -p tcp 47592
Je SSH-poort is nu verandert en je SSH-verbinding kan nu niet eenvoudig meer aangevallen worden door automatische bots.