Mijn website beveiligen – 8 Tips
Ok. Het is ondertussen helemaal helder. Het internet is inderdaad geen veilige omgeving en je wilt je website zelf gaan beveiligen. Maar hoe? Is dat niet ontzettend moeilijk?
Over het algemeen is het antwoord “ja, dat is moeilijk”. Voor een sterke beveiliging heb je toch aardig wat kennis van code (PHP, Java, JQuery), versleuteling en encryptie nodig. Daarnaast is het fijn om de beschikking te hebben over geavanceerde apparatuur als een goede WAF (Web Application Firewall), load balancing servers en failovers. Maar de investering voor deze zaken is enorm en dat is het waarschijnlijk ook niet waard. Daarnaast hoort bij een goede beveiliging ook een goede recovery strategie. Dus een goede back-up (op een andere locatie dan de server waar uw website gehost wordt) is daarbij ook essentieel.
Nu zult u zich afvragen “dat regelt mijn hosting partij toch”? In de meeste gevallen is het antwoord nee. Uw hoster maakt wel geregeld een back-up van de servers maar om een specifieke back-up op te vragen zodat u een restore kunt uitvoeren kost vaak veel tijd en geld omdat uw hoster de juiste data op moet zoeken en moet herstellen. Daarnaast is de retentie van de backups vaak niet groot. Een back-up van een week oud (omdat u toch iets te laat achter de infectie bent gekomen) opvragen is vaak al niet mogelijk meer.
Meestal draait uw website op een “shared hosting” server wat inhoud dat de instellingen van die server op iedere gebruiker van die server van toepassing zijn. En vaak deel je jou IP adres met heel veel andere gebruikers. Het nadeel van shared hosting is dat u geen inzage heeft in de andere websites. Als deze websites geïnfecteerd raken of kwaadaardige scripts uitvoeren dan kan dit beteken dat uw performance drastisch omlaag gaat. Door het gedeelde IP adres kan het zelfs zo zijn dat uw website gebanned wordt door Google en andere zoekmachines als een ander malafide zaken uitvoert.
Het voordeel van shared hosting omgevingen is dat ze stukken goedkoper zijn. Maar u heeft geen invloed op de veiligheidsinstellingen van de gedeelde server zoals u die wel zou hebben bij een dedicated server (uw eigen server).
Maar kan ik dan helemaal niets doen om mijn website te beveiligen? Ja zeker wel!
Er zijn heel wat zaken die u kunt uitvoeren om de basis veiligheid te garanderen. De belangrijkste tip van allemaal:
1. Update uw CMS systeem en plugins
Uw CMS systeem (WordPress, Joomla, Magento etc.) heeft vaak een update functie. Gebruik deze! En gebruik deze niet alleen om uw CMS periodiek te updaten maar zeker ook uw plug-ins. Deze plug-ins zijn gemaakt door developpers die niet geassocieerd zijn aan uw CMS systeem. De kunde en onkunde van deze developpers is voor u als website houder niet te bepalen. Developpers ontwikkelen deze plug-ins vaak zonder ze door te ontwikkelen. Developpers die wel door ontwikkelen herstellen bij updates vaak eerdere gemaakte bugs en programmeerfouten. Deze fouten kunnen mogelijke ingangen voor een hacker zijn. Controleer voor het gebruik maken van de plug-in of de developper deze met enige regelmaat update en doe dan hetzelfde. Update de plug-in als er een update uitkomt.
Maar u kunt meer doen:
2. Maak geen gebruik van standaard gebruikersnamen
Elk CMS heeft een standaard gebruikersnaam (Joomla = Administrator, WordPress = Admin etc.). Dit weet u en dit weten kwaadwillende gebruikers en bots ook. Uw CMS zal ook meerdere malen aangevallen worden met een brute-force aanval. Dit is een aanval die met vele gebruikersnaam + wachtwoord combinaties binnen probeert te dringen op uw systeem. Het hernoemen van de standaard gebruikersnaam beveiligd uw website een stuk beter tegen deze aanvallen. Neem daarbij de volgende regel in acht voor een sterk wachtwoord:
Minimaal 30 karakters lang met leestekens, hoofdletters, kleine letters en cijfers.
Neem nooit een wachtwoord korter dan 10 karakters! Als u problemen heeft met het onthouden van verschillende (lange) wachtwoorden probeer dan eens een password applicatie zoals Lastpass en Dashlane (hierover in een toekomstige post meer info).
3. Scherm de backend af behalve voor u
Het is helemaal niet zo moeilijk om de backend (uw administratie / CMS gedeelte) af te schermen zodat deze alleen voor u toegankelijk is. Het is wel een eis dat u de backend slechts vanaf een paar locaties gebruikt met een vast IP adres. Dit omdat we de backend af kunnen schermen op basis van IP adres. Op die manier hebben alleen de locaties met het opgegeven IP adres toegang. Hoe dit moet leggen we uit in een toekomstige post.
4. Veilige en Dedicated hosting
De goedkoopste is niet altijd de beste. Gratis hosting is al helemaal uit den boze. Kies voor een betrouwbare en gerenommeerde hosting provider (bij voorkeur een Nederlandse provider). En als u het nog beter wilt doen kiest u uw eigen IP adres of Dedicated Server met eigen IP adres. Het eigen IP adres beschermt u tegen een eventuele zoekmachine (Google) ban als er iets gebeurt met een mede gebruiker op hetzelfde IP. Op de Dedicated Server bent u geheel vrij om de veiligheidsinstellingen zelf te bepalen. Dat is pas veilig!
5. Controleer de bestandsrechten
Sommige folders en bestanden hebben teveel rechten. Als een folder of bestand teveel rechten heeft kunnen kwaadwillende gebruikers hier misbruik van maken. Zo kunnen ze kwaadaardige code uploaden in een folder omdat deze schrijfrechten had voor iedereen. Welke rechten van toepassing zijn op welke bestanden en folders is afhankelijk van het type CMS dat gebruikt wordt en welke toepassingen er op de website draaien. Voor de meest gebruikte CMS systemen zijn de minimale eisen prima op het internet terug te vinden.
6. Gebruik HTTPS bij privacy gevoelige verbindingen met uw bezoeker
HTTPS is een versleutelde verbinding tussen u en de bezoeker. HTTPS wordt geregeld middels een SSL certificaat. Hier zijn vele verschillende soorten in. Webshops maken bijvoorbeeld al veelvoudig gebruik van beveiligde verbindingen. Doe dit ook. Zeker als u met privacy gevoelige data werkt. Het gebruik van een veilige verbinding wekt vertrouwen op bij de klant en voorkomt mogelijk gegevensdiefstal.
7. Maar periodieke back-ups
Een goede back-up is ontzettend belangrijk voor het geval er iets mis gaat. Als u niet wilt betalen voor een dienst die dit periodiek voor u regelt dan kunt u dit zelf ook doen. Log in met FTP en download eens in de 3 maanden al uw bestanden naar uw computer. Als u gebruik maakt van een database log dan in met PHPmyAdmin en download uw database. Op deze manier heeft u altijd een lokale kopie van de gehele website op een remote locatie staan (uw computer is een remote locatie van de website server).
8. Maak een Google Webmaster Account aan
Een Google Webmaster Account aanmaken is relatief simpel. Als u al een Google Account (Gmail / YouTube / Google+) dan is dit helemaal snel gedaan. Nadat u uw website heeft toegevoegd aan het webmaster account ontvangt u automatisch een e-mail als Google vreemde code op uw website heeft ontdekt. U bent dan eigenlijk al iets te laat maar u weet tenminste wel dat er nu actie nodig is om verdere consequenties voor uw website en uw bezoekers te beperken.
Bovenstaande 8 tips zijn relatief gemakkelijk uit te voeren en verhogen de veiligheid van uw website enorm.
Maak vandaag nog gebruik van de 8 bovenstaande Website Beveiliging Tips!
Moeilijke woorden in deze post:
PHP:
PHP staat voor (PHP: Hypertext Preprocessor) is een programmeertaal. Deze taal wordt door veel online systemen gebruikt voor het ontwikkelen van geavanceerde en dynamische website.
Java:
Java is een objectgeoriënteerde programmeertaal. Java is gebaseerd op C++ en wordt vaak gebruikt bij online toepassingen. Java is platform onafhankelijk en mag niet verward worden met Javascript. Javascript is een prototype-gebaseerde taal die eveneens vaak gebruikt wordt voor online toepassingen.
JQuery:
JQuery is gebaseerd op het Java Framework en wordt vaak gebruikt voor dynamische onderdelen binnen een website of web applicatie. JQuery kan gemakkelijk CSS en het DOM bewerken en interactie met de webserver tot stand brengen.
Encryptie:
Encryptie is de methode voor het het versleutelen van data. Dit versleutelen gebeurt op basis van een bepaald algoritme. Omdat de gegevens middels een bepaalde methode is versleuteld dient deze ook weer ontcijferd (decryptie) te worden middels hetzelfde algoritme. Er zijn vele soorten encrypties. Meestal wordt het algoritme oncijferd middels een vooraf gedeelde sleutel. Gegevens die versleuteld verzonden worden zijn niet leesbaar voor andere personen (mochten de gegevens onderschept worden).
WAF (Web Application Firewall):
Een WAF (Web Application Firewall) is een apparaat (meestal hardware met een custom unix besturingssysteem) dat gebruikt wordt om verkeer (internetverkeer) te filteren. Een WAF is erop gemaakt om DDoS aanvallen te voorkomen en om XSS en SQL injections te blokkeren. WAF apparaten hebben meestal zeeg goede rapportage mogelijkheden en een eigen learning systeem voor nog accuratere bescherming.
Brute Force aanval:
Een Brute-Force aanval is een aanval die continue probeert om in te loggen of om toegang te krijgen tot een bepaald (gedeelte van een) systeem. Brute-Force betekend letterlijk met brute kracht. Dit type aanval probeert vele verschillende inlog combinaties achter elkaar (tientallen tot honderden per minuut). Een Brute-Force bij het ontbreken van de juiste algoritmes.
DDoS:
DDoS staat voor een “Distributed Denial of Service” aanval”. Een DDoS attack is een DoS attack maar dan uitgevoerd door meerdere (geïnfecteerde) hosts tegelijkertijd zodat de aanval veel meer kracht krijgt. Denial of Service is de reden van de aanval. De bedoeling van een Denial of Service aanval is om een systeem of netwerk volledig plat te leggen zodat alle gebruikers van het systeem hier hinder van ondervinden.
XSS:
XSS staat voor “Cross-Site Scripting”. XSS is een beveiligingsfout in een webapplicatie. Deze beveiligingsfout wordt veroorzaakt door fout programmeerwerk. Als de mogelijkheid tot een XSS aanval bestaat op een website dan betekend dit dat ingevoerde data (bijvoorbeeld in een zoekveld) of een cookie request niet juist verwerkt wordt. Via deze bug kan er kwaadaardige code ingevoerd worden die terecht komt bij de eindgebruiker. XSS wordt vaak gebruikt voor het onderscheppen van sessie-cookies of het uitvoeren van kwaadaardige code op de computer van de eindgebruiker.
SQL Injection:
De meeste websites slaan hun belangrijkste data op in databases. Voor een hacker is het waardevol om deze database in te zien, stelen of te gebruiken. Dit kan middels een gevaarlijke techniek die “SQL Injection” heet. Een SQL injectie maakt gebruik van fouten in de controle techniek van een database engine. Vaak worden er commando’s uitgevoerd tegen de SQL database en worden de foutcodes van de database engine gebruikt om te bepalen welke commando’s doorgevoerd worden, welke tabellen de database heeft etc. Als SQL injectie mogelijk is kunnen complete databases gestolen worden. Echter kan men in sommige gevallen ook toegang tot de complete webserver verkrijgen via een SQL Injectie.
Load balancing servers:
Een Load balancing server is een server (of meerdere servers) de taken overnemen van een andere server wanneer de responstijd beneden een bepaald niveau dealt. D.m.v. load balancing servers blijft de uptime goed en de performance optimaal als 1 server op een bepaald moment veel capaciteit gebruikt.
Hosting:
Onder hosting (webhosting) verstaan we de dienst die een hosting maatschappij aanbiedt om een website toegankelijk te maken voor iedereen. Denk hierbij aan bandbreedte, schijfruimte, (My)SQL databases, mailservers etc.
Recovery strategie:
Een recovery strategie is een vooraf bepaalde richtlijn welke handelingen er uitgevoerd gaan worden in geval van een calamiteit. Het hebben van een goede back-up behoord meestal tot een goede recovery strategie omdat er met een goede back-up bestanden hersteld kunnen worden die tijdens de calamiteit beschadigd zijn.
Retentie:
Retentie (ofwel Dataretentie) is de periode waarin gegevens beschikbaar blijven. Als een backup een retentie heeft van 14 dagen dan kunnen er bestanden hersteld worden vanaf gisteren tot 14 dagen terug in de tijd. Alle data die buiten de retentieperiode valt wordt automatisch verwijderd.
Shared hosting:
Shared hosting is het delen van alle resources die een webserver tot zijn beschikking heft met meerdere gebruikers. Instellingen van een Shared Hosting server worden vaak niet aangepast aan individuele belangen.
Website ban:
Een website ban wil zeggen dat uw score binnen een zoekmachine tijdelijk of permanent negatief beïnvloed is. Dit kan betekenen dat u lager scoort op bepaalde zoektermen dan voorheen of dat uw website door de ban compleet en permanent uit de zoekmachine verwijderd is.
Dedicated server:
Dedicated hosting betekend dat u een eigen (virtuele) server ter beschikking heeft voor uw (web) applicaties. Instellingen van een Dedicated Hosting server kunnen helemaal naar eigen wens ingesteld worden. De volledige performance van een dedicated server is ook helemaal te beschikking van de eigen (web) applicaties en wordt niet gedeeld met andere gebruikers.
CMS Systeem:
CMS staat voor “Content Management System”. Een CMS zorgt een grafisch duidelijke interface waarin u uw webpagina gemakkelijk kunt bijwerken zonder diepgaande kennis van programmeertaal te hebben.
CMS Plug-ins:
Een plug-in of CMS plug-in is een extra stukje software dat special geschreven is (meestal door een externe developer) voor een bepaald CMS. De plug-in biedt vaak extra of uitgebreidere functionaliteiten dan waarmee het CMS standaard geleverd wordt.
Bug:
Bug is een computerterm. Met een bug bedoelen we een fout in een applicatie of website waardoor deze hun taak niet goed of niet goed volgens de specificaties en richtlijnen uitvoeren.
Backend:
Met backend bedoelen we de grafische interface van het CMS system. Dus het gedeelte waar de website beheerder op inlogt. De frontend daarentegen is de voorkant van de website ofwel het gedeelte dat de website bezoekers te zien krijgen.
IP Adres:
Een IP adres is als het ware het huisnummer van uw netwerkkaart. Uw netwerkkaart en dus uw computer is bereikbaar op het toegewezen IP adres. Dit kan een vast IP adres zijn of een dynamisch toegewezen IP adres (dit adres veranderd periodiek). We maken onderscheid tussen de internet IP adressen (uitgedeeld door een interne DHCP server) en externe IP adressen (uitgedeeld door de internet provider).
HTTPS:
HTTPS staat voor “HyperText Transfer Protocol Secure”. Bij HTTPS worden de gegevens tussen zender en ontvanger versleuteld. Data verzending middels HTTPS is veilig en gebeurt meestal via een SSL certificaat.
SSL:
SSL staat voor “Secure Socket Layer”. SSL en TLS (de opvolger van SSL) beveiligen verbindingen op het internet. SSL is een symmetrische cryptografie methode waarbij een asymmetrische cryptografie methode gebruikt wordt om gevonden server te authentiseren.
PHPMyAdmin:
Om databases te beheren maken de meeste hosting providers gebruik van PHPMyAdmin. PHPMyAdmin is een web applicatie waarmee de gebruiker zelf zijn (MySQL) database kan benaderen, inzien, toevoegen, verwijderen en bewerken.
FTP:
FTP is een client-server protocol dat ondersteund wordt door de meeste webservers. Er zijn diverse FTP applicaties zoals CuteFTP en FileZilla. Deze applicaties zetten middels het FTP protocol een verbinding op met de webserver om op die manier de bestanden en mappen van de website te benaderen, inzien, toevoegen, verwijderen en bewerken.