Security is een hot onderwerp en met de aankomende GDPR/AVG-wetgeving wordt dit onderwerp alleen maar belangrijker. De afgelopen jaren ben ik me gaan specialiseren in security in combinatie met mijn liefde voor Umbraco. Met de ervaring van talloze security audits (uitgevoerd door internationale organisaties op onze Umbraco-installaties) en mijn eigen visie op security wil ik je in dit blog een aantal tips geven die je kan toepassen op je eigen Umbraco-omgeving.
Als het gaat over security is het belangrijk om te voorzien in gelaagde verdediging. Er is niet één magic trick die je beschermt tegen alles, maar je kan wel diverse lagen van defensie inschakelen. Is één van de lagen op een gegeven moment gecompromitteerd, dan bieden de opvolgende lagen bescherming. En vergeet niet: is het bij jou moeilijker binnenkomen dan bij de buurman, dan is de kans groot dat wordt uitgeweken naar de buurman. Maak je je zorgen om de veiligheid van jouw Umbraco omgeving en wil je deze graag beveiligd houden? Ik geef je graag enkele handvatten!
Tip 1: Gebruik HTTPS
Er bestaat anno 2018 geen enkele goede reden meer om je website niet te laten draaien onder HTTPS. Er zijn tegenwoordig (nagenoeg) gratis certificaten te verkrijgen via bijvoorbeeld Let's Encrypt. Op dit moment geeft een browser al een melding als je website niet onder HTTPS draait maar er wel een formulier op je website staat. De volgende stap wordt het tonen van de melding 'Not secure' aan bezoekers van je website.
Is dat nog niet voldoende? Bedenk je dan dat Google jouw website een klein voordeel gunt als deze onder HTTPS draait. Daarnaast kan je met Windows 10 Server je website serveren met http/2, wat een aanzienlijk snelheidsvoordeel oplevert! Na het installeren van je HTTPS-certificaat is het verstandig om te controleren of ook je server goed gepatcht is. Dit kan je doen op de website van SSL Labs.
Tip 2: Lock je Umbraco-omgeving op IP-adres
Mijn favoriete tip, maar in de praktijk helaas nog zelden gebruikt. Het is erg eenvoudig om de inlogomgeving van Umbraco (of ieder ander CMS) af te schermen voor een ieder die hier niets te zoeken heeft. Je geeft alleen de IP-adressen van je klant en van jezelf toegang tot deze omgeving. Hiermee voorkom je dat de boze buitenwereld zichzelf toegang kan verlenen via de inlogomgeving.
Mijn advies is om alle mappen (behalve je CSS-, media en javascript-folder) in jouw Umbraco-installatie te locken op IP.
Waarom wil je dat voorkomen dat anderen toegang krijgen tot het CMS? Zij hebben niets te maken met de manier waarop jij de Umbraco-installatie hebt opgezet en ze hebben direct toegang tot alle informatie die in het CMS beschikbaar is. Neem eens een kijkje op https://www.perplex.nl/is-it-umbraco/ en zie of deze bot kan ontdekken óf je Umbraco gebruikt en zo ja, welke versie je gebruikt en welke packages je hebt geïnstalleerd.
Tip 3: Gebruik de juiste response headers
Er zijn een zestal security-headers die de security van je website op een eenvoudige manier verhogen. Er zijn enkele headers die een echte no-brainer zijn. Deze headers kan je nagenoeg straffeloos toevoegen:
In Umbraco zijn deze ook ondergebracht als Health Check, daar zou je ze dus ook kunnen toevoegen.
Daarnaast zijn er nog enkele headers die wat meer moeite zullen kosten, maar ook veel meer effect hebben:
Strict-Transport-Security: deze header specificeert dat de website altijd onder HTTPS moet worden ingeladen en HTTP niet eens geprobeerd hoeft te worden. Een mogelijke waarde is max-age=31536000; preload;includesubdomains, waarbij wordt aangegeven dat dit voor een jaar geldt en dat dit ook voor alle subdomeinen geldt.
Public-Key-Pins: een andere header die met HTTPS te maken heeft. In deze header wordt namelijk gespecificeerd welke HTTPS-certificaat moet worden vertrouwd. Door een finger print van het certificaat mee te geven kan de browser controleren of een kwaadwillende niet stiekem het certificaat heeft vervalst en zich daarmee voordoet als jouw website.
Deze laatste drie headers zijn erg belangrijk, maar zoek goed uit hoe de headers werken voordat je ze installeert op een live-website. De headers kunnen er namelijk ook voor zorgen dat je website niet meer bereikbaar is. Ga naar de website www.securityheaders.io om meer te lezen over de verschillende headers en eenvoudig te controleren welke headers aanwezig zijn op jouw website.
Tip 4: Controleer de authenticatiepogingen van je applicatie
Om zicht te houden of ongeautoriseerde gebruikers zich toegang willen verschaffen tot jouw beheeromgeving of privé-data is het verstandig om de authenticatiepogingen op jouw omgeving vast te leggen en inzichtelijk te maken. Door dit te doen kan je in een vroeg stadium ontdekken:
of er opvallend veel (mislukte) authenticatiepogingen plaatsvinden,
of er authenticatiepogingen op vreemde momenten van de dag plaatsvinden,
of pogingen vanaf verdachte IP-adressen worden ondernomen,
of iemand uitzonderlijk veel loginpogingen onderneemt,
dat gebruikers gelocked zijn als gevolg van teveel onjuiste pogingen
Umbraco biedt een handvol events om dit te kunnen vastleggen en inzichtelijk te kunnen maken, maar doet dit niet standaard. Omdat we graag onze expertise en kennis op het gebied van security delen, hebben wij een package gecreëerd die het bovenstaande allemaal voor je uit handen neemt. Download de package en houd de toegangspoort tot je CMS in de gaten!
Uiteraard is het securitylandschap breder dan de tips die ik je in dit blog meegeef. Maar pas je deze praktische tips toe op jouw Umbraco-omgeving, dan maak je al een hele goede indruk tijdens een security audit. Succes!
Mocht je vragen hebben over de security van jouw Umbraco website, neem dan vrijblijvend contact met ons op via ons contactformulier of via info@perplex.nl.