Categorie: Beveiliging

Security Headers Beveiliging WordPress

Security Headers WordPress testen en verbeteren

Security Headers zijn een essentieel onderdeel voor de beveiliging van je WordPress website. Via Security Headers is de beveiliging van je website snel en eenvoudig verbeteren. Voorkom dat anderen schade oplopen door je website!

Wat zijn Security Headers?

Security Headers zijn stukjes code die aan de browser van de bezoekers van je website vertellen om iets te doen óf na te laten. Je internetbrowser is namelijk het meest kwetsbare punt in de communicatie tussen de website/server en de computer, telefoon of tablet van de bezoeker.

De Security Headers voorkomen dat er misbruik wordt gemaakt van de browser (van de bezoeker van je website). Daar ben je als website eigenaar verantwoordelijk voor.

Testen Beveiliging van je website

Het is eenvoudig online te testen of je website wel afdoende beveiligd is tegen diverse zaken als XSS (Cross Site Scripting) exploits en veel andere manieren waarop hackers kunnen inbreken op je site. Via de website “Security Headers” kun je je website testen of deze op dit gebied wel veilig genoeg is.

security headers wordpress

De bovenstaande test laat in veel gevallen, ook wanneer mensen wel de nodige security headers hebben ingesteld, zien dat de X-Frame-opties (nog) niet goed zijn ingesteld.

De X-Frame-Options HTTP-responsheader kan worden gebruikt om aan te geven of een browser een pagina moet kunnen weergeven in een <frame>, <iframe>, <embed> of <object>. Sites kunnen dit gebruiken om clickjacking-aanvallen te voorkomen door ervoor te zorgen dat hun inhoud niet wordt ingesloten in andere sites.

Kopieëren en plakken van onderstaande code in de .htaccess van uw website zorgt voor toepassing van de meest voorkomende instellingen.

Let wel: onderstaande wordt aangeboden ‘as is’, zonder enige garantie en uitsluiting van alle aansprakelijkheid.

## SECURITY ##
Header edit Set-Cookie ^(.*)$ "$1; HTTPOnly"
Header edit Set-Cookie ^(.*)$ "$1; Secure"
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header always set Permissions-Policy "geolocation=(), midi=(),sync-xhr=(),accelerometer=(), gyroscope=(), magnetometer=(), camera=(), fullscreen=(self)"
## EINDE SECURITY ##

Dit voorbeeld kun je voor nagenoeg alle websites toepassen. Controleer uiteraard na aanpassingen of alles nog naar behoren werkt. Wanneer je bijvoorbeeld via een <iframe> tag content van elders in je website inleest (wat je overigens absoluut niet zou moeten doen!) kan dit problemen veroorzaken.

wordpress website gehackt

Extra maatregelen voor WordPress dashboard beveiliging

WordPress kan op vele manieren beveiligd worden. WordPress dashboard beveiliging moet serieus worden genomen wanneer u WordPress gebruikt. Het WordPress dashboard beveiligen tegen ongeoorloofd inloggen is erg eenvoudig en effectief uit te voeren door gebruik te maken van een IP “whitelisting” middels de .htaccess. Dit klinkt ingewikkelder dan het is. Het is voor iedereen in een paar minuten uit te voeren.

!! Let op.
Deze methode is geen afdoende beveiliging maar een goede aanvulling op uw beveiliging

WordPress dashboard beveiliging

1. Zoek uw IP adres

Ga naar bijvoorbeeld https://ipchicken.com/ of https://whatismyipaddress.com/

2. Pas .htaccess aan

Pas via de filemanager in DirectAdmin (of een ander control panel) of via FTP in de map /wp-admin/ het bestandje .htaccess aan. Voeg onderstaande regels er aan toe waarbij u “xx.xx.xx.xx” vervangt met uw zojuist gevonden IP-adres bovenstaand:

