Īsi: kas vēlas nostiprināt serveri PHP videi, gādā, lai viena ievainojamība neatvērtu visu serveri. Mēs vietnes nodalām cita no citas, droši iestatām PHP un tīmekļa serveri, ierobežojam tiesības un piekļuves un dokumentējam katru izmaiņu. Tā kaitējums paliek mazāks, ja tomēr kaut kas notiek.
Kāpēc nostiprināšana pēc PHP2Shell kļuvusi svarīgāka
PHP2Shell parādīja, cik ātri ievainojamība pašā PHP kļūst par problēmu visām vietnēm serverī. Ar CVE-2026-109618 un CVE-2026-109619 uzbrucēji var izpildīt kodu bez pieteikšanās. Ielāps šīs durvis aizver. Nostiprināšana atbild uz citu jautājumu: ko var izdarīt tas, kurš tomēr iekļūst, izmantojot šo vai nākamo ievainojamību?
Nenostiprinātā serverī bieži visas vietnes darbojas ar vienu un to pašu lietotāju, PHP drīkst izpildīt sistēmas komandas, un piekļuves dati ir nolasāmi visiem procesiem. Ielaušanās mazā blakusvietnē tad sniedzas līdz pat tiešsaistes veikalam. Laba nostiprināšana šīs jomas nodala. Tā nav vienreizēja darbība, bet pamatstāvoklis, kas jāsaglabā katrai jaunai vietnei un katrai versijas maiņai.
Servera nostiprināšana PHP videi: ko konkrēti pielāgojam
Katras vietnes izolācija
Katra vietne saņem savu sistēmas lietotāju un savu PHP-FPM pūlu. Ar open_basedir un atbilstošām failu tiesībām lietojumprogramma redz tikai savu direktoriju. Vairāk lasiet sadaļā open_basedir un izolācija katrai vietnei.
Droša PHP konfigurācija
Mēs iestatām php.ini un pūla konfigurāciju tā, lai lietojumprogrammas drošībai svarīgās vērtības nevarētu pārrakstīt pašas. Fragments, kā tas var izskatīties FPM pūlā:
; vērtības FPM pūlā noteikt stingri, ar ini_set() nemaināmas
php_admin_flag[expose_php] = off
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[open_basedir] = /var/www/kunde1/:/tmp/
php_admin_flag[session.upload_progress.enabled] = off
php_admin_flag[allow_url_include] = off
Kuras funkcijas papildus var bloķēt, atkarīgs no lietojumprogrammas. Norādes atradīsiet sadaļās php.ini droša konfigurēšana un disable_functions pareiza lietošana.
Failu tiesības un rakstīšanas piekļuve
Tīmekļa serveris drīkst rakstīt tikai tur, kur tas nepieciešams, piemēram, augšupielāžu mapē. Augšupielāžu direktorijos PHP izpilde tiek novērsta. Programmas kods pieder citam lietotājam nekā tam, ar kuru darbojas PHP. Principus izskaidro failu tiesības tīmekļa serverī.
Piekļuves, pakalpojumi un žurnāli
SSH tikai ar atslēgu, administratora saskarnes ar divu faktoru pieteikšanos, nevajadzīgi pakalpojumi un porti slēgti. Žurnāli tiek glabāti un nodrošināti tā, lai pēc incidenta tie vēl būtu pieejami. Rezerves kopijas pārbaudām uz atjaunojamību.
Tīmekļa serveris un drošības galvenes
Arī pats tīmekļa serveris ir nostiprināšanas daļa: paslēpt versiju norādes, izslēgt direktoriju sarakstus, bloķēt piekļuvi konfigurācijas, rezerves kopiju un versiju pārvaldības failiem un papildus nodrošināt administratora sadaļas, piemēram, ar IP atļaujām. Drošības galvenes, piemēram, Content-Security-Policy vai HSTS, aizsargā jūsu vietnes apmeklētājus pārlūkprogrammā.
Ko uzskaites laikā bieži atrodam
Daudzas vājās vietas atkārtojas no servera uz serveri. Tipiski ir vairākas vietnes zem kopīga lietotāja, publiski sasniedzamas datubāzu saskarnes, vecas testa instalācijas apakšmapēs, aizmirstas PHP versijas blakus aktuālajai un rezerves kopijas, kas atrodas tīmekļa direktorijā un ir lejupielādējamas. Bieži nav arī pieteikšanās reģistrēšanas, vai žurnāli tiek dzēsti pēc dažām dienām.
Neviens no šiem punktiem atsevišķi nav sensacionāls. Taču kopā tie nosaka, vai ielaušanās paliek ierobežota vienā vietnē vai skar visu serveri.
Kā PHP SOS palīdz konkrēti?
- Uzskaite: Mēs apkopojam operētājsistēmu, tīmekļa serveri, PHP versijas, vietnes, lietotājus, atvērtos pakalpojumus un esošās rezerves kopijas.
- Pasākumu plāns: Jūs saņemat prioritizētu sarakstu ar darba apjomu un iespējamo ietekmi katram punktam. Jūs izlemjat, kas tiek ieviests.
- Ieviešana pa soļiem: Mēs konfigurācijas mainām pēc saskaņošanas, pēc katra soļa pārbaudām vietnes un fiksējam, kā katru izmaiņu var atcelt.
- Kontrole: Pēc ieviešanas pārbaudām iedarbību, piemēram, vai vietne tiešām vairs nevar nolasīt svešus direktorijus.
- Nodošana: Jūs saņemat jaunā stāvokļa dokumentāciju, ko var saprast arī jūsu hostinga sniedzējs vai aģentūra.
Ko jūs saņemat un ko mums vajag
Jūs saņemat nostiprināšanas ziņojumu ar sākotnējo situāciju, ieviestajiem pasākumiem, apzināti atstātajiem punktiem ar pamatojumu un ieteikumu regulārai kontrolei. Izmaiņas konfigurācijas failos ir izsekojami dokumentētas.
No jums mums vajag:
- Root vai administratora piekļuvi serverim, paneļu gadījumā papildus paneļa piekļuvi
- lietojumprogrammu sarakstu un to īpatnības, piemēram, augšupielādes, saskarnes, cron uzdevumus
- tehnisku kontaktpersonu, kas pēc izmaiņām var apstiprināt funkcijas
- apkopes logu pārstartēšanai
- aktuālu rezerves kopiju vai uzdevumu to iepriekš izveidot
Ko mēs nesolām
Nostiprināšana serveri nepadara neuzlaužamu. Tā samazina uzbrukuma virsmu un ierobežo bojājumus, bet neaizstāj ne atjauninājumus, ne uzraudzību. Neielāpota PHP versija paliek ievainojama neatkarīgi no tā, cik labi iestatīts pārējais. Tāpēc nostiprināšanu savienojam ar PHP ielāpu pakalpojumu un pēc tam iesakām pastāvīgu apkalpošanu ar drošības apkopes līgumu.
Koplietošanas hostingā daudz ko nevar iestatīt, jo konfigurāciju nosaka hostinga sniedzējs. Tad parādām, kas jūsu pakotnes ietvaros ir iespējams un kur būtu lietderīgi pāriet uz savu vai pārvaldītu serveri.
Biežāk uzdotie jautājumi
Ko nozīmē servera nostiprināšana?
Nostiprināšana nozīmē izslēgt vai ierobežot visu, kas darbībai nav nepieciešams. Tas ietver lieki darbojošos pakalpojumus, pārāk plašas tiesības, atvērtus portus un nedrošus noklusējuma iestatījumus. Mērķis ir panākt, lai viena kļūda uzreiz neatvērtu visu serveri.
Vai nostiprināšana būtu novērsusi PHP2Shell?
Nē, pret ievainojamību pašā PHP palīdz tikai ielāps. Taču nostiprināšana ierobežo to, ko uzbrucējs var panākt pēc sekmīgas ielaušanās, piemēram, vai viņš var piekļūt citām vietnēm vai piekļuves datiem.
Vai nostiprināšanas dēļ mana vietne nepārstās darboties?
Šāds risks pastāv, ja iestatījumi tiek mainīti bez pārbaudes. Mēs izmaiņas ieviešam pa soļiem, pēc katra soļa pārbaudām funkcijas un fiksējam, kā katru izmaiņu var atcelt.
Cik bieži nostiprināšana jāpārbauda?
Vēlākais pēc lielākiem atjauninājumiem, PHP versijas maiņas vai jaunām lietojumprogrammām serverī. Lietderīga ir regulāra kontrole pastāvīgās apkopes ietvaros.