Proste łagodzenie złych botów dzięki naukom o sygnałach

Nov 29 2022
W Internecie jest mnóstwo botów. Każdy, kto ma za zadanie chronić witryny o dużym natężeniu ruchu, dobrze o tym wie.
Zdjęcie Owena Bearda na Unsplash

W Internecie jest mnóstwo botów. Każdy, kto ma za zadanie chronić witryny o dużym natężeniu ruchu, dobrze o tym wie. Niektóre boty są dobre i pożądane — pomyśl o robotach wyszukiwarek. Niektóre boty są łagodne, na przykład skrypty wywołujące interfejs API lub monitorujące dostępność witryny. Ale często boty mogą być albo uciążliwe, wpływając na wydajność, albo wręcz złośliwe. To są „złe” boty, które chciałbyś łatwo zablokować i nie mieć już z nimi do czynienia. W tym poście chciałbym podzielić się uproszczonym, zautomatyzowanym podejściem do wdrożenia całkiem dobrego łagodzenia złych botów za pomocą zapory sieciowej (WAF) Signal Sciences.

Definiowanie typów botów

Zanim przejdę do szczegółów, chciałbym przedstawić, jak definiuję bota i złego bota. Bot to każdy klient wysyłający żądania do Twojej witryny, który nie jest człowiekiem obsługującym nowoczesną przeglądarkę internetową. Tak więc boty to skrypty, narzędzia wiersza poleceń, programy, złośliwe oprogramowanie itp., które działają autonomicznie lub są wywoływane przez człowieka. To, co czyni bota złym, to jego zachowanie. Na przykład, czy wysyła złośliwe ładunki lub sonduje w poszukiwaniu prywatnych katalogów i plików?

Przykładowe żądanie bota:

Bot reklamowy Google wysyłający łagodną prośbę

Przykładowe żądanie złego bota:

Narzędzie skanujące wysyłające złośliwe żądania

Identyfikacja botów

Pierwszym krokiem jest zidentyfikowanie każdego bota, który może sondować, indeksować lub szturchać Twoją witrynę. Upraszczając, możemy użyć bardzo podstawowej metody identyfikowania botów — opartej po prostu na długości ciągu agenta użytkownika. Ciąg agenta użytkownika to nagłówek żądania ustawiany przez klienta, który umożliwia serwerom i rówieśnikom sieciowym jego identyfikację. Zwykli ludzie korzystający z nowoczesnej przeglądarki zawsze będą mieli minimalną długość ciągu agenta użytkownika równą pewnej liczbie, x . Chociaż boty mogą sfałszować ciąg agenta użytkownika, większość botów tego nie robi. Ich ciągi agenta użytkownika są zwykle znacznie krótsze niż ciągi agenta użytkownika przeglądarki. W rezultacie możemy założyć, że x minus pewna liczba n to nie człowiek — to bot. Możesz zdecydować o swoim progu tego, jakie powinny być x i n .

Istnieją różne źródła w Internecie, w których można znaleźć listy ciągów agentów użytkownika. Oto przykład jednego z tych źródeł:

  • https://useragentstring.com/pages/Chrome/
  • https://useragentstring.com/pages/Firefox/
  • https://useragentstring.com/pages/Edge/

Mając tę ​​regułę i sygnał na miejscu, warto przeglądać dane, które generuje w czasie. Może zapewnić widoczność interesującego ruchu, o którym mogłeś wcześniej nie wiedzieć.

Przykładowe wyniki z reguły Bot:

Aby uzyskać szybkie wyjaśnienie zasad na poziomie korporacji i zasad na poziomie witryny, jeśli nie znasz tych pojęć. Reguły stosowane na poziomie korporacyjnym można wdrożyć we wszystkich witrynach, na których działa agent Signal Sciences. Reguły stosowane na poziomie lokacji są implementowane tylko w agentach dla tej konkretnej lokacji. Użyj opcji, która ma największy sens w twoim środowisku.

Zidentyfikuj złe boty

Teraz, gdy możesz identyfikować boty, jak się zachowują? W Signal Sciences możemy stworzyć kolejny prosty poziom korporacyjny, aby zdefiniować złe zachowanie botów. Pierwszy warunek dla tej reguły szuka sygnału bota, a drugi warunek szuka dowolnej liczby ataków, anomalii lub sygnałów niestandardowych. Możesz łatwo dostosować regułę, aby uwzględnić sygnały, które mają największy sens w twoim scenariuszu. W poniższym przykładzie uwzględniliśmy również dopasowanie listy adresów IP do danych wywiadowczych o zagrożeniach. Podsumowując regułę, jeśli jest to bot i robi wiele złych rzeczy, to jest to zły bot i dodaj sygnał „Zły bot” do żądania.

Przykładowe wyniki z reguły Bad Bot:

Egzekwowanie

Ostatnim krokiem jest utworzenie naszej reguły egzekwowania, limitu szybkości lub reguły blokowania. Pamiętaj, że reguły dotyczące limitów stawek są stosowane na poziomie witryny. Reguła blokowania może zostać wdrożona na poziomie korporacji lub witryny i zablokuje cały ruch z sygnałem Bad Bot. Zachowaj ostrożność przy tym poziomie agresywnego blokowania. Rozważ monitorowanie danych w czasie, aby uzyskać pewność, że reguła blokowania nie wpłynie na legalny ruch produkcyjny. Alternatywnie, reguła limitu szybkości zapewnia elastyczność w określaniu poziomu tolerancji przed zablokowaniem ruchu Bad Bot. W poniższym przykładzie warunek reguły limitu szybkości dotyczy dowolnego żądania z sygnałem Bad Bot i rozpocznie blokowanie po zobaczeniu 10 sygnałów Bad Bot w ciągu 1 minuty. Decyzja o zablokowaniu będzie aktywna przez 5 minut. Próg zliczania i czas trwania działania można łatwo modyfikować do żądanych wartości.

Wniosek

Wykorzystanie długości łańcucha agenta użytkownika do wykrywania botów jest prostym podejściem i z mojego doświadczenia wynika, że ​​skutecznie identyfikuje większość ruchu botów. Określając długość łańcucha agenta użytkownika dla swojego scenariusza, identyfikując złe zachowanie i stosując ograniczenie szybkości, będziesz mieć dobry start w ograniczaniu niepożądanego ruchu botów. Signal Sciences sprawia, że ​​to podejście jest łatwe do wdrożenia dzięki możliwości reguł. Jeśli jednak nie masz Signal Sciences, biorąc pod uwagę to proste podejście, warto byłoby zbadać możliwości dostępnych narzędzi do identyfikowania botów, złych botów i egzekwowania prawa.