Weryfikacja ruchu botów z wykorzystaniem kryptografii

Każdy z nas wie, jak niejasne stało się pojęcie bota w dobie lawinowego wzrostu ruchu wygenerowanego przez agentów AI. "Botanizowanie" sieci nie ogranicza się już tylko do groźnych botów wykonujących ataki DDoS lub atakujących hasła. Dzisiejszy świat należy także do pożądanych botów—agregujących RSS czy indeksujących treści dla wyszukiwarek. Pytanie, jak wiarygodnie odróżnić jedne od drugich?
Od lat podstawą rozpoznawania botów były dwie metody:
- Weryfikacja nagłówka
User-Agent
- Sprawdzanie adresów IP na podstawie opublikowanych zakresów
Niestety, oba rozwiązania mają istotne wady:
User-Agent
jest banalnie prosty do podrobienia. Każdy agent może udawać inną przeglądarkę.- Adresy IP są coraz mniej jednoznaczne. Dynamiczne przydziały, proxy i VPN-y sprawiają, że jeden adres bywa wspólny dla setek usług.
Lepiej nie blokować po omacku, lecz pozwolić botom na jednoznaczną, kryptograficzną identyfikację. Cloudflare stawia na transparentność dzięki dwóm propozycjom: podpisom wiadomości HTTP oraz request mTLS.
Podpisywanie wiadomości HTTP (HTTP Message Signatures, RFC 9421) to jedno z najczystszych rozwiązań. Pozwala agentowi przypiąć do każdego zapytania niezaprzeczalny podpis kryptograficzny.
Jak to działa? Najprostszy schemat:
- Agent podpisuje żądanie pod kluczem publicznym znanym stronie docelowej.
- Klucz publiczny jest publikowany lub rejestrowany w miejscu zaufanym (np. przez pole
Signature-Agent
). - Żądanie zawiera nagłówki:
Signature-Input
: opisuje, co i kiedy zostało podpisane, oraz identyfikator klucza (keyid
)Signature
: właściwy podpis kryptograficzny bazujący na wybranych polach i czasie.
Przykładowe zapytanie HTTP:
GET /path/to/resource HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 Chrome/113.0.0 MyBotCrawler/1.1
Signature-Agent: signer.example.com
Signature-Input: sig=("@authority" "signature-agent"); created=1700000000; expires=1700011111; keyid="ba3e64=="; tag="web-bot-auth"
Signature: sig=abc==
Takie podejście oznacza, że strona może natychmiast zweryfikować autentyczność źródła żądania.
Dostępne są już przykłady w formie rozszerzeń do przeglądarki (np. Chrome) i bibliotek JS/TypeScript (np. web-bot-auth na npm). Przed wysłaniem żądania, podpis trafia w odpowiednie nagłówki. Podobną logikę można zintegrować z backendem (Go, Caddy).
Z poziomu serwera (np. Cloudflare Worker lub Caddy) możemy natychmiast zweryfikować podpis, korzystając ze znanego klucza publicznego. Pozwala to budować polityki dostępu oraz prowadzić rejestry działań agentów.
Podpisy HTTP nie są jedyną możliwością. Wersja oparta o mutual TLS (mTLS) wykorzystuje wzajemne uwierzytelnienie certyfikatem X.509 podczas zestawiania połączenia TLS. Jednak standardowe mTLS jest upierdliwe dla przeglądarek i zwykłych użytkowników—błąd certyfikatu oznacza całkowity brak dostępu.
Propozycja Cloudflare, rozpatrywana w IETF, polega na dodaniu flagi req mTLS
. Klient sygnalizuje w handshake'u TLS, że obsługuje prezentację certyfikatu klienta. Zwykli użytkownicy tej flagi nie ustawiają. Serwer zyskuje pewność, że żąda certyfikatu tylko od botów/agentów wdrożonych do tego celu.
config := &tls.Config{
TLSFlagsSupported: []tls.TLSFlag{0x50},
RootCAs: rootPool,
Certificates: certs,
NextProtos: []string{"h2"},
}
trans := http.Transport{TLSClientConfig: config, ForceAttemptHTTP2: true}
Przykład kodu Go dla obsługi req mTLS
.
Porównanie rozwiązań—podsumowanie architektury
Kryterium | HTTP Message Signatures | request mTLS (TLS Flags) |
---|---|---|
Poziom działania | Warstwa aplikacyjna (HTTP) | Warstwa transportowa (TLS) |
Łatwość wdrożenia | Wysoka, wiele bibliotek | Niska, wymaga zmian w TLS |
Standaryzacja | RFC 9421, szerokie wsparcie | Propozycja, brak RFC |
Przykładowe użycia | Bots / Webhooki / API | Infrastruktura, wymagania „enterprise” |
Kompatybilność | HTTP/HTTPS wszędzie | Tylko tam, gdzie możliwe zmiany w TLS |
Technologia i Kultura Nowoczesnej Sieci
Sieć to coś więcej niż tylko kable i routery. To krwioobieg, który może zadecydować o przewadze biznesowej firmy. Czy na pewno wykorzystujesz jej pełny potencjał?
Większość inżynierów sieci doskonale rozumie nowoczesne technologie — automatyzacja, wysokiej klasy zarządzanie, segmentacja czy SDN już nie robią wrażenia. Jednak nawet najbardziej zaawansowane projekty często napotykają na niewidzialny mur. Co nim jest? Zaskakująco rzadko są to ograniczenia technologiczne. Znacznie częściej problemem są:
- Struktury organizacyjne, które hamują zmiany.
- Brak wsparcia kierownictwa dla projektów modernizacyjnych.
- Kultura pracy niegotowa na transformację.
Firmy, które chcą być liderami swojej branży, traktują infrastrukturę IT jako inwestycję. To nie tylko narzędzie operacyjne. To potencjalny motor wzrostu i innowacji. Transformacja sieci na poziomie technologicznym i kulturowym może zadecydować o:
- Krótszym time-to-market dla nowych usług.
- Wyższej niezawodności działania oraz odporności na awarie.
- Sprawnym wdrażaniu rozwiązań chmurowych i hybrydowych.
- Skuteczniejszym reagowaniu na wymagania biznesowe w czasie rzeczywistym.
Efektywna transformacja sieci nie ogranicza się do inwestycji sprzętowych czy wdrożeń rozwiązań automatyzujących. Kluczowe jest zgranie trzech filarów:
1. Technologia
- Automatyzacja powtarzalnych zadań.
- Standaryzacja konfiguracji.
- Monitorowanie i analityka w czasie rzeczywistym.
2. Procesy
- Jasno zdefiniowane ścieżki eskalacji.
- Procedury wdrożeniowe oparte na najlepszych praktykach.
- Zarządzanie ryzykiem operacyjnym.
3. Ludzie i kultura
- Edukacja i wspieranie zespołów w zakresie nowych narzędzi.
- Promowanie współpracy między działami IT i biznesem.
- Zachęcanie do inicjatyw i dzielenia się wiedzą.
Te obszary muszą się rozwijać równolegle, aby zmiana była trwała i skuteczna.
Jak odblokować pełny potencjał swojej sieci?
- Ustal jednoznacznie biznesowe cele sieci (np. skrócenie czasu wdrożenia usług, minimalizacja przestojów).
- Zidentyfikuj "mury" w organizacji — gdzie sieć ogranicza rozwój lub gdzie zmiany są blokowane przez przyzwyczajenia.
- Wprowadź regularne dialogi między IT a biznesem — niech sieć stanie się częścią strategii, a nie kosztownym dodatkiem.
- Promuj inicjatywy edukacyjne dla zespołu — rozwój technologiczny bez szkoleń rzadko się udaje.
- Wdrażaj zmiany iteracyjnie, małymi krokami — "slow is smooth, smooth is fast". Drobne sukcesy motywują do kolejnych, większych.
Czy powinieneś blokować ICMP?
ICMP często bywa blokowany na zaporach sieciowych z powodu potencjalnych zagrożeń, ale całkowite blokowanie ICMP to błąd. Protokół ten pełni kluczowe funkcje w sieci, zarówno w diagnozowaniu problemów, jak i w utrzymaniu prawidłowego działania połączeń.
Zarządzanie intencjami z Ansible
Intent-based-ansible-lab to praktyczny projekt pokazujący, jak zarządzać konfiguracją sieci SR Linux za pomocą Ansible w podejściu opartym na intencjach. Repozytorium wykorzystuje oficjalną kolekcję Ansible dla SR Linux i zawiera gotowe topologie do uruchomienia w Containerlab, a także przykładowe playbooki.
Jak uruchomić Pythona na produkcji
Przeczytaj całą historię
Zarejestruj się teraz, aby przeczytać całą historię i uzyskać dostęp do wszystkich postów za tylko dla płacących subskrybentów.
Subskrybuj