L-aqwa Għajnuniet ta' Sigurtà ta' Twebbis tal-PHP għal Servers Linux


Mhuwiex brainier li PHP huwa wieħed mill-lingwi ta 'programmar ta' scripting server l-aktar użati. Jagħmel sens li attakkant isib diversi modi li bihom jista' jimmanipula PHP peress li ħafna drabi jkun imqabbad ma' MySQL u jippermetti aċċess għad-dejta privata tal-utenti tiegħek.

Bi kwalunkwe mezz, m'aħniex qed nippretendu li PHP huwa vulnerabbli jew għandu xi kwistjonijiet serji awtomatikament iżda rridu niżguraw li nirranġaw PHP b'tali mod li jista' jkun aktar robust minn qatt qabel.

1. Neħħi Moduli PHP bla bżonn

B'mod awtomatiku, ikollok sett ta 'moduli PHP li jistgħu jkunu ta' għajnuna f'diversi kompiti iżda xi moduli mhux meħtieġa jistgħu ma jkunux utli għal kull proġett. Biex telenka l-moduli PHP disponibbli, uża l-kmand mogħti:

$ php -m

Il-moduli jinsabu fid-direttorju /etc/php.d/ u jistgħu faċilment jibdlu d-direttorju attwali tagħna għal /etc/php.d/ billi jużaw il-kmand cd li ġej.

cd /etc/php.d/

Ir-raġuni għaliex qed nibdlu d-direttorju biex ineħħu l-moduli hija li l-moduli huma msemmijin b'mod pjuttost differenti fid-direttorju oriġinali. Issa, elenka l-moduli disponibbli bil-kmand mogħti:

$ ls

Pereżempju, ejja neħħi l-modulu curl billi tuża l-kmand mogħti:

$ sudo rm -r 20-curl.ini

2. Itfi Remote PHP Code Execution

F'ħafna każijiet, konnessjonijiet remoti ma jistgħux jiġu fdati. Billi jiskonnettjaw l-aċċess għal fopen wrappers, jistgħu jaċċessaw biss fajls lokali. Biex tiddiżattiva fopen, irridu niftħu l-fajl tal-konfigurazzjoni PHP billi nużaw il-kmand mogħti:

$ sudo nano /etc/php.ini

Issa, uża CRTL + w u ttajpja allow_url_fopen li se jniżżluna fuq linji speċifiċi minn fejn inkunu skonnettjati dawk l-għażliet.

allow_url_fopen=Off
allow_url_include=Off

Ladarba tkun lest il-bidliet, issalva l-fajl tal-konfigurazzjoni minn CTRL + O u agħfas Enter.

3. Itfi Tnixxija ta 'Informazzjoni PHP

Meta ma tkunx diżattivata, id-dinja tista' faċilment tidentifika liema verżjoni tal-PHP tintuża bħalissa mis-server tal-web tagħna. Dan jista 'ma jinstema' qisu xi ħaġa kbira iżda li l-attakkant ikun jaf il-verżjoni eżatta jista' jkun perikoluż.

$ sudo nano /etc/php.ini

Issa, ibdel in-nuqqasijiet għal \Off”.

expose_php=Off

4. Iddiżattiva Żbalji PHP

B'mod awtomatiku, kull żball tas-server tal-web tagħna huwa viżibbli għall-viżitaturi tagħna, inklużi l-attakkanti. Biex niżguraw li ħadd mill-iżbalji ma jkun viżibbli għal ħadd, irridu nagħmlu bidliet fil-fajl tal-konfigurazzjoni PHP tagħna.

$ sudo nano /etc/php.ini

U ibdel is-setting default tal-wiri ta' zkuk tal-iżbalji għal \Off.

display_errors = Of

Imma x'jiġri jekk int żviluppatur u jeħtieġ li jkollok zkuk ta 'żbalji biex tegħleb kwistjonijiet ta' żvilupp? Tinkwetax, hemm mod kif tikseb il-fajls log tiegħek billi sempliċement tagħmel bidla żgħira fl-istess fajl tal-konfigurazzjoni.

