📬 ISN 188: Produkcyjny Python, Intencje Ansible i Sekrety Krypto-Weryfikacji Botów!

W 188 numerze poznasz metody weryfikacji botów przez kryptografię, dowiesz się, czy warto blokować ICMP, zgłębisz zarządzanie intencjami w Ansible i odkryjesz, jak efektywnie uruchomić Pythona na produkcji. Nowoczesna sieć czeka!
📬 ISN 188: Produkcyjny Python, Intencje Ansible i Sekrety Krypto-Weryfikacji Botów!

Weryfikacja ruchu botów z wykorzystaniem kryptografii

Forget IPs: using cryptography to verify bot and agent traffic
Bots now browse like humans. We’re proposing bots use cryptographic signatures so that website owners can verify their identity. Explanations and demonstration code can be found within the post.

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:

  1. User-Agent jest banalnie prosty do podrobienia. Każdy agent może udawać inną przeglądarkę.
  2. 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:

  1. Agent podpisuje żądanie pod kluczem publicznym znanym stronie docelowej.
  2. Klucz publiczny jest publikowany lub rejestrowany w miejscu zaufanym (np. przez pole Signature-Agent).
  3. Żą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

Unlocking the Full Potential of Network Infrastructure
The quote I’ve been returning to lately is “slow is smooth, smooth is fast.” It comes from the Navy SEALs, and it resonates deeply with where I find myself in 2025.

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?

  1. Ustal jednoznacznie biznesowe cele sieci (np. skrócenie czasu wdrożenia usług, minimalizacja przestojów).
  2. Zidentyfikuj "mury" w organizacji — gdzie sieć ogranicza rozwój lub gdzie zmiany są blokowane przez przyzwyczajenia.
  3. Wprowadź regularne dialogi między IT a biznesem — niech sieć stanie się częścią strategii, a nie kosztownym dodatkiem.
  4. Promuj inicjatywy edukacyjne dla zespołu — rozwój technologiczny bez szkoleń rzadko się udaje.
  5. Wdrażaj zmiany iteracyjnie, małymi krokami — "slow is smooth, smooth is fast". Drobne sukcesy motywują do kolejnych, większych.

Czy powinieneś blokować ICMP?

Should I block ICMP?
Should I block 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

GitHub - srl-labs/intent-based-ansible-lab
Contribute to srl-labs/intent-based-ansible-lab development by creating an account on GitHub.

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

Świetnie! Udało ci się pomyślnie zarejestrować.
Witaj z powrotem! Zalogowałeś się pomyślnie.
Pomyślnie subskrybowałeś Inna Sieć.
Twój link wygasł.
Sukces! Sprawdź swoją skrzynkę e-mailową, aby uzyskać magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zostały zaktualizowane.
Twoje informacje rozliczeniowe nie zostały zaktualizowane.