<Files wp-login.php>
	Order Deny,Allow
	Deny from all
	Allow from xx.xx.xx.xx
</Files>

3. Sluit het .htaccess bestand af en sla het op.

Vanaf nu kan er alléén maar vanaf dit ip-adres contact worden gemaakt met de WordPress inlog pagina.

Voordeel WordPress dashboard beveiliging

Alleen vanaf een bekend ip-adres kan worden ingelogd in de admin-pagina. Dat betekent dat het hackers aanzienlijk moeilijker wordt gemaakt in te breken via  de standaard WordPress inlog, brute-force inlogpogingen worden hier meteen mee geblokkeerd.

Brute-force aanvallen behoren tot de meest voorkomende aanvallen op WordPress websites en kunnen de bereikbaarheid en performance van uw website ernstig schaden.

Het grote voordeel van ‘whitelisting’ is dat bij de login maar één controle hoeft plaats te vinden. Is het ip-adres toegestaan op deze link? Bij blacklisting is er een lange lijst van ip’s die niet toegestaan zijn. En dat kost meer ‘rekenkracht’ bij de server waar uw website op staat.

Nadeel WordPress dashboard beveiliging

IP-adressen wijzigen soms. Dat betekent dat u het ip-adres soms moet aanpassen tenzij u een vast (zakelijk) ip-adres hebt.

wordpress website gehackt

Help! Mijn WordPress Website is Gehackt!

Uw WordPress Website is Gehackt. Wat te doen als je website gehackt is? Hoe kun je WordPress schoon maken van malware?

Is uw website gehackt? Dan is het zaak om onmiddellijk actie te ondernemen.

Hoe komen hackers binnen?
Hackers komen meestal binnen in een website doordat er sprake is van achterstallig onderhoud. Wanneer beveiligingsupdates voor een website niet of niet op tijd zijn gedaan ontstaan er beveiligingslekken. Deze beveiligingslekken bieden een hacker eenvoudig toegang tot je website.

Deze lekken kunnen ontstaan in WordPress zelf, in plugins en, vaak over het hoofd gezein, in WordPress thema-files (WordPress themes).

Direct te ondernemen acties

  • blokkeer de toegang tot uw website (voor bezoekers)
  • pas direct alle wachtwoorden aan van uw account (controlpanel, ftp, email)
  • pas ook direct het wachtwoord van uw website aan (voorzover nog mogelijk), eventueel via phpMyAdmin, kijk bijvoorbeeld hier hoe dat moet.

Tekenen dat uw WordPress website is gehackt

  • wachtwoord om in te loggen werkt niet meer
  • er staat zomaar onbekende, vaak discutabele, inhoud op de website
  • de site verwijst door naar een andere, onbekende, site
  • pop-up schermen die u nooit geinstalleerd hebt in uw website
  • de website is enorm traag of onbereikbaar (niet veroorzaakt door fouten in uw website)
  • nieuwe gebruikers in uw systeem (die u niet hebt aangemaakt)
  • een melding van uw eigen antivirus- of malware programma als u uw eigen website bezoekt
  • melding van Google of je webbrowser dat je website schadelijk is
  • je website werkt plotseling niet meer

Stappenplan schoonmaken WordPress

WordPress is één van de meest populaire website systemen. Door het feit dat het zo eenvoudig is te installeren en beheren. En omdat je er zo makkelijk een website mee kunt maken en onderhouden, ook met meerdere redacteuren.

Helaas heeft dat bedieningsgemak ook een keerzijde. Veel mensen installeren WordPress en de nodige plugins en, zo constateren we regelmatig, doen nóóit de benodigde updates. Terwijl het onderhouden van uw website grotendeels geautomatiseerd kan bij veel hostingproviders (zie hier video voor informatie).

