Joomla zit in een interessante positie: groot genoeg om aanvallers' aandacht te trekken, klein genoeg om minder geautomatiseerde scans tegen te krijgen dan WordPress. Het resultaat: bots die wél Joomla scannen, mikken vaak heel gericht op specifieke bekende kwetsbaarheden in oudere extensies. Een Joomla-site die op zijn updates en hardening let, staat fundamenteel sterk. Eentje die dat niet doet, wordt razendsnel gevonden.
Dit artikel veronderstelt Joomla 4 of 5. Joomla 3 is sinds augustus 2023 End of Life — als je daar nog op zit, is migratie naar 4 of 5 je #1 prioriteit (zie de slot-sectie van dit artikel).
Hoe Joomla anders is qua security
Voordat we de stappen ingaan, een paar fundamenten:
- Extensies vs plugins/modules: Joomla heeft componenten, modules én plugins (drie types) die elk een rol spelen. Vooral componenten zijn historisch een aanvalsvector geweest
- Vulnerable Extensions List (VEL): een officieel Joomla-onderhouden lijst van extensies met bekende kwetsbaarheden. Dit is jouw belangrijkste preventieve resource
- configuration.php in webroot: anders dan WordPress' wp-config.php (die normaal één map hoger kan staan), staat Joomla's
configuration.phpin de webroot. Toegankelijkheid moet je actief beperken - htaccess.txt: Joomla levert een gehard
htaccess.txtbestand mee dat je zelf moet hernoemen naar.htaccessom actief te zijn — een stap die veel mensen overslaan - 2FA in core: sinds Joomla 4 zit tweefactor-authenticatie standaard in core, je hoeft geen extensie te installeren
- Akeeba ecosysteem: Akeeba Backup en Akeeba Admin Tools zijn de de facto industriestandaard voor backups en hardening op Joomla
1. Updates — naar Joomla 5, abonneer op Joomla Security Strike Team
Joomla heeft een formeel Security Strike Team (JSST) dat security-patches uitbrengt. Updates komen typisch op dinsdagen. Drie acties:
- Abonneer op Joomla security announcements: developer.joomla.org/security-centre
- Volg @joomla op X/Twitter voor real-time meldingen
- Update binnen 24-48 uur bij Critical advisories
Voor de updates zelf: gebruik de ingebouwde Joomla Update component (System → Update → Joomla):
- Joomla 3 → 4 → 5: dit is geen kleine update. Test grondig op een staging-omgeving (zie ook staging artikel; principes gelden ook voor Joomla)
- Update extensies voor de Joomla core update — sommige extensies vereisen specifieke versies om compatibel te blijven
- Maak vooraf een complete backup met Akeeba Backup
2. Check de Vulnerable Extensions List (VEL) regelmatig
Dit is verreweg de meest onderbenutte security-resource in het Joomla-ecosysteem. De Vulnerable Extensions List op vel.joomla.org houdt een actieve lijst bij van Joomla-extensies met gerapporteerde kwetsbaarheden.
Maandelijkse routine:
- Open je site → Extensions → Manage → Manage
- Bekijk de lijst van geïnstalleerde extensies
- Check elke extensie tegen vel.joomla.org (of gebruik de browser zoekfunctie)
- Vind je een match? Updaten. Of verwijderen als er geen patch beschikbaar is
Praktischere oplossing: Joomla Tools Suite van Akeeba (in Akeeba Admin Tools, zie stap 9) doet deze check automatisch en waarschuwt je als een geïnstalleerde extensie op de VEL staat.
3. htaccess.txt → .htaccess (deze móet je doen)
Joomla levert een gehard htaccess.txt bestand in de webroot. Dit bestand is niet actief — je moet het hernoemen naar .htaccess. Klassieke vergetelheid die je site direct kwetsbaar maakt.
Via SSH:
cd /pad/naar/joomla/webroot
mv htaccess.txt .htaccess
Of via FTP/filemanager: hernoem het bestand. Zorg dat verborgen bestanden zichtbaar zijn (de naam begint met een punt).
Wat het Joomla .htaccess doet:
- Blokkeert directe toegang tot configuration.php en andere systeem-files
- Voorkomt directory listing
- Blokkeert verdachte SQL-injection patronen in URL's
- Voorkomt request floods op specifieke endpoints
- Blokkeert toegang tot Joomla's internals via direct URL-aanroep
Achtergrond over .htaccess zelf: zie het .htaccess artikel.
4. configuration.php hardening
Joomla's hoofdconfiguratie. Een paar instellingen die expliciet goed moeten staan op productie:
4.1 — secret
De $secret variabele wordt gebruikt voor het signen van sessions en password-reset tokens. Verander deze waarde bij installatie en bij elke gehackte site:
public $secret = 'lange-willekeurige-string-50-karakters-of-meer';
4.2 — Error reporting uit op productie
Voorkom dat error-messages systeempaden of database-namen lekken naar bezoekers:
public $error_reporting = 'none';
4.3 — Log en tmp paden buiten webroot
Standaard staan logs en tmp in de webroot — direct downloadbaar door iedereen die de paden raadt. Verplaats ze naar buiten de publieke webdir:
public $log_path = '/home/user/joomla-logs';
public $tmp_path = '/home/user/joomla-tmp';
Zorg dat de webserver-user wel write-access heeft op die mappen.
4.4 — File permissions van configuration.php zelf
Het bestand mag niet wereld-leesbaar zijn op shared hosting:
chmod 444 configuration.php
Read-only voor iedereen, niet writable. Joomla heeft alleen schrijfrechten nodig als je via de UI configuratie wijzigt — als je dat doet, tijdelijk 644, daarna terug naar 444.
5. Bescherm /administrator
Net als WordPress' /wp-admin is Joomla's /administrator universeel bekend en doelwit van geautomatiseerde brute-force aanvallen. Twee aanpakken:
Optie A: HTTP basic auth via .htaccess (sterkste)
Maak een .htpasswd bestand buiten de webroot en voeg toe aan /administrator/.htaccess:
AuthType Basic
AuthName "Beveiligde sectie"
AuthUserFile /home/user/.htpasswd
Require valid-user
Resultaat: aanvallers krijgen eerst een browser-popup vóór ze überhaupt bij de Joomla login komen. 99% van de bots geeft op.
Optie B: Akeeba Admin Tools "Rescue URL"
Akeeba Admin Tools (gratis) heeft een feature waarmee je /administrator verstopt achter een geheime parameter. Bezoekers van jouwsite.nl/administrator krijgen een 404; alleen wie jouwsite.nl/administrator?secret=xyz123 typt komt erbij.
Optie A is sterker; Optie B is gemakkelijker als je geen SSH/htpasswd-toegang hebt.
6. Built-in 2FA inschakelen voor alle administrators
Sinds Joomla 4 zit tweefactor-authenticatie standaard in core. Configureer:
- Ga naar System → Manage → Plugins
- Filter op "Multi-factor Authentication"
- Activeer "Multi-factor Authentication - Authentication Code (TOTP)"
- Optioneel ook: WebAuthn (hardware keys), Email Authentication, YubiKey
- Per gebruiker: Users → Manage User → Multi-factor Authentication tab → setup
Maak 2FA verplicht voor alle Super Users en Administrators. Backup recovery codes ergens veilig opslaan — zonder kun je jezelf permanent uitsluiten.
7. ACL — gebruik User Groups, geen Super User voor iedereen
Joomla's Access Control List (ACL) is krachtig maar complex. De grootste valkuil: alle redacteuren in de "Super User" of "Administrator" groep zetten omdat de juiste configuratie te ingewikkeld lijkt. Doe het toch.
Aanbevolen rol-structuur:
- Public: anonieme bezoekers (default)
- Registered: ingelogde bezoekers, mogen content lezen
- Author: aanmaken eigen artikelen, niet anderen
- Editor: aanmaken + bewerken eigen + bewerken anderen
- Publisher: idem + publish/unpublish, geen module/plugin/extensie wijzigingen
- Manager: front-end content management, geen toegang tot administrator-globals
- Administrator: alleen voor échte beheer, geen content-werk
- Super User: één account, voor noodgevallen, met 2FA
Specifiek belangrijk: de permissies "Configure Options" en "Access Administration Interface" mogen alleen bij Administrator en Super User. Een gehackt Editor-account is een verloren editor-account; een gehackt Super User account is een verloren site.
8. Bescherm /images/ tegen PHP-uitvoering
Joomla's standaard upload-map is /images/ in de webroot. Aanvallers proberen daar PHP-files te smokkelen via formulieren of upload-componenten, en die vervolgens via een directe URL aan te roepen.
Plaats een .htaccess in /images/ en in /tmp/:
<Files *.php>
Require all denied
</Files>
<FilesMatch "\.(php|phtml|pl|py|jsp|asp|sh|cgi)$">
Require all denied
</FilesMatch>
Dit blokkeert de uitvoering, ook als een aanvaller een PHP-payload weet te uploaden. Vergelijkbare regel zou je willen voor /cache/ als die in webroot staat.
9. Akeeba Admin Tools installeren
Akeeba Admin Tools is de de facto Joomla security-extensie. Beschikbaar in een gratis versie (Core) en een uitgebreide Pro-versie. Wat het doet:
- Security Audit: doorlicht je hele site op zwakheden — file permissions, .htaccess setup, configuratie-issues
- WAF (Web Application Firewall): filtert binnenkomende requests op SQL injection, XSS, path traversal, en andere klassieke aanvalspatronen
- Admin URL hiding: verstop /administrator achter een geheime parameter (zie stap 5)
- VEL check: automatische check tegen de Vulnerable Extensions List
- htaccess Maker: genereert een gehard .htaccess zonder dat je zelf hoeft te schrijven
- Anti-spam features: HoneyPot voor formulieren, IP-blocklists, geo-blocking
- Configuratie-monitor: detecteert ongewenste wijzigingen in core files
De Core (gratis) versie is voor de meeste sites genoeg. De Pro versie (€40/jaar) voegt geo-blocking, automatic IP-blocking en extra audit-checks toe. Voor commerciële sites de moeite waard.
10. Web Application Firewall (cloud-niveau)
Naast Akeeba Admin Tools' WAF op applicatie-niveau, voeg een tweede laag toe op cloud-niveau:
- Cloudflare WAF: filtert vóór aanvallen je server bereiken. Heeft Joomla-specifieke ruleset beschikbaar
- Sucuri Firewall: alternatief, vergelijkbare prijsstelling
- ModSecurity: server-niveau, vaak standaard op shared hosting met DirectAdmin/Plesk. Vraag je hoster welke ruleset actief is
Twee lagen WAF (applicatie + cloud) is overlap, maar wel zinvolle overlap — wat de ene niet ziet, vangt de andere op.
Bonus: Akeeba Backup, monitoring en hosting-keuze
De extra's die het verschil maken bij een incident:
- Akeeba Backup: industry standard backup-extensie voor Joomla. Gratis Core versie, of Pro (€40/jaar) met automatic remote storage (S3, Google Drive, FTP). Test minimaal jaarlijks of de restore werkt — een ongeteste backup is een hoop hoop, geen verzekering
- File integrity monitoring: Akeeba Admin Tools Pro doet dit, of server-niveau via tools als
aideoftripwire - Activity log: ingebouwd in Joomla 4+ via System → Action Logs. Toont wie wat wanneer deed
- Hosting-keuze: Joomla draait prima op standaard cPanel/DirectAdmin/Plesk hosting, maar een hoster die actief Joomla-specifieke ModSecurity-rules onderhoudt scheelt enorm. Vraag dat na voor je kiest
Wat NIET te doen op Joomla
Een paar dingen die in oudere tutorials voorkomen maar achterhaald of contra-productief zijn:
- Database tabel-prefix wijzigen: in Joomla 4+ minder relevant. Geautomatiseerde scans richten zich op extensie-namen, niet tabel-namen. Wijzigen geeft weinig winst, breekt potentieel extensies
- register_globals dichtzetten via .htaccess: niet meer relevant. PHP heeft register_globals al jaren weg
- Custom GZIP compressie scripts: gebruik gewoon mod_deflate via .htaccess (zie het .htaccess artikel) — eenvoudiger en veiliger
- Joomla 3 met losse "security plugins" tot in den treure houden: Joomla 3 is EOL. Geen enkele security plugin compenseert het niet meer ontvangen van core security patches
Joomla 3 nog draaiend? Migreer.
Joomla 3 ging op 17 augustus 2023 End of Life. Geen security updates meer, geen support van het Joomla-team. Bekende kwetsbaarheden in J3 worden niet meer gepatcht. Een Joomla 3 site online houden is op termijn niet houdbaar.
De migratie naar Joomla 4 of 5 is geen update — het is fundamenteel een nieuwe site. De database-structuur, het template-systeem (van MVC naar Bootstrap 5), en veel extensie-API's zijn anders. Plan minimaal 2-4 dagen werk voor een gemiddelde site, langer voor sites met veel custom code of niet-actief-onderhouden extensies.
Wanneer schakel je hulp in?
- Joomla 3 site die nog draait — moet ASAP gemigreerd worden
- Site is gehackt en je weet niet via welke extensie het binnenkwam
- Custom extensies waarvan de oorspronkelijke ontwikkelaar niet meer beschikbaar is — security audit van eigen code
- Akeeba Admin Tools rapporteert structureel issues die je niet kunt oplossen
- Performance + security balans op enterprise schaal — Joomla caching strategieën hebben security-implicaties
- Migratie van Joomla 3 → 4 → 5 met behoud van content + URLs (geen 404's voor bestaande Google-rankings)
Joomla heeft het ecosysteem en de tooling om ontzettend veilig te zijn — Akeeba alleen al dekt 70% van wat een security-specialist zou doen. Het probleem is meestal niet "ik weet niet hoe", maar "het is nooit consequent doorgevoerd". Eén weekend besteden aan deze tien stappen zet je site fundamenteel sterker dan 95% van de Joomla-installaties op het Nederlandse internet.