Hulpartikel overzicht

Hulpartikel

Plesk Tutorial Series 2: Je VPS beveiligen

Dit is het tweede deel van onze Plesk Tutorial Series. Ben je een nieuwe VPS aan het inrichten, dan raden wij aan om bij deel 1 te beginnen.

Geautomatiseerde bots scannen doorlopend IP's op kwetsbaarheden. Om te voorkomen dat hierdoor problemen op je VPS ontstaan, is de beveiliging van je VPS inrichten het eerste dat wij na de installatie doen.

Gezien het grote aantal IP's dat gebruikt wordt door bots kunnen wij niet alle aanvallende IP's in onze eigen firewall opnemen, noch krijgen wij melding van de pogingen tot het binnendringen op je VPS.

Beveiligingsmaatregelen

Om je VPS te beveiligen doorlopen wij de volgende stappen:

  • Verander je SSH-poort
  • Fail2Ban bruteforce beveiliging
  • Beperk de toegang tot Plesk tot specifieke IP's
  • Anti-virus / malware beveiliging met ClamAV
  • Plesk Security Policy
  • Verbiedt gebruikers toegang tot elkaars DNS-zones
  • Localhost & mail beveiligen met SSL
  • Dit is relatief complexe materie. Gebruik je onderstaande stappen om een bestaande (i.p.v. nieuwe) VPS te beveiligen, maak dan altijd eerst een snapshot van je VPS voordat je de stappen hieronder uitvoert. Zo heb je altijd een snapshot om op terug te vallen als blijkt dat er door een wijziging een probleem ontstaat.
     
  • Voer de stappen in dit artikel uit met sudo, of als root-user/gebruiker met root-rechten.
Verander je SSH-poort

Naast dat de root-user standaard geen SSH-toegang heeft tot je VPS raden wij aan je SSH-poort te veranderen. Dit is een vorm van 'security through obscurity'; door je SSH-poort te veranderen maak je namelijk je VPS onzichtbaar voor het grootste deel van de aanvallende bots (zo niet alle bots). Een bijkomend voordeel is dat je log bestanden overzichtelijker blijven en je een duidelijker beeld krijgt wanneer je VPS daadwerkelijk gericht wordt aangevallen.

Stap 1

Verbindt met je VPS via de VPS console in je controlepaneel of via SSH. Controleer je gebruikte poorten met het onderstaande commando (het kan zijn dat je eerst nog net-tools moet installeren met dnf -y install net-tools).

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.


Stap 2

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 configuratie bestand met het onderstaande commando. Je kunt hiervoor ook vim gebruiken.

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 of 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.


Stap 5

Voeg de gekozen poort toe aan je firewall en verwijder poort 22 met onderstaande commando's. Vervang 47592 door het poortnummer dat je in stap 2 hebt gekozen.

In oudere versies van Plesk wordt de public gebruikt, oftewel --zone=public

firewall-cmd --permanent --zone=plesk --add-port=47592/tcp
firewall-cmd --permanent --zone=plesk --remove-port=22/tcp

Gebruik je de VPS-firewall in het TransIP-controlepaneel? Vergeet dan niet een handmatige regel in de firewall toe te voegen waarin je ook de gekozen poort open zet en om poort 22 daarin ook dicht te zetten.


Stap 6

AlmaLinux komt standaard met SELinux, een extra beveiligingsfeature van Linux om te beschermen tegen misconfiguraties. Standaard accepteerd SELinux geen SSH verbinding op de poort die je in deze stappen instelt. Je voegt de poort toe aan SELinux met het commando:

semanage port -a -t ssh_port_t -p tcp 47592

Vervang 47592 door je gekozen poortnummer.


 

Stap 7

Herstart vervolgens je firewall configuratie en SSH met de volgende commando's:

firewall-cmd --reload
systemctl restart sshd

Je kunt vervolgens controleren dat SSH gebruik maakt van de nieuwe poort met het commando:

ss -tnlp | grep sshd

Als je een foutmelding krijgt bij het herstarten van sshd dan heb je waarschijnlijk een poort gekozen die je niet mag gebruiken. Probeer in dat geval een ander SSH poortnummer in te stellen.

