Højere sikkerhed med Apache 2.2 og PHP5 på en Win 2003 server?
Hej alleJeg håber, at nogle vil vurdere min opsætning af Apache 2.2 og PHP 5 på en Windows 2003 server.
Min dedikerede server blev tidligere hen hacket, idet jeg havde en hjemmeside, som havde et dårligt programmeret php-script, som en hacker-bot udnyttede til at uploade en dll fil, som den kunne køre, og derved opnåede adgang til min server ved at oprette en bruger, som kunne køre med Remote Desktop. Men faktisk fandt den også samtidigt ud af bevæge sig ned i roden af vores web-mappe (måske gjorde den det, før den kørte dll-filen) og gå op i de andre hjemmesider, som også fik et stempel af at være hacker. Altså hackeren opnåede både at have en windows bruger konto samt have stemplet alle sites som være hacket.
Der efter fik jeg øjne op for, at Apache kræver mere i sin sikkerheds-indstillinger end IIS'en gør (som jeg tidligere hen har anvendt meget). Jeg håber I vil komme med lidt feedback på, om min sikkerhed nu er god nok med Apache:
1) I Apache kører jeg nu med safe_mode (selvom det ikke giver så meget, har jeg forstået) ... korrekt?
2) Jeg har også indsat open_basedir i vhost-filerne, som burde låse en evt. indtrængende hacker til den web-mappe, som det måtte være lykkedes at få hacket via en svaghed i php-programmeringen. Jeg mener ikke, at hackeren derfra kan gå ned i roden af web-mappen (og derefter fortsætte op i de andre sites). Er det korrekt?
3) Jeg kører også med at hver site har sin egen upload og cookie mappe. Det giver vel også højere sikkerhed - korrekt?
Min Vhost i Apache:
<VirtualHost *:80>
DocumentRoot D:/Web/SiteEt
ServerName www.xxxxxxxxxx.dk
ServerAdmin webmaster@xxxxxxxxxx.dk
ServerAlias xxxxxxxxxx.dk
ErrorLog D:/Web/SiteEt/errorsapache.txt
php_admin_value safe_mode 1
php_admin_value open_basedir "D:/Web/SiteEt"
php_admin_value session.save_path "D:/Web/SiteEt/tempcookies/"
php_admin_value upload_tmp_dir "D:/Web/SiteEt/tempupload/"
<Directory D:/Web/SiteEt/tempupload>
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory D:/Web/SiteEt/tempcookies>
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory D:/Web/SiteEt>
AllowOverride All
Order Allow,Deny
Allow from all
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>
</Directory>
</VirtualHost>
4) Apache 2.2 servicen kører med Local System kontoen (altså jeg har ikke gjort noget siden installation af Apache). Jeg behøver vel ikke at give den en seperat bruger konto vel? Ovenstående sikkerhed burde være god nok - korrekt?
5) I PHP.ini har jeg frakoblet diverse funktioner:
disable_functions=dl,exec,passthru,shell_exec,system,pcntl_exec,popen,escapeshellcmd
6) Og Path har jeg sat til:
path=" ";
Jeg ved dog ikke, hvad det præcist gør. Har blot efterabet nogle andre php-indstillinger, som jeg læste på Internet et eller andet sted. Så hvad gør path=" " ?
7) Er der ellers andet, som jeg bør tænke over? (Jeg har ikke ændret på andet i PHP.ini end punkt 5 og 6). Jeg er ikke interesseret i totalt overkill sikkerhed, blot almindelig god sikkerhed til en almindelige dedikeret server med omkring 20 hjemmesider på sig.
På forhånd mange tak for feedbacken :-)