Server Hardening op Ubuntu: Het aanvalsoppervlak verkleinen
Server Hardening op Ubuntu: Aanvalsoppervlak verkleinen
Dit artikel legt uit hoe u een Ubuntu-server hardent door onnodige services uit te schakelen, rechten te minimaliseren en de firewall te configureren. Het is geschreven voor systeembeheerders die een productieserver veilig willen opzetten.
Vereisten
- Ubuntu Server 22.04 LTS of 24.04 LTS (verse installatie) - Root-toegang of een gebruiker met sudo-rechten - Basiskennis van de Linux commandoregel - Optioneel: Ubuntu Pro-abonnement voor extra beveiligingsfeatures
Stappen
1. Systeem updaten naar de laatste beveiligingsversies
Een verse Ubuntu-installatie bevat mogelijk verouderde pakketten. Werk alles bij voordat u andere wijzigingen doorvoert.
sudo apt update && sudo apt upgrade -y
2. Ongebruikte services en poorten inventariseren
Voordat u iets uitschakelt, moet u weten wat er draait. Controleer welke services actief zijn en welke poorten openstaan.
systemctl list-units --type=service --state=running
ss -tulpnMaak een lijst van services die u niet nodig hebt voor de functie van de server. Denk aan services zoals `cups`, `avahi-daemon` of `bluetooth` op een dedicated server.
3. Overbodige services uitschakelen en verwijderen
Schakel elke overbodige service uit en voorkom dat deze bij het opstarten wordt geladen. Vervang `dienstnaam` door de daadwerkelijke servicenaam uit stap 2.
sudo systemctl stop dienstnaam
sudo systemctl disable dienstnaamWilt u de service volledig verwijderen, gebruik dan `apt purge`. Dit verwijdert ook de configuratiebestanden.
sudo apt purge dienstnaam -y
4. Minimale rechten toepassen met sudo en gebruikersaccounts
Maak een aparte gebruiker voor dagelijkse taken in plaats van root. Deze gebruiker krijgt alleen de rechten die nodig zijn.
sudo adduser beheerder
sudo usermod -aG sudo beheerderTest de nieuwe gebruiker door in te loggen en een commando met sudo uit te voeren. Gebruik root alleen nog voor noodgevallen.
5. Bestandspermissies controleren en aanscherpen
Controleer de permissies van kritieke systeembestanden. De volgende commando's geven inzicht in wie wat kan lezen, wijzigen of uitvoeren.
ls -la /etc/passwd /etc/shadow /etc/ssh/sshd_config
sudo chmod 644 /etc/passwd
sudo chmod 640 /etc/shadowStel een veilige standaard-umask in voor nieuwe bestanden. Voeg dit toe aan `/etc/profile`:
echo "umask 027" | sudo tee -a /etc/profile
6. Firewall configureren met ufw
Schakel de Uncomplicated Firewall in en sta alleen de poorten toe die de server echt nodig heeft. Vervang `22` door de poort van uw SSH-dienst als u deze hebt aangepast.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enableControleer de status van de firewall om te bevestigen dat de regels actief zijn.
sudo ufw status verbose
7. SSH-hardening toepassen
Pas de SSH-configuratie aan om zwakke toegangsmethoden uit te schakelen. Bewerk `/etc/ssh/sshd_config` en wijzig of voeg de volgende regels toe:
sudo nano /etc/ssh/sshd_config
Zet in dit bestand:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3Herstart de SSH-service om de wijzigingen door te voeren.
sudo systemctl restart sshd
Let op: zet `PasswordAuthentication` pas op `no` nadat u SSH-sleutels hebt geconfigureerd en getest. Anders sluit u uzelf buiten.
8. Ubuntu Pro activeren voor geautomatiseerde patching
Ubuntu Pro biedt extra beveiligingsfuncties zoals livepatch en uitgebreide beveiligingsupdates. Activeer de service met uw abonnementsgegevens.
sudo pro attach jouw-contract-token
Controleer daarna welke beveiligingsdiensten actief zijn.
sudo pro status
Verificatie
Voer deze controles uit om te bevestigen dat de hardening correct is toegepast:
sudo ufw status verbose
systemctl list-units --type=service --state=running
ss -tulpn | grep LISTEN
sudo pro statusDe firewall moet actief zijn met alleen de toegestane poorten. De lijst met draaiende services mag alleen nog de noodzakelijke services bevatten. Ubuntu Pro moet de beveiligingsdiensten als actief tonen.
Veelgestelde problemen
Ik heb mezelf buitengesloten na het wijzigen van SSH-instellingen
Start de server opnieuw op via de console van uw hostingprovider. Log in via de console en zet `PasswordAuthentication` terug op `yes`. Controleer daarna of uw SSH-sleutel correct is geconfigureerd voordat u de instelling opnieuw wijzigt.
ufw blokkeert mijn SSH-verbinding
Voeg eerst de SSH-regel toe voordat u de firewall inschakelt. Als uw verbinding al verbroken is, gebruik dan de console van uw hostingprovider om de firewall uit te schakelen met `sudo ufw disable`. Voeg daarna de juiste regel toe en schakel de firewall opnieuw in.
Een service die ik nodig heb start niet meer na het uitschakelen
Controleer of u de juiste service hebt uitgeschakeld met `systemctl status dienstnaam`. Start de service opnieuw met `sudo systemctl start dienstnaam` en controleer de logs met `journalctl -u dienstnaam` om de oorzaak te vinden.
Hardening is geen eenmalige handeling; nieuwe kwetsbaarheden verschijnen zodra uw systeem draait, en elke wijziging aan de configuratie kan nieuwe zwakke plekken introduceren. Plan daarom periodieke controles in en herhaal deze stappen na elke grote systeemwijziging.