Fail2Ban Bruteforce beveiliging

Bots proberen automatisch binnen te dringen door bruteforce aanvallen uit te voeren op je VPS op verschillende vlakken, zoals op SSH, Postfix (uitgaande mail server), en Plesk. Fail2Ban biedt hier een goede bescherming tegen.

Fail2Ban beschermt je VPS door IP's te bannen die pogingen doen tot misbruik van je VPS, bijvoorbeeld bij te veel foutieve password pogingen, zoeken naar exploits, etc. Wij bevelen dan ook Fail2Ban van harte aan.

In Plesk Obsidian (18.0 en nieuwer) staat Fail2Ban standaard aan. Je kunt dit onderdeel dan ook overslaan als je Obsidian gebruikt.

 

Stap 1

Log in op Plesk en navigeer naar 'Tools & Settings' > 'Updates'.

plesk tools and settings updates


 

Stap 2

Klik vervolgens op 'Add/Remove Components'.

plesk add or remove components


 

Stap 3

Selecteer het dropdown icoontje voor Fail2Ban en selecteer 'Install'. Klik op 'Continue' om Fail2Ban te installeren.

plesk add fail2ban


 

Stap 4

Je krijgt een bevestiging te zien van de installatie.

plesk fail2ban installed

Keer nu terug naar 'Tools & Settings' > 'Updates and Upgrades'. Je zult zien dat er onder 'Security' een nieuwe optie bij is gekomen genaamd 'IP Address Banning (Fail2Ban)'. Klik hier op om Fail2Ban te configureren.

plesk ip address banning


Stap 5

Fail2Ban schakel je in door op 'Enable intrusion detection' aan te vinken. Standaard worden aanvallende IP's voor tien minuten geband van je VPS. Wij raden aan dit op een uur te zetten zoals in het screenshot hieronder, maar je bent vrij dit naar wens aan te passen. Sla je wijzigingen op door op 'Apply' > 'OK' te klikken.

plesk fail2ban settings


 

Stap 6

Wissel naar de 'Jails' tab. Een jail is een configuratiebestand waarin de beveiliging van een service wordt gespecificeerd (welke meldingen triggerd fail2ban op, welke dependencies worden gebruikt, welk bericht naar offenders, etc.). Selecteer alle jails en klik op 'Switch On'.

plesk fail2ban jails


 

Stap 7

Klik tot slot op 'Trusted IP Addresses' > 'Add Trusted IP' om je IP-adres waarvandaan je met je VPS verbindt te beveiligen. Zo voorkom je dat als je je vergist in je wachtwoord je jezelf per ongeluk bant.

plesk fail2ban trusted ip's

Geef je IP-adres op en klik op 'OK'.


Sta Plesk toegang enkel toe voor specifieke IP's

Onze VPS'en met Plesk gebruiken standaard 'iptables' als firewall en worden beheerd vanuit 'firewalld'. Je kunt er voor kiezen om in firewalld enkel specifieke IP's toe te staan te verbinden met poort 8443. Poort 8443 is de poort waar je verbinding mee maakt wanneer je gebruik maakt van Plesk.

Stap 1

Verbindt met je VPS via de VPS console in je controlepaneel of via SSH. Zet als eerste poort 8443 dicht met onderstaand commando (i.e. in werkelijkheid verwijder je poort 8443 uit de lijst van open poorten):

firewall-cmd --permanent --zone=plesk --remove-port=8443/tcp

Stap 2

Met onderstaande commando's maak je een uitzondering voor je eigen IP adres zodat enkel je eigen IP kan verbinden op poort 8443.

firewall-cmd --permanent --zone=plesk --add-rich-rule='
rule family="ipv4"
source address="1.2.3.4"
port protocol="tcp" port="8443" accept'

Vervang 1.2.3.4 door je daadwerkelijke IP adres. Je kunt deze stappen herhalen om meer IP's toegang te geven.


Stap 3

Laadt firewalld opnieuw om de wijzigingen te verwerken:

firewall-cmd --reload

Aanvullende Tips:

  • Om je configuratie rechtstreeks aan te passen of te controleren kun je het volgende commando gebruiken:
    nano /etc/firewalld/zones/plesk.xml 
    Je krijgt onderstaand overzicht te zien.

    Je kunt hier de bovenstaande regels ongedaan maken door het stukje vanaf <rule tot en met </rule> te verwijderen en de volgende regel weer toe te voegen:

    <port protocol="tcp" port="8443"/>
  • Je kunt de stappen in dit onderdeel ook gebruiken om andere poorten dicht te zetten. Doe dit wel enkel wanneer je heel zeker bent van je zaak, bijvoorbeeld als een IP een specifieke poort aanvalt.

Anti-virus / malware beveiliging met ClamAV

ClamAV is een gratis, open source anti-virus programma voor de detectie van o.a. trojans, virussen en malware op je VPS.

In onze ClamAV handleiding voor CentOS 7, 8 en AlmaLinux 8 laten wij je zien hoe je ClamAV installeert, zorgt dat ClamAV automatisch start, en je VPS dagelijks scant.

Plesk Security Policy
Plesk biedt de mogelijkheid om in te stellen hoe streng de FTP(S)- en wachtwoordbeveiliging is. Wij raden aan om hier streng in te zijn en geen onveilige verbindingen toe te staan. Je past dit aan als volgt:

 

Stap 1

Log in op Plesk en navigeer naar 'Tools & Settings' > 'Security Policy'.

plesk security policy


Stap 2

Enhanced security mode moet ingeschakeld zijn (groen vinkje) om deze functionaliteit te kunnen gebruiken. Wij raden aan de volgende instellingen te gebruiken:

  • Secure FTP: Allow only secure FTPS connections.
  • Password Strength: Strong
plesk security policy settings

Klik na eventuele wijzigingen op 'Apply' > 'OK' om ze op te slaan.

Verbiedt gebruikers toegang tot elkaars DNS-zones
Alle gebruikers kunnen standaard in Plesk subdomeinen en domeinaliassen aanmaken in de DNS-zones (i.e. de DNS-instellingen van anderen) van andere gebruikers, ook zonder toegang tot het betreffende account.

Dit betekent dat gebruikers websites en e-mailadressen kunnen aanmaken op subdomeinen en domeinaliassen van andere gebruikers. Wij raden ten sterkste aan deze optie uit te schakelen om te voorkomen dat bijvoorbeeld een gebruiker phishing gaat versturen namens een andere gebruiker. Je schakelt deze optie uit als volgt:

 

Stap 1

Log in op Plesk als administrator en ga naar 'Tools & Settings' > 'Server Settings'.

plesk general settings


 

Stap 2

Vink de optie 'Forbid users to create DNS subzones in other users' DNS superzones' en klik op 'OK'.

plesk server settings

Localhost en mail voorzien van Let's Encrypt / een eigen SSL-certificaat

Je localhost en mail is automatisch beveiligd met een self-signed SSL-certificaat dat TLS v1.2 gebruikt. SSL is gebaseerd op vertrouwen. Self-signed certificaten zijn minder geschikt dan Let's Encrypt of een eigen certificaat (bijvoorbeeld onze Comodo certificaten), aangezien er dan geen sprake is van een CA autoriteit die het certificaat uitgeeft. Het vertrouwen in een self-signed certificaat is in het SSL-systeem daarom beperkter.

Wij raden daarom aan Let's Encrypt of een eigen SSL-certificaat te gebruiken. Hoe je dit doet wordt toegelicht in ons artikel 'een SSL certificaat in Plesk installeren'. In dit artikel lichten wij ook toe hoe je je website hiermee beveiligd. Hier komen wij op terug in deel 5 van deze tutorial series, waarin je je website en database upload.


 

Je hebt met bovenstaande stappen een solide beveiliging van je VPS opgezet. Klik hier om verder te gaan naar Deel 3: Je VPS updaten.

Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' aan de onderzijde van deze pagina.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

1
id2concept 21 augustus 2019 (#3427)

Vergeet na het aanpassen van de SSH-poort ook niet om de firewall aan te passen in het TransIP controlepaneel (Beheren > Netwerk > VPS-Firewall). Maak voor het nieuwe poortnummer een custom regel aan en klik op 'Opslaan'.

Het document noemt dit niet maar is wel nodig.

Ook moet je in Plesk voor ieder domein in het Web Hosting Access de 'Access to the server over SSH' op '/bin/bash (chrooted)' zetten, anders kun je niet via SFTP inloggen.

0
Matthijs van Beek Admin 15 juli 2019 (#3311)

@park23,

Dit zit hem in dat je het commando uit moet voeren met sudo ervoor (sudo nano /etc/ssh/sshd_config), of als root gebruiker (su root > nano /etc/ssh/sshd_config), zie het aandachtsblok aan het begin van het artikel.

0
park23 13 juli 2019 (#3308)

Na 'nano /etc/ssh/sshd_config' krijg ik een leeg scherm met deze regel onderaan in Terminal: [ Fout tijdens lezen van /etc/ssh/sshd_config: Toegang geweigerd ] Wat is hiervan de oorzaak? Ook als ik via de online Console deze stappen doorloop krijg ik die melding. Alleen dan in het Engels

0
Matthijs van Beek Admin 30 november 2018 (#2314)

@dadyo,

Bedankt voor je feedback! De VPS hoort met nano te komen. Wij gaan het onderzoeken en zullen onze image indien nodig hierop aanpassen.

1
dadyo 29 november 2018 (#2313)

Op een nieuwe CentOs/Plesk VPS staat nog geen nano. In deze tutorial-serie moet je dus voorafgaand aan de eerste keer nano gebruiken dit installeren met:

yum install nano

0
Matthijs van Beek Admin 20 november 2018 (#2251)

@micpoint

Feedback is altijd welkom :) Het artikel gaat inderdaad over het beveiligen van de VPS en uiteraard is het best practise om zo veel mogelijk dicht te zetten, maar dan moet voor poort 8447 wel de door Plesk installer gebruikte IP's toegevoegd worden als toegestane IP's. Die ga ik binnenkort achterhalen en toevoegen aan het artikel.

Zoals je aangeeft is er nog meer mogelijk qua firewalling, zoals eigen zones maken, maar dat valt enigszins buiten de scope van dit artikel en is een onderwerp dat wij op een later moment in een apart artikel op zullen nemen.

0
micpoint 20 november 2018 (#2250)

@Matthijs van Beek, ah.. Ik dacht dat de strekking van het artikel het beveiligen van de VPS was. Dan leek het mij logisch om naast het Plesk control panel ook de installer te beveiligen door alleen toegang van specifieke locaties toe te staan. Voor de duidelijkheid, ik probeer geen discussie te voeren. Alleen te leren en helpen. Op onze nieuwe Plesk VPS heb ik de firewall zo veel mogelijk dichtgezet. Aangezien hierop geen klanten op Plesk hoeven in te loggen heb ik zone public default gemaakt en hierop alleen http/https toegestaan. En een nieuwe zone gemaakt met specifieke IP-adressen en poorten voor het beheer van de machine.

0
Matthijs van Beek Admin 20 november 2018 (#2248)

@micpoint

Dat was een bewuste keuze: de instructie geldt namelijk enkel voor toegang tot Plesk. Als je ook toegang tot poort 8447 beperkt op dezelfde manier, krijg je een 'ERR_CONNECTION_TIMED_OUT' melding wanneer je Updates & Upgrades probeert te openen.

0
micpoint 20 november 2018 (#2247)

@Matthijs van Beek, vergeet ook niet poort 8447. :)

0
Matthijs van Beek Admin 20 november 2018 (#2244)

@micpoint

Bedankt voor je feedback! De zone is inderdaad aangepast in Plesk 17.8 en hebben wij vandaag ook aangepast in dit artikel. Onze Plesk-images worden hier ook op zeer korte termijn op aangepast.

0
micpoint 19 november 2018 (#2241)

Standaard is niet de firewall-zone public actief, maar de zone plesk. Commando is dan: firewall-cmd --permanent --zone=plesk --remove-port=8443/tcp

Poort 8447/tcp is nodig voor de Plesk installer (Tools & Settings > Updates and Upgrades).

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op