
O fẹrẹ to ọdun 9 sẹhin Cloudflare jẹ ile-iṣẹ kekere kan, ati pe Emi ko ṣiṣẹ fun, alabara kan ni mi. Oṣu kan lẹhin ifilọlẹ Cloudflare, Mo gba ifitonileti kan pe oju opo wẹẹbu mi DNS ko dabi pe o n ṣiṣẹ. Cloudflare ti ṣe iyipada si , ati pe DNS ti bajẹ.
Lẹsẹkẹsẹ Mo kọwe si Matthew Prince pẹlu akọle “Nibo ni DNS mi wa?” o firanṣẹ esi gigun ti o kun fun awọn alaye imọ-ẹrọ (), eyiti mo dahun pe:
Lati: John Graham-Cumming
Ọjọ: Oṣu Kẹwa 7, 2010, 9:14
Koko-ọrọ: Tun: Nibo ni DNS mi wa?
Si: Matthew PrinceItura Iroyin, o ṣeun. Emi yoo dajudaju pe ti awọn iṣoro ba wa. O ṣee ṣe lati kọ ifiweranṣẹ kan nipa eyi ni kete ti o ti gba gbogbo alaye imọ-ẹrọ naa. Mo ro pe awọn eniyan yoo gbadun itan-ìmọ ati otitọ. Paapa ti o ba so awọn aworan pọ si lati ṣafihan bii ijabọ ti dagba lati igba ifilọlẹ.
Mo ni abojuto to dara lori aaye mi, ati pe Mo gba SMS kan nipa gbogbo ikuna. Abojuto fihan wipe ikuna waye lati 13:03:07 to 14:04:12. Awọn idanwo ni a ṣe ni gbogbo iṣẹju marun.
Mo ni idaniloju pe iwọ yoo ro ero rẹ. Ṣe o da ọ loju pe o ko nilo eniyan tirẹ ni Yuroopu? 🙂
Ó sì dáhùn pé:
Lati: Matthew Prince
Ọjọ: Oṣu Kẹwa 7, 2010, 9:57
Koko-ọrọ: Tun: Nibo ni DNS mi wa?
Si: John Graham-CummingE dupe. A dahun si gbogbo eniyan ti o kọ. Mo n lọ si ọfiisi ni bayi ati pe a yoo kọ nkan kan lori bulọọgi tabi pin ifiweranṣẹ osise kan lori igbimọ itẹjade wa. Mo gba patapata, otitọ ni ohun gbogbo.
Bayi Cloudflare jẹ ile-iṣẹ nla gaan, Mo ṣiṣẹ fun, ati ni bayi Mo ni lati kọ ni gbangba nipa aṣiṣe wa, awọn abajade rẹ ati awọn iṣe wa.
Awọn iṣẹlẹ ti Oṣu Keje 2
Ni Oṣu Keje Ọjọ 2nd a gbe ofin tuntun jade ni Awọn ofin Ṣakoso fun awọn WAF nitori eyiti lori gbogbo ijabọ mojuto ero isise HTTP/HTTPS lori nẹtiwọọki Cloudflare ni agbaye. A n ṣe ilọsiwaju awọn ofin iṣakoso nigbagbogbo fun awọn WAF ni idahun si awọn ailagbara ati awọn irokeke tuntun. Ni May, fun apẹẹrẹ, a yara lati daabobo lodi si ailagbara pataki ni SharePoint. Gbogbo aaye ti WAF wa ni agbara lati mu awọn ofin ni kiakia ati ni agbaye.
Laanu, imudojuiwọn ni Ojobo to kọja ni ikosile deede ti o padanu awọn orisun Sipiyu HTTP/HTTPS pupọ lori ipadasẹhin. Aṣoju mojuto wa, CDN, ati awọn iṣẹ WAF jiya bi abajade. Aya naa fihan pe awọn orisun ero isise fun iṣẹ HTTP/HTTPS ijabọ de ọdọ 100% lori awọn olupin ni nẹtiwọọki wa.
Lilo Sipiyu ni aaye kan ti wiwa lakoko iṣẹlẹ kan
Bi abajade, awọn alabara wa (ati awọn alabara awọn alabara wa) pari pẹlu oju-iwe aṣiṣe 502 lori awọn ibugbe Cloudflare. Awọn aṣiṣe 502 jẹ ipilẹṣẹ nipasẹ awọn olupin oju opo wẹẹbu iwaju iwaju-Cloudflare ti o tun ni awọn ohun kohun ọfẹ ṣugbọn ko lagbara lati ṣe ibasọrọ pẹlu awọn ilana mimu ijabọ HTTP/HTTPS.

A mọ iye airọrun ti eyi ti fa awọn alabara wa. Oju ti wa gidigidi. Ati ikuna yii ko jẹ ki a koju isẹlẹ naa daradara.
Ti o ba jẹ ọkan ninu awọn alabara wọnyi, o ṣee ṣe ki o bẹru, binu ati binu. Jubẹlọ, a ti ko ní a . Lilo Sipiyu giga jẹ nitori ofin WAF kan pẹlu ikosile deede ọrọ ti ko dara ti o yorisi ifẹhinti ti o pọju. Eyi ni ikosile ẹbi: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))
Lakoko ti o jẹ iyanilenu ni ẹtọ tirẹ (ati pe Emi yoo sọrọ nipa rẹ ni alaye diẹ sii ni isalẹ), iṣẹ Cloudflare wa ni isalẹ fun awọn iṣẹju 27 kii ṣe nitori ikosile deede buburu kan. O gba akoko diẹ lati ṣe apejuwe lẹsẹsẹ awọn iṣẹlẹ ti o yori si ikuna, nitorinaa a lọra lati dahun. Ni ipari ifiweranṣẹ, Emi yoo ṣe apejuwe ifẹhinti ni ikosile deede ati sọ fun ọ kini lati ṣe pẹlu rẹ.
Kini o sele
Jẹ ká bẹrẹ ni ibere. Gbogbo igba nibi wa ni UTC.
Ni 13:42 pm, ẹlẹrọ kan lori ẹgbẹ ogiriina ṣe iyipada kekere si awọn ofin wiwa lilo ohun laifọwọyi ilana. Nitorinaa, tikẹti ibeere iyipada ti ṣẹda. A ṣakoso iru awọn tikẹti nipasẹ Jira (sikirinifoto ni isalẹ).
Lẹhin awọn iṣẹju 3, oju-iwe akọkọ ti PagerDuty han, ṣiṣe ijabọ iṣoro kan pẹlu WAF. Eyi jẹ idanwo sintetiki ti o ṣe idanwo iṣẹ ṣiṣe ti WAFs (a ni awọn ọgọọgọrun wọn) ni ita Cloudflare lati ṣe atẹle iṣẹ ṣiṣe deede. Eyi ni atẹle lẹsẹkẹsẹ nipasẹ awọn oju-iwe ti awọn itaniji nipa awọn idanwo iṣẹ ipari-si-opin Cloudflare miiran ti kuna, awọn ọran ijabọ agbaye, awọn aṣiṣe 502 kaakiri, ati pupọ ti awọn ijabọ lati Awọn aaye Iwaju wa (PoP) ni awọn ilu kakiri agbaye ti o tọka si a aini ti Sipiyu oro.


Mo gba ọpọlọpọ awọn titaniji wọnyi, ti n ja kuro ni ipade kan, ati pe o wa ni ọna mi si tabili nigbati olori ẹka idagbasoke awọn solusan wa sọ pe a ti padanu 80% ti ijabọ wa. Mo sá lọ sọ́dọ̀ àwọn onímọ̀ ẹ̀rọ SRE, tí wọ́n ti ń ṣiṣẹ́ lórí ìṣòro náà. Ni akọkọ a ro pe o jẹ iru ikọlu aimọ kan.

Awọn onimọ-ẹrọ Cloudflare SRE ti tuka kakiri agbaye ati ṣe abojuto ipo ni ayika aago. Ni deede, awọn itaniji wọnyi sọ ọ leti ti awọn ọran agbegbe kan pato ti iwọn to lopin, ti wa ni tọpinpin lori awọn dasibodu inu, ati pe wọn yanju awọn igba pupọ fun ọjọ kan. Ṣugbọn awọn oju-iwe ati awọn iwifunni wọnyi tọka nkan pataki gaan, ati pe awọn onimọ-ẹrọ SRE sọ lẹsẹkẹsẹ ipele iwuwo P0 ati ti farakanra iṣakoso ati awọn onimọ-ẹrọ eto.
Àwọn onímọ̀ ẹ̀rọ nílùú London ti ń tẹ́tí sí àsọyé kan nínú gbọ̀ngàn ńlá lákòókò yẹn. Ọ̀rọ̀ ìdánilẹ́kọ̀ọ́ náà gbọ́dọ̀ dáwọ́ dúró, gbogbo èèyàn ló kóra jọ sí iyàrá àpéjọ ńlá kan, wọ́n sì tún pe àwọn ògbógi. Eyi kii ṣe iṣoro aṣoju ti awọn SRE le ṣe pẹlu ara wọn. O jẹ iyara lati kan awọn alamọja ti o tọ.
Ni 14:00 a pinnu pe iṣoro naa wa pẹlu WAF ati pe ko si ikọlu. Ẹgbẹ iṣẹ naa fa data Sipiyu ati pe o han gbangba pe WAF ni lati jẹbi. Oṣiṣẹ miiran jẹrisi ilana yii nipa lilo strace. Ẹnikan miiran ri ninu awọn akọọlẹ pe iṣoro wa pẹlu WAF. Ni 14:02 pm, gbogbo ẹgbẹ wa si ọdọ mi nigbati a daba lati lo pipa agbaye, ẹrọ ti a ṣe sinu Cloudflare ti o pa paati kan kakiri agbaye.
Bawo ni a ṣe pa agbaye fun WAF jẹ itan ti o yatọ. Ko rọrun yẹn. A lo awọn ọja ti ara wa, ati niwon iṣẹ wa ko ṣiṣẹ, a ko le fi jeri ati ki o wọle sinu awọn ti abẹnu Iṣakoso nronu (nigbati ohun gbogbo ti a ti o wa titi, a kẹkọọ pé diẹ ninu awọn egbe omo egbe ti padanu wiwọle nitori a aabo ẹya-ara ti o disables awọn iwe eri ti o ba ti awọn ti abẹnu Iṣakoso nronu ti wa ni ko lo fun a ṣe. o to ojo meta).
Ati pe a ko le de ọdọ awọn iṣẹ inu wa, bii Jira tabi eto kikọ. A nilo siseto iṣẹ ṣiṣe, eyiti a lo loorekoore (eyi yoo tun nilo lati ṣiṣẹ jade). Nikẹhin, ẹlẹrọ kan ṣakoso lati mu WAF kuro ni 14:07, ati ni 14:09, ijabọ ati awọn ipele Sipiyu ti pada si deede nibi gbogbo. Iyokù ti awọn ọna aabo Cloudflare ṣiṣẹ bi deede.
Lẹhinna a ṣeto nipa mimu-pada sipo WAF. Ipo naa ko ṣe deede, nitorinaa a ṣe awọn idanwo odi (bibeere fun ara wa boya iyipada naa jẹ iṣoro gaan) ati awọn idanwo rere (ti o rii daju pe rollback ṣiṣẹ) ni ilu kan nipa lilo ijabọ lọtọ, gbigbe awọn alabara isanwo lati ibẹ.
Ni 14:52 a ni idaniloju pe a loye idi naa ati ṣe atunṣe, a si tun mu WAF ṣiṣẹ lẹẹkansi.
Bawo ni Cloudflare ṣiṣẹ
Cloudflare ni ẹgbẹ kan ti awọn onimọ-ẹrọ igbẹhin si ṣiṣakoso awọn ofin fun awọn WAF. Wọn tiraka lati mu ilọsiwaju awọn oṣuwọn wiwa, dinku awọn idaniloju eke, ati dahun ni kiakia si awọn irokeke tuntun bi wọn ṣe farahan. Ni awọn ọjọ 60 to kọja, awọn ibeere iyipada 476 ti wa ni ilọsiwaju fun awọn ofin iṣakoso fun WAF (ipin ti ọkan ni gbogbo wakati 3).
Iyipada pataki yii nilo lati gbe lọ ni ipo kikopa, nibiti ijabọ alabara gidi ti kọja nipasẹ ofin, ṣugbọn ko si nkankan ti dina. A lo yi mode lati se idanwo awọn ndin ti awọn ofin ati wiwọn awọn eke rere ati eke awọn ošuwọn odi. Ṣugbọn paapaa ni ipo kikopa, awọn ofin gbọdọ wa ni ṣiṣe ni otitọ, ati ninu ọran yii ofin naa ni ikosile deede ti o n gba awọn orisun ero isise pupọ.
Gẹgẹbi o ti le rii lati ibeere iyipada loke, a ni ero imuṣiṣẹ kan, ero yiyipo, ati ọna asopọ si ilana iṣiṣẹ boṣewa inu (SOP) fun iru imuṣiṣẹ yii. SOP fun iyipada ofin gba laaye lati ṣe atẹjade ni agbaye. Lootọ, ni Cloudflare, awọn nkan ṣe ni iyatọ patapata, ati pe SOP sọ pe a kọkọ gbe sọfitiwia naa fun idanwo ati lilo inu si aaye inu ti wiwa (PoP) (eyiti awọn oṣiṣẹ wa lo), lẹhinna si nọmba kekere ti awọn alabara ninu ipo ti o ya sọtọ, lẹhinna si nọmba nla ti awọn alabara, ati lẹhinna si gbogbo agbaye.
Eyi ni ohun ti o dabi. A lo git inu nipasẹ BitBucket. Awọn onimọ-ẹrọ ti n ṣiṣẹ lori awọn ayipada fi koodu silẹ, eyiti o pejọ sinu TeamCity, ati nigbati kikọ ba kọja, awọn oluyẹwo ti yan. Nigba ti o ba fọwọsi ibeere ti o fa, koodu naa ti ṣajọpọ ati pe awọn idanwo kan wa ni ṣiṣe (lẹẹkansi).
Ti kikọ ati awọn idanwo ba pari ni aṣeyọri, ibeere iyipada ni a ṣẹda ni Jira ati pe oluṣakoso tabi adari ti o yẹ gbọdọ fọwọsi iyipada naa. Lẹhin ifọwọsi, imuṣiṣẹ waye sinu eyiti a pe ni “PoP menagerie”: AJA, PIG ati (aja, ẹlẹdẹ ati ki o Canary).
DOG PoP jẹ Cloudflare PoP (bii gbogbo awọn ilu wa miiran) eyiti o jẹ lilo nipasẹ awọn oṣiṣẹ Cloudflare nikan. PoP fun lilo inu gba ọ laaye lati mu awọn iṣoro ṣaaju ki ijabọ alabara bẹrẹ ṣiṣan sinu ojutu. Ohun to wulo.
Ti idanwo DOG ba ṣaṣeyọri, koodu naa yoo lọ si ipele PIG (ẹlẹdẹ Guinea). Eyi ni Cloudflare PoP, nibiti iye kekere ti ijabọ alabara ọfẹ ti nṣan nipasẹ koodu tuntun.
Ti ohun gbogbo ba dara, koodu naa lọ sinu Canary. A ni Canary PoPs mẹta ni awọn ẹya oriṣiriṣi agbaye. Ninu wọn, ijabọ ti sisanwo ati awọn alabara ọfẹ kọja nipasẹ koodu tuntun, ati pe eyi ni ayẹwo ikẹhin fun awọn aṣiṣe.
Ilana Itusilẹ sọfitiwia ni Cloudflare
Ti koodu naa ba dara ni Canary, a tu silẹ. Lilọ nipasẹ gbogbo awọn ipele - DOG, PIG, Canary, gbogbo agbaye - gba awọn wakati pupọ tabi awọn ọjọ, da lori iyipada koodu. Nitori oniruuru ti nẹtiwọọki Cloudflare ati awọn alabara, a ṣe idanwo koodu daradara ṣaaju idasilẹ ni agbaye si gbogbo awọn alabara. Ṣugbọn WAF ko tẹle ilana yii ni pataki nitori awọn irokeke nilo lati dahun ni iyara.
WAF awọn irokeke
Ni awọn ọdun diẹ ti o ti kọja, ilosoke pataki ti awọn irokeke ni awọn ohun elo ti o wọpọ. Eyi jẹ nitori wiwa nla ti awọn irinṣẹ idanwo sọfitiwia. Fun apẹẹrẹ, a laipe kowe nipa ).

orisun:
Nigbagbogbo, ẹri ti imọran ti ṣẹda ati gbejade lẹsẹkẹsẹ lori Github ki awọn ẹgbẹ ti n ṣetọju ohun elo le ṣe idanwo ni iyara ati rii daju pe o ni aabo to pe. Nitorinaa, Cloudflare nilo agbara lati dahun si awọn ikọlu tuntun ni yarayara bi o ti ṣee ki awọn alabara ni aye lati ṣatunṣe sọfitiwia wọn.
Apeere nla ti esi iyara Cloudflare ni imuṣiṣẹ ti awọn aabo ailagbara SharePoint ni Oṣu Karun (). Fere lẹsẹkẹsẹ lẹhin awọn ikede ti a ṣe, a ṣe akiyesi nọmba nla ti awọn igbiyanju lati lo ailagbara ni awọn fifi sori ẹrọ SharePoint awọn alabara wa. Awọn eniyan wa n ṣe abojuto awọn irokeke tuntun nigbagbogbo ati awọn ofin kikọ lati daabobo awọn alabara wa.
Ofin ti o fa iṣoro naa ni Ojobo ni o yẹ lati daabobo lodi si iwe afọwọkọ aaye-agbelebu (XSS). Iru awọn ikọlu tun ti di loorekoore ni awọn ọdun aipẹ.

orisun:
Ilana boṣewa fun iyipada ofin iṣakoso fun WAF ni lati ṣe idanwo isọpọ igbagbogbo (CI) ṣaaju imuṣiṣẹ agbaye. Ni Ojobo to kọja a ṣe eyi ati yiyi awọn ofin naa jade. Ni 13:31 pm, ẹlẹrọ kan fi ibeere fa ti a fọwọsi pẹlu iyipada kan.

Ni 13:37 TeamCity gba awọn ofin, ran awọn igbeyewo ati ki o fun awọn lọ-siwaju. Suite idanwo WAF ṣe idanwo iṣẹ ṣiṣe akọkọ ti WAF ati pe o ni nọmba nla ti awọn idanwo ẹyọkan fun awọn iṣẹ kọọkan. Lẹhin awọn idanwo ẹyọkan, a ṣe idanwo awọn ofin fun WAF ni lilo nọmba nla ti awọn ibeere HTTP. Awọn ibeere HTTP ṣayẹwo iru awọn ibeere yẹ ki o dina nipasẹ WAF (lati ṣe idiwọ ikọlu naa) ati eyiti o le gba laaye nipasẹ (ki o má ba di ohun gbogbo duro ati yago fun awọn idaniloju eke). Ṣugbọn a ko ṣe idanwo fun lilo Sipiyu ti o pọju, ati ṣayẹwo awọn akọọlẹ ti awọn ile WAF ti tẹlẹ fihan pe akoko ipaniyan idanwo ofin ko pọ si, ati pe o nira lati fura pe kii yoo ni awọn orisun to.
Awọn idanwo naa ti kọja ati TeamCity bẹrẹ gbigbe iyipada laifọwọyi ni 13:42 pm.
Quicksilver
Awọn ofin WAF dojukọ atunṣe irokeke lẹsẹkẹsẹ, nitorinaa a fi wọn ranṣẹ nipa lilo ibi-itaja iye-iye ti Quicksilver ti o pin, eyiti o tan awọn iyipada agbaye ni iṣẹju-aaya. Gbogbo awọn alabara wa lo imọ-ẹrọ yii nigbati wọn ba yipada iṣeto ni dasibodu tabi nipasẹ API, ati pe o ṣeun fun pe a dahun si awọn ayipada pẹlu iyara ina.
A ko ti sọrọ pupọ nipa Quicksilver. Ni iṣaaju a lo gẹgẹbi ile itaja ti a pin kaakiri agbaye ti awọn orisii iye-iye, ṣugbọn awọn iṣoro iṣiṣẹ wa pẹlu rẹ, ati pe a kọ ile itaja tiwa, tun ṣe ni diẹ sii ju awọn ilu 180 lọ. Bayi a lo Quicksilver lati Titari awọn ayipada atunto si awọn alabara, ṣe imudojuiwọn awọn ofin WAF, ati pinpin koodu JavaScript ti awọn alabara kọ si Awọn oṣiṣẹ Cloudflare.
Yoo gba to iṣẹju diẹ lati titẹ bọtini kan lori dasibodu tabi pipe API kan lati ṣe iyipada iṣeto ni agbaye. Awọn onibara nifẹ iyara iṣeto yii. Ati pe Awọn oṣiṣẹ n fun wọn ni imuṣiṣẹ sọfitiwia kariaye lẹsẹkẹsẹ. Ni apapọ, Quicksilver tan nipa awọn iyipada 350 fun iṣẹju-aaya.
Ati Quicksilver jẹ iyara pupọ. Ni apapọ, a ṣaṣeyọri ipin 99th ti awọn aaya 2,29 lati tan awọn ayipada si gbogbo kọnputa ni kariaye. Iyara nigbagbogbo jẹ ohun ti o dara. Lẹhin gbogbo ẹ, nigba ti o ba mu iṣẹ kan ṣiṣẹ tabi ko kaṣe kuro, o ṣẹlẹ lesekese ati nibikibi. Fifiranṣẹ koodu nipasẹ Cloudflare Workers waye ni iyara kanna. Cloudflare ṣe ileri awọn imudojuiwọn awọn alabara rẹ ni iyara ni akoko to tọ.
Sugbon ninu apere yi, iyara dun a ìka awada lori wa, ati awọn ofin yi pada nibi gbogbo ni ọrọ kan ti aaya. O le ti ṣe akiyesi pe koodu WAF nlo Lua. Cloudflare nlo Lua lọpọlọpọ ni iṣelọpọ ati awọn alaye a wa . Lua WAF nlo inu ati ki o kan backtracking fun tuntun. Ko ni awọn ilana lati daabobo lodi si awọn ikosile ti o jade kuro ni iṣakoso. Ni isalẹ Emi yoo sọrọ diẹ sii nipa eyi ati ohun ti a nṣe nipa rẹ.
Ṣaaju ki o to gbe awọn ofin lọ, ohun gbogbo lọ laisiyonu: ibeere fifa ti ṣẹda ati fọwọsi, opo gigun ti CI / CD ti a gba ati idanwo koodu naa, a ti fi ibeere iyipada naa silẹ ni ibamu si SOP ti o ṣe akoso imuṣiṣẹ ati yiyi pada, ati imuṣiṣẹ naa ti pari.
Ilana imuṣiṣẹ WAF Cloudflare
Nnkan o lo daadaa
Bi mo ti sọ, a ran dosinni ti titun WAF ofin gbogbo ọsẹ, ati awọn ti a ni ọpọlọpọ awọn ọna šiše ni ibi lati dabobo lodi si awọn odi iigbeyin ti iru imuṣiṣẹ. Ati nigbati ohun kan ba ti ko tọ, o jẹ maa n kan apapo ti awọn orisirisi ayidayida ni ẹẹkan. Ti o ba rii idi kan, eyi, dajudaju, jẹ ifọkanbalẹ, ṣugbọn kii ṣe otitọ nigbagbogbo. Iwọnyi ni awọn idi ti papọ yori si ikuna ti iṣẹ HTTP/HTTPS wa.
- Onimọ-ẹrọ kan kọ ikosile deede ti o le ja si pupọju .
- Ẹya kan ti o le ṣe idiwọ ikosile deede lati jafara Sipiyu pupọ ni a ti yọkuro ni aṣiṣe ni isọdọtun ti WAF ni awọn ọsẹ pupọ sẹyin-atunṣe naa nilo lati jẹ ki WAF jẹ awọn orisun ti o dinku.
- Ẹrọ ikosile deede ko ni awọn iṣeduro idiju.
- Suite idanwo naa ko le rii agbara Sipiyu ti o pọ ju.
- SOP ngbanilaaye awọn iyipada ofin ti kii ṣe pajawiri lati yiyi jade ni agbaye laisi ilana igbesẹ pupọ.
- Eto yiyi pada nilo ṣiṣe ṣiṣe kikun WAF lẹẹmeji, eyiti o gba akoko pipẹ.
- Itaniji akọkọ nipa awọn iṣoro ijabọ agbaye jẹ okunfa pẹ ju.
- A gba akoko diẹ lati ṣe imudojuiwọn oju-iwe ipo naa.
- A ni awọn iṣoro iwọle si awọn eto nitori glitch kan, ati pe ilana fori ko fi idi mulẹ daradara.
- Awọn onimọ-ẹrọ SRE padanu iraye si diẹ ninu awọn eto nitori awọn iwe-ẹri wọn ti pari nitori awọn idi aabo.
- Awọn onibara wa ko ni iwọle si dasibodu Cloudflare tabi API nitori wọn lọ nipasẹ agbegbe Cloudflare kan.
Kini o yipada lati Ọjọbọ to kọja
Ni akọkọ, a da gbogbo iṣẹ duro patapata lori awọn idasilẹ fun WAF ati pe a n ṣe atẹle:
- A n tun ṣe aabo ilokulo Sipiyu ti a yọ kuro. (Ṣetan)
- Ṣiṣayẹwo pẹlu ọwọ gbogbo awọn ofin 3868 ninu awọn ofin iṣakoso fun WAF lati wa ati ṣatunṣe awọn ọran miiran ti o pọju ti ifẹhinti ti o pọju. (Ijerisi ti pari)
- A pẹlu profaili iṣẹ fun gbogbo awọn ofin ninu eto idanwo naa. (Ti a reti: Oṣu Keje 19)
- Yipada si ẹrọ ikosile deede tabi - mejeeji pese awọn iṣeduro akoko asiko. (Ti a reti: Oṣu Keje 31)
- A n atunkọ SOP lati mu awọn ofin ṣiṣẹ ni awọn ipele, bii sọfitiwia miiran ni Cloudflare, ṣugbọn ni akoko kanna ni agbara lati pajawiri imuṣiṣẹ agbaye ti awọn ikọlu ba ti bẹrẹ tẹlẹ.
- A n ṣe idagbasoke agbara lati yọ dasibodu Cloudflare kuro ni kiakia ati API lati agbegbe Cloudflare.
- Awọn imudojuiwọn oju-iwe adaṣe adaṣe .
Igba pipẹ a nlọ kuro ni Lua WAF Mo ti kowe ni ọdun diẹ sẹhin. Gbigbe WAF si . Ni ọna yii WAF yoo yara yara ati gba ipele aabo ni afikun.
ipari
Ikuna yii fa wahala fun awa ati awọn onibara wa. A ṣe ni kiakia lati ṣe atunṣe ipo naa ati pe a n ṣiṣẹ ni bayi lori awọn abawọn ninu awọn ilana ti o fa ijamba naa, bakannaa n walẹ paapaa jinlẹ lati daabobo awọn iṣoro ti o pọju pẹlu awọn ikosile deede ni ojo iwaju nigbati o nlọ si imọ-ẹrọ titun.
A ni o wa gidigidi itiju nipa yi outage ati gafara si awọn onibara wa. A nireti pe awọn ayipada wọnyi yoo rii daju pe nkan bii eyi ko ṣẹlẹ lẹẹkansi.
Ohun elo. Backtracking deede expressions
Lati ni oye bi ikosile:
(?:(?:"|'|]|}||d
(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-
|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))jẹun gbogbo awọn orisun Sipiyu, o nilo lati mọ diẹ nipa bii ẹrọ ikosile deede ṣe n ṣiṣẹ. Iṣoro naa nibi ni apẹrẹ .*(?:.*=.*). (?: ati ibaramu ) jẹ ẹgbẹ ti kii ṣe gbigba (iyẹn ni, ikosile ninu awọn akọmọ ti wa ni akojọpọ bi ikosile kan).
Ni ipo ti lilo Sipiyu ti o pọju, ilana yii le ṣe apejuwe bi .*.*=.*. Ni fọọmu yii, apẹrẹ naa dabi idiju ti ko wulo. Ṣugbọn diẹ ṣe pataki, ni agbaye gidi, awọn ikosile (bii awọn ikosile idiju ninu awọn ofin WAF) ti o beere fun ẹrọ naa lati baamu ajẹkù ti o tẹle pẹlu ajẹkù miiran le ja si ipadasẹhin ajalu. Ati idi eyi.

Ni deede ikosile . tumọ si pe o nilo lati baamu ohun kikọ kan, .* - baramu odo tabi diẹ ẹ sii ohun kikọ "ìwọra", ti o ni, yiya kan ti o pọju ti ohun kikọ silẹ, ki .*.*=.* tumo si odo baramu tabi diẹ ẹ sii ohun kikọ, ki o si baramu odo tabi diẹ ẹ sii ohun kikọ, ri gangan = ohun kikọ, baramu odo tabi diẹ ẹ sii ohun kikọ.
Jẹ ki a gba laini idanwo naa x=x. O ni ibamu si ikosile .*.*=.*. .*.* ṣaaju ki ami dogba ibaamu akọkọ x (ọkan ninu awọn ẹgbẹ .* ibamu pẹlu x, ati awọn keji - odo ohun kikọ). .* lẹhin = ibaamu kẹhin x.
Ifiwera yii nilo awọn igbesẹ 23. Ẹgbẹ akọkọ .* в .*.*=.* O ṣe ojukokoro ati pe o baamu gbogbo okun naa x=x. Enjini n lọ si ẹgbẹ ti o tẹle .*. A ko ni awọn ohun kikọ diẹ sii lati baramu, nitorinaa ẹgbẹ keji .* ibaamu odo ohun kikọ (eyi ti wa ni laaye). Lẹhinna engine gbe lọ si ami naa =. Ko si awọn aami diẹ sii (ẹgbẹ akọkọ .* lo gbogbo ikosile x=x), ko si lafiwe waye.
Ati lẹhinna ẹrọ ikosile deede pada si ibẹrẹ. O tẹsiwaju si ẹgbẹ akọkọ .* ó sì fi wé e с x= (dipo x=x), ati lẹhinna gba ẹgbẹ keji .*. Ẹgbẹ keji .* ti wa ni akawe pẹlu awọn keji x, ati awọn ti a lẹẹkansi ni ko si ohun kikọ silẹ. Ati nigbati awọn engine Gigun lẹẹkansi = в .*.*=.*, ko si nkan ti o ṣiṣẹ. Ati pe o tun pada sẹhin.
Ni akoko yii ẹgbẹ naa .* si tun baramu x=, ṣugbọn ẹgbẹ keji .* ko si mọ x, ati odo ohun kikọ. Enjini n gbiyanju lati wa ohun kikọ gidi kan = ninu apẹrẹ .*.*=.*, ṣugbọn ko jade (lẹhinna, ẹgbẹ akọkọ ti tẹdo rẹ tẹlẹ .*). Ati pe o tun pada sẹhin.
Ni akoko yii ẹgbẹ akọkọ .* gba nikan ni akọkọ x. Ṣugbọn ẹgbẹ keji .* "ìwọra" gba =x. Njẹ o ti gboju tẹlẹ kini yoo ṣẹlẹ? Enjini gbiyanju lati baramu awọn gegebi =, kuna ati ki o ṣe miiran backtracking.
Ẹgbẹ akọkọ .* si tun ibaamu akọkọ x. Keji .* nikan gba =. Dajudaju, engine ko le baramu gangan =, nitori pe ẹgbẹ keji ti ṣe eyi tẹlẹ .*. Ati lẹẹkansi backtracking. Ati pe a n gbiyanju lati baramu okun ti awọn ohun kikọ mẹta!
Bi abajade, ẹgbẹ akọkọ .* ibaamu nikan akọkọ ọkan x, keji .* - pẹlu odo ohun kikọ, ati awọn engine nipari ibaamu awọn gegebi = ni ikosile с = ni tito. Nigbamii ni ẹgbẹ ikẹhin .* ti wa ni akawe pẹlu awọn ti o kẹhin x.
Awọn igbesẹ 23 nikan fun x=x. Wo fidio kukuru kan nipa lilo Perl , eyi ti o fihan bi awọn igbesẹ ati backtracking waye.

Eyi jẹ iṣẹ pupọ tẹlẹ, ṣugbọn kini ti o ba jẹ dipo x=x ao ni x=xx? Iyẹn jẹ igbesẹ 33. Ati ti o ba x=xxx? 45. Ìbáṣepọ̀ kì í ṣe ìlà. Awonya fihan a lafiwe lati x=x si x=xxxxxxxxxxxxxxxxxxxx (20 x после =). Ti a ba ni 20 x lẹhin =, ẹrọ naa pari ibaramu ni awọn igbesẹ 555! (Pẹlupẹlu, ti a ba ti padanu x= ati okun ni nìkan ni 20 x, engine yoo gba awọn igbesẹ 4067 lati ni oye pe ko si awọn ere-kere).

Yi fidio fihan gbogbo awọn backtracking fun lafiwe x=xxxxxxxxxxxxxxxxxxxx:

Iṣoro naa ni pe bi iwọn okun ti n pọ si, akoko ibaramu yoo dagba ni laini-laini. Ṣugbọn awọn nkan le buru paapaa ti ikosile deede ba yipada diẹ. Jẹ ká sọ pé a ní .*.*=.*; (iyẹn ni pe, semicolon gidi kan wa ni opin apẹrẹ). Fun apẹẹrẹ, lati baramu ọrọ kan bi foo=bar;.
Ati pe nibi ifẹhinti lẹnu iṣẹ yoo jẹ ajalu gidi kan. Fun lafiwe x=x yoo gba awọn igbesẹ 90, kii ṣe 23. Ati pe nọmba naa n dagba ni kiakia. Lati ṣe afiwe x= ati 20 x, 5353 igbesẹ ti wa ni ti nilo. Eyi ni chart naa. Wo awọn iye axis Y akawe si ti tẹlẹ chart.

Ti o ba nifẹ si, ṣayẹwo gbogbo awọn igbesẹ ibaamu 5353 kuna x=xxxxxxxxxxxxxxxxxxxx и .*.*=.*;

Nipa lilo ọlẹ kuku ju ibaramu ojukokoro, iwọn ti ifẹhinti le ni iṣakoso. Ti a ba yi ikosile atilẹba pada si .*?.*?=.*?, fun lafiwe x=x yoo gba awọn igbesẹ 11 (kii ṣe 23). Bi fun x=xxxxxxxxxxxxxxxxxxxx. Gbogbo nitori ? после .* sọ fun engine lati baramu nọmba ti o kere ju awọn ohun kikọ ṣaaju ki o to lọ siwaju.
Ṣugbọn awọn aworan aworan ọlẹ ko yanju iṣoro ifẹhinti patapata. Ti a ba ropo catastrophic apẹẹrẹ .*.*=.*; on .*?.*?=.*?;, akoko ipaniyan yoo wa nibe kanna. x=x nilo si tun 555 awọn igbesẹ ti, ati x= ati 20 x - 5353.
Ohun kan ṣoṣo ti o le ṣee ṣe (Yato si atunko apẹrẹ patapata fun iyasọtọ nla) ni lati kọ ẹrọ ikosile deede pẹlu ẹrọ isọdọtun rẹ. Eyi ni ohun ti a yoo ṣe ni awọn ọsẹ diẹ ti nbọ.
Ojutu si iṣoro yii ni a ti mọ lati ọdun 1968, nigbati Kent Thompson kowe nkan kan ("Awọn ọna Iṣeto: Algorithm Wiwa Ikosile deede"). Nkan naa ṣe apejuwe ilana kan ti o fun ọ laaye lati ṣe iyipada ikosile deede sinu awọn ẹrọ ipinlẹ ailopin ti kii ṣe ipinnu, ati lẹhin awọn iyipada ipinlẹ ninu awọn ẹrọ ipinlẹ ailopin ti kii ṣe ipinnu, lo algorithm kan ti akoko ipaniyan da lori laini lori okun ti o baamu.
Awọn ọna siseto
Alugoridimu Wiwa Ikosile deede
Ken Thompson
Bell Telephone Laboratories, Inc., Murray Hill, New JerseyO ṣe apejuwe ọna kan fun wiwa okun kan pato ti awọn ohun kikọ ninu ọrọ ati jiroro lori imuse ti ọna yii ni fọọmu akojọpọ. Olupilẹṣẹ gba ikosile deede bi koodu orisun ati ṣe agbejade eto IBM 7094 bi koodu ohun. Eto ohun naa n gba titẹ sii ni irisi ọrọ wiwa ati njade ifihan agbara ni igba kọọkan ti okun ọrọ ba baamu si ikosile deede. Nkan naa pese awọn apẹẹrẹ, awọn iṣoro ati awọn solusan.
Awọn algorithm
Awọn algoridimu wiwa iṣaaju yorisi ifẹhinti ti wiwa aṣeyọri apakan kan kuna lati ṣe abajade kan.Ni ipo akopo, algorithm ko ṣiṣẹ pẹlu awọn aami. O kọja awọn ilana lati ṣajọ koodu. Ipaniyan jẹ iyara pupọ - lẹhin gbigbe data si oke ti atokọ lọwọlọwọ, o wa laifọwọyi fun gbogbo awọn ohun kikọ itẹlera ti o ṣeeṣe ni ikosile deede.
Iṣakojọpọ ati algorithm wiwa wa ninu oluṣatunṣe ọrọ pinpin akoko bi wiwa ọrọ-ọrọ. Nitoribẹẹ, eyi jina si ohun elo nikan ti iru ilana wiwa kan. Fun apẹẹrẹ, iyatọ ti algoridimu yii jẹ lilo bi wiwa aami ninu tabili ni apejọ.
A ro pe oluka naa mọ pẹlu awọn ikosile deede ati ede siseto kọmputa IBM 7094.Akojopo
Olupilẹṣẹ ni awọn ipele mẹta ti nṣiṣẹ ni afiwe. Ipele akọkọ jẹ sisẹ sintasi, eyiti o fun laaye laaye nikan ni atunṣe awọn ọrọ deede lati kọja. Igbesẹ yii tun fi oniṣẹ ẹrọ "·" sii lati ba awọn ikosile deede mu. Ni igbesẹ keji, ikosile deede ti yipada si fọọmu postfix. Ni ipele kẹta, koodu ohun ti ṣẹda. Awọn ipele 2 akọkọ jẹ kedere, ati pe a ko ni gbe lori wọn.
Nkan Thompson ko sọrọ nipa awọn ẹrọ ipinlẹ ailopin ti kii ṣe ipinnu, ṣugbọn o ṣe alaye algorithm akoko laini daradara ati ṣafihan eto ALGOL-60 kan ti o ṣe agbekalẹ koodu ede apejọ fun IBM 7094. Imuse naa jẹ ẹtan, ṣugbọn ero naa rọrun pupọ.
lọwọlọwọ search ona. O jẹ aṣoju nipasẹ aami ⊕ pẹlu titẹ sii kan ati awọn abajade meji.
Nọmba 1 ṣe afihan awọn iṣẹ ti igbesẹ akojọpọ kẹta nigbati o ba n yi apẹẹrẹ ikosile deede pada. Awọn ohun kikọ mẹta akọkọ ninu apẹẹrẹ jẹ a, b, c, ati ọkọọkan ṣẹda titẹsi akopọ S[i] ati aaye NNODE kan.NNODE si koodu ti o wa tẹlẹ lati ṣe ipilẹṣẹ ikosile deede ti o yọrisi ni titẹsi akopọ kan (wo Nọmba 5)
Eyi ni ohun ti ikosile deede yoo dabi .*.*=.*, ti o ba fojuinu rẹ bi ninu awọn aworan lati nkan Thompson.

Ninu Ọpọtọ. 0 nibẹ ni o wa marun ipinle ti o bere lati 0, ati 3 cycles ti o bẹrẹ lati ipinle 1, 2 ati 3. Awọn mẹta yiyi ni ibamu si mẹta. .* ni a deede ikosile. Awọn ovals 3 pẹlu awọn aami ibaamu si aami kan. Oval pẹlu ami kan = ibaamu kan gegebi ohun kikọ =. Ipinle 4 jẹ ipari. Ti a ba de ọdọ rẹ, lẹhinna ikosile deede ti baamu.
Lati wo bii iru aworan atọka ipinlẹ le ṣee lo fun ibaramu ikosile deede .*.*=.*, a yoo wo ni ibamu okun x=x. Eto naa bẹrẹ lati ipinle 0, bi o ṣe han ni Ọpọtọ. 1.

Fun algorithm yii lati ṣiṣẹ, ẹrọ ipinlẹ gbọdọ wa ni awọn ipinlẹ pupọ ni nigbakannaa. Ẹrọ ailopin ti kii ṣe ipinnu yoo ṣe gbogbo awọn iyipada ti o ṣeeṣe nigbakanna.
Ṣaaju ki o to ni akoko lati ka data titẹ sii, o lọ sinu awọn ipinlẹ akọkọ mejeeji (1 ati 2), bi o ṣe han ni Ọpọtọ. 2.

Ninu Ọpọtọ. 2 fihan ohun ti o ṣẹlẹ nigbati o wo ni akọkọ x в x=x. x le maapu si oke ojuami, lọ lati ipinle 1 ati ki o pada si ipinle 1. Tabi x le ṣe maapu si aaye isalẹ, gbigbe lati ipinle 2 ati pada si ipo 2.
Lẹhin ti o baamu akọkọ x в x=x a tun wa ni awọn ipinlẹ 1 ati 2. A ko le de ipinlẹ 3 tabi 4 nitori a nilo ihuwasi gidi kan =.
Algoridimu lẹhinna ro = в x=x. Bi x ṣaaju ki o to, o le baramu si boya ninu awọn oke meji losiwajulosehin lati ipinle 1 si ipinle 1 tabi lati ipinle 2 si ipinle 2, ṣugbọn awọn algoridimu le baramu awọn gegebi. = ati ki o gbe lati ipinle 2 si ipinle 3 (ati lẹsẹkẹsẹ 4). Eyi han ni Ọpọtọ. 3.

Algoridimu lẹhinna gbe lọ si ọkan ti o kẹhin x в x=x. Lati awọn ipinlẹ 1 ati 2 awọn iyipada kanna ṣee ṣe pada si awọn ipinlẹ 1 ati 2. Lati ipinlẹ 3 x le baramu aaye ti o wa ni apa ọtun ki o pada si ipo 3.
Ni ipele yii, ohun kikọ kọọkan x=x kà, ati niwon a ti sọ ami ipinle 4, awọn deede ikosile ibaamu ti okun. Ohun kikọ kọọkan ti ni ilọsiwaju ni ẹẹkan, nitorinaa algorithm yii jẹ laini ni gigun ti okun titẹ sii. Ati pe ko si ipadasẹhin.
O han ni, lẹhin ti o de ipo 4 (nigbati algorithm ti baamu x=) gbogbo ikosile deede ti baamu, ati algorithm le fopin si laisi iṣaro rẹ rara x.
Algorithm yii gbarale laini lori iwọn okun titẹ sii.
orisun: www.habr.com
