Jak zatvrdit PHP pro lepší zabezpečení

PHP je široce používáno mezi mnoha weby & aplikací, ale pro zabezpečení by mělo být zpřísněno. Zde je několik pokročilých tipů, jak zabezpečit konfigurační soubor PHP.


Jak zpevnit PHP

PHP je zdaleka nejpopulárnější webový programovací jazyk, který se dnes používá. K dnešnímu dni 80% webů s backendem implementovat PHP. WordPress, Joomla a Drupal jsou tím podporovány. PHP se bohužel stalo oblíbeným cílem pokusů o hackování, a proto je zabezpečení jeho konfigurace kritické. Postupujte podle těchto jednoduchých kroků, abyste zpevnili konfiguraci PHP a pomohli ji chránit před napadením hackery.

Vyhledejte konfigurační soubor PHP

Název konfiguračního souboru pro PHP je php.ini, který budete muset upravit. Umístění souboru se liší v závislosti na hostitelské společnosti a typu serveru.

Upravit pomocí sdíleného hostování

Pokud si nejste jisti, kde se nachází váš soubor php.ini, kontaktujte svého poskytovatele hostingu. Někteří poskytovatelé vyžadují, abyste nastavení PHP vložili do souboru „.htaccess“ ve webovém kořenovém adresáři. V takovém případě by se nastavení PHP mělo přidat jedno na řádek ve formátu „php_value Name value“. Nezapomeňte, že váš poskytovatel hostingu může zabránit určitým změnám nastavení.

Úpravy pomocí VPS nebo dedikovaného serveru

Web Host Manager (WHM) zjednodušuje proces úpravy konfiguračního souboru PHP poskytováním jednoduchého uživatelského rozhraní. Jednoduše najděte sekci „Konfigurace služby“ v WHM a klikněte na „Editor konfigurace PHP“. Na zobrazené stránce vyberte „Rozšířený režim“.

Editor konfigurace PHP

Pokud nepoužíváte ovládací panel jako WHM, budete muset přímo otevřít a upravit php.ini. Umístění php.ini se bude lišit v závislosti na operačním systému vašeho serveru. Mnoho systémů Linux umístí soubor na cestu „/etc/php.ini“. Jeho umístění můžete potvrdit pomocí příkazového řádku. Nejprve se přihlaste k serveru přes SSH (pokyny získáte od poskytovatele hostingu). Po připojení zadejte příkaz „php –ini“ a stiskněte klávesu Enter. Vyhledejte vrácený řádek s názvem „Loaded Configuration File“ a poznamenejte si cestu k souboru php.ini.

Php.ini můžete otevřít a upravit pomocí textového editoru, který běží v příkazovém řádku, například „nano“ pro Linux. Jednoduše zadejte „nano /path/to/php.ini“ a stiskněte klávesu Enter.
Nano pro Linux

php.ini Struktura

V php.ini je každé nastavení umístěno na vlastní řádek ve formátu „settingname = settingvalue“. Každý řádek začínající středníkem je komentář, takže žádný z těchto řádků neaktualizujte.

Upravit nastavení konfigurace

Níže je uveden seznam nastavení, která by měla být zkontrolována a aktualizována, aby se zvýšila bezpečnost. Nastavení jsou seskupena do několika sekcí níže podle jejich účelu.

Část 1: Vzdálená připojení

allow_url_fopen = 0
allow_url_include = 0

Nepovolte obálky fopen k otevření vzdálených adres URL. Vzdálenému obsahu nelze vždy důvěřovat; vypnutí těchto možností zajistí, že obaly fopen mohou načíst pouze místní obsah.

Část 2: Nastavení běhu

max_input_time = 30
max_execution_time = 30

Omezte maximální dobu zpracování vstupů a maximální dobu, po kterou může skript PHP běžet. Zde jsou obě nastavení nastavena na 30 sekundový limit. Tím je zajištěno, že v případě kompromitování skriptu nebude číst vstupy nebo nebude běžet delší dobu. Dobře kódovaný skript by neměl vyžadovat spuštění více než 30 sekund.

memory_limit = 8M

Zajistěte, aby skript PHP nikdy nevyužíval více než 8 MB paměti. V případě kompromitování skriptu toto nastavení účinně omezuje množství paměti, které skript může využít.

register_globals = off

Deaktivace tohoto nastavení účinně zakáže automatické ukládání dat požadavků jako proměnné. Registrace globálních proměnných vyvolává několik obav; jedním příkladem je to, že proměnné prostředí lze snadno modifikovat. Chcete-li se těmto problémům vyhnout, zkontrolujte, zda je toto nastavení vypnuto.

expose_php = 0

Ve výchozím nastavení je přítomnost PHP a jeho číslo verze vystaveno jako součást HTTP odpovědí. Protože to poskytuje zbytečný vhled do serveru, je vhodné toto vypnout.

cgi.force_redirect = 1

Zajistěte, aby PHP bylo možné spustit pouze pomocí pravidla přesměrování webového serveru. Tím se zabrání přímému volání PHP, což zvyšuje bezpečnost.

Část 3: Omezení vstupních dat

post_max_size = 256 kB
max_input_vars = 100

Hackeři se mohou pokusit zaplavit zdroje webových aplikací zasláním hromadných dat, což může snížit rychlost přenosu a dostupné prostředky serveru. Účinek tohoto typu útoku lze minimalizovat snížením maximální velikosti dat POST a také omezením množství dat žádosti. Všimněte si, že „post_max_size“ také ovlivňuje maximální velikost nahrávání souborů; Pokud má vaše aplikace možnosti nahrávání souborů, ujistěte se, že hodnota tohoto nastavení je alespoň tak velká jako „upload_max_filesize“.

Část 4: Zpracování chyb

display_errors = 0
display_startup_errors = 0

Chybové zprávy by se nikdy neměly zobrazovat koncovému uživateli, protože tyto zprávy často obsahují podrobné informace o kódu aplikace a serveru. Tyto informace by mohly být potenciálně použity k pomoci hackerům. Místo toho protokolovat chybové zprávy do zabezpečeného souboru na serveru.

log_errors = 1
error_log = / home / johndoe / error_log

Chyby PHP by měly být protokolovány, aby se ladil aplikační kód a aby se prozkoumala možná zranitelnost. Pokud používáte správce souborů, jako je ten, který je součástí programu cPanel, pohodlné a bezpečné umístění protokolu chyb je přímo mimo webový kořenový adresář..

Část 5: Omezte přístup k souborům

open_basedir = "/ home / johndoe / public_html"

Open_basedir zajišťuje, že PHP může obsahovat soubory pouze z uvedených adresářů. To zvyšuje bezpečnost tím, že zabraňuje skriptům PHP v neúmyslném přístupu k zabezpečeným souborům mimo povolené cesty. Všimněte si, že musíte přidat každý adresář, který PHP potřebuje pro přístup k whitelistu, včetně dočasných adresářů pro upload souborů a relací (viz níže). Do seznamu můžete přidat více adresářů umístěním dvojtečky mezi jednotlivé adresáře. Například:

open_basedir = "/ home / johndoe / public_html: / var / lib / php / tmp_upload: / var / lib / php / session"

Část 6: Nahrávání souborů

file_uploads = 0

Pokud vaše aplikace neobsahuje funkce pro nahrávání souborů z počítačů uživatelů, je vhodné tuto funkci PHP úplně zakázat. To pomáhá zabránit hackerům v nahrávání skriptů, které by pak mohly být do aplikace vloženy.

file_uploads = 1
upload_max_filesize = 1M

Pokud vaše aplikace vyžaduje možnosti nahrávání souborů, udržujte „upload_max_filesize“ na co nejnižší hodnotě.

upload_tmp_dir = / var / lib / php / tmp_upload

Ve výchozím nastavení jsou dočasná nahrávání souborů umístěna do adresáře, do kterého mohou zapisovat všichni uživatelé systému. Místo by mělo být přepnuto do bezpečnějšího adresáře. Ujistěte se, že nové umístění adresáře není umístěno v kořenovém adresáři webu. Pokud používáte správce souborů, jako je ten, který je součástí cPanel, pak snadné a bezpečné umístění pro vytvoření adresáře pro upload je přímo mimo webový kořenový adresář (tj. Stejný adresář, ve kterém se nachází public_html). Dalším bezpečným umístěním je vytvoření adresáře v adresáři PHP v adresáři „/ var / lib“. Cesta závisí na operačním systému, tj. „/ Var / lib / php“ nebo „/ var / lib / php5“. Pokud existují omezení open_basedir, ujistěte se, že adresář dočasného nahrávání je zahrnut do whitelistu open_basedir..

Část 7: Zabezpečení relace

Relace se používají k uchování informací ve více požadavcích na jednotlivé uživatele. Skutečné informace jsou uloženy na serveru a k ověření uživatelů se používá cookie (nebo méně bezpečně data požadavku HTTP) obsahující ID relace. Relace se používají pro účely, včetně autentizace do webové aplikace, což je jeden z důvodů, proč je její bezpečnost tak důležitá. Následující nastavení lze aktualizovat, aby se snížilo riziko zachycení relace.

session.use_strict_mode = 1

Pokud prohlížeč odešle dříve neinicializované ID, vytvořte nové ID relace. To pomáhá zabránit útoku zvanému fixace relace.

session.cookie_httponly = 1

Povolit přístup k souboru cookie relace pouze z požadavku HTTP a nikoli z jiných zdrojů, jako je JavaScript. To pomáhá zabránit útoku zvanému XSS útok.

session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0

ID relace uložte do souboru cookie namísto jeho odeslání jako parametru adresy URL. To pomáhá udržovat bezpečnou relaci uživatele tím, že zabraňuje útokům na opravu relace.

session.name = custom_session_id

Cookies ukládají své informace ve formátu klíč-hodnota. Je vhodné aktualizovat výchozí název klíče souboru cookie, který ukládá ID relace. Aktualizujte „custom_session_id“ vlastní hodnotou.

session.cookie_secure = 1

Pokud vaše webová aplikace běží z důvodu zabezpečení protokolem HTTPS, povolte toto nastavení, aby vynucily přístup k souborům cookie obsahujícím ID relace pouze prostřednictvím zabezpečeného připojení..

session.referer_check = example.com

Zkontrolujte, odkud žádost přišla, a určete, zda povolit přístup k datům relace. Aktualizujte tuto hodnotu nastavení na název domény aplikace, abyste zabránili přístupu k informacím o relacích, pokud je skript načten z externího zdroje.

session.save_path = "/ var / lib / php / session"

Výchozí cestu uložení souboru relace lze zapisovat všichni uživatelé systému. Místo by mělo být přepnuto do bezpečnějšího adresáře. Ujistěte se, že nové umístění adresáře není umístěno v kořenovém adresáři webu. Pokud používáte správce souborů, jako je ten, který je součástí cPanel, pak snadné umístění pro vytvoření adresáře relace je přímo mimo webový kořenový adresář (tj. Stejný adresář, ve kterém se nachází public_html). Dalším bezpečným umístěním je vytvoření adresáře v adresáři PHP v adresáři „/ var / lib“. Cesta závisí na operačním systému, tj. „/ Var / lib / php“ nebo „/ var / lib / php5“. Pokud existují omezení open_basedir, ujistěte se, že cesta uložení relace je zahrnuta do whitelistu open_basedir..

session.hash_function = sha512

SHA-512 je bezpečnější hashovací algoritmus pro vytváření ID relací ve srovnání s výchozí hashovací funkcí MD5. Tento algoritmus je k dispozici v PHP verze 5.3+. Pokud používáte menší verzi PHP, použijte raději algoritmus hash SHA1. Chcete-li to provést, nastavte „session.hash_function = 1“.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

Zakázání těchto nastavení zajistí, že proměnné relace nelze globálně inicializovat, což zvyšuje bezpečnost.

Zakázat zranitelné funkce

disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, únik, poslouchat, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, systém, zvýraznit_soubor, zdroj, zobrazit_source posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, POSIX, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo, papež, curl_exec, curl_multi_exec, parse_ini_file, allow_url_fopen, lvc, chcp

Několik funkcí PHP může poskytnout otevřené dveře hackerům webových aplikací, pokud nejsou používány opatrně. Například odeslání nesprávně validovaných vstupů do mnoha z těchto funkcí má za následek bezpečnostní problémy. Úplné vypnutí těchto funkcí je jednoduchým a efektivním řešením problému. Pokud však vaše aplikace vyžaduje některou z uvedených funkcí, odeberte ji ze seznamu.

Mýdlová cache

soap.wsdl_cache_dir = / var / lib / php / soap_cache

Stejně jako v případě nahrávání souborů a dat relace by data mezipaměti SOAP neměla být uložena ve výchozím dočasném adresáři. Nastavte si bezpečnější adresář.

Restartujte PHP

Po provedení změn v souboru php.ini budete muset restartovat webový server. WHM poskytuje tlačítko pro restartování serveru po úpravě souboru. Pokud nepoužíváte ovládací panel jako WHM, budete muset restartovat server pomocí příkazového řádku. Pro Apache zadejte příkaz „sudo apachectl graceful“ a stiskněte Enter.

Závěr

Aktualizací těchto nastavení je prostředí PHP dále chráněno před pokusy o hackování. Zabezpečení prostředí PHP před hackery je důležitým krokem k ochraně reputace firmy. Mějte však na paměti, že špatně kódovaná aplikace je vždy otevřenými dveřmi pro hackery, a to i v případě tvrdší konfigurace PHP. Začněte tím, že vaše konfigurace zůstane zpevněná, a odtud vždy zapište zabezpečený kód aplikace.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map