[Beveiliging] Veiligheid in OC Update: 18-02-1013!
Posted: Sat Jan 29, 2011 10:50 pm
Zie 2de post voor laatste updates ed.
OC is niet zo veilig als dat we wel zouden willen, een paar dingen zijn eenvoudig verbeteren:
Altijd direct de map install verwijderen zodra de shop werkt.
Direct de config.php in admin en root op 444 zetten
De map: admin
Nou het begint al bij de naam, die is fout, maak daar een mooie cryptische naam van bv "not4you_min"
Pas daarna de config.php aan en vervang "admin" door "jouw_gekozen_naam"
In tegenstelling tot wat Q in een ander topic beweert, altijd ook een .htpasswd / .htaccess op de "admin"
De kans is klein dat een hacker je admin weet te vinden door de nieuwe naam, en als die gevonden zou zijn houd de .htpasswd hem al op heel hoog niveau tegen.
De kans is dan een stuk kleiner dat ze uberhaupt de admin binnenkomen, als laatste is de inlog er nog als laatste middeltje.
En als je 2 x inloggen ivm met de veiligheid niet prettig vind, adviseer ik om de rest van dit verhaal niet eens meer te lezen.
De map: system
Deze url laat je error log zien
http://www.__webshop__/system/logs/error.txt
Deze een soort 404
http://www.__webshop__/system/start_up.php
Dit zou allemaal niet moeten kunnen!!
De map system dichtplakken met een .htaccess
<Files *.*>
Order Deny,Allow
Deny from all
</Files>
Dit beschermt tevens alle sub-mappen (cache met zn 777, log met zn 777 e.a.)
De nutteloze index.html in bv de map logs e.a kan je gelijk verwijderen
De map: catalog
Die is wat lastiger omdat daar ook templates en images en jscript zitten, alle andere files mogen nooit gezien kunnen worden
bv
http://www.__webshop__/catalog/controller/account/address.php
geeft :
Fatal error: Class 'Controller' not found in /var/www/vhosts/...........__webshop__/catalog/controller/account/address.php on line 2
Dit kan je voorkomen met een .htaccess in de map catalog
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpeg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.png$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.gif$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$
RewriteRule ^(.+)$ /lozer/ [NC]
Maak een nieuwe map aan in root van je site en noem die, als net genoemd, bv "lozer"
Kies voor "lozer" natuurlijk eigen naam voor die map.
Zet in de map "lozer" een .htacces met daarin :
Deny from all
Wat doet dit nu :
Iemand wil met zn browsert in de map http://www.__webshop__/catalog/controller/account/address.php kijken. Die iemand heeft daar helemaal nix te zoeken dus die krijgt dan de rewriterule voor zn kiezen die hem naar de map "lozer" stuurt, die op zijn beurt netjes antwoord via de .htaccess met
Forbidden
You don't have permission to access /catalog/controller/account/account.php on this server.
Die iemand is gelijk klaar met zn acties hierna. De server geeft geen clues meer met zn "Fatal error: Class 'Controller' not found in /var/www/vhosts/.........."
De RewriteCond zal je moeten aanpassen aan je eigen situatie, stel je gebruikt Flash dan moet er een regel bij met .swf, maar dat wijst voor zich.
De map: image
Ook zo'n leuke en die staat met zn submappen ook vaak op 777, kortom potentieel gevaarlijk
Zet hierin een .htaccess met wederom die rewriterules
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpeg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.png$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.gif$
RewriteRule ^(.+)$ /lozer/ [NC]
Zelfde als daarnet, je mag alleen die images met die extensies bekijken maar verder nix.
Dus al zou een hackert het voorelkaar krijgen om wat php script in die mappen te frommelen, hij kan ze niet executeren via een browsert.
De RewriteRule ^(.+)$ /lozer/ [NC] zou je ook naar een nette pagina kunnen laten verwijzen, met "Sorry de door uw gevraagde pagina is helaas niet gevonden enzo"
Zelf vind ik de "Forbidden...." versie wat grappiger, dit gooit gewoon de deur dicht, en geeft geen clues.
Het voordeel van het werken met de .htaccess is dat knoei-verzoeken het niet een halen tot aan de shop, apache grijpt daarvoor al in.
Verder moet je bij alle jscript die bij de templates zitten alle demo rommel enzo verwijderen.
Ten overvloedde waarschijnlijk, houd je je public_html schoon !!
Op sommige server hoef je met mappen als logs en images niet met 777 te werken, soms werkt een 733 ook al goed. Moraal vh verhaal, geef zo min mogelijk rechten.
Bovengenoemde maakt OC er natuurlijk niet veiliger op, maar een potentieel kwaadwillend iemand zal het nu wel moeilijker krijgen om binnen te komen.
Rest er nog 1, de validatie in OC van _POST en _GET waarden, hieraan moet echt wat gedaan worden in een volgende versie, met wat er nu in zit wat moet valideren is het niet zo moeilijk om rommel te injecteren.
Nou mijn taak zit erop, als iemand dit wil vertalen en in het engelse forum wilt zetten, be my guest.
post scriptum:
Ik ben een script aan het maken die validatie doet, nog voordat het www verzoek de winkel raakt, welke goeie programmeur wil hieraan meewerken ?
OC is niet zo veilig als dat we wel zouden willen, een paar dingen zijn eenvoudig verbeteren:
Altijd direct de map install verwijderen zodra de shop werkt.
Direct de config.php in admin en root op 444 zetten
De map: admin
Nou het begint al bij de naam, die is fout, maak daar een mooie cryptische naam van bv "not4you_min"
Pas daarna de config.php aan en vervang "admin" door "jouw_gekozen_naam"
In tegenstelling tot wat Q in een ander topic beweert, altijd ook een .htpasswd / .htaccess op de "admin"
De kans is klein dat een hacker je admin weet te vinden door de nieuwe naam, en als die gevonden zou zijn houd de .htpasswd hem al op heel hoog niveau tegen.
De kans is dan een stuk kleiner dat ze uberhaupt de admin binnenkomen, als laatste is de inlog er nog als laatste middeltje.
En als je 2 x inloggen ivm met de veiligheid niet prettig vind, adviseer ik om de rest van dit verhaal niet eens meer te lezen.
De map: system
Deze url laat je error log zien
http://www.__webshop__/system/logs/error.txt
Deze een soort 404
http://www.__webshop__/system/start_up.php
Dit zou allemaal niet moeten kunnen!!
De map system dichtplakken met een .htaccess
<Files *.*>
Order Deny,Allow
Deny from all
</Files>
Dit beschermt tevens alle sub-mappen (cache met zn 777, log met zn 777 e.a.)
De nutteloze index.html in bv de map logs e.a kan je gelijk verwijderen
De map: catalog
Die is wat lastiger omdat daar ook templates en images en jscript zitten, alle andere files mogen nooit gezien kunnen worden
bv
http://www.__webshop__/catalog/controller/account/address.php
geeft :
Fatal error: Class 'Controller' not found in /var/www/vhosts/...........__webshop__/catalog/controller/account/address.php on line 2
Dit kan je voorkomen met een .htaccess in de map catalog
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpeg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.png$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.gif$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$
RewriteRule ^(.+)$ /lozer/ [NC]
Maak een nieuwe map aan in root van je site en noem die, als net genoemd, bv "lozer"
Kies voor "lozer" natuurlijk eigen naam voor die map.
Zet in de map "lozer" een .htacces met daarin :
Deny from all
Wat doet dit nu :
Iemand wil met zn browsert in de map http://www.__webshop__/catalog/controller/account/address.php kijken. Die iemand heeft daar helemaal nix te zoeken dus die krijgt dan de rewriterule voor zn kiezen die hem naar de map "lozer" stuurt, die op zijn beurt netjes antwoord via de .htaccess met
Forbidden
You don't have permission to access /catalog/controller/account/account.php on this server.
Die iemand is gelijk klaar met zn acties hierna. De server geeft geen clues meer met zn "Fatal error: Class 'Controller' not found in /var/www/vhosts/.........."
De RewriteCond zal je moeten aanpassen aan je eigen situatie, stel je gebruikt Flash dan moet er een regel bij met .swf, maar dat wijst voor zich.
De map: image
Ook zo'n leuke en die staat met zn submappen ook vaak op 777, kortom potentieel gevaarlijk
Zet hierin een .htaccess met wederom die rewriterules
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.jpeg$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.png$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.gif$
RewriteRule ^(.+)$ /lozer/ [NC]
Zelfde als daarnet, je mag alleen die images met die extensies bekijken maar verder nix.
Dus al zou een hackert het voorelkaar krijgen om wat php script in die mappen te frommelen, hij kan ze niet executeren via een browsert.
De RewriteRule ^(.+)$ /lozer/ [NC] zou je ook naar een nette pagina kunnen laten verwijzen, met "Sorry de door uw gevraagde pagina is helaas niet gevonden enzo"
Zelf vind ik de "Forbidden...." versie wat grappiger, dit gooit gewoon de deur dicht, en geeft geen clues.
Het voordeel van het werken met de .htaccess is dat knoei-verzoeken het niet een halen tot aan de shop, apache grijpt daarvoor al in.
Verder moet je bij alle jscript die bij de templates zitten alle demo rommel enzo verwijderen.
Ten overvloedde waarschijnlijk, houd je je public_html schoon !!
Op sommige server hoef je met mappen als logs en images niet met 777 te werken, soms werkt een 733 ook al goed. Moraal vh verhaal, geef zo min mogelijk rechten.
Bovengenoemde maakt OC er natuurlijk niet veiliger op, maar een potentieel kwaadwillend iemand zal het nu wel moeilijker krijgen om binnen te komen.
Rest er nog 1, de validatie in OC van _POST en _GET waarden, hieraan moet echt wat gedaan worden in een volgende versie, met wat er nu in zit wat moet valideren is het niet zo moeilijk om rommel te injecteren.
Nou mijn taak zit erop, als iemand dit wil vertalen en in het engelse forum wilt zetten, be my guest.
post scriptum:
Ik ben een script aan het maken die validatie doet, nog voordat het www verzoek de winkel raakt, welke goeie programmeur wil hieraan meewerken ?