VBulletin novērojumi vai mēģinājumi saglabāt dinamisko saturu kešatmiņā. VBulletin novērojumi vai mēģinājumi saglabāt dinamisko saturu kešatmiņā Vbulletin dzīves ilgums

Jūs droši vien esat daudzkārt redzējis forumus vBulletin dzinējā. Forumi kā tādi vairs nav modē, taču vBulletin joprojām ir viens no populārākajiem dzinējiem. Tās jaunākajā (piektajā) versijā tika atrastas vairākas ievainojamības, kas var krietni sabojāt administratora dzīvi. Šajā rakstā es jums pastāstīšu, kā tie tiek izmantoti.

Pirmā problēma ir nepareiza lietotāja datu filtrēšana. Par to ziņoja neatkarīgs drošības pētnieks, kurš vēlējās palikt anonīms. Ievainojamība, lai gan tai ir daži ierobežojumi, ir saņēmusi kritisku statusu, jo tā ļauj nolasīt visus failus un izpildīt patvaļīgu kodu mērķa sistēmā.

Otro ievainojamību atklāja TRUEL IT pētnieki, un tā saņēma identifikatoru CVE-2017-17672. Tas ir saistīts ar datu deserializācijas funkcijām dzinējā, un uzbrucējs to var izmantot, lai dzēstu patvaļīgus failus sistēmā.

SecuriTeam programmas Beyond Security ietvaros ir publicēti pilni ziņojumi, kuros sīki aprakstīti abi jautājumi. Ir arī PoC ekspluatācijas, lai demonstrētu ievainojamības. Iziesim tam visam cauri secībā.

Preparāti

Kā serveri izmantoju WAMP izplatīšanu.

Lasīt failus, izpildīt komandas

Tātad pirmās ievainojamības iemesls ir nepareiza loģika, apstrādājot maršruta virknes parametru, kas ļauj uzbrucējam iekļaut diskā jebkuru failu, iekļaujot un izpildot tajā esošo PHP kodu.

Mūsu ceļš sākas ar pašu svarīgāko failu - index.php, kur notiek aplikācijas pamata inicializācija.

/index.php
48: $app = vB5_Frontend_Application::init("config.php"); ... 60: $maršrutēšana = $app->getRouter(); 61: $metode = $maršrutēšana->getAction(); 62: $veidne = $maršrutēšana->getTemplate(); 63: $klase = $maršrutēšana->getControllerClass();

Apskatīsim metodi vB5_Frontend_Application::init.

/includes/vb5/frontend/application.php
13: klase vB5_Frontend_Application paplašina vB5_ApplicationAbstract 14: ( 15: publiska statiskā funkcija init($configFile) 16: ( 17: parent::init($configFile); 18: 19: self::$instance = new vB5_Application(Frontend); self::$instance->router = new vB5_Frontend_Routing(21): self::$instance->router->setRoutes();

Šeit mūs interesē setRoutes metode.

47: publiskā funkcija setRoutes() 48: ( 49: $this->processQueryString(); ... 54: if (isset($_GET["maršrutēšanas virkne"])) 55: ( 56: $path = $_GET[" maršruta virkne"];

Mainīgais $path satur userdata vērtību no maršruta virknes parametra. Tajā varat ievadīt ceļu uz foruma lapu, un tā tiks ielādēta.



Pieņemsim, ka esam nokārtojuši /test .

Pēc mainīgā piešķiršanas ir koda daļa, kas atbrīvo no slīpsvītras rindas sākumā, ja tāda ir.

/includes/vb5/frontend/routing.php
75: if (strlen($path) UN $path(0) == "/") 76: ( 77: $path = substr($path, 1); // $path = "test" 78: )
ietver\vb5\frontend\routing.php
83: if (strlen($path) > 2) 84: ( 85: $ext = strtolower(substr($path, -4)) ; 86: if (($ext == ".gif") VAI ($ext == ".png") VAI ($ext == ".jpg") VAI ($ext == ".css") 87: VAI (strtolower(substr($path, -3)) == ".js" )) 88: ( 89: galvene("HTTP/1.0 404 nav atrasts"); 90: die(""); 91: ) 92: )

Kā redzat, čeks ir diezgan dīvains. Vismaz mulsina aizliegto paplašinājumu saraksta klātbūtne, kas ierakstīta tieši kodā. Un vispār mulsina pats fakts, ka paplašinājums tiek iegūts, nogriežot četras rakstzīmes no rindas beigām (85. rinda). Parasti, ja mēs mēģinām saņemt failu ar gif, png, jsp, css vai js paplašinājumiem, serveris atgriezīs 404 lapu un skripts tiks pārtraukts. Kad visas pārbaudes ir izturētas, metode getRoute no klases vB_Api_Route tiek izsaukta, izmantojot callApi. Tā meklē piemērotus maršrutus, pamatojoties uz lietotāja sniegto informāciju.

Turpinājums pieejams tikai biedriem

1. iespēja. Pievienojieties “vietnes” kopienai, lai lasītu visus vietnes materiālus

Dalība kopienā noteiktajā laika posmā nodrošinās piekļuvi VISIEM Hacker materiāliem, palielinās jūsu personīgo kumulatīvo atlaidi un ļaus jums uzkrāt profesionālu Xakep Score reitingu!

Izvēlieties foruma dzinēju. IPB, vBulletin, Phpbb


Foruma dzinējs ir nepieciešama lieta nopietnai vietnei. Princips ir labi zināms: jebkurai vietnei jābūt interaktīvai. Ir daudz veidu, kā panākt interaktivitāti, sākot no komentāriem līdz rakstiem un beidzot ar savu tematisko sociālo tīklu. Forums, iespējams, ir visuniversālākais rīks reālas atsauksmes no apmeklētājiem.

Forums ļauj jums:

Izveidojiet pastāvīgu vietnes lietotāju auditoriju, kas pastāvīgi atgriezīsies un būs aktīvi. Apmeklētāju darbība ir īsta nauda.

Satura taupīšana. Ja izveidojat forumu, saturu veidos lietotāji, un īpašniekam nav jāiegādājas liels daudzums tekstu, lai reklamētu.

Vietnes semantiskā kodola paplašināšana. Foruma izveide ļauj bez īpašām īpašnieka pūlēm paplašināt pieprasījumu skaitu, kuriem vietne tiek reklamēta.

Foruma dzinēja instalēšana ir vienkāršs process, taču iestatīšana un turpmākā administrēšana iesācējam var radīt daudz grūtību. Tomēr katram populārajam dzinējam ir milzīgs daudzums dokumentācijas, tāpēc, ja vēlaties, varat visu saprast. Vai arī nolīgt profesionālu administratoru.

Kopumā lielākā daļa dzinēju ir diezgan piemēroti normālai foruma darbībai, tiem ir aptuveni vienāds pamatfunkciju kopums, tostarp elastīga sistēma lietotāju piekļuves tiesību iestatīšanai. Tie atšķiras ar vienkāršu administrēšanu, veidņu un spraudņu komplektu, uzticamību un ražotāja tehnisko atbalstu. Pārskatu sākšu ar trīs labākajiem Runet: Phpbb, iespējams, ir vispopulārākais dzinējs foruma izveidei Runet. Iesācējam galvenā Phpbb priekšrocība ir tā, ka gan pats foruma dzinējs, gan visa veida papildinājumi ir bezmaksas. Ir arī daudz dažādu Phpbb fanu kopienu gan krievvalodīgajā, gan ārzemju internetā.

Citas priekšrocības ir darbības ātrums, vienkāršība un iestatījumu relatīvā elastība, liels skaits veidņu un papildinājumu. Ja taisa forumu phpbb, tad to var izmantot kā daļu no vietnes (ir iespēja integrēt ar daudziem cm), bet uz tā bāzes var arī izveidot vairāk vai mazāk pilnvērtīgu portāla vietni.

Bet ir arī Phpbb trūkums - tas ir ļoti neaizsargāts gan pret surogātpasta uzbrukumiem, gan uzlaušanu, ieviešot savu kodu. Lai no tā izvairītos, ir jāinstalē īpaši papildinājumi aizsardzībai pret surogātpastu, kā arī regulāri jāatjaunina dzinējs, instalējot jaunas versijas. Diemžēl tas ne vienmēr nodrošina 100% aizsardzību, tāpēc jums tas būs jāuzrauga manuāli vai ieceļot moderatorus. To var lejupielādēt oficiālajā vietnē https://www.phpbb.com/

IPB (Invision Power Board) ir maksas foruma dzinējs, kas nekavējoties atbaida lielāko daļu iesācēju. Tomēr, ja projekts ir paredzēts kā nopietns, tad aptuveni 200 USD liela summa IPB diez vai apturēs apņēmīgo tīmekļa pārzini. Bet desmit reizes padomājiet, vai esat gatavs, kaut vai ļoti plašu iespēju dēļ, pastāvīgi pārtaisīt sev IPB dzinēju, riskējot sev sarežģīt atbalstu un atjauninājumus.

Sistēmai ir milzīgs skaits integrācijas iespēju ar dažādiem pakalpojumiem - dažādiem cm, emuāriem, čatiem, foto galerijām utt. Iespējams, portālu šajā dzinējā var uzskatīt par pilnīgi pilnvērtīgu vietni, protams, ar noteiktiem iestatījumiem.

Un šeit ir ievērojama muša - IPB dzinējs tiek atjaunināts diezgan reti, paši lietotāji darbojas kā pārbaudītāji, kuri paši atrod ievainojamības un kļūdas. Jebkurā gadījumā kods ir “greizs” un neoptimāls. Nav kvalitatīvu krievu fanu kopienu, visas problēmas būs jārisina neatkarīgi. Arī krievu valodas lokalizācijas ne tuvu nav perfektas;

Koda sarežģītības un nepareizības dēļ forumi IPB tiek parādīti pareizi tikai FireFox citās pārlūkprogrammās, var rasties nelielas problēmas.

Problēma var rasties arī jauninot no otrās uz trešo versiju - ir mainījusies skinu un klašu struktūra, un, ja forums ir pārveidots, jaunināšana būs problemātiska.

IPB veidņu sistēma ir ārkārtīgi mulsinoša, mainīt izskatu nav tik vienkārši, jums vajadzēs “izbāzt cauri” daudz failu. Standarta dizains nav slikts un diezgan pazīstams, taču tas ir standarta, kas pats par sevi daudziem var būt būtisks trūkums. Jūs varat lejupielādēt Invision Power Board oficiālajā vietnē http://www.invisionpower.com/apps/board/
vBulletin (vb). Krievvalodīgajā interneta segmentā vBulletin tradicionāli sauc par “vobla” vai “bulciņa”. Šis, iespējams, ir labākais foruma dzinējs, tur vairs nav ko piebilst. Cena aptuveni 250 ASV dolāru apmērā (licence tiek iegādāta uz gadu un šajā laikā ir iekļauti bezmaksas atjauninājumi) ir diezgan pamatota un noteikti atmaksāsies, ietaupot laiku un nervus. Šeit viss darbojas kā pulkstenis. Ir pilnīgi skaidrs, kāpēc nauda tiek ņemta - vBulletin dzinējs tiek nepārtraukti pilnveidots, un ir skaidrs, ka pie tā strādā profesionāli programmētāji, nevis tikai fani.

Nav jēgas uzskaitīt visas funkcijas - tas (vai papildinājumi) ievieš gandrīz visu, kas administratoram varētu būt nepieciešams, lai izveidotu forumu. Ir vairāku citātu, Podcast apraides atbalsts, lietotāju kopienas, sociālās grupas, elastīga reputācijas sistēma un daudz kas cits.

Protams, vBulletin ir liels skaits papildinājumu un lietotāju kopienu, tāpēc ar apkopi nebūs problēmu, jo īpaši tāpēc, ka ir oficiāla atbalsta komanda. vBulletin trūkums, lai arī ne pārāk liels, ir maksas papildinājumi, piemēram, lietotāju emuāriem.

Kopumā forumam nav nekādu trūkumu. To var ieteikt lieliem nopietniem projektiem tieši tā uzticamības un izturības pret visa veida uzbrukumiem dēļ. Rezultātā tas rada ievērojamu slodzi uz serveri, īpaši ar instalētiem papildinājumiem, bet nopietniem projektiem viņi parasti izmanto nopietnus serverus un nopietnus administratorus. To var lejupielādēt oficiālajā vietnē http://www.vbulletin.com/

SMF (Vienkāršo mašīnu forums). Vienkāršs dzinējs, ar kuru var rīkoties jebkurš iesācējs. Vienkāršību kompensē funkcionalitātes trūkums, taču ne visiem ir vajadzīgs pilns “triku” komplekts. Spraudņu (modu) instalēšana ir ērti organizēta dzinējā, tos var lejupielādēt un instalēt tieši no admin paneļa, veicot tikai dažus klikšķus.

Administratīvais panelis ir nedaudz neparasts, bet iesācējam tas nav trūkums, jo viņam nav pieredzes vai ieradumi ar citiem dzinējiem. Nepazīstamība nenozīmē neērtības. Vēl viena priekšrocība ir liela skaita pārveidotāju klātbūtne, lai pārslēgtos no citiem dzinējiem.

Forums ir ļoti uzticams uzlaušanas ziņā, un surogātpasts... nu, surogātpasts ir mūžīga problēma, ar kuru vajag un ar ko var cīnīties. Neskatoties uz to, ka SMF ir bezmaksas, izstrādātāji un pieredzējuši lietotāji oficiālajā projekta forumā sniedz palīdzību ikvienam, kam tā nepieciešama.

Pamatojoties uz šo dzinēju, var izveidot arī pilnvērtīgas mājaslapas, izmantojot speciālus portāliem paredzētus papildinājumus (Adk Portal, EzPortal u.c.). Taču lielais jautājums ir par to, vai ir vērts taisīt portālu pēc foruma. Loģiskāk ir izveidot forumu kā papildinājumu galvenajai vietnei pilnvērtīgā dzinējā.

Intelektu padome (IntBoard). Fanu foruma dzinējs, ko rakstījis fans un ko viņš veiksmīgi pametis. Tomēr pamešana nav iemesls, lai to kategoriski neieteiktu.

Tūlīt parunāsim par trūkumiem. Problēmas bieži rodas no zila gaisa, liela atbalsta nav, oficiālais forums praktiski ir miris, un šī dzinēja forumu īpašnieki tur reaģē reti. Papildinājumu vai veidņu praktiski nav – viss jādara pašam.

Bet ir arī priekšrocības. Dzinēja kods ir pietiekami vienkāršs, lai pat iesācējs to varētu izdomāt un pats atrisināt dažas problēmas, kā arī pielāgot dažas funkcijas sev. Dzinējs ir ļoti viegls un rada nelielu slodzi uz serveri. Administratora panelis ir ārkārtīgi nestandarta, taču tam, iespējams, ir vislabākā iespēja konfigurēt lietotāju tiesības; grupu sistēma un piekļuves tiesības katrai konkrētai sadaļai ļaus izveidot jaudīgu un efektīvu moderēšanas sistēmu.

PunBB. Vienkāršs viegls dzinējs ar diezgan jaudīgu kopienu, kas palīdzēs atrisināt radušās problēmas. Neprasa servera resursiem. Administratīvais panelis ir intuitīvs.

Izkārtojums tiek veidots, izmantojot CSS, tāpēc iesācējiem, kuri ir pieraduši pie tabulas izkārtojuma, veidņu rediģēšana būs neparasti. Tomēr tas ir arī pluss - ir pienācis laiks apgūt modernās tehnoloģijas.

Nopietns trūkums ir augstā surogātpasta pieejamība — papildus instalētajiem spraudņiem tas ir jāuzrauga manuāli.

ExBB ir bezmaksas dzinējs, kura īpatnība ir tā, ka tā darbojas ar teksta datu bāzēm, neizmantojot MySQL. Varbūt pirms 10 gadiem tā bija priekšrocība - šādas vietnes radīja mazāku slodzi, un hostings ar datu bāzes atbalstu bija daudz dārgāks. Mūsdienās jebkurš hostings atbalsta MySQL, un teksta datu bāzes ir trūkums; tie ir daudz lēnāki un mazāk uzticami.

Tomēr, izmantojot šo cms, varat izveidot forumu nelielai vietnei, kur nav gaidāms liels apmeklētāju un ziņojumu pieplūdums. To ir viegli instalēt, viegli uzturēt, un tam ir liels lietotāju skaits un atbalsta forums oficiālajā vietnē.

Vanilla – šis mazpazīstamais dzinējs tiek pozicionēts kā Wordpress, viena no populārākajām cms, papildinājums. Starp WordPress standarta funkcijām nav iespējams izveidot forumu. Protams, jūs varat pielāgot jebkuru foruma dzinēju, bet tas nav tik vienkārši. Vanilla ir instalēta kā parasts spraudnis.

Personīgo ziņojumu sistēma ir ieviesta neparastā veidā - tās tiek publicētas kā parastās tēmas, bet ir redzamas tikai tiem, kam tie ir adresēti. Jebkurā tēmā, papildus publiskajai, varat atstāt privātu ziņojumu. Neparasti, bet diezgan ērti. Kopumā šķiet, ka izstrādātāji nolēma izveidot forumu atšķirībā no visiem pārējiem. Tas, vai tas ir pluss vai mīnuss, ir jūsu ziņā.

Vispār dzinēju ir ļoti daudz – var mēģināt, uzreiz var samierināties ar kaut ko populāru, var pat uzrakstīt vai pasūtīt kaut ko savu. Nav iespējams viennozīmīgi pateikt, kurš variants būs optimāls katram konkrētajam gadījumam.

Šādu pakalpojumu administrācija parasti ne par ko nav atbildīga, tāpēc, ja jūsu forums kādā brīnišķīgā brīdī pazudīs, labākajā gadījumā viņi atvainosies.

Nākamajā rakstā es jums pastāstīšu, kas tur ir

Tikai informatīviem nolūkiem. Administrācija nav atbildīga par tā saturu. Lejupielādēt bez maksas.


vBulletin Connect v5.3.3 ir jaudīga, mērogojama un pilnībā pielāgojama foruma pakotne jūsu vietnei.

Versija: 5.3.3 (nullē vBSupport.org)

Minimālās prasības php 5.6
Savietojams ar php 7.1
Lai veiktu jaunu instalāciju, fails htaccess.txt ir jāpārdēvē par .htaccess
Atjauninot, izdzēsiet fontu mapi (pirms atjaunināšanas sākšanas).

Jaunas iespējas:
Jauna lietotāja saskarne ar plašu sociālo integrāciju;
Optimizēts mobilajām ierīcēm;
Vienkāršota uzstādīšana, vadība un konfigurēšana;
Jauna datu bāzes arhitektūra uzlabotai meklēšanai un labākai veiktspējai;
Ērta dinamiska satura maiņa;
Uzlabota video un attēlu koplietošana;
Pilnīga integrācija ar VigLink;
Vairāk nekā 100 citu jaunu funkciju un uzlabojumu;

Iebūvētās lietojumprogrammas:
Diskusiju forums
Grupas
Aptaujas
Emuārs

Meklētājprogrammu optimizācija:
SEO draudzīgi URL
Pielāgota atslēgvārda/apraksta META tags

Elastīgums:
Paplašināmi lietotāju profili
URL pārrakstīšana
Interfeisa lokalizācija
Metadati

Atbilstība standartiem:
Satura sindikācija (RSS)
Satura sindikācija: RSS, Atom, XML
Saderīgs ar PHP v5.4

Neplīstoša integrēta sistēma:
Vienīgā iesaistītā pieteikšanās
Viena izšķirtspējas sistēma
Vienīgais administratora vadības panelis
Izveidojiet nepārtrauktu stilu/motīvu, izmantojot rakstus, emuārus, forumu

Informācijas paneļi katrai lomai:
Administratīvā kontrole
Moderatora vadības panelis
Pielāgots vadības panelis
Vienotā izšķirtspējas sistēma
Jaudas veidņu dzinējs uzlabotai pielāgošanai

Lietotāja vadība:
Vairāku lietotāju sistēma ar neierobežotām lomām un pilnvarām
Iesaistītās grupas
Drošība
Granulētas spējas
Paziņojums par problēmu
Saderīgs SSL
Captcha
E-pasta adreses apstiprinājums
Administratīvā vadības paneļa ziņu redaktors
Pieteikties "streika" sistēmā
E-pasta un paroles maiņai ir nepieciešama pašreizējā parole
Atbilst 1998. gada Likumam par bērnu privātuma aizsardzību tiešsaistē (COPPA).

1. Atveriet administratora vadības paneli:
Valodas un frāzes — lejupielādēt/augšupielādēt valodas.
2. Laukā "VAINU augšupielādējiet XML failu no sava datora" ievadiet ceļu uz
vbulletin-language_ru.xml failu savā datorā.
3. Opcijā "Pārrakstīt valodu" atlasiet "Izveidot jaunu valodu".
4. Laukā "Augšupielādētās valodas nosaukums" ievadiet valodas nosaukumu.
Ja nav ievadīti dati, valoda tiks saukta par "krievu (RU)"
5. Iestatiet “Jā” uz “Ignorēt valodas versiju”.
6. Iestatiet "Jā" uz "Lasīt rakstzīmju kopu no XML faila".
7. Noklikšķiniet uz pogas "Importēt" un gaidiet, līdz lejupielādes process tiks pabeigts.
7A Ja vēlaties, varat iestatīt jauno valodu kā “noklusējuma” valodu,
noklikšķinot uz blakus esošās pogas "Noklusējums" / "Noklusējuma vērtība".





Galvenās priekšrocības:

  • Ātra un efektīva datu bāzes ietvars
  • Saskarne, kas sastāv no veidnēm
  • Jaudīga meklētājprogramma
  • Daudzvalodu atbalsts
  • Lietotāju profili
  • Jaudīgs un ērts administratora panelis
  • Neierobežots skaits sadaļu/tēmu/ziņu
  • Paziņojumi pa e-pastu
  • COPPA atbalsts

Sakarā ar to, ka ražotājs nesniedz foruma demonstrāciju, kuru var instalēt, man bija jāinstalē kreisā versija, kas lejupielādēta no kāda Vareznik. Tāpēc instrukcijas var pilnībā neatbilst licencēšanas foruma instalēšanas procesam. Pēc instalēšanas vietne tika izdzēsta un netika izmantota paredzētajam mērķim.

Lai instalētu vBulletin, dodieties uz mitināšanas vadības paneli (poga ar zobratu blakus mitināšanas pasūtījumam norēķinos), tur “Failu pārvaldniekā” mēs ejam uz direktoriju “www”. Noklikšķiniet uz pogas Augšupielādēt failu pašreizējā direktorijā:

Norādiet ceļu uz failu savā datorā:

Atlasiet arhīvu ar vBulletin un izpakojiet to:

Mēs dzēšam failus un direktorijus, kas mums nav vajadzīgi, tostarp mūsu www domēna direktoriju, ja jums tur nav nekā vajadzīgā. Ja jūs to neievietojat vietnes saknē vai vietnes direktorijā ir kaut kas nepieciešams, www domēna direktorijs nav jādzēš:

Atlasiet direktoriju ar vBulletin instalētāju un pārdēvējiet to:

Ievadiet mūsu vietnes nosaukumu kā direktorija nosaukumu:

Atveriet mitināšanas vadības paneļa sadaļu "Datu bāzes":

Izveidojiet jaunu MySQL datu bāzi un lietotāju ar pilnām piekļuves tiesībām tai:

Lūdzu, ņemiet vērā, ka gan lietotājs, gan datu bāze automātiski saņēma prefiksu, pamatojoties uz jūsu konta nosaukumu mitināšanas serverī:

Mēs ejam uz mūsu vietnes galveno lapu un saņemam šādu vBulletin kļūdu:

Adreses joslā ievadām ceļu uz instalētāju, pievienojam “install/install.php”, pēc kura sākas vBulletin foruma instalēšanas programma:

VBulletin instalēšanas programma pārbauda šādu failu klātbūtni:

Nākamais solis ir pārbaudīt savienojumu ar datu bāzi, tas neiztur - jo... Foruma konfigurācijas failā ir nepareizi dati:

Mēs atgriežamies pie hostinga vadības paneļa, failu pārvaldnieka, dodamies uz direktoriju ar forumu, pēc tam uz apakšdirektoriju “ietver”. Atveriet failu "config.php":

Mēs ievadām pareizos datus no datu bāzes konfigurācijas failā, pēc tam to aizveram:

Mēs atgriežamies vietnē, pie uzstādītāja. nospiediet “F5”, šoreiz viss kārtībā, savienojums ar datu bāzi ir izveidojies kopā:

vBulletin instalēšanas programma datu bāzē izveido tabulas:

VBulletin instalētājs maina dažu tabulu veidus:

Dati tiek ievadīti datu bāzē:

Importētās valodas:

Stili tiek importēti:

Palīdzība tiek importēta:

Mēs nepieskaramies noklusējuma iestatījumiem, vBulletin instalācijas programma visu noteica pareizi:

Tiek importēti noklusējuma iestatījumi:

Ievadiet vBulletin administratora informāciju:

vBulletin administrators ir veiksmīgi pievienots:

vBulletin instalēšana hostingā ir veiksmīgi pabeigta:

Ievērojot instalētāja pēdējo ieteikumu, izdzēsiet nevajadzīgos failus:

Varat doties uz vBulletin forumu, lai pārliecinātos, ka viss darbojas pareizi:

Esmu atbildīgs par vairākiem VPS, uz kuriem tie griežas... parasti nav mana atbildības joma, un tāpēc tas, kas tur griežas, griežas, palēnina mēreni, darbojas mēreni. Un izrādījās, ka vienā no tiem darbojas zināms forums, un forums sāka palēnināties. Un es gribēju to izdomāt...

Avots
  • Forums vBulletin 3.8.x
  • Pārvietots uz apakšdomēnu forum.domain.com
  • Nginx 1.1.13, php 5.3.x (fpm)
  • Izņemot forumu, šajā serverī nekas nedarbojas. ( tas ir svarīgi).
  • Mysql uz atsevišķa servera, komunikācija caur TCP/IP.
Fons
Dzīvoja forumā, netraucēja, rādīja xm augšā slodze ir ap 30-40 procentiem. Un tad pienāca stunda “X”, un slodze uzlēca līdz plakanam 90 procentu plato ar augstākām virsotnēm, kas kopumā nedzirkst. Aizdomas par DDOS neapstiprinājās. Žurnāli rādīja normālu darba slodzi. Nu, pirms stulbi palielināt resursus, radās doma saprast, kas notiek, un mēģināt kešatmiņā visu iespējamo.
Izmeklēšana. Pirmā daļa – ko vēlas apmeklētāja sieviete?
Tā kā es nebiju pazīstams ar šīs programmatūras ideoloģiju un funkcijām, es sāku pētīt problēmu, analizējot žurnālus un trafiku starp apmeklētājiem un serveri. Pirmkārt, es biju pārsteigts, atklājot, ka foruma ziņojumu pielikumus nodrošina tikai skripts pielikums.php, savukārt pašus failus var glabāt datu bāzē vai lokālā diskā, bet atgriešana notiek tikai ar skripta palīdzību. Un nekas cits. Tas ir, mēs iegūstam 8–10 papildu PHP tulka raustīšanās katrā ziņojuma pavedienā ar 8–10 fotoattēliem. Un tas ir katram apmeklētājam. Tā kā reģistrācija šajā forumā nav nepieciešama, lai skatītu pielikumus, pielikumus var saglabāt kešatmiņā, piemēram, pāris dienas. Kaut kas tamlīdzīgs:
location = /attachment.php ( derīguma termiņš ir max; limit_req zone=lim_req_1s_zone burst=5; fastcgi_pass forum__php_cluster; include /etc/nginx/fastcgi_params; include /etc/nginx/fastcgi_params_php-Conn_ca_cache forums trol Beidzas Set-Cookie Fastcgi_hide_header Set-Cookie 2d) un kaut kur http sadaļās deklarē forum_att__cache: fastcgi_cache_path /var/ cache/nginx/att levels=1:2 keys_zone=forum_att__cache:4m max_size=2g inactive=2d;

Otra “atklāsme” man bija, ka forumā ir arhīvi, un tie ne tikai pastāv, bet gandrīz puse pieprasījumu nāk no tiem. Lapu izskats ļauj arī saglabāt to saturu kešatmiņā:
atrašanās vieta /archive/ (beidzas 10 d; limit_req zone=lim_req_1s_zone burst=2; atrašanās vieta ~ \.css$ (maks. derīguma termiņš; ) fastcgi_pass forum__php_cluster; fastcgi_index index.php; iekļaut /etc/nginx/fastcgi_params/fgginams; iekļaut -fpm; fastcgi_param SCRIPT_FILENAME $document_root/index.php Fastcgi_param SCRIPT_NAME quest_uri:"; fastcgi_cache_use_stale atjaunināšanas kļūdas taimauts invalid_header http_500 Vienlaikus pasargāsimies no DDOS uzbrukumiem: limit_req_zone "$psUID" zone=lim_req_1s_zone:2m rate=1r/s;
Par atslēgas “$psUID” izveidi pastāstīšu vēlāk.

Izmeklēšana. Otrā daļa — autorizācija vBulletin
No foruma apmeklētāja viedokļa apmeklētājs var būt gan reģistrēts lietotājs, gan viesis. Bet pavisam cita situācija veidojas, ja situāciju “atnāca, gāja, ielogojas, gāja, izgāju, gāja” vērojam no sīkdatņu parādīšanās un pazušanas pārlūkprogrammā viedokļa. Tātad, notīriet domēna un tā apakšdomēnu sīkfailus, atveriet HTTPfox un skatiet, kas notiek:
HTTP/1.1 200 OK Set-Cookie: PHPSESSID=cdme9rrptft67tbo97p4t1cua5; beidzas = trešdiena, 22. februāris 2012, 15:04:12 GMT; ceļš=/; domain=.domain.com Set-Cookie: bblastvisit=1329059052; beidzas=Pr, 11-Feb-2013 15:04:12 GMT; ceļš=/; domain=.domain.com Set-Cookie: bblastactivity=0; derīguma termiņš=Pr, 11-Feb-2013 15:04:12 GMT; ceļš=/; domain=.domain.com Set-Cookie: uid=XCuiGU831OyC8VLqAx/QAg==; beidzas=Ce, 31-Dec-37 23:55:55 GMT; domēns=.domēns.com; ceļš=/
AR uid Un PHPSESSID viss skaidrs - tās ir nginx un php tulka mahinācijas ar uzstādītu opciju session.auto_start, bet pārējie ir foruma aktivitātes monitori. Taču vBulletin galvenais sesijas sīkfails vēl nav novērots. Raugoties uz priekšu, teikšu, ka vBulletin neizmanto standarta PHP sesiju (precīzāk, gandrīz neizmanto), bet uztur savu, kuras identifikators tiek saglabāts sīkfailā. bbsessionhash. Tātad, lietotājs ir pieteicies, bet nav sesijas - tas ir, viņš ir anonīms bez sesijas. Šajā gadījumā saitēm uz forumu var būt divu veidu saites (tas nozīmē visas lapas saites, nevis vienu šādu un citu līdzīgu):
forum.domain.com/forumdisplay.php?s=12b66e447be52ebc84ab16d3f39626fb&f=69
forum.domain.com/forumdisplay.php?f=69
Un, ja sekojat pirmā veida saitei, tad nākamā atbilde no foruma būs sesijas sīkfails, bet, ja sekosit otrā veida saitei, tā nebūs. Ja nesaņēmāt sīkdatni no sesijas ar otro atbildi, tad varat bez sesijām un nemierīgi klīst pa forumu, līdz uzduraties pirmā veida saitei (nevarēju izdomāt to izskatu modeli), vai vēlaties pieteikties. Ja pieteikšanās ir veiksmīga, sesijas sīkfails ieradīsies jebkurā veidā. Ja pirms pieteikšanās viesis bija anonīms ar sesiju, tad sesija viņam tiks aizstāta. Tas izskatās šādi:
HTTP/1.1 200 OK Set-Cookie: bbsessionhash=85745bc6110db5221e159087bf037f24; ceļš=/; domēns=.domēns.com; HttpOnly
Pēc pieteikšanās sesija ir “stabila”, un nav lēciena ar saitēm. Atteikšanās procedūra neatšķiras - tiek dzēsti visi esošie foruma sīkfaili (arī tie, kas nebija iestatīti) un tiek ierakstīts jaunas (“anonīmas”) sesijas sīkfails:
HTTP/1.1 200 OK Set-Cookie: bbsessionhash=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bblastvisit=deleted; beidzas=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bblastactivity=deleted; beidzas=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbthread_lastview=deleted; beidzas=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbreferrerid=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbuserid=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbpassword=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbthreadedmode=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbstyleid=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bblanguageid=deleted; derīguma termiņš=Ce, 01-Jan-1970 00:00:01 GMT; ceļš=/; domain=.domain.com Set-Cookie: bbsessionhash=3d0bdc5dbe8dabae361deebe8f6048d2; ceļš=/; domēns=.domēns.com; HttpOnly
Tas ir, izejā mēs iegūstam anonīmu personu (viesi), bet simtprocentīgi ar sesiju.
Rezultātā no foruma programmatūras viedokļa UN HTTP galvenes mums ir trīs veidu lietotāji: viesis bez sesijas, viesis ar sesiju, pieteicies apmeklētājs. Turklāt nginx līmenī ir ārkārtīgi problemātiski atšķirt otro no trešā.

Tagad, kad esat sapratis, kuri sīkfaili un kā tie pārvietojas starp apmeklētāju un serveri, varat pievērsties jautājumam par dinamiskā satura saglabāšanu kešatmiņā. Kā jūs zināt, funkcionalitāte atbilžu saglabāšanai kešatmiņā no fastcgi aizmugursistēmas nginx ir iebūvēta modulī ngx_http_fastcgi_module. Lai to izdarītu, http sadaļā globāli jāreģistrē kešatmiņas zona un vēlamajā vietā atslēga Un, ja nosacīti statiskam saturam (attēli, arhīvi) kešatmiņas atslēgu varētu uzskatīt par URI ar nelieliem papildinājumiem, tad. kešatmiņas dinamikai arī jāņem vērā un lietotājam Šķiet, ka tas ir noteikums
fastcgi_cache_key "$request_method:$http_if_modified_since:$http_if_none_match:$host:$request_uri:$cookie_bbsessionhash:";
varēja apmierināt gan viesus, gan pieteikušos lietotājus, taču praksē apmeklētāji sāka saņemt kāda cita kešatmiņas saturu. “Patiesās” dinamikas kešatmiņa bija jāatspējo. Ceru, ka spriedums nav galīgs.

Tomēr šī informācija nav bezjēdzīga. Pamatojoties uz to, mēs varam ģenerēt atslēgu, lai ierobežotu pieprasījumu biežumu, pamatojoties ne tikai uz apmeklētāja IP adresi, bet arī uz viņa statusu.
iestatīt $psUID "anon"; iestatīt $psUCL "anon"; if ($cookie_bbsessionhash) ( iestatīt $psUID "$cookie_bbsessionhash"; iestatīt $psUCL "lietotāju"; ) if ($psUCL = "anon") ( iestatīt $psUID "anon:$remote_addr"; )
Pirms visu atrašanās vietu aprakstīšanas mēs ievietojam šo konfigurācijas fragmentu nginx konfigurācijas servera sadaļā. Rezultātā mēs saņemam oriģinālo atslēgu lietotājam, kuram ir sesija, un atslēgu, kuras pamatā ir IP adrese apmeklētājiem, kuriem nav sesijas (piemēram, meklēšanas rāpuļprogrammām).

rezultātus
Šo pūliņu rezultātā kopējā virtuālās mašīnas slodze samazinājās no 90 procentiem līdz zāģa slodzei — 40 procenti, un pieauga līdz 80 procentiem.