Joomla beveiliging – Deel 1/2
A long long time ago…. Toen ik nog veel moest leren ben ik gaan werken met Joomla. Toen nog Joomla 1.0. Wat later kwam Joomla 1.5 uit waar ik heel veel websites in gebouwd heb en waar ik nog steeds regelmatig een nachtmerrie door heb. Momenteel zitten we op Joomla 3.36 en er is heel veel veranderd. Zowel inhoudelijk als op het vlak van veiligheid. En natuurlijk ga ik graag dieper in op dat laatste punt, de beveiliging!
Lezen jullie mee? Mooi!
Joomla en beveiliging:
Joomla heeft (in mijn ogen) beveiliging nooit zo hoog in het vaandel gehad. De eerste versies waren functioneel en Joomla kent hele mooie extensies maar beveiliging is lang een ondergeschoven kindje geweest. En het is natuurlijk lastig.
Miljoenen gebruikers op honderdduizenden verschillende servers met allen hun eigen unieke configuratie. Het CMS pakket moet dus open genoeg zijn om te kunnen draaien maar gesloten genoeg om ongeautoriseerd gebruik of ongeautoriseerde
toegang tegen te gaan.
Begin 2013 kregen we een extreem hoge toename van klanten kregen die gehackt waren en geholpen wilde worden. Natuurlijk wordt er veel meer online gehackt dan een paar jaar geleden maar 90% van alle klachten waren afkomstig van klanten
die Joomla draaide en 75% daarvan draaide Joomla 1.5.
Uit deze cijfers blijkt dat succesvolle hacks en defacements vaak voorkwamen op Joomla 1.5 systemen.
Dit had een aantal redenen:
- V.a. mei 2012 werd Joomla 1.5 niet meer ondersteund.
- Veel Joomla website hebben de TinyMCE of JCE editor en beide hebben ze vele veiligheidslekken.
- Onveilige code (zelfs met de laatste patch) zijn er nog veel veiligheidsrisico’s
- Joomla 1.5 is lastig te updaten
- Joomla 1.5 (kan draaien) op PHP 4.3+ (minder veilig)
- Etc.
Het grootste probleem zit hem in het feit dat Joomla 1.5 dus niet modulair te updaten is naar nieuwere versies. Wil je je CMS systeem updaten naar Joomla 2.5 of Joomla 3 dan moet je bijna weer van voor af aan beginnen. Daarnaast is de database structuur anders en zijn de meeste oude plug-ins niet compatible met latere versies van Joomla. Omdat updaten lastig was bleef iedereen op Joomla 1.5 werken. En als je nu nog op Joomla 1.5 werkt (of 1.6 of 1.7) raad ik je zeker aan om te updaten.
Ook gebruikers van Joomla 2.5 moeten tijdig updaten naar versie 3.x omdat ook versie 2.5 op het einde van dit jaar (2014) “end of life” gaat en dus niet meer ondersteund wordt. Updaten naar 3.x gaat automatisch via het Joomla Update component. Controleer wel voor de update of al je plug-ins compatible zijn en of je webserver compatible is. Vervolgens is het raadzaam om vooraf een goede back-up te maken.
Maar dat neemt niet weg dat Joomla de slechte reputatie verdiend die het nu heeft. Sommige hosting providers verbieden zelfs het gebruik van Joomla omdat deze zeer veel beveiligingslekken zou hebben. ONZIN! Joomla is v.a. versie 2.5 zeer veilig en grotendeels goed modulair te updaten.
Deze Joomla beveiligingstutorial is voor iedereen die graag in het prachtige Joomla werkt en beveiliging serieus neemt. Volg deze post en onze volgende post en je zult merken dat Joomla beveiligen helemaal niet zo moeilijk is!
Let op: deze tutorial is gebaseerd op Joomla 3 maar het meeste is prima toepasbaar op Joomla 2.5.
Joomla Beveiliging – Out of the box
Joomla 3.x is veilig….punt. Dat klinkt nogal afgezaagd maar out-of-the-box is Joomla 3.x redelijk veilig. De meest onveilige scenario’s worden gecreëerd door gebruikersfouten en onveilige plug-ins. Joomla kan v.a. versie 2.5 modulair geupdate worden waarmee ze in mijn ogen veel progressie hebben geboekt. Maar ook de PHP versie (5.3.10) die minimaal benodigd is voor Joomla 3.x zorgt voor meer beveiligingsmogelijkheden. Als u Joomla 3.x draait op een server met een lagere PHP versie dan 5.3.10 dan kan dat resulteren in onveilige scenario’s als “session fixation” tot het niet kunnen gebruiken van diverse functies. InnoDB support voor MySQL is ook een vereiste en dat bevorderd weer het maken van database backups.
Kortom: Joomla 3.x vereist de nieuwste technieken en dat heeft zeker zijn voordelen.
Maar omdat niets 100% veilig is en er altijd na verloop van tijd nieuwe bugs en vulnerabilities ontdekt worden is het zaak om de volgende tips in acht te nemen. Dus eindelijk gaan we nu echt aan de slag ?
Joomla hosting:
Er wordt vaak onderschat hoe belangrijk hosting is. De plaats waar je website draait is immers een server die verbonden is met het internet. En deze server kan potentieel heel onveilig zijn. Staan alle onnodige poorten dicht? Hoe zit het met de OS patches? Welk OS draait er überhaupt op? Etc. Probeer altijd te kiezen voor een hosting provider met een Apache Webserver. Het .htaccess bestand werkt met Apache en is een prachtige tool om de beveiliging aan te scherpen.
Het ergste zijn nog wel de shared hosts. Dit zijn servers waar meerdere klanten op draaien. Dat kunnen 10 klanten per server zijn maar ook 100 klanten. Zelfs als jij je website helemaal beveiligd hebt dan nog kan deze via een andere onveilige site geïnfecteerd, defaced of verwijderd worden.
Een goede dedicated hosting (virtueel of fysiek) waarbij een professionele beheerder de instellingen beheerd is dan ook altijd de beste keuze, maar zeker niet de goedkoopste.
Het is logisch dat de meeste MKB bedrijven gebruik maken van een shared host. Een shared host is immers altijd goedkoper. Bedenk dus wel dat de keuze hiervoor cruciaal is.
Gebruikersnamen en wachtwoorden:
Jawel, in elke beveiligspost keert dit item terug. Denk aan uw gebruikersgegevens.
Hernoem bijvoorbeeld het standaard “admin” account. Iedereen weet immers wat het standaard account is. Dus als iedereen de gebruikersnaam al kent dan hoeven ze alleen maar middels een brute-force attack het wachtwoord te achterhalen om binnen te komen met de hoogst mogelijke rechten.
Het achterhalen van het ID nummer van het admin account kan ook al voldoende zijn om binnen te komen op de database. Dit ID nummer is standaard nummer 42 of 43 (en bij Joomla 1.5 is dat nummer 62 of 63). Maak bij voorkeur een nieuwe gebruiker aan en maak deze gebruiker “super admin”. Na het testen van je nieuwe super admin account verwijder je het originele admin account (of maak deze lid van een groep met minder rechten). Maak binnen een systeem nooit meer dan 1 of 2 gebruikers aan met de super admin rechten. Des te meer gebruikers er zijn met super admin rechten des te meer gebruikersaccounts potentieel “misbruikt” kunnen worden.
Maar denk ook aan uw wachtwoorden. Gebruik sterke combinaties. Dit zijn combinaties van minimaal 10 karakters die hoofdletters, kleine letters en cijfers bevatten en niet gemakkelijk te “raden” zijn. Verander uw wachtwoord ook periodiek (bij voorkeur om de 30 dagen).
Automatische updates, gebruik ze:
Joomla 2.5 en hoger ondersteund de automatische update feature om uw CMS systeem naar de nieuwste versie te updaten. Gebruik deze feature minimaal elk half jaar en update uw CMS systeem. Probeer minimaal elke 3 maanden uw plug-ins naar de nieuwste versie te updaten.
Door regelmatig te updaten bent u altijd voorzien van de meest up-to-date en meest veilige versie.
Zorg er wel altijd voor dat u een goede backup heeft alvorens u gaat updaten en doe de update bij voorkeur in een test omgeving.
Plug-ins:
Gebruik alleen professionele plug-ins. Deze plug-ins hebben een goede support en worden periodiek geupdate. Besteed liever een paar tientjes aan een goede professionele plug-in dan aan een gratis potentieel gevaarlijke plug-in. Kijk voor het kiezen van een plug-in altijd naar de populariteit en opmerkingen bij de plug-in. Kijk ook naar de laatst bijgewerkte datum. Als dit alles goed lijkt (en de features zijn naar wenst) overweeg dan om de plug-in te kiezen (ok al kost deze een paar centjes).
Versienummers:
Uw CMS systeem en plug-ins werken allen met een bepaalde versie. Hackers kennen per versie de zwakheden die misbruikt kunnen worden. Verwijder dus altijd de versienummer uit de broncode zodat hackers deze niet kunnen achterhalen. Het kan echter wel zo zijn dat u dit na een update opnieuw moet doen omdat het bronbestand overschreven kan zijn door een nieuwere versie. Controleer dit dus altijd na een update.
Mappen en bestanden:
Uw Joomla CMS systeem bestaat uit vele mappen en bestanden. Zorg ervoor dat de rechten hierop in orde zijn. Dus nooit geen 777 (full control voor iedereen) rechten. De vuistregel is:
Bestanden – CHMOD 644
Mappen – CHMOD 755
Configuratiebestanden – CHMOD 444
.htaccess bestand – CHMOD 400
SSL encryptie:
Gebruik voor de login /administrator gedeeltes en voor de secties waar gevoelige informatie opgeslagen en opgeroepen wordt altijd SSL.
Encryptie met een geldig signed SSL certificaat. Het gebruik van HTTPS voorkomt MitM (Man in the Middle) aanvallen. Verzonden data over SSL is veilig. Als het SSL certificaat goed geïnstalleerd is forceer dan Joomla in de settings om SSL te gebruiken. Je moet echter ook de configuration.php en .htaccess file aanpassen om SSL goed te forceren. Hoe je dit in Joomla doet leggen we uit in een andere post.
Einde deel 1:
In het eerste deel hebben we de meeste “algemene” veiligheidsrisico’s besproken. Deel 2 van joomla beveiliging zal dieper ingaan op Joomla specifieke beveiliging. 80% van alle problemen worden al voorkomen door deze eerste tips goed in
acht te nemen.