Trumpai: žiniatinklio serverių IT inventorius yra visų svetainių, portalų, parduotuvių ir serverių sąrašas su duomenimis, kurių iškart prireikia gavus saugumo pranešimą: kur tai veikia, su kokia PHP versija ir veikimo būdu, kokia programa, kas atsakingas ir kokie duomenys būtų paveikti. Be šio sąrašo bet kokia reakcija prasideda paieška. Su juo palyginimas gavus pranešimą, kaip PHP2Shell, trunka minutes, o ne dienas.
Pirmas klausimas buvo: kur pas mus apskritai veikia PHP?
Kai PHP projektas 2026-10-21 paskelbė pataisas, o BSI rekomendavo nedelsiant veikti, nurodymas buvo aiškus: atnaujinti PHP, iš naujo paleisti visus procesus. Daugeliui įmonių pirmas žingsnis vis dėlto buvo ne atnaujinimas, o inventorizacija. Pagrindinė svetainė buvo žinoma. O prekybininkų portalas? Karjeros puslapis pas kitą teikėją? Prieš trejus metus vykdytos kampanijos nukreipimo puslapis? Vidinė wiki?
Specializuota spauda ir matavimo tarnybos parodė problemos mastą. Palo Alto Networks (Unit 42) suskaičiavo daugiau nei 22,6 mln. viešai pasiekiamų, potencialiai pažeidžiamų instancijų. Tarp jų turbūt daug sistemų, apie kurias jų eksploatuotojai tiesiog nebeprisimena.
Ką įrašyti į žiniatinklio serverių IT inventorių
Tinkamas inventorius yra lentelė, kurioje kiekvienai svetainei ar programai skirta po eilutę. Šie stulpeliai pasiteisino:
| Stulpelis | Pavyzdys | Kam |
|---|---|---|
| Adresas | shop.pavyzdys.lt | vienareikšmis priskyrimas |
| Paskirtis ir svarba | internetinė parduotuvė, kritinė pajamoms | prioritetų nustatymas |
| Hostingo teikėjas ar vieta | valdomas serveris pas teikėją X | kam skambinti |
| Serveris ir operacinė sistema | vServer, Debian | atnaujinimo kelias, saugumo šaltiniai |
| Žiniatinklio serveris ir PHP veikimo būdas | Nginx su PHP-FPM | rizika, pvz., mod_php |
| PHP versija ir paketo būsena | 8.3, paketas su data | palyginimas su pranešimais |
| Programa ir versija | Shopware, papildiniai | gamintojų pranešimai |
| Atsakingas viduje / išorėje | IT vadovas / agentūra Y | kas veikia |
| Tvarkomi duomenys | klientų paskyros, užsakymai | pranešimo pareigos, skubumas |
| Atsarginės kopijos | kasdien, išorėje, paskutinį kartą išbandyta … | atkūrimas |
| Paskutinės pataisos įrodymas | data ir dokumentas | įrodymas trečiosioms šalims |
Veikimo būdas nusipelno ypatingo dėmesio. Esant PHP2Shell, PHP komanda didžiausią riziką priskyrė Apache su mod_php. Kas žino, kurios sistemos taip eksploatuojamos, gali jomis užsiimti pirmiausia. Paketo būsenos stulpelis svarbus, nes po atgalinių pataisų perkėlimų (backport) rodomas versijos numeris dažnai nesikeičia; nuorodų rasite skyriuje Kaip teisingai patikrinti PHP versiją ir pataisų būseną.
Rasti užmirštas sistemas: kaip elgtis
Žinomos sistemos įrašomos greitai. Tikrasis darbas yra nežinomos. Šie šaltiniai padeda jas surasti:
- Domenai ir DNS: peržiūrėkite visus įmonės domenus ir jų subdomenus. Kiekvienas įrašas, rodantis į žiniatinklio serverį, yra kandidatas.
- Sąskaitos: buhalterija žino kiekvieną hostingo teikėją, registratorių ir debesijos paslaugų teikėją, kuris gauna pinigų. Tai dažnai pilniausias sąrašas.
- Agentūros ir skyriai: rinkodara, pardavimai ir personalas svetaines mielai užsako tiesiogiai. Pasiteiraukite.
- Žinomi serveriai: kiekviename serveryje konfigūracija parodo, kurias svetaines jis iš tiesų pateikia.
- Prietaisai su žiniatinklio sąsaja: NAS, maršrutizatoriai ir įrenginiai kartais turi savo PHP, žr. PHP NAS, maršrutizatoriuose ir įrenginiuose.
4 žingsniui Linux serveriuose padeda keletas tik skaitančių komandų. Jos parodo sukonfigūruotas svetaines, PHP tarnybas ir FPM baseinus:
# Sukonfigūruotos svetainės (Apache arba Nginx)
apachectl -S 2>/dev/null
nginx -T 2>/dev/null | grep -E "^\s*server_name" | sort -u
# Veikiančios PHP tarnybos ir procesai
systemctl list-units --type=service | grep -iE "php|fpm|lsws|litespeed"
ps -eo user,cmd | grep -E "php-fpm|php-cgi|lsphp" | grep -v grep | sort | uniq -c
# FPM baseinai Debian ir Ubuntu sistemose
ls /etc/php/*/fpm/pool.d/ 2>/dev/null
Jei viename serveryje lygiagrečiai veikia kelios PHP versijos, kiekviena turi būti sąraše. Kiekvieną reikia atnaujinti ir paleisti iš naujo atskirai.
Įrašykite ir sistemas, kurios iš tikrųjų turėtų būti išjungtos. Būtent jos dažnai vis dar veikia, jau daug metų neatnaujintos ir pamirštamos. Įrašas „išjungti iki …“ palieka užduotį matomą.
Inventorių išlaikyti aktualų
Inventorius yra toks geras, kiek paskutinis jo atnaujinimas. Gyvą jį išlaiko trys taisyklės. Pirma: atsakingas vienas asmuo, ir jam pranešama apie kiekvieną naują svetainę, perkėlimą ir išjungimą, net jei darbą atlieka agentūra. Antra: kartą per ketvirtį sąrašas sulyginamas su DNS, sąskaitomis ir serverių konfigūracija. Trečia: inventorius yra avarinio plano dalis ir pasiekiamas ir už savo IT ribų, pavyzdžiui, atspausdintas.
Įmonėms su daug išsklaidytų sistemų, pavyzdžiui, prekybininkų portalais, konfigūratoriais ir tiekėjų prieigomis, tipines vietas aprašo IT sauga vidutinėms įmonėms ir pramonei. Kaip inventorius įtraukiamas į avarinį planą, aprašyta skyriuje Žiniatinklio serverių IT avarinio plano sudarymas.
Dažnos žiniatinklio serverių inventoriaus klaidos
Daug inventorių egzistuoja, bet kritiniu atveju nepadeda. Priežastys panašios:
- Tik serveriai, be svetainių: sąraše nurodytos mašinos, bet ne tai, kurios svetainės jose veikia ir kas už jas atsako pagal turinį. Atsiradus spragai niekas nežino, kuris skyrius paveiktas.
- Versija vietoj paketo būsenos: „PHP 8.3“ po PHP2Shell mažai ką pasako. Tik paketo būsena ir data parodo, ar pataisa įtraukta.
- Trūksta išorinių sistemų: tai, kas veikia pas agentūrą ar platformos paslaugų teikėją, praleidžiama, nes „ten nesame atsakingi“. Atsakomybė už duomenis vis tiek lieka įmonėje.
- Nėra kontaktinių asmenų: įrašas be atsakingos tarnybos vardo ir telefono numerio kritiniu atveju praranda laiką.
- Vienkartinė akcija: inventorius sudaromas krizės savaitę ir daugiau niekada neatidaromas. Po metų nemaža dalis duomenų nebeatitinka tikrovės.
Kas išvengia šių penkių dalykų, kitą kartą gavęs pranešimą turės sąrašą, su kuriuo tikrai galima dirbti.
Kaip PHP SOS padeda konkrečiai?
- Kartu su jumis registruojame visas svetaines ir serverius, taip pat užmirštus, per DNS, sąskaitas, paslaugų teikėjus ir serverių konfigūraciją.
- Kiekvienai sistemai nustatome veikimo būdą, PHP versiją ir faktinę paketo būseną.
- Sistemas prioritetizuojame pagal pasiekiamumą, duomenis ir veikimo būdą ir pasakome, kur pirmiausia reikia veikti.
- Kur PHP2Shell dar atviras, spragą uždarome per PHP2Shell skubią pagalbą ir įrodymą įrašome į inventorių.
Išvada: inventorius yra nepastebimiausia ir kartu veiksmingiausia saugumo priemonė. Kas žino, kas veikia, gavęs kitą pranešimą gali veikti iškart, o ne pirmiausia ieškoti.
Dažni klausimai
Kokių duomenų žiniatinklio serverių inventoriui reikia bent jau?
Svetainės adreso, serverio ar hostingo teikėjo, PHP veikimo būdo, PHP versijos su paketo būsena, programos su versija, atsakingo asmens įmonėje ir už jos ribų, tvarkomų duomenų rūšies ir atsarginių kopijų saugojimo vietos. Su šiais duomenimis kiekvieną naują saugumo pranešimą galima greitai palyginti.
Kaip rasti svetaines, apie kurias niekas nebežino?
Keliais keliais vienu metu: domenų valdymas ir DNS zonos, hostingo teikėjų ir registratorių sąskaitos, klausimai agentūroms ir skyriams bei žinomų serverių konfigūracija. Senieji kampanijų puslapiai, bandomosios sistemos ir subdomenai taip dažniausiai išryškėja.
Kas turėtų prižiūrėti inventorių?
Įvardytas asmuo, dažniausiai IT skyriuje arba IT vadovas. Svarbu, kad čia būtų pranešama apie kiekvieną svetainių ir serverių pakeitimą, net jei jį inicijavo skyrius ar agentūra.
Ar pakanka lentelės, ar reikia programinės įrangos?
Daugumai vidutinių įmonių pakanka gerai prižiūrimos lentelės. Programinė įranga verta, kai norima automatiškai registruoti daug sistemų. Lemia aktualumas, o ne įrankis.