Naar de inhoud springen

VPS: Linux-beveiligingstips

Ontdek hoe je de beveiliging van je Linux-server verbetert met belangrijke tips om ongeautoriseerde toegang te voorkomen en je services te beschermen → Lees nu meer

10 november 202611 min leestijd0 Weergaven0 nuttig

Inleiding

Deze handleiding bevat enkele tips en adviezen om je Linux-server beter te beveiligen. Omdat (virtuele) servers van buitenaf bereikbaar moeten zijn, is basisbescherming tegen ongewenste toegang zeker aan te raden en mag je deze niet verwaarlozen.

Info

Houd er rekening mee dat deze instructies niet volledig zijn. Meer gedetailleerde informatie vind je in andere onderdelen van de ZAP-documentatie. (bijv. 2FA (SSH))

Tip

De eenvoudigste manier om je server te beschermen is altijd hetzelfde, ongeacht het type server: gebruik sterke wachtwoorden, werk je services regelmatig bij en let in het algemeen goed op welke services je installeert en welke handleidingen je volgt.

Poortconfiguratie van je services

ServicePoort
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

Services zoals SSH of FTP gebruiken standaard altijd dezelfde poorten (een aantal daarvan staat in de tabel hierboven). Als een externe aanvaller je SSH-service met brute force probeert aan te vallen, moet die eerst weten welke poort voor SSH wordt gebruikt. Als je deze poorten niet anders configureert, zijn poort 22 en 21 meestal de eerste opties om rechtstreeks opdrachten op de server uit te voeren of via FTP toegang te krijgen tot bestanden.

Om dit te voorkomen, raden we aan om aangepaste poorten in te stellen voor standaardservices. In het volgende gedeelte lees je hoe:

Let op

De gewenste poort moet tussen 1024 en 65535 liggen en mag niet al in gebruik zijn!

Met cat /etc/services kun je een aantal standaardpoorten weergeven, zodat je geen poort kiest die al bezet is.

SSH-poort

Om de SSH-poort te wijzigen, moet je het configuratiebestand aanpassen. Dit staat meestal in /etc/ssh/sshd_config. Als dat niet het geval is, kun je het met de volgende opdracht zoeken:

Code
find / -name "sshd_config" 2>/dev/null

Open het bestand nu met nano (als root of met sudo).

Code
sudo nano /etc/ssh/sshd_config