Irridu biss inabilitaw log_errors u nagħtu passaġġ għal error_log fejn se jinħażnu l-fajls log tagħna.

log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

5. Kontroll tar-Riżorsi PHP

Skontna, il-ġestjoni tar-riżorsi hija l-aktar parti kruċjali meta niżguraw PHP. Hawnhekk, se nallokaw ammont fiss ta 'ħin ta' eżekuzzjoni, ħin ta 'input, u limitu tal-memorja għalhekk jekk b'xi mod l-iskrittura tagħna tiġi kompromessa, l-eżekuzzjoni titwaqqaf wara ċertu żmien.

Għażilna 25 sekonda għall-eżekuzzjoni u l-ħin tad-dħul u 30MB ta 'limitu tal-memorja. Żgur li tista 'tippersonalizzaha skont il-bżonnijiet tiegħek.

max_execution_time = 25
max_input_time = 25
memory_limit = 30M

6. Irrestrinġi l-Aċċess għall-Fajl PHP

Biex nirrestrinġu l-aċċess għall-fajls, aħna se nippermettu open_basedir li se tiżgura li PHP jista 'jinkludi biss fajls mid-direttorji elenkati tagħna.

Importanti: Dan se jimblokka d-direttorji l-oħra kollha u jeħtieġ li nżidu direttorji importanti manwalment li jinkludi wkoll iż-żieda ta 'fajls temporanji u direttorji tas-sessjoni.

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

7. Ikkonfigura Uploads tal-Fajl PHP

Jekk l-applikazzjoni tiegħek ma teħtieġx li ttella’ fajls mill-aħħar tal-utent, dejjem huwa rakkomandat li tiddiżattiva t-tlugħ tal-fajls. Dan jipprevjeni lill-attakkanti jtellgħu skripts perikolużi li jistgħu jispiċċaw jagħmlu ħsara lill-applikazzjoni kollha fl-aħħar.

file_uploads = Off

Imma x'jiġri jekk l-applikazzjoni tiegħek tkun iddisinjata biex tikseb fajls mill-aħħar tal-utent? F'dak il-każ, trid tippermetti l-uploads tal-fajls iżda tipprova tnaqqas l-ispazju massimu u tnaqqas in-numru ta 'fajls massimi li jistgħu jittellgħu minn talba waħda.

file_uploads = On
upload_max_filesize = 1M
max_file_uploads = 1

Fil-PHP, b'mod awtomatiku, il-fajls temporanji jitqiegħdu f'direttorju li l-utenti kollha tas-sistema jistgħu jiktbu. Il-post default għandu jinbidel għal post aktar sigur u kun żgur li ma jinsabx fl-għerq tal-web.

Peress li użajna open_basedir, se nkunu qed nużaw l-istess post kif diġà daħħalna fil-lista bajda.

upload_tmp_dir = /var/lib/php/tmp_upload

8. Iddiżattiva Funzjonijiet PHP Perikolużi

PHP għandu diversi funzjonijiet attivati awtomatikament u jista 'jkun ta' għajnuna għal skopijiet ta 'żvilupp. Iżda ħafna funzjonijiet jistgħu jintużaw minn hackers biex jisfruttaw is-server tal-webs tagħna u d-diżattivazzjoni tagħhom se żżid saff ta 'sigurtà.

Għandna sett ta 'funzjonijiet b'diżabilità u kun żgur li kontroċċekkjahom qabel ma tagħmel bidliet fil-fajl tal-konfigurazzjoni.

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

9. Ibdel id-Direttorju tal-Cache tas-SAPUN

Hekk kif biddilna d-direttorju u s-sessjoni temp default, l-istess japplika għall-cache SOAP peress li m'għandux jiġi ssejvjat fid-direttorju default. Kun żgur li jiġi ffrankat f'post sigur.

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

