Un firewall de aplicații web e un filtru care stă în fața unui site și inspectează fiecare cerere înainte ca site-ul să o vadă. Cererile care seamănă a atac sunt oprite la ușă; restul trec neatinse. Descris așa, pare ceva ce orice site ar trebui pur și simplu să aibă pornit. Partea interesantă, și cea care ne preocupă cel mai mult, e ștacheta de calitate: un firewall e bun doar dacă vizitatorii tăi reali nu observă niciodată că există.
Partea a doua e mai grea decât prima. Să blochezi atacurile e, în linii mari, o problemă rezolvată; seturile de reguli mature recunosc tiparele obișnuite: tentative de injecție, conținut malițios, sondări. Greul e să le blochezi fără să prinzi vreodată și un client legitim care tocmai a lipit ceva neobișnuit într-un formular, a trimis un comentariu lung sau a încărcat un fișier cu un nume ciudat. Un firewall care blochează din când în când un om real nu e o măsură de securitate. E o fabrică de tichete de suport și, mai rău, îi învață pe oameni că site-ul tău e capricios.
Așa că, atunci când mutăm un site pe firewall-ul nostru administrat, urmăm niște pași bine gândiți, iar blocarea efectivă e ultimul dintre ei, nu primul.
Întotdeauna începem cu detectarea
Fiecare site pornește în modul de detectare. Firewall-ul inspectează tot traficul și evaluează fiecare regulă, dar nu blochează nimic. În schimb, notează ce ar fi blocat și de ce: ce regulă s-a declanșat, la ce cerere, de unde. Site-ul se comportă exact ca înainte, pentru toată lumea.
Etapa asta există pentru că la fiecare site "normal" înseamnă altceva. Un blog de rețete, un portal de joburi cu încărcare de fișiere și un magazin cu formulare lungi de finalizare a comenzii produc trafic foarte diferit, iar o regulă perfect rezonabilă pentru unul poate citi greșit traficul altuia. Modul de detectare ne arată cum se potrivește setul generic de reguli pe site-ul respectiv, pe baza singurei dovezi care contează: traficul real, de la vizitatori reali, care fac ce fac ei de obicei. Nicio presupunere făcută dinainte nu ține loc de asta. Traficul real conține mereu surprize, și preferăm să le găsim într-un jurnal decât într-o comandă blocată la plată.
Calibrăm pe trafic real
Apoi citim ce a găsit firewall-ul. O parte din ce semnalează e cu adevărat ostilă: sondări automate după vulnerabilități cunoscute, tentative de injecție împotriva formularelor, scanere care parcurg site-ul căutând o ușă descuiată. Să vezi asta negru pe alb în jurnale e util în felul lui: îți arată câtă atenție nedorită primește un site obișnuit într-o zi obișnuită.
Restul traficului semnalat e motivul pentru care există etapa de calibrare: cereri legitime care doar seamănă cu ceva suspect. Un editor care lipește HTML într-un câmp de conținut. Un formular trimis cu un fragment de cod în el, pentru că site-ul se adresează unui public tehnic. O structură de URL la care setul de reguli nu se aștepta. Fiecare dintre ele e un fals pozitiv care ar fi însemnat un client blocat, și pe fiecare îl rezolvăm cu grijă: ajustăm regula, restrângem excepția cât de mult se poate și lăsăm protecția intactă peste tot în rest. E o muncă migăloasă, fără grabă, și ține până când falsurile pozitive dispar. Nu devin rare. Dispar.
Abia apoi trecem la blocare
Când un site a rulat curat în modul de detectare, îl trecem pe blocare, și de atunci firewall-ul oprește atacurile, nu doar le descrie. Pentru că am făcut lucrurile în ordinea asta, trecerea nu are nimic spectaculos. Vizitatorii nu observă nimic, editorii nu observă nimic, iar traficul semnalat care rămâne e trafic căruia n-o să-i ducă dorul nimeni.
Munca nu se termină odată cu trecerea pe blocare. Site-urile se schimbă: apar funcționalități noi, apar formulare noi, conținutul evoluează, iar seturile de reguli se actualizează și ele pe măsură ce apar tipare de atac noi. Continuăm să urmărim ce face firewall-ul și după ce începe blocarea, iar fiecare schimbare pe site e un semn să verificăm dacă regulile încă se potrivesc. Un firewall nu e un aparat pe care îl instalezi și îl uiți. E ceva croit pe măsura site-ului, și trebuie ajustat din nou pe măsură ce site-ul crește.
Controale la marginea rețelei, înainte ca traficul să ajungă la site
Inspecția pe bază de reguli e doar un strat. Pe lângă ea, platforma noastră aplică un set de controale mai largi la marginea rețelei, înainte ca traficul să atingă aplicația, acolo unde e cel mai ieftin să scapi de traficul nedorit.
Controalele geografice pornesc de la niște adevăruri simple despre afacere: o firmă locală de servicii, care lucrează într-o singură țară, nu are de ce să accepte tentative de autentificare de pe cealaltă parte a planetei. Controalele pe IP blochează sursele cunoscute ca rău intenționate și lasă explicit să treacă sursele de încredere. Iar controalele pentru boți se ocupă de partea consistentă a traficului web care nu e deloc umană. O parte din el e binevenită, cum sunt crawlerele motoarelor de căutare, și e tratată ca atare. O mare parte e însă copiere de conținut și sondare automată din rețele de centre de date, iar traficul ăsta e identificat și limitat la marginea rețelei, fără niciun efect asupra vizitatorilor reali. Serverul tău își consumă resursele pe oameni, ceea ce e, în treacăt, și un câștig de performanță.
Administrat înseamnă că cineva chiar stă cu ochii pe el
Îi spunem firewall administrat pentru că valoarea stă în administrare, nu în software. Pașii de mai sus, detectare, calibrare, blocare și urmărirea continuă de după, sunt muncă de om, făcută pe baza unor jurnale reale de pe un site real. E diferența dintre a avea o încuietoare și a avea pe cineva care verifică dacă încuietoarea se mai potrivește ușii de fiecare dată când se schimbă ușa.
Mai înseamnă și că, atunci când ceva chiar cere judecată, decizia o ia cineva care știe contextul. Un vârf de trafic blocat după o lansare poate însemna un atac, sau poate însemna că o funcționalitate nouă generează cereri pe care regulile le citesc greșit. Ca să le deosebești îți trebuie un om care știe ce s-a lansat săptămâna asta. Omul acela suntem noi, și e aceeași echipă care a construit și întreține site-ul, ceea ce scurtează drumul de la observat la înțeles și la reparat.
Securitatea ca ștachetă de calitate, nu ca sperietoare
Nimic din toate astea nu pornește din frică, și nici nu am vrea să le vindem așa. Atacurile împotriva site-urilor obișnuite nu sunt evenimente dramatice; sunt ca vremea de afară: constante, în mare parte automate și în mare parte fără țintă precisă. Răspunsul rezonabil la vreme nu e panica. E un acoperiș bun, pus corect, verificat din când în când.
Ce credem noi că merită urmărit e standardul ascuns în expresia "făcut ca lumea". Protecție calibrată pe site, nu lipită pe deasupra. Blocare care pornește abia după ce dovezile arată că e sigur. Controale la marginea rețelei care țin cont de cum funcționează afacerea în realitate. Și, peste toate, o promisiune măsurabilă: vizitatorul legitim nu vede nimic din toate astea. Navighează, trimite, cumpără, iar tot angrenajul rămâne invizibil. În securitate, ca în mai toată munca de infrastructură pe care o facem, lucrul bine făcut arată așa: invizibil.