U kunt uw gehackte website door ons schoon laten maken (voorzover nog mogelijk!), zelf het probleem oplossen of een andere (externe) expert inhuren.

  1. Maak een backup van de huidige situatie. Zorg uiteraard dat een eerdere backup niet overschreven wordt!
  2. Probeer een eerdere backup terug te zetten. Is het probleem daarmee opgelost (meestal niet) ga dan naar stap 7.
  3. Blokkeer de toegang tot uw website voor bezoekers! U wilt immers niet dat anderen eventueel ook een virus of malware binnenkrijgen door uw toedoen?
  4. Scan uw website (alleen mogelijk als u er nog in kunt) met een goede beveiligingsplugin zoals WordFence;
  5. Verwijder alle malware en eventuele kwaadaardige plugins;
  6. herstel geïnfecteerde bestanden en database, voor zover nog mogelijk;
  7. Stel nieuwe wachtwoorden in plus, wat bijna altijd vergeten wordt: vervang de keys in de wp-config (klik hier om nieuwe te genereren);
  8. Update uw WordPress website (WordPress, Plugins, thema’s);
  9. installeer, voorzover nog niet gedaan, een goede beveiligingsplugin.

Doe, tot slot, eventueel een blacklist check.

Export/import
Als het niet mogelijk is de website te schonen is de beste oplossing vaak: uw data exporteren met een plugin of via phpMyAdmin de database exporteren (in dat geval kunnen bij herstel vanuit dit bestand plugins en thema-bestanden niet meer worden teruggeplaatst), de website verwijderen, opnieuw installeren en met behulp van de plugin de data terug te zetten.

De kans is echter redelijk groot dat in de data (inhoud database, teksten) er het nodige gecorrumpeerd kan zijn.

Komt u er niet (meer) uit of durft u het opschonen zelf niet uit te voeren dan kunt u bijvoorbeeld contact met BrinkmanIT opnemen voor een eventuele oplossing.

Kosten herstellen website
Onderhoud van de software is absoluut noodzakelijk. Naast zelf (gedeeltelijk) geautomatiseerd onderhouden kunt u BrinkmanIT ook vragen het onderhoud te doen via het Managed WordPress abonnement. Het herstellen van een gehackte website door een “externe partij” is niet gratis, wij brengen hier kosten (uurtarief) voor in rekening. We werken hierbij op “no cure – no pay” basis.

WordPress Tips en Trucs

Beveiliging van WordPress plugins!

Plugins zijn binnen WordPress uitermate populair. En dat is niet zonder reden: de WordPress plugins nemen allerlei taken uit handen, zorgen voor extra functionaliteit en worden daarom veel gebruikt.

Maar zoals met alles geldt: te véél van het goede kan verkeerd uitpakken.

WordPress Plugins – alles met mate!

Wie heel veel WordPress plugins gebruikt zal op een dag ontdekken dat deze met elkaar kunnen conflicteren en de website ‘down’ kunnen brengen.

Als je dan een probleem in je website krijgt, wordt het zoeken naar de oorzaak heel lastig. In dat geval zit er niets anders op dan alle plugins uit zetten en één voor een weer aan, testen, volgende aan, testen, etc. totdat de plugin gevonden wordt die het conflict veroorzaakt.

Teveel plugins hebben vaak ook als nadeel dat je het overzicht kwijtraakt. Wat gebruik je nog actief, wat niet? Verwijder plugins die je niet meer gebruikt dan ook uit je site. Zet ze eerst, zekerheidshalve, even een paar dagen inactief en valt de functionaliteit van de website niet om, verwijder ze dan definitief.

WordPress Plugins updaten

Een oorzaak van veel problemen op het gebied van beveiliging zijn eveneens .. de WordPress plugins! Het wordt namelijk vaak vergeten om de plugins te updaten. Bij Brinkman.IT zien we dan ook af en toe grote problemen daardoor, waaronder websites die gehackt zijn.

Als je WordPress website gehack is, zit er niets anders op dan terug gaan naar een (oude) backup. Soms is de hack echter al wekenlang aanwezig maar nog niet geactiveerd door de hacker. Pas op het moment dat de kwetsbaarheid wordt geactiveerd kom je er achter en is het te laat, véél te laat, er nog iets aan te doen.

In dergelijke gevallen zit er soms niets anders op dan “uithuilen en opnieuw beginnen”: je hele website verwijderen en opnieuw maken. Dat wil je natuurlijk voorkomen!

Automatische update WordPress Plugins

WordPress biedt een functionaliteit voor het automatisch updaten van plugins via het Plugins-menu.

WordPress Plugins automatisch updaten

Maak hier gebruik van. Het zorgt er voor dat je website niet “zomaar” onveilig kan worden.

Eén nadeel van deze instelling kan zijn dat een update een fout bevat waardoor de website alsnog problemen kan krijgen. Uiteraard moet je dan ook altijd zorgen voor regelmatige backups. Liefst doe je dat via een externe oplossing. Lees hier meer daar over.

WordPress Tips en Trucs

Security trough Obscurity: WordPress verbergen

All in One SEO en sommige beveiligingsprogramma’s bevelen aan om te verbergen dat je voor je website WordPress (of Joomla of een ander CMS) gebruikt. WordPress verbergen wordt als een goede beveiliging gezien want: “zo weten hackers niet wat je gebruikt”. Maar maakt WordPress verbergen je website wel veilliger?

Er zijn speciale plugins beschikbaar voor het verbergen van je WordPress software. Zoals WP Hide & Security Enhancer. De makers zeggen over hun plugin het volgende:

The easy way to completely hide your WordPress core files, login page, theme and plugins paths from being show on front side. This is a huge improvement over Site Security, no one will know you actually run a WordPress. Provide a simple way to clean up html by removing all WordPress fingerprints.

Beveiliging WordPress HSTSMaakt WordPress verbergen je website veiliger?

Wordt je website veiliger door het installeren van een dergelijke plugin? Het antwoord moet zijn: Nee. Dat zal veel mensen wellicht verbazen. Het maakt niet alleen je WordPress niet veiliger, je WordPress website wordt mogelijk ook instabiel. Hoe zit dat?

Ongerichte aanvallen
De meeste aanvallen van hackers zijn niet gericht. Ze “schieten met hagel”. De aanvallen gaan namelijk nagenoeg altijd grotendeels geautomatiseerd via zogeheten bots of scripts. Dus welk bot of script ook op je site probeert in te breken het zal gewoon proberen bekende kwetsbare URL’s te raken, in de hoop dat je site een van de getroffen versies van een kwetsbare plug-in of WordPress versie gebruikt.

Ze weten niet of de plug-in er is. U zult in uw logbestanden dan ook waarschijnlijk (kwetsbare) URL’s zien voor CMS’s die u ook niet gebruikt. Zoals exploiteerbare URL’s voor Joomla, Drupal, en andere.

Zo je dan ook regelmatig op websites waar helemaal geen Joomla op staat geïnstalleerd scans voor een openstaande “administrator”-link. En andersom zie je scans op Joomla sites en pogingen brute-force aanvallen te doen op een eventueel aanwezige WordPress installatatie. Pas zodra zo’n script een link aantreft zal eventueel de mens er achter in aktie komen.

Als iemand wil zien welke plug-ins je hebt, zijn erg genoeg manieren om dat te doen. Het verbergen van uw login, plugins of WordPress-versie wordt daarom niet langer als een goede of aan te bevelen beveiligingsoplossing beschouwd.

In de praktijk werkt het niet
In de praktijk hebben we vastgesteld dat het simpelweg niet werkt. Bij websites waar de WordPress inlog is ‘verstopt’ zien we dat binnen de kortste keren deze inlogpagina toch (weer) gevonden wordt.

Risico’s van het verbergen

1. Het wijzigen van WordPress-URL’s brengt het risico met zich mee dat de functionaliteit van WordPress-thema’s en plug-ins wordt gebroken. De functies van WordPress JavaScript XMLHttpRequest-object (AJAX) worden bijvoorbeeld geactiveerd via admin-ajax.php die zich in de map wp-admin bevindt.

2. Het wijzigen van de URL geeft ons een veiliger gevoel, maar het maakt de site niet echt veiliger. Het is wat veel beveiligingsexperts ‘security through obscurity’ noemen. Het is alsof je de voordeur van je huis verplaatst om jezelf te beschermen tegen inbraak… Elke doorgewinterde dief gaat gewoon op zoek naar een andere deur of ramen om binnen te komen. Elke aanvaller zal hierop anticiperen en ook andere manieren zoeken om binnen te komen.

3. Meer dan de helft van alle inlogpogingen die worden gedaan op WordPress-sites worden gedaan via xmlrpc.php. Dit was jaren geleden al zo, dat is nog steeds zo. Die worden niet gestopt door uw beheerders-URL te wijzigen.

Wat is wel een goede beveiliging?

De zwakste schakel in beveiliging is.. de mens. De website beheerder. Het bgint bij de basis: een goed wachtwoord. Maar al te vaak zie je dat een website gehackt wordt door een (zeer) zwak wachtwoord. De 2e stap is: wees niet gemakzuchtig. Gebruikt 2FA (zie ook het boek Website maken met WordPress). Ja, dat is (een beetje) hinderlijk. Maar heel wat minder hinderlijk, en kostbaar, dan een gehackte website!

Een goede beveiliging is daarnaast een plugin als Wordfence of All-in-One WP Security. Ze hebben beide hun voor- en nadelen. Beide ondersteunen de Google reCaptcha, Wordfence tevens 2FA-beveiliging. Eén opmerking willen we wel maken over All-in-One WP Security: gebruik nooit de optie voor het hernoemen van de database prefix. Wij hebben diverse websites daardoor down zien gaan.

Boven alles is beveiliging een zaak van regelmatig een backup van de software maken en updates uitvoeren. Een website die niet up to date is, is hoe dan ook een kwetsbare website.

Verstoppertje spelen op internet heeft geen zin. Natuurlijk kunt u een plugin die dit aanbiedt gebruiken maar we hebben diverse tests uitgevoerd en het is gebleken zinloos.

Blokkeren aanvallen XMLRPC

Als u aanvallen op de xmlrpc.php wilt blokkeren in Wordfence, kunt u dit doen in de Wordfence-plug-in op de pagina Login Security > Settings. Raadpleeg de waarschuwing voordat u dit doet. Als u sommige functies van Jetpack of posten op afstand met de WordPress-app gebruikt, kunt u XMLRPC niet blokkeren.

Als u de wp-admin- of wp-login-URL’s wijzigt, verliest u ook het zicht op wie probeert in te loggen op uw site en wanneer ze dit doen, omdat beveiligingsprogramma’s niet op zoek zijn naar logins op een willekeurige URL die iemand heeft verzonnen… daarmee ondergraaft u dus de functionaliteit van bijvoorbeeld WordFence. All-in-One WP Security biedt in de plugin ook features voor “hernoemen” van de WP-admin. Wanneer dat vanuit de plugin gedaan wordt breek je de beveiliging wellicht niet, maar zoals gezegd héél erg zinvol is dat niet. Soms zelfs juist niet. Omdat andere software er over kan struikelen.

Natuurlijk kan het áltijd voorkomen dat er een menselijke hacker het specifiek op uw website heeft voorzien. In een dergelijk geval zou ‘security trough obscurity’ de aanval kunnen vertragen. Maar uitsluiten? Nee, absoluut niet.

Beveiliging van WordPress: HTTPOnly en HSTS

Beveiliging WordPress HSTSHet beveiligen van een WordPress website (zoals besproken in het eBoek Website Maken met WordPress) is erg belangrijk. Naast plugins kun je de website extra veilig maken middels een aantal instellingen in het bestand .htaccess. In het eBoek wordt al aangegeven: beveiliging van WordPress is geen keuze maar een must.

Deze instellingen kun je eenvoudig aanpassen via de Filemanager van DirectAdmin of een ander controlpanel. Een andere optie is om dit via een FTP-programma te doen. Deze instellingen kun je ook voor andere websites gebruiken!

Wat is .htaccess?

.htaccess is een configuratiebestand. Je kunt er bepaalde instellingen mee aanpassen die het gedrag van je website beïnvloeden.

WordPress zelf heeft een standaard .htaccess bestand. In dit bestand, dat in je hoofdmap van de website staat, is het gedeelte voor WordPress duidelijk gemarkeerd:

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Pas deze instellingen tussen de #-tags (die een commentaar markeren) niet aan. WordPress heeft ze nodig om goed te kunnen werken.

Het .htaccess bestand is een tekstbestand. Met “regels” in het bestand vertel je aan de server, waar je website op wordt gehost, hoe er omgegaan moet worden met de data-aanvraag van de browser van de bezoeker van je site.

Opvallend is de afwijkende naamgeving: .htaccess. De naam .htaccess is een afkorting die staat voor “HyperText Access”. De punt aan het begin van de bestandsnaam zorgt dat het een verborgen bestand is.

Beveiliging van WordPress

Zonder heel erg in detail te treden: het onderstaande stukje kun je kopieëren en plakken, direct in het begin, in je .htaccess.

HTTPOnly

Het eerste gedeelte zorg er voor dat de cookies van de website, mits je die gebruikt, alleen toegankelijk zijn voor de server.

Het belangrijkste voordeel hiervan is dat het cross-site scripting (XSS, een methode om je website aan te vallen) voorkomen wordt. Dit voorkomt bijvoorbeeld verzoeken van kwaadaardige JavaScript-bestanden die cookies proberen te stelen.

Bijna elke WordPress website gebruikt cookies. Gravatar, standaard in WordPress actief, statistieken via Google en andere instellingen gebruiken cookies.

Header set Strict-Transport-Security (HSTS)

HSTS werd in 2012 gespecificeerd. Het zorgt er voor dat de browser gedwongen wordt een beveiligde verbinding te gebruiken wanneer een website SSL (HTTPS-verbinding) gebruikt.. Het is een beveiligingsheader die u toevoegt en het vertelt dus aan uw webserver “alleen via HTTPS!”.

Deze optie is alleen nuttig als u gebruik maakt van een SSL-certificaat en uw website een beveiligde verbinding heeft. Een noodzaak tegenwoordig want veel browsers geven een waarschuwing als een website géén gebruik maakt van HTTPS. De meeste hostingbedrijven leveren tegenwoordig gratis SSL-certificaten van Let’s Encrypt of u kunt voor zo’n tien tot vijftien euro per jaar een certificaat aanschaffen.

Websites worden als ‘onveilig’ gemarkeerd door de meeste browsers als er géén SSL/HTTPS verbinding is. En dat kan natuurlijk niet de bedoeling zijn.

Beveiliging via .htaccess

Kopieëren (klik op de code) en plakken van onderstaande code in de .htaccess van uw website voegt HTTPOnly en HSTS toe aan uw website zodra u het opgeslagen hebt. Er wordt dus wel uitgegaan van gebruik van SSL voor uw website! Gebruikt u dat niet, dan is het zaak dit éérst te regelen.

## SECURITY ##
<ifModule mod_headers.c>
Header edit Set-Cookie ^(.*)$ "$1; HTTPOnly"
Header edit Set-Cookie ^(.*)$ "$1; Secure"
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
</IfModule>
## EINDE SECURITY ##

Meer weten over dit onderwerp? Kijk op de developerssite van Mozilla.