Winkelwagen

/ VPS-Infrastructuur

Alles over de zelfontwikkelde VPS-infrastructuur

Register now

/ Up to date

/ Nieuws

Lancering PerformanceVPS

Meer info
Hulp nodig?

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    DirectAdmin Tutorial Series 2: Je VPS beveiligen

    Dit is het tweede deel van onze DirectAdmin Tutorial Series. Ben je een nieuwe VPS aan het inrichten, dan raden wij aan om bij deel 1 te beginnen en geen delen over te slaan.

     

    Geautomatiseerde bots scannen doorlopend IP's op kwetsbaarheden. Om te voorkomen dat hierdoor problemen op je VPS ontstaan, raden we aan om na de installatie van je VPS direct de beveiliging in te richten.

    Een overgroot deel van de aanvallende bots gaan automatisch IP-adressen af tot zij een hit krijgen op SSH-poort 22 en probeert vervolgens als 'root' binnen te dringen op je VPS middels Brute Force aanvallen. Om die reden is SSH-toegang voor de root-user standaard uitgeschakeld op onze VPS'en met DirectAdmin. Je kunt hier lezen hoe je een gebruiker voor SSH maakt.

    Gezien het grote aantal IP's dat gebruikt wordt door bots kunnen wij deze niet allemaal 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:

    • Dit is relatief complexe materie. Als je onderstaande stappen gebruikt om een bestaande (i.p.v. nieuwe) VPS aan te passen, maak dan altijd eerst een snapshot van je VPS voordat je een update uitvoert. Zo heb je altijd een snapshot om op terug te vallen als blijkt dat er door een wijziging een probleem ontstaat.  
       
    • Vanaf 11 mei 2022 maken onze installaties gebruik van de CSF-firewall en niet langer van FirewallD. DirectAdmin geeft je enorm veel vrijheid in het configureren van deze firewall. Op deze pagina vind je een geavanceerde handleiding van de CSF-firewall.
     

     

    De SSH-poort veranderen

     

    De root-user heeft standaard geen SSH-toegang tot je VPS. Hierom 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. Een bijkomend voordeel is dat je logbestanden overzichtelijker blijven.

     

    Stap 1

    Verbind met je VPS via de VPS-console in het TransIP-controlepaneel of via SSH. Controleer je gebruikte poorten met het onderstaande commando.

    sudo 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, bijvoorbeeld op de eerste regel is 110 het poortnummer.

    netstat overview


     

    Stap 2

    Kies een willekeurig poort nummer tussen 0 en 65535 dat niet in het overzicht getoond wordt (bijvoorbeeld 21543) en druk op 'q' om netstat te stoppen.


     

    Stap 3 

    Open het SSH-configuratiebestand met het onderstaande commando. Je kunt hiervoor ook vim gebruiken.

    sudo 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 21543

    Sla het bestand op en sluit het bestand af door achtereenvolgens op ctrl+X > > enter te drukken.


     

    Stap 5

    Voeg de gekozen poort toe aan je firewall. Voor DirectAdmin-installaties vanaf 11 mei 2022 wordt gebruik gemaakt van de CSF-firewall die beheert wordt in de DirectAdmin-webomgeving. Eerdere installaties maken, tenzij je dit zelf hebt aangepast, gebruik van Firewalld via command-line.

    CSF

    Stap 1

    Log in op de DirectAdmin-webinterface met de gebruiker 'admin' en klik in het tegelmenu onder ‘Extra Features’ op ‘ConfigServer Security & Firewall’, of in het linkermenu op ‘Extra Features’ > ‘ConfigServer Security & Firewall’.


     

    Stap 2

    Klik op 'CSF', of scroll naar onderen naar 'csf - ConfigServer Firewall' en klik op 'Firewall Configuration'.

    directadmin csssf csf edit configuration


     

    Stap 3

    Je krijgt nu een pagina met bijzonder veel opties te zien. Scroll naar 'TCP_IN' en pas in het overzicht 22 aan naar het gewenste poortnummer, bijvoorbeeld:

    directadmin csf tcp in

    Scroll nu iets verder naar onderen naar 'TCP6_IN' en pas ook hier 22 aan naar het nieuwe poortnummer.


     

    Stap 4

    Scroll tot slot naar het eind van de pagina en klik op 'Change'. De wijzigingen worden pas daadwerkelijk doorgevoerd na het herstarten van de CSF-firewall en LFD (Login Failure Daemon). Klik op 'Restart CSF+LFD' om beide te herstarten.

    da restart csf + lfd

     
     

    Firewalld

    Stap 1

    Verbind met je VPS via de VPS-console in het TransIP-controlepaneel of via SSH.


     

    Stap 2

    Verwijder poort 22 met onderstaande commando's. Vervang 21543 door het poortnummer dat je in stap 2 hebt gekozen.

    sudo firewall-cmd --permanent --zone=public --add-port=21543/tcp
    sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp 

     

    Stap 3

    Herlaad/herstart vervolgens je firewall- en SSH-configuratie met de volgende commando's:

    sudo firewall-cmd --reload
    sudo systemctl restart sshd
     
     

    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.

    Verbind je vanaf een Mac of Linux computer met je VPS? Vergeet dan niet voortaan je poort te specificeren bij het opzetten van je SSH-verbinding met -p <poortnummer>, bijvoorbeeld:

    ssh -p 21543 gebruikersnaam@123.123.123.123

    Vervang gebruikersnaam door de daadwerkelijke naam van de SSH-gebruiker en 123.123.123.123 door het IP-adres van je VPS.


     

    Bruteforce-beveiliging

     

    Bots proberen automatisch binnen te dringen door bruteforce aanvallen uit te voeren op je VPS op verschillende vlakken, zoals op SSH, Exim (uitgaande mail server) en de DirectAdmin-beheeromgeving. Voor dit laatste biedt DirectAdmin tools om tegen bruteforce te beschermen, maar niet tegen bijvoorbeeld SSH-aanvallen. Fail2Ban biedt hier echter een goede bescherming tegen.

     

    Fail2Ban 

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

    De installatie en configuratie van Fail2ban behandelen wij in onze Fail2Ban handleiding.

    Let wel: DirectAdmin zal onder 'Message System' waargenomen bruteforce aanvallen blijven melden, maar die worden met Fail2Ban wel afgevangen.


     

    DirectAdmin

    In DirectAdmin staat standaard ingesteld dat bij meerdere foutieve inlogpogingen (op poort 2222) het betreffende IP-adres wordt geblokkeerd. De instellingen hiervoor staan vrij ruim ingesteld en we leggen daarom in dit onderdeel uit hoe je de instellingen iets stricter kunt instellen. 

     

    Stap 1

    Log in op DirectAdmin als de 'admin'-gebruiker en klik in het tegelmenu (2) of linkermenu (1) op 'Administrator Settings' onder ‘Server Manager’.

     


     

    Stap 2

    Op deze pagina kun je de instellingen aanpassen met betrekking tot de ingebouwde bruteforce beveiliging van DirectAdmin. Klik na eventuele aanpassingen op ‘save’ onderaan rechts. We raden hiervoor het volgende aan:

    • Enable Automatic Lost Password Recovery: Deze setting is optioneel en de veiligste optie is om dit niet aan te passen.
    • Blacklist IPs for excessive DA login attempts: Laat deze optie in ieder geval aan staan. 20 foutieve inlogpogingen of 100 unauthorized connections is echter een vrij ruim aantal. We raden aan dit iets stricter in te stellen, bijvoorbeeld respectievelijk 5 en 25 of 10 en 50.
    • Prevent 127.0.0.1 from being Blacklisted: Je verbindt in principe vanaf je eigen IP-adres ipv 127.0.0.1, dus deze optie kun je uit laten.
    •  Time before failed login count resets: 1200 seconden, oftewel 20 minuten. Dit is een prima standaardwaarde maar je bent vrij die aan te passen. Een moderne trend is om met meer IP-adressen minder regelmatig te proberen binnen te dringen. Op basis daarvan is een hogere waarde (bijv 86400) eveneens een prima optie.
    • Parse service logs for brute force attacks: We raden aan deze optie aan te laten, maar de notificatie te sturen na bijvoorbeeld 20 foutieve pogingen ipv 100 (voor beide opties).
    • Remove an IP from the BF blacklist after: Deze optie staat er in feite twee keer in. Standaard wordt na 60 dagen een geblokkeerd IP-adres weer toegestaan. Dit is een vrij lange termijn en doorgaans volstaat de helft ook ruimschoots (43200)
    • Reset count of IP/User failed attempts: Na 24 uur wordt de teller voor het aantal gefaalde loginpogingen gereset. De standaard waarde is prima, maar ook hier ben je vrij die naar wens aan te passen.
    • Clear failed login attempts from log: Het is niet ongebruikelijk dat je ruim na 4 dagen (de standaardwaarde) nog vragen krijgt over blokkades e.d. Om die reden raden we aan de waarde aan te passen naar minimaal een (7) of twee (14) weken. 
    • Scan for WordPress attacks: Een handige optie die controleert of er foutieve inlogpogingen worden gedaan op de adminpagina van WordPress-websites die je op je server host. We raden aan om deze aanvallen ook te loggen (All Logs).
    • Difficult Password Enforcement: Een wachtwoord zoals hallo123 is niet heel erg veilig. We raden dan ook aan deze optie aan te zetten.
    • Check domain owner for Subdomain creation: Een gebruiker kan alleen een subdomein aanmaken voor domeinen die de gebruiker ook daadwerkelijk bezit. Het is het veiligste om deze optie aan te laten staan.

     


     

    Stap 3

    Whitelist jezelf zodat je niet per ongeluk geband wordt als je zelf even niet op je wachtwoord komt. Verbind hiervoor met je VPS via de VPS-console in het TransIP-controlepaneel of via SSH en geef het volgende commando op:

    sudo echo "123.123.123.123" >> /usr/local/directadmin/data/admin/ip_whitelist

    Vervang 123.123.123.123 door je eigen IP-adres.


     

    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.


     

    Optioneel: Sta DirectAdmin toegang enkel toe voor specifieke IP's

     

    Poort 2222 is de poort waar je verbinding mee maakt om in te loggen op de DirectAdmin-webinterface. Je kunt er voor kiezen om in je firewall enkel specifieke IP's toe te staan te verbinden met poort 2222. Let wel dat je in dat geval legitieme gebruikers om hun IP-adressen moet vragen zodat je die kunt whitelisten. Deze optie is dan ook vooral geschikt als je zelf het volledige beheer in de DirectAdmin-omgeving uitvoert en gebruikers geen opties wil geven zoals bijvoorbeeld zelf mailadressen kunnen aanmaken.

    Onze VPS'en met DirectAdmin gebruiken vanaf 11 mei 2022 standaard de CSF-firewall die vanuit de webinterface beheert wordt. Eerdere installaties gebruiken 'firewalld' als firewall en beheren die via command-line.

    CSF

    Stap 1

    Log in op de DirectAdmin-webinterface met de gebruiker 'admin' en klik op 'ConfigServer Security & Firewall'. 

     


     

    Stap 2

    Klik op 'CSF', of scroll naar onderen naar 'csf - ConfigServer Firewall' en klik op 'Firewall Allow IP's'.

    directadmin csf firewall allow ips


     

    Stap 3

    Voeg onderaan in het overzicht de regel tcp|in|d=2222|s=123.123.123.123 toe waarbij je 123.123.123.123 vervangt door het publieke IP-adres van jouw internetverbinding (bijvoorbeeld hier te controleren) en klik op 'Change'.

    csf firewall allow ip

    Let op: als je een VPN gebruikt, kan het zijn dat die geconfigureerd is om niet het IP-adres van jouw VPN-verbinding te laten zien op de bovengenoemde pagina. In dat geval kun je het beste je VPN-client controleren, de meeste laten het publieke IP-adres daarvan zien.


     

    Stap 4

    De wijzigingen worden pas doorgevoerd na het herstarten van de CSF-firewall en LFD (Login Failure Daemon). Klik op 'Restart CSF+LFD' om beide te herstarten.

    da restart csf + lfd


     

    Stap 5

    Klik op 'CSF', of scroll naar onderen naar 'csf - ConfigServer Firewall' en klik op 'Firewall Configuration'.

    directadmin csssf csf edit configuration


     

    Stap 6

    Je krijgt nu een pagina met bijzonder veel opties te zien. Scroll naar 'TCP_IN' en verwijder in het overzicht poort 2222:

    csf tcp in remove port 2222

    Scroll nu iets verder naar onderen naar 'TCP6_IN' en verwijder ook hier poort 2222. Scroll nu naar het eind van de pagina en klik op 'Change'.


     

    Stap 7

    De wijzigingen worden ook nu pas doorgevoerd na het herstarten van de CSF-firewall en LFD. Klik op 'Restart CSF+LFD' om beide te herstarten.

    da restart csf + lfd

    Klik na het herstarten van de firewall onderaan de pagina op 'Return'.

     
     

    Firewalld

    Stap 1

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

     sudo firewall-cmd --permanent --zone=public --remove-port=2222/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 2222.

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

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


     

    Stap 3

    Laad firewalld opnieuw om de wijzigingen te verwerken:

    sudo firewall-cmd --reload

     

    Aanvullende Tips:

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

     
    Je kunt hier de vorige stappen 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="2222"/>

    Je kunt de stappen in dit onderdeel ook gebruiken om andere poorten dicht te zetten. Doe dit wel enkel wanneer je zeker weet dat je de juiste poort dichtzet.

     
     

     

    Optioneel: IP-restrictie voor DirectAdmin Administrator Level commando's

     

    In een eerdere stap hebben wij uitgelegd hoe je enkel specifieke IP's toestaat om met DirectAdmin te verbinden.

    Het aantal mensen dat verbindt met DirectAdmin op administrator niveau is doorgaans nog beperkter. Vaak zijn er meerdere mensen met toegang op reseller en/of user niveau, maar slechts één of enkele DirectAdmin administrators.

    Door enkel het IP van de administrators daadwerkelijk toe te staan om als administrator commando's uit te voeren in DirectAdmin, voorkom je dat iemand anders administrator commando's kan uitvoeren als bijvoorbeeld je wachtwoord zou uitlekken en bekend wordt bij iemand met een user-account.

     

    Stap 1

    Verbind met je VPS via de VPS-console in je controlepaneel of via SSH. Open / maak vervolgens /usr/local/directadmin/scripts/custom/all_pre.sh aan met het commando:

    sudo nano /usr/local/directadmin/scripts/custom/all_pre.sh 

     

    Stap 2

    Voeg de onderstaande code toe aan dit bestand.

    #!/bin/sh
    USERTYPE=`grep usertype= /usr/local/directadmin/data/users/${username}/user.conf | cut -d= -f2`
    if [ "${USERTYPE}" = "admin" ]; then
       if [ "$caller_ip" = "1.2.3.4" ]; then
           exit 0;
       fi
       #repeat the check on the IP as many times as desired.
       echo "IP $caller_ip is not allowed to be logged in as an Admin";
       exit 1;
    fi
    exit 0; 

     

    Pas 1.2.3.4 aan naar het daadwerkelijke IP adres dat je wil toestaan. Eventueel sta je meerdere IP's toe door onderstaand stuk opnieuw toe te voegen direct boven '#repeat the check on the IP as many times as desired.' en 1.2.3.4 aan te passen naar het gewenste IP.

    if [ "$caller_ip" = "1.2.3.4" ]; then
        exit 0;
    fi

     

    Stap 3

    Pas tot slot de rechten aan van de file, anders heeft DirectAdmin niet de benodigde rechten om all_pre.sh te gebruiken en krijg je een 'Access Denied'-foutmelding.

    sudo chmod 700 /usr/local/directadmin/scripts/custom/all_pre.sh

     

    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' onderaan deze pagina.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op