Servers ·
Je VPS beveiligen: de eerste tien minuten
Werk een nieuwe server met Ubuntu of Debian bij, zet SSH om naar sleutels, zet een firewall aan met ufw en schakel automatische beveiligingsupdates in, zonder jezelf buiten te sluiten.
Een nieuwe server is vanaf de eerste start bereikbaar vanaf het hele internet, en automatische scanners vinden hem binnen een paar minuten. Deze handleiding loopt de eerste stappen door op een nieuwe VPS: updaten, SSH omzetten naar sleutels, een firewall aanzetten en beveiligingsupdates automatisch laten installeren.
Volg de stappen in deze volgorde. Die zorgt ervoor dat je jezelf niet buitensluit.
Wat je nodig hebt
- Een draaiende VPS met Ubuntu of Debian. Nog geen server? Begin met Je eerste VPS instellen.
- Het IP-adres en de gebruikersnaam van je server, en het wachtwoord of de SSH-sleutel die je bij het bestellen hebt gekozen.
- Een terminal op je eigen computer. Linux, macOS en Windows hebben
sshal aan boord.
De commando's hieronder gebruiken sudo. Ben je ingelogd als root, dan kun je sudo weglaten. Vervang user door je gebruikersnaam en 203.0.113.10 door het IP-adres van je server.
1. Werk de pakketten bij
Log in en installeer alle openstaande updates:
ssh user@203.0.113.10
sudo apt update && sudo apt upgrade -y
Zat er een nieuwe kernel bij, herstart dan één keer zodat hij gebruikt wordt:
sudo reboot
Wacht een minuut en log opnieuw in.
2. Zorg dat je je wachtwoord kent
Je gaat zo het inloggen met een wachtwoord uitzetten voor SSH. Het wachtwoord zelf blijft nuttig: je hebt het nodig voor sudo en voor de console in het paneel als er iets misgaat. Stel er nu een in dat je kent:
sudo passwd user
3. Log in met een SSH-sleutel
Een SSH-sleutel is een bestand op je computer dat het wachtwoord vervangt. Hij is niet te raden zoals een wachtwoord. Log je al in met de sleutel die je bij het bestellen hebt opgegeven? Ga dan door naar stap 4.
Voer deze commando's uit op je eigen computer, niet op de server.
- Maak een sleutel aan. Druk op Enter om de bestandslocatie te accepteren en kies een wachtwoordzin als je extra bescherming wilt:
ssh-keygen -t ed25519
- Kopieer het publieke deel van de sleutel naar de server. Op Linux en macOS:
ssh-copy-id user@203.0.113.10
Op Windows, in PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- Test het. Open een nieuwe terminal en maak verbinding:
ssh user@203.0.113.10
Je hoort ingelogd te zijn zonder dat er om het wachtwoord van je serveraccount wordt gevraagd. Heb je een wachtwoordzin ingesteld, dan wordt daar wel om gevraagd. Ga pas verder als dit werkt.
4. Zet inloggen met een wachtwoord uit
Houd je huidige SSH-sessie tijdens deze hele stap open. Een open sessie blijft verbonden, ook als de nieuwe instellingen niet kloppen. Zo kun je ze altijd terugdraaien.
- Maak op de server een klein instellingenbestand aan:
echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/00-keys-only.conf
- Controleer de configuratie op fouten. Geen uitvoer betekent dat alles in orde is:
sudo sshd -t
- Pas het toe:
sudo systemctl reload ssh
- Controleer of de instelling actief is. Het antwoord moet
passwordauthentication nozijn:
sudo sshd -T | grep -i passwordauthentication
Staat er nog yes, open dan het hoofdbestand met sudo nano /etc/ssh/sshd_config, zet PasswordAuthentication no als allereerste regel in het bestand en herhaal stap 2 tot en met 4.
- Test nu vanuit een tweede terminal, terwijl de eerste open blijft. Je sleutel moet nog steeds werken:
ssh user@203.0.113.10
En inloggen met een wachtwoord moet geweigerd worden:
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password user@203.0.113.10
Je hoort Permission denied te zien. Sluit de eerste sessie pas als beide tests gaan zoals beschreven.
Ging er iets mis? Draai de wijziging terug in de sessie die nog open staat:
sudo rm /etc/ssh/sshd_config.d/00-keys-only.conf
sudo systemctl reload ssh
5. Zet een firewall aan met ufw
ufw blokkeert elke inkomende verbinding die je niet hebt toegestaan. De ene regel die telt: sta SSH toe voordat je de firewall aanzet.
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
ufw enable waarschuwt dat SSH-verbindingen verstoord kunnen worden. Omdat poort 22 al is toegestaan, kun je y antwoorden.
Controleer het resultaat:
sudo ufw status verbose
Open alleen extra poorten als je iets draait dat ze nodig heeft, bijvoorbeeld een webserver:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
6. Installeer beveiligingsupdates automatisch
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Beantwoord de vraag met Yes. Vanaf nu installeert de server elke dag zelf beveiligingsupdates. Controleer of het aanstaat:
cat /etc/apt/apt.conf.d/20auto-upgrades
In beide regels hoort "1" te staan.
Jezelf buitengesloten?
Via het paneel kun je altijd bij je server, ook als SSH of de firewall je weigert.
- Log in op het paneel, open Virtuele machines en klik op je server.
- Klik op Console. Die opent in een nieuw tabblad en toont het scherm van je server.
- Log in met je gebruikersnaam en het wachtwoord uit stap 2.
- Los op wat je blokkeerde. Om SSH weer door de firewall te laten:
sudo ufw allow 22/tcp
Om de instelling uit stap 4 terug te draaien:
sudo rm /etc/ssh/sshd_config.d/00-keys-only.conf
sudo systemctl restart ssh
Hoe verder
Maak voor elke grotere wijziging een snapshot, dan kun je terug. Zie Snapshots en back-ups voor je VPS.