Voeg de gewenste poort toe na Port. Als Port is uitgecommentarieerd (dus #Port 22), verwijder dan de "#" en vervang 22 door de gewenste poort. Sla het bestand op (in Nano met Ctrl + o) en sluit het (Nano: Ctrl + x).

Start de SSH-service nu opnieuw op om de wijzigingen toe te passen.

Code
# Bijvoorbeeld op Ubuntu/Debian/CentOS
sudo systemctl restart sshd

FTP-poort

Als je een FTP-service zoals proFTPd hebt geïnstalleerd, kun je de poort ook eenvoudig wijzigen door het configuratiebestand aan te passen. De werkwijze is vergelijkbaar met die voor de SSH-service.

Zoek het configuratiebestand proftpd.conf.

Code
find / -name "proftpd.conf" 2>/dev/null

Het bestand staat meestal in /etc/proftpd.conf (CentOS) of /etc/proftpd/proftpd.conf (Ubuntu, Debian). Open het bestand met nano, verwijder de "#" vóór port en voer de gewenste poort erachter in. Houd rekening met de bovenstaande aanwijzingen, zodat je geen ongeldige poort invoert.

Tip

Gebruik Ctrl + W om in nano te zoeken.

Code
nano /etc/proftpd/proftpd.conf

Extra beveiligingsmaatregelen met Fail2Ban

Fail2Ban is een service die IP-adressen blokkeert waarmee waarschijnlijk kwaadwillende pogingen worden gedaan om in te loggen op de server. Fail2Ban controleert logbestanden op verdachte activiteiten en beveiligt je systeem op een relatief eenvoudige en effectieve manier.

Na de installatie bevat Fail2Ban al vooraf geconfigureerde instellingen voor een aantal veelgebruikte services, waaronder:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Je kunt eenvoudig andere services toevoegen met een reguliere expressie (RegEx) en het pad naar het gewenste logbestand.
Bekijk als voorbeeld een vermelding in /var/log/auth.log. Dit bestand bevat alle SSH-aanmeldpogingen, zowel geslaagde als mislukte.

Hier zie je de vermelding:

Code
Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban gebruikt dit logbestand en controleert het op mislukte verificaties. Omdat het logbestand het IP-adres van de aanvaller rechtstreeks bevat, kan Fail2Ban dat IP-adres na enkele mislukte pogingen blokkeren.

Fail2Ban installeren

Meld je eerst aan op je Linux-server. Heb je hulp nodig? Volg dan onze handleiding Eerste toegang (SSH). Voer de opdrachten uit als root of met sudo.

Code
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Na de installatie kun je de status direct controleren met systemctl: (Druk op Ctrl+C om systemctl af te sluiten)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
       Docs: man:fail2ban(1)
    Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
   Main PID: 23989 (fail2ban-server)
        CPU: 409ms
     CGroup: /system.slice/fail2ban.service
             `-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

Fail2Ban configureren

Fail2Ban is nu geïnstalleerd, maar nog niet actief of geconfigureerd. Bekijk /etc/fail2ban; daar zouden nu de volgende bestanden moeten staan:

Code
action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

Om een actieve "Jail" te maken, moet je een bestand met de naam jail.local aanmaken. Kopieer de inhoud van jail.conf naar het nieuwe bestand en open het:

Code
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Je kunt nu alle instellingen aanpassen in het bestand jail.local, waaronder de services die moeten worden gecontroleerd. Richt je alleen op het gedeelte na [Default]. Het gedeelte Default bevat algemene basisinstellingen.

Scroll omlaag tot je dit gedeelte ziet en pas het bijvoorbeeld als volgt aan:

AttribuutUitlegWaarde
ignoreipIP-adressen die niet geblokkeerd mogen worden127.0.0.1/8
ignorecommandNiet relevant.
bantimeHoelang een IP-adres geblokkeerd blijft1h
findtimePeriode waarin mislukte aanmeldingen worden geteld10m
maxretryAantal mislukte pogingen dat tot een blokkering leidt5
Code
# kan worden gescheiden door spaties (en/of komma's).
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" is het aantal seconden dat een host wordt geblokkeerd.
bantime  = 1h

# Een host wordt geblokkeerd als deze binnen "findtime" "maxretry" fouten
# heeft veroorzaakt.
findtime  = 10m

# "maxretry" is het aantal fouten voordat een host wordt geblokkeerd.
maxretry = 5

Je hebt nu de basisinstellingen voltooid. Als je bijvoorbeeld de SSH-service wilt controleren, scroll je verder omlaag naar de sectie [sshd]. Als je de poort hebt gewijzigd, moet je deze invullen bij port.

De sectie [sshd] ziet er dan als volgt uit:

Code
[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
Tip

Zoals je ziet, kun je ook afzonderlijke instellingen voor specifieke services opgeven (hier bijvoorbeeld maxretry, dat lager is dan de standaardinstelling). Hoewel je eerder algemene instellingen hebt ingesteld, kun je de meeste instellingen voor elke service afzonderlijk configureren. Als je dat niet doet, wordt de algemene instelling gebruikt.

Start Fail2Ban nu opnieuw op om de controle te starten.

Code
sudo systemctl restart fail2ban.service

De werking van Fail2Ban controleren

Als je toegang hebt tot een VPN of een tweede server, kun je proberen jezelf door Fail2Ban te laten blokkeren om te testen of de service werkt. Met een VPN of een hotspot op je telefoon krijg je normaal gesproken een ander IP-adres waarmee je Fail2Ban kunt testen.

Let op

Test dit niet op je gewone netwerk, want je eigen IP-adres kan worden geblokkeerd en je kunt jezelf buitensluiten.

Probeer verbinding te maken met je server via SSH (met een ander IP-adres!) en voer telkens een verkeerd wachtwoord in. Het resultaat zou er ongeveer zo uit moeten zien:

Code
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

Zoals je ziet, wordt de verbinding door je met Fail2Ban beveiligde server nu geweigerd (Connection refused in plaats van Permission denied).

Toon nu de status van Fail2Ban. Je ziet dat er een IP-adres is geblokkeerd.

Code
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     8
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx

Als je het IP-adres weer wilt vrijgeven, gebruik je de volgende opdracht: fail2ban-client set sshd unbanip {deine IP}.

Info

Als er ongewoon veel IP-adressen worden geblokkeerd, kun je de blokkeringsduur bij elke mislukte poging verlengen om het aantal mogelijke aanmeldpogingen te verminderen.

Code
[sshd]

enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# Bantime zou bij elke blokkering van dit IP-adres moeten toenemen
bantime.increment = true
# Schaalfactor van 24 uur (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximale blokkeringsduur = 5 weken
bantime.maxtime = 5w

FAQ

Veelgestelde vragen

Gebruik sterke wachtwoorden, werk services regelmatig bij en let goed op welke services je installeert en welke handleidingen je volgt.
Schakel aanmelden met SSH-sleutels in en aanmelden met een wachtwoord uit. Zie hiervoor de handleiding voor SSH-sleutels.
SSH gebruikt poort 22. Aanvallers moeten eerst weten welke poort wordt gebruikt om SSH met brute force aan te vallen.

Feedback

Was dit artikel nuttig?

Je feedback helpt ons inhoud beter te prioriteren en te verbeteren.

0 van 0 Gebruikers vonden dit artikel nuttig.

Persoonlijke hulp

Is de handleiding niet voldoende?

Onze ZAP-support kent je product — beschrijf kort je vraag en wij helpen je persoonlijk verder.