Kuidas PHP-d kõvemaks muuta, et turvalisust paremaks muuta

PHP on paljude saitide seas laialt kasutusel & rakendusi, kuid turvalisuse tagamiseks tuleks seda karastada. Siin on mõned täpsemad näpunäited PHP-konfiguratsioonifaili turvamiseks.


Kuidas PHP-d kõvendada?

PHP on vaieldamatult tänapäeval kõige populaarsem veebi taustaprogrammeerimiskeel. Praeguseks üle 80% taustprogrammiga saitidest juurutada PHP. WordPress, Joomla ja Drupal toetavad seda kõike. Kahjuks on PHP-st saanud häkkimiskatsete populaarne sihtmärk, mistõttu on selle konfiguratsiooni tagamine kriitiline. Järgige neid lihtsaid samme oma PHP konfiguratsiooni tugevdamiseks ja kaitsmiseks haavatavate haavatavuste eest.

Leidke PHP konfiguratsioonifail

PHP konfiguratsioonifaili nimi on php.ini, mida peate redigeerima. Faili asukoht sõltub teie hostiettevõttest ja serveritüübist.

Redigeerimine koos virtuaalserveriga

Kui te pole kindel, kus teie php.ini fail asub, võtke ühendust oma hostiteenuse pakkujaga. Mõned pakkujad nõuavad, et PHP-sätted paigutataks veebijuure faili “.htaccess” alla. Sel juhul tuleks PHP-sätted lisada ühe rea kohta vormingus “php_value Name value”. Pidage meeles, et teie hostiteenuse pakkuja võib takistada teatud seadete muutmist.

Redigeerimine VPS-i või spetsiaalse serveriga

Veebihalduri haldur (WHM) lihtsustab PHP konfiguratsioonifaili redigeerimise protsessi, pakkudes lihtsat kasutajaliidest. Lihtsalt leidke WHM-is jaotis “Teenuse konfiguratsioon” ja klõpsake nuppu “PHP konfiguratsiooniredaktor”. Valige kuvatud lehel „Advanced Mode“.

PHP konfiguratsiooniredaktor

Kui te ei kasuta juhtpaneeli, näiteks WHM, peate otse avama ja redigeerima php.ini. Php.ini asukoht sõltub serveri opsüsteemist. Paljud Linuxi süsteemid paigutavad faili teele /etc/php.ini. Selle asukoha saate kinnitada käsurealt. Alustuseks logige serverisse sisse SSH kaudu (juhiste saamiseks pöörduge oma hostiteenuse pakkuja poole). Pärast ühenduse loomist sisestage käsk “php –ini” ja vajutage sisestusklahvi. Otsige üles tagastatud rida pealkirjaga “Laaditud konfiguratsioonifail” ja pange tähele php.ini faili asukohta.

Saate php.ini avada ja redigeerida käsureal töötava tekstiredaktoriga, näiteks Linuxi jaoks nano. Sisestage lihtsalt “nano /path/to/php.ini” ja vajutage sisestusklahvi.
Nano Linuxi jaoks

php.ini struktuur

Php.ini-siseselt paigutatakse iga säte oma reale vormingus “setname = settingvalue”. Kõik semikooloniga algavad read on kommentaar, nii et ärge värskendage ühtegi neist ridadest.

Muutke konfiguratsioonisätteid

Allpool on loetelu seadetest, mis tuleks turvalisuse parandamiseks üle vaadata ja värskendada. Seadistused on vastavalt nende eesmärgile jagatud mitmeks osaks allpool.

1. jagu: Kaugühendused

luba_url_fopen = 0
allow_url_include = 0

Ärge lubage fopen-ümbristel avada kaug-URL-e. Kaugsisu ei saa alati usaldada; Nende võimaluste keelamine tagab, et fopen-ümbrised saavad laadida ainult kohalikku sisu.

2. jagu: Kestusaja sätted

max_input_time = 30
max_execution_time = 30

Piirake sisendite töötlemiseks lubatud maksimaalset aega ja maksimaalset PHP-skripti käitamise aega. Siin seatakse mõlemad sätted 30-sekundilisele piirile. See tagab, et juhul kui skript satub ohtu, ei loe see sisendeid ega tööta pikema aja jooksul. Hästi kodeeritud skripti käivitamiseks ei tohiks kuluda rohkem kui 30 sekundit.

mälu_piirang = 8 miljonit

Veenduge, et PHP-skript ei kasuta kunagi rohkem kui 8 MB mälu. Kui skript on rikutud, piirab see säte skripti kasutatava mälumahu tõhusust.

register_globals = väljas

Selle sätte keelamine keelab päringu andmete automaatse salvestamise muutujana. Globaalsete muutujate registreerimine tekitab mitmeid probleeme; üks näide on see, et keskkonnamuutujaid saab hõlpsasti muuta. Nende probleemide vältimiseks veenduge, et see säte oleks välja lülitatud.

paljastama_php = 0

Vaikimisi on nii PHP olemasolu kui ka selle versiooninumber avatud HTTP vastuste osana. Kuna see annab serverist tarbetu ülevaate, on soovitatav see välja lülitada.

cgi.force_redirect = 1

Veenduge, et PHP-d saaks käivitada ainult veebiserveri ümbersuunamise reegli kaudu. See hoiab ära PHP otse kutsumise, mis parandab turvalisust.

3. jagu: sisendandmete piirangud

post_max_size = 256K
max_input_vars = 100

Häkkerid võivad proovida veebirakenduste ressursse üleujutada, saates sinna massiandmeid, mis võib vähendada edastuskiirust ja saadaolevaid serveriressursse. Seda tüüpi rünnaku mõju saab minimeerida, vähendades POST-andmete maksimaalset suurust ja piirates ka päringuandmete hulka. Pange tähele, et post_max_size mõjutab ka failide üleslaadimise maksimaalset suurust; kui teie rakendusel on failide üleslaadimisvõimalused, siis veenduge, et selle sätte väärtus oleks vähemalt sama suur kui „upload_max_filesize”.

4. jagu: Vigade käsitlemine

kuva_vead = 0
display_startup_errors = 0

Tõrketeateid ei tohiks kunagi lõppkasutajale kuvada, kuna sõnumid sisaldavad sageli üksikasjalikku teavet rakenduse koodi ja serveri kohta. Seda teavet võib potentsiaalselt kasutada häkkerite abistamiseks. Selle asemel logige tõrketeated serverisse turvalisse faili.

log_errors = 1
error_log = / kodu / johndoe / error_log

Rakenduskoodi silumiseks ja võimalike turvaaukude uurimiseks tuleks logida PHP vead. Kui kasutate cPaneliga kaasasolevat failihaldurit, asub vea logi mugav ja turvaline asukoht otse veebijuurist.

5. jagu: failidele juurdepääsu piiramine

avatud_basedir = "/ kodu / johndoe / avalik_html"

Open_basedir tagab, et PHP võib sisaldada faile ainult loetletud kataloogidest. See parandab turvalisust, takistades PHP-skriptidel tahtmatult juurdepääsu turvalistele failidele väljaspool lubatud nimekirja kantud teid. Pange tähele, et peate valgesse nimekirja lisama kõik kataloogid, mida PHP vajab, sealhulgas ajutised failide üleslaadimis- ja seansikataloogid (vt allpool). Saate loendisse lisada mitu kataloogi, pannes koolide iga kataloogi vahele. Näiteks:

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

6. jagu: failide üleslaadimine

faili üleslaadimine = 0

Kui teie rakendus ei sisalda kasutajate arvutitest failide üleslaadimise funktsioone, on soovitatav see PHP-funktsioon täielikult keelata. See aitab vältida häkkerite skriptide üleslaadimist, mis võidakse seejärel rakendusse süstida.

faili üleslaadimine = 1
upload_max_filesize = 1M

Kui teie rakendus nõuab failide üleslaadimisvõimalusi, hoidke „upload_max_filesize” võimalikult väikest väärtust.

upload_tmp_dir = / var / lib / php / tmp_upload

Vaikimisi paigutatakse ajutised failide üleslaadimised kataloogi, mida saavad kirjutada kõik süsteemi kasutajad. Asukoht tuleks lülitada turvalisemasse kataloogi. Veenduge, et uus kataloog ei asuks veebijuuril. Kui kasutate cPaneliga kaasasolevat failihaldurit, asub üleslaadimiskataloogi loomiseks lihtne ja turvaline koht otse veebijuurist (st sama kataloog, milles asub public_html). Teine turvaline koht on luua kataloog PHP kataloogis kataloogis / var / lib. Tee sõltub opsüsteemist, st “/ var / lib / php” või “/ var / lib / php5”. Kui teil on kehtivad open_basedir piirangud, siis veenduge, et ajutine üleslaadimiskataloog sisalduks avatud loendis lubatud loendis.

7. jagu: Seansi turvalisus

Seansse kasutatakse teabe säilitamiseks üksikute kasutajate mitme päringu korral. Tegelik teave salvestatakse serverisse ja kasutajate kinnitamiseks kasutatakse küpsist (või vähem turvaliselt HTTP päringu andmeid), mis sisaldab seansi ID-d. Sessioone kasutatakse muu hulgas veebirakenduste autentimiseks, mis on üks põhjus, miks selle turvalisus on nii oluline. Seansi pealtkuulamise riski vähendamiseks saab värskendada järgmisi sätteid.

session.use_strict_mode = 1

Kui brauser saadab varem initsialiseerimata ID, looge uus seansi ID. See aitab vältida rünnakut, mida nimetatakse seansi fikseerimiseks.

session.cookie_httponly = 1

Luba seansiküpsisel ligipääs ainult HTTP-päringule, mitte muudest allikatest, näiteks JavaScripti kaudu. See aitab vältida rünnakut, mida nimetatakse XSS-rünnakuks.

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

Salvestage sessiooni ID küpsisesse, selle asemel, et saata seda URL-i parameetrina. See aitab hoida kasutaja sessiooni turvalisena, vältides seansi fikseerimise rünnakuid.

session.name = custom_session_id

Küpsised salvestavad oma teabe võtmeväärtuse vormingus. Soovitav on värskendada seansi ID-d salvestava küpsise vaikenumbrit. Uuendage „custom_session_id” kohandatud väärtusega.

session.cookie_secure = 1

Kui teie veebirakendus töötab turvalisuse tagamiseks üle HTTPS-protokolli, lubage see säte, et sundida seansi ID-sid sisaldavaid küpsiseid kasutama ainult turvalise ühenduse kaudu.

session.referer_check = example.com

Kontrollige, kust päring tuli, et otsustada, kas lubada juurdepääsu seansi andmetele. Värskendage seda sätte väärtust oma rakenduse domeeninimele, et vältida seansiteabe juurdepääsu, kui skript laaditakse välisest allikast.

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

Seansifaili vaikimisi salvestamise teed saavad kirjutada kõik süsteemi kasutajad. Asukoht tuleks lülitada turvalisemasse kataloogi. Veenduge, et uus kataloog ei asuks veebijuuril. Kui kasutate failihaldurit, näiteks sellist, mis on lisatud cPanelisse, on seansi kataloogi loomiseks lihtne asukoht otse veebijuurist (st sama kataloog, milles asub public_html). Teine turvaline koht on luua kataloog PHP kataloogis kataloogis / var / lib. Tee sõltub opsüsteemist, st “/ var / lib / php” või “/ var / lib / php5”. Kui teil on kehtivad open_basedir piirangud, siis veenduge, et seansi salvestamise tee oleks lisatud open_basedir valgesse nimekirja.

session.hash_function = sha512

SHA-512 on turvalisem räsialgoritm seansi ID-de loomiseks, võrreldes vaike MD5 räsifunktsiooniga. See algoritm on saadaval PHP versioonis 5.3+. Kui kasutate PHP väiksemat versiooni, kasutage selle asemel SHA1 räsialgoritmi. Selleks määrake “session.hash_function = 1”.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

Nende sätete keelamine tagab, et seansi muutujaid ei saa globaalselt initsialiseerida, mis parandab turvalisust.

Keela haavatavad funktsioonid

invalid_functions = ini_set, php_uname, getmyuid, getmypid, passthru, lekitama, kuulama, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, esiletõstmise_fail, allikas, show_sourge_postiid, postived, fpaththru, 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, popen, curl_exec, curl_multi_exec, parse_ini_file, lubama_url_fopen, lubama_lülitama, lubama_lülitama, tsenderdama, tsenderdama, tsentrima

Mitmed PHP funktsioonid võivad pakkuda veebirakenduste häkkimiseks avatud uksi, kui neid ei kasutata hoolikalt. Näiteks valesti kinnitatud sisendite saatmine paljudele neist funktsioonidest põhjustab turvaprobleeme. Nende funktsioonide täielik keelamine on probleemile lihtne ja tõhus lahendus. Kui teie rakendus vajab mõnda loetletud funktsioonidest, siis eemaldage see loendist.

Seebi vahemälu

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

Nagu failide üleslaadimise ja seansiandmete puhul, ei tohiks ka SOAP-vahemälu andmeid ajutises vaikekataloogis hoida. Valige see turvalisemaks kataloogiks.

Taaskäivitage PHP

Pärast php.ini-failis muudatuste tegemist peate veebiserveri taaskäivitama. WHM pakub nuppu pärast faili redigeerimist serveri taaskäivitamiseks. Kui te ei kasuta juhtpaneeli, näiteks WHM, peate oma serveri käsurealt taaskäivitama. Apache jaoks sisestage käsk “sudo apachectl graceful” ja vajutage sisestusklahvi.

Järeldus

Nende sätete värskendamise kaudu on teie PHP keskkond veelgi kaitstud häkkimiskatsete eest. Teie PHP keskkonna turvamine häkkerite eest on oluline samm teie ettevõtte maine kaitsmisel. Pidage siiski meeles, et halvasti kodeeritud rakendus on häkkide jaoks alati avatud uks, isegi karastatud PHP konfiguratsiooni korral. Alustuseks hoidke oma konfiguratsioon kõvaks ja kirjutage sealt alati turvaline rakenduskood.

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