10. Kontroll PHP POST Daqs

Billi nikkontrollaw id-daqs tal-POST, nistgħu niżguraw is-server tagħna minn hacker li jipprova jgħaqqad ir-riżorsi tas-server billi jibgħat fajls enormi. Dan isalvana minn ħabtiet tas-server mhux mixtieqa u ħin ta 'rispons bil-mod.

post_max_size=4M

11. Ipproteġi Konfigurazzjonijiet PHP

Filwaqt li tneħħi fajls mhux meħtieġa, ħafna drabi nneħħi xi fajls kruċjali jew saħansitra direttorji. Għalhekk irridu tweak is-settings b'tali mod li anke l-utenti ta 'l-għeruq ma jistgħux iħassruhom. Biex nagħmlu fajls u direttorji, se nkunu qed nużaw chattr b'bnadar differenti.

Ladarba tuża l-kmand mogħti, ma tistax aktar timmodifika fajl speċifiku jew tneħħih.

$ sudo chattr +i /etc/php.ini

Waqt li tipprova tneħħi fajl immutabbli, se turi żball li tgħid Operazzjoni mhux permessa.

$ sudo rm -r /etc/php.ini

Imma x'jiġri jekk trid tibqa' tikteb dawk il-fajls filwaqt li tagħmilhom immutabbli? Tista' faċilment tikseb dan billi tuża l-bandiera +a minflok +i.

$ sudo chattr +a /etc/php.ini

Jista 'jkun hemm xi każijiet fejn m'għadx għandek bżonn il-fajl tal-konfigurazzjoni l-antik u f'dak il-każ, irridu nnessettjaw l-attributi.

$ sudo chattr -i /etc/php.ini

Bl-istess mod, jekk mort bl-attributi +a fil-proċess li tagħmel il-fajls immutabbli, tista' treġġa' lura billi tuża l-kmand mogħti:

$ sudo chattr -a /etc/php.ini

12. Uża Ċertifikati SSL għal HTTPS

Illum il-ġurnata, kull browser modern bħal Google Chrome, Firefox, Opera, u oħrajn jirrakkomanda li tuża HTTPS għal servers tal-web. Billi l-HTTPS jipprovdi kanal ta’ aċċess sigur u kriptat għal siti mhux ta’ fiduċja, nistgħu nipprovdu esperjenza affidabbli lill-utenti tagħna.

Billi nżidu l-HTTPS, nistgħu nipproteġu kontra attakki XSS inkluż il-prevenzjoni tal-hackers biex jaqraw id-dejta trasportata bl-użu ta 'kodiċi.

Biex nippermettu HTTPS, aħna se ninstallaw u nużaw iċ-Ċertifikat SSL Let's Encrypt b'xejn fuq is-server.

$ sudo dnf install epel-release 
$ sudo dnf install certbot python3-certbot-apache mod_ssl
$ sudo certbot --apache -d domain.com   [For Apache]
$ sudo certbot --nginx -d domain.com    [For Nginx]

13. Aġġorna PHP Regolarment

Peress li hija lingwa open-source, tiġi mtaqqba kważi kuljum. Jista 'ma tantx jidher pass importanti iżda jista' jsalvak minn vulnerabbiltà kbira. Allura kun żgur li żżomm il-pakketti PHP tiegħek aġġornati li se jiffrankaw minn lottijiet ta 'vulnerabbiltajiet possibbli.

# yum update & yum upgrade    [On RHEL-based systems]
# apt update && apt upgrade   [On Debian-based systems]

Din kienet it-teħid tagħna dwar kif tista 'faċilment ittejjeb is-sigurtà tal-PHP fis-sistemi Linux. Matul dan it-tutorja, ippruvajna nagħmlu l-affarijiet sempliċi kemm nistgħu u jekk għad għandek xi dubji, jekk jogħġbok għarrafna fil-kummenti.