SSH op een Linux VPS beveiligen
Een publieke VPS krijgt binnen enkele minuten na de start geautomatiseerde inlogpogingen. Met de volgende stappen wordt SSH veel moeilijker aan te vallen. De stappen zijn geschreven voor Ubuntu of Debian; heb je nog geen server, dan kun je een Linux VPS huren en starten vanaf een schone image. Houd je huidige SSH-sessie open totdat je de nieuwe instellingen vanuit een tweede venster hebt getest.
1. Een gewone gebruiker met sudo aanmaken
adduser deploy
usermod -aG sudo deploy2. SSH-sleutels gebruiken in plaats van wachtwoorden
Op je eigen computer:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPMeld je één keer aan met de sleutel om te controleren of deze werkt, voordat je wachtwoorden uitschakelt.
3. Wachtwoord- en root-login uitschakelen
Maak /etc/ssh/sshd_config.d/99-hardening.conf aan:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Controleer de syntaxis en herlaad de service. De service heet ssh op Ubuntu en Debian en sshd op RHEL-gebaseerde systemen:
sudo sshd -t && sudo systemctl reload sshOpen een tweede terminal en meld je opnieuw aan. Sluit pas daarna de oude sessie.
4. Een firewall inschakelen
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseOpen alleen de poorten die je nodig hebt, zoals 80 en 443 voor een webserver. Je kunt SSH ook beperken tot je eigen IP-adres met een firewallregel in de cloudconsole.
5. Herhaalde mislukte pogingen blokkeren met Fail2ban
sudo apt install -y fail2banMaak /etc/fail2ban/jail.local aan:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Beveiligingsupdates automatisch installeren
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Optionele extra's
- Het wijzigen van de SSH-poort vermindert lawaai in de logs, maar is op zichzelf geen beveiligingsmaatregel.
- Beveilig de private sleutel met een wachtwoordzin en bewaar een back-up op een veilige plek.
- Controleer aanmeldingen met
lastensudo journalctl -u ssh --since today. - Maak een snapshot zodra de server is ingericht, zodat je een schone uitgangssituatie kunt herstellen.
Ben je buitengesloten, gebruik dan de browserconsole in je cloudpaneel om aan te melden en de configuratie te herstellen. Onze gids over DDoS-bescherming behandelt de volgende beveiligingslaag.
Veelgestelde vragen
Is het veilig om root-login uit te schakelen?
Ja, mits je eerst een sudo-gebruiker aanmaakt en test of de sleutel daarvan werkt. Beheerdersopdrachten kun je nog steeds uitvoeren met sudo.
Heb ik Fail2ban nodig als ik alleen sleutels gebruik?
Het is optioneel. Met wachtwoordlogin uitgeschakeld kan een brute-force-aanval niet slagen, maar Fail2ban vermindert lawaai in de logs en belasting.
Wat als ik mijn SSH-sleutel kwijt ben?
Gebruik de console in je cloudpaneel om aan te melden, voeg een nieuwe publieke sleutel toe aan ~/.ssh/authorized_keys en verwijder de oude.