Joomla beveiliging – Deel 2/2
In deel 1 van Joomla Beveiliging hebben we uitgebreid gesproken over de algemene Joomla beveiliging en algemene veiligheidsmaatregelen die relatief gemakkelijk te realiseren zijn. In Deel 2 gaan we dieper in op Joomla Specifieke en iets technischere beveiligingsmaatregelen.
Bent u er klaar voor? enjoy!
Sluit gebruiker registraties:
Zeker als u de functie niet gebruikt is het verstandig om “gebruiker registraties” uit te schakelen. Gebruiker registratie formulieren en alle andere overbodige formulieren zijn spam gevoelig (waarvoor u een optionele ReCaptcha plugin
kunt zoeken) maar zijn ook gevoelig om malafide code in te testen en gebruiken. Denk hierbij aan b.v. XSS aanvallen.
Om de gebruiker registratie te sluiten gaat u in de backend naar Users – User manager. Klik bovenin op de tab “opties”. Onder het table “Componenten” heeft u de keuze om registratie en/of login mogelijkheden uit te schakelen.
.htaccess:
Als u werkt met een webserver gebaseerd op het Apache systeem dan kunt u gebruik maken van het zogenaamde .htaccess bestand.
Je zou middels het .htaccess bestand ook alleen toegang tot het administrator gedeelte kunnen geven voor slechts een aantal IP adressen. Hierdoor wordt ieder ander gebounced wanneer ze naar uw /administrator URL gaan. Stel dat uw IP
adres 22.22.22.22 is dan voegt u het volgende toe aan uw .htaccess bestand om alleen toegang tot het administrator gedeelte te creëren voor uzelf.
order allow,deny allow from 22.22.22.22 deny from all |
Om te voorkomen dat er scripts gedraaid worden buiten Joomla om kunt u het volgende toevoegen aan uw .htaccess file in de root van de website (na het RewriteEngine On commando):
RewriteCond %{REQUEST_URI} ^/images/ [NC,OR] RewriteCond %{REQUEST_URI} ^/media/ [NC,OR] RewriteCond %{REQUEST_URI} ^/logs/ [NC,OR] RewriteCond %{REQUEST_URI} ^/tmp/ RewriteRule .*\.(phps?|sh|pl|cgi|py)$ - [F] |
Voor het buitensluiten van bekende hack tools is het aan te raden het volgende commando op te nemen in uw .htaccess bestand:
SetEnvIf user-agent "Indy Library" stayout=1 SetEnvIf user-agent "Wget" stayout=1 SetEnvIf user-agent "libwww-perl" stayout=1 SetEnvIf user-agent "Download Demon" stayout=1 SetEnvIf user-agent "GetRight" stayout=1 SetEnvIf user-agent "GetWeb!" stayout=1 SetEnvIf user-agent "Go!Zilla" stayout=1 SetEnvIf user-agent "Go-Ahead-Got-It" stayout=1 SetEnvIf user-agent "GrabNet" stayout=1 SetEnvIf user-agent "TurnitinBot" stayout=1 deny from env=stayout |
Om alleen toegang toe te staan tot de benodigde bestanden (het index.php bestand en het index2.php bestand welke door sommige componenten en de backend wordt gebruikt) voeg je de volgende code toe.
deny from all <FilesMatch "index.php"> allow from all </FilesMatch> <FilesMatch "index2.php"> allow from all </FilesMatch> |
Op het internet is ook een master .htaccess bestand te vinden. Dit master bestand is o.a. gemaakt door Ronald van den Heetkamp en Nicholas Dionysopoulos. Dit masterbestand is speciaal geschreven voor Joomla en heeft de meeste Joomla
onveiligheden weggenomen. Echter kan dit bestand niet zomaar gekopieerd en geplakt worden op je Joomla site. Lees alle comments en finetune het bestand naar de wensen van je site. Het simpel kopiëren en plakken zal waarschijnlijk
resulteren in een niet of slecht werkende website. Het Joomla Master .htaccess bestand kunt u hier vinden.
Verander niet de administrator URL:
De standaard URL in Joomla is %websitenaam%/administrator. Er zijn tools beschikbaar die u in staat stellen om de admin URL aan te passen naar b.v. %websitenaam%/nieuweadminurl . Uiteraard kunt u dit ook handmatig doen.
Maar doe dit liever niet. Door de tips in deze post op te volgen maakt u het al heel moeilijk voor hackers om nog iets met uw /administrator URL te doen. Daarnaast zijn vele templates en plug-ins die componenten, controllers en
andere onderdelen laden van de /administrator URL.
Daarnaast zorgen de tweaks (vaak zelfs in core bestanden) voor nieuwe beveiligingsrisico’s. Als u dus leest over deze truck adviseer ik om hem niet zelf toe te passen.
Database Table Prefix:
Vanaf Joomla 1.7 worden database prefix namen random gegenereerd gedurende de installatie. Als uw database prefix toch mocht beginnen met jos_ of joomla_ dan is het aan te raden deze te vervangen voor een random prefix. Er zijn
verschillende tutorials te vinden voor verschillende versies van Joomla. Het aanpassen van de database prefix namen voorkomt voornamelijk een mogelijke SQL Injection attack.
Schakel de Joomla FTP Layer uit:
De Joomla FTP Layer is een optie die vaak aanstaat. De FTP laag wordt gebruikt om bestanden te benaderen op de server. Ook zijn er plug-ins die zonder de FTP laat niet goed werken. De FTP laag is echter ook een gevaarlijke laag. Als je
gebruikersnaam en wachtwoord opgeslagen zijn kan een kwaadwillende gebruiker vrij gemakkelijk valide FTP gegevens achterhalen waarmee deze op je server kan komen. Dus als u de FTP laag uit kunt zetten (wat sowieso bijna altijd kan als uw
hoster suEXEC ondersteund) dan is dat zeker aan te raden.
Register_Globals:
register_globals is een interne PHP instelling die de $ REQUEST array’s als variabelen registreert. Als u een waarde invult in een formulier via POST of GET dan zal deze waarde automatisch toegankelijk worden via een variabele in het
PHP-script, genoemd naar de naam van het invoerveld.
Register_Globals is een gevaarlijke setting omdat hiermee variabele benaderd en gebruikt kunnen worden die voor “ongeautoriseerde gebruikers” helemaal niet benaderbaar mogen zijn en waarmee dus mogelijk schade maar kan worden veroorzaakt
zoals het uploaden van schadelijke scripts.
Kortom, als er plugins zijn die deze PHP instelling aan moeten hebben staan om te kunnen werken dan is het aan te raden om vervangende plugins te zoeken.
Om de nieuwere versies van Joomla te installeren moet de register_globals waarde als pre-install requirement al uitgeschakeld zijn.
Om register_globals uit te schakelen heeft u controle nodig over de php.ini file van de server. Omdat u deze meestal niet heeft kunt u het verzoek ook wegleggen bij de hosting provider. Als u beschikt over een .htaccess bestand kunt u de
waarde ook proberen te overschrijven door het commando “php_flag register_globals off”
Opruimen:
Ruim altijd alle overbodige bestanden op. Denk hierbij aan niet gebruikte templates en plug-ins maar ook aan overbodige bestanden die u ooit tijdelijk op de host heeft geplaatst. We komen het best vaak tegen dat we als back-up nog
complete Joomla 1.0 of 1.5 websites tegenkomen. Ook deze kunnen misbruikt worden waardoor de veiligheid van uw nieuwste Joomla versie gemakkelijk ontweken kan worden door gebruikt te maken van de lekken in de oudere versies van Joomla.
Daarnaast zorgt opruimen ervoor dat alles netjes schoon blijft, dat er voldoende schijfruimte vrij blijft en dat alles soepel blijft lopen.
Tools:
Er zijn veel leuke tools in de omloop op u een handje te helpen bij uw beveiliging. Een persoonlijke favoriet van mij zijn de tools van Akeeba. Voornamelijk de
Akeeba CMS Update tool, Akeeba Backup component en de Akeeba Admin Tools. Met deze tools kunt u uw systeem automatisch updaten en back-uppen. De Admin Tools zorgen voor een extra laag van veiligheid door file monitoring toe te passen en
door uw Joomla website te voorzien van een Firewall. Andere mooie tools zijn jHackGuard en jSecure en waarschijnlijk nog vele andere die ik niet ken.
Uw back-up strategie:
N.a.v. bovenstaande item is het goed om uw back-up strategie onder de loep te nemen. Er wordt vaak niet nagedacht over de back-
up strategie tot het fout gaat. Uw back-up is uw enige vangnet die u in geval van een calamiteit kan opvangen. De back-up zorgt ervoor dat u geen bestanden en informatie kwijt raakt. Hij zorgt er tevens voor dat u weer snel online kunt
zijn waardoor negatieve klantervaringen en eventuele Google penalty’s tot een minimum beperkt blijven.
Een goede backup kost vaak een paar tientjes per jaar maar het kost veel meer tijd en frustratie om uw website en alle informatie weer opnieuw te bouwen. Daarnaast kost het opnieuw bouwen en inrichten vaak veel langer dan het terug
plaatsen van een backup.
Akeeba Backup is een mooi component die op de host maar ook in de cloud (dedicated space / Dropbox etc). kan back-uppen. Als u helemaal geen omkijken naar de back-up wilt hebben informeer dan eens naar onze secure cloud-backup.
Gebruik zoekmachine vriendelijke URL’s:
Uiteraard zijn zoekmachinevriendelijke URL’s goed voor de vindbaarheid in Google. Maar ze zorgen er ook voor hackers moeilijker Google Query’s (GoogleDorks) toe kunnen passen om zwakke / vatbare URL’s van uw website / backend systeem te
vinden.
Hack jezelf of laat je “gecontroleerd” hacken:
Als je het leuk vindt om jezelf te verdiepen in website beveiliging begin dan eens om je eigen website te hacken (in een gecontroleerde / test omgeving). U beschikt namelijk al over de basiskennis van uw website. U weet waar de sterke en
zwakke aspecten liggen. Probeer vooral die zwakke aspecten te misbruiken.
Door uw eigen website te hacken of door dit door een professional te laten doen komen nieuwe veiligheidsrisico’s boven die tijdig gedicht kunnen worden. Zo bent u potentiele misbruikers altijd een stapje voor!
Blijf op je hoede:
Ik heb het al vaker gezegd. Beveiliging is een “ongoing process”. U kunt beveiliging helaas niet eenmalig instellen en weer vergeten. De wereld om ons heen veranderd snel en het internet nog sneller. Nieuwe veiligheidsrisico’s worden
dagelijks weer ontdekt. Aan u de taak om de veiligheid van uw systeem te blijven monitoren. Patch uw systeem periodiek, ruim regelmatig op en hou de “logische” veiligheidsregels in acht.
Ik hoop dat dit 2-delige artikel wat zaken opgehelderd heeft over Joomla Beveiliging. U kunt dus veel doen om Joomla veilig te houden. Heel veel succes met beveiligen!