Dit is het tweede deel van onze cPanel 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 belangrijkste om na de installatie in te richten.
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 cPanel & WHM tot specifieke IP's.
- Anti-virus / malware beveiliging met ClamAV.
- WHM Two-Factor Authentication
- Localhost & mail beveiligen met SSL.
- In sommige stappen in dit artikel pas je firewall-regels aan. Onze cPanel-installaties gebruiken standaard Firewalld. Dit is een ‘frontend’ voor Nftables (de onderliggende firewall van jouw besturingssysteem). Voor de volledigheid hebben we firewall instructies voor zowel Firewalld als Nftables beschreven. Mocht je liever rechtstreeks Nftables gebruiken, schakel in dat geval wel Firewalld uit en Nftables in.
- Voer de stappen in dit artikel uit met sudo, of een root-gebruiker.
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 logbestanden overzichtelijker blijven en je een duidelijker beeld krijgt wanneer je VPS daadwerkelijk gericht wordt aangevallen.
Stap 1
Verbind met je VPS via de Terminal in WHM (zie de betreffende paragraaf in deel 1 van deze tutorial series).
Controleer welke poorten op dit moment gebruikt worden met het onderstaande commando.
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
Scroll met de pijltjestoetsen op je toetsenbord omlaag door de lijst en kies een willekeurig poort nummer tussen 0 en 65535 dat niet in het overzicht getoond wordt (bijvoorbeeld 47591) en druk op 'q' om netstat te stoppen.
Stap 3
Open het SSH-configuratiebestand met het onderstaande commando:
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 47591
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 47591 door het poortnummer dat je in stap 2 hebt gekozen. Let op: standaard gebruikt je VPS Firewalld.
Firewalld:
firewall-cmd --permanent --zone=public --add-port=47591/tcp
firewall-cmd --permanent --zone=public --remove-port=22/tcp
firewall-cmd --reload
Nftables:
Pas in de configuratie van Nftables de regel voor het openen van poort 22 aan naar 47591:
sed -i 's/ct state new tcp dport 22 counter packets 0 bytes 0 accept/ct state new tcp dport 47591 counter packets 0 bytes 0 accept/' /etc/sysconfig/nftables.conf
nft -f /etc/sysconfig/nftable.conf
- sed is de tool waarmee je in bestanden o.a. tekst kunt vervangen
- -i past het bestand direct aan
- Het deel 's/ct state new tcp dport 22 counter packets 0 bytes 0 accept/ct state new tcp dport 47591 counter packets 0 bytes 0 accept/ ' Vervangt de oude regel door de nieuwe.
- nft -f /etc/sysconfig/nftable.conf past de configuratie toe.
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
Herstart tot slot SSH met het volgende commando:
systemctl restart sshd
Controleer tot slot dat SSH gebruik maakt van de nieuwe poort met het commando:
ss -tnlp | grep sshd
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 cPanel. WHM komt standaard met de cPHulk Brute Force Protection die je webdiensten beschermen. CPHulk staat automatisch aan en je vindt deze in WHM door bijvoorbeeld te zoeken op ‘Brute’.
Voor een uitvoerigere brute force bescherming waarmee je ook mail en SSH kunt beveiligen, raden we Fail2Ban aan.
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 Fail2Ban dan ook van harte aan.
De installatie en configuratie van Fail2Ban behandelen wij in onze Fail2Ban handleiding.
Sta cPanel & WHM toegang enkel toe voor specifieke IP's
Onze cPanel-VPS'en komen met 'firewalld' als firewall. Je kunt er voor kiezen om in firewalld enkel specifieke IP's toe te staan te verbinden met poort 2087 en / of 2083. Poort 2087 is de poort waar je verbinding mee maakt wanneer je gebruik maakt van WHM en poort 2083 de poort van cPanel.
Let op: Wij raden aan deze stappen enkel voor poort 2087 te gebruiken. Gebruik je onderstaande stappen ook voor poort 2083, zorg dan dat je deze stappen herhaalt voor alle ip's die gebruikt worden door de mensen die een gebruiker hebben op je cPanel-VPS.
Alternatief kun je WHM beveiligen met Two-Factor Authentication (zie verderop in dit artikel). Het beperken van toegang tot specifieke IP's of Two-Factor Authentication gebruiken, is toereikend om toegang tot WHM / cPanel te beveiligen. Het is niet noodzakelijk beide te gebruiken.
Stap 1
Verbind met je VPS via de VPS console in je controlepaneel of via SSH. Zet als eerste poort 2087 dicht met onderstaand commando (i.e. in werkelijkheid verwijder je poort 2087 uit de lijst van open poorten):
Let op: standaard gebruikt je VPS Firewalld.
Firewalld
firewall-cmd --permanent --zone=public --remove-port=2087/tcp
Nftables:
nft delete rule inet filter input tcp dport 2087
Stap 2
Met onderstaande commando's maak je een uitzondering voor je eigen IP adres zodat enkel je eigen IP kan verbinden op poort 2087.
Firewalld
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="1.2.3.4"
port protocol="tcp" port="2087" accept'
firewall-cmd --reload
Vervang 1.2.3.4 door je daadwerkelijke IP adres. Je kunt deze stappen herhalen om meer IP's toegang te geven. Mocht je zelf bestaande regels willen aanpassen, kun je deze naar wens aanpassen in het bestand /etc/firewalld/zones/public.xml
Nftables:
sed -i '/chain cP-Firewall-1-INPUT {/,/}/ s/}/ ip saddr 1.2.3.4 tcp dport 2087 accept\n}/' /etc/sysconfig/nftables.conf
nft -f /etc/sysconfig/nftables.conf
Vervang 1.2.3.4 door je daadwerkelijke IP adres. Je kunt deze stappen herhalen om meer IP's toegang te geven. Mocht je zelf bestaande regels willen aanpassen, kun je deze naar wens aanpassen in het bestand /etc/sysconfig/nftables.conf
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.
WHM Two-Factor Authentication
CPanel 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:
Alternatief kun je WHM beveiligen met een IP restrictie op het inloggen in WHM en / of cPanel (zie eerder in dit artikel). Het beperken van toegang tot specifieke IP's of Two-Factor Authentication gebruiken, is toereikend om toegang tot WHM / cPanel te beveiligen. Het is niet noodzakelijk beide opties te gebruiken.
Stap 1
Zoek in WHM bovenaan links op 'Two-Factor' en klik op 'Two-Factor Authentication'. Zet de schakeler om van 'Off' naar 'On' en klik op 'Save'.
Stap 2
Klik vervolgens op de tab 'Manage My Account' > 'Set Up Two-Factor Authentication'.
Stap 3
Je krijgt onderstaand overzicht te zien. Gebruik je bijvoorbeeld Google Authenticator, scan dan de QR code en vul onder Step 2 de code in die gegenereerd wordt en klik op 'Configure Two-Factor Authentication'.
Localhost en mail voorzien van Let's Encrypt / een eigen SSL-certificaat
Je localhost en mail zijn automatisch beveiligd met een self-signed SSL-certificaat. SSL is gebaseerd op vertrouwen. Self-signed certificaten zijn echter minder geschikt dan Let's Encrypt of een eigen certificaat (bijvoorbeeld onze Sectigo 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 cPanel 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.