Teraz to Państwo są adresatem
Czytelnik, który chce się dowiedzieć, kto odwiedził Państwa stronę, nie zaczyna od Państwa dostawcy hostingu. Zaczyna od Państwa, ponieważ to Państwo są jedynym podmiotem w tym łańcuchu, który ma bezpośredni interes w zachowaniu zapisu, adres do doręczeń oraz żaden raport przejrzystości do opublikowania później.
To niewygodne zdanie do napisania dla firmy hostingowej, więc oto stojąca za nim arytmetyka. Opublikowany tu wykaz mówi, że logi dostępu HTTP są niszczone w cyklu dwudziestu czterech godzin i że później nigdzie nie istnieje żadna historia adresów. Standardowy serwer WWW na maszynie wynajętej od nas przechowuje własny log dostępu przez około dwa tygodnie, w nocnej kopii zapasowej przez rok, i nikt nie ustawił żadnej z tych liczb celowo. Staranny wybór hosta jest niweczony przez domyślne ustawienie, którego nikt nie przeczytał.
Co naprawdę zawiera jedna linia logu dostępu
Domyślny format w obu popularnych serwerach WWW jest niezmienny od dwudziestu pięciu lat i niemal nikt nie czyta go jako zapisu dotyczącego osoby. Warto raz przeczytać go w ten sposób, ponieważ każde z poniższych pól to osobne ujawnienie informacji, a one się sumują.
| Pole | Co zawiera | Co może zidentyfikować |
|---|---|---|
| Adres klienta | Adres, z którego przyszło żądanie, w pełnej postaci | Linia abonencka, możliwa do powiązania z gospodarstwem domowym lub pracodawcą przez podmiot, który ją przydzielił, oraz z miastem przez każdego, kto dysponuje odpowiednią bazą danych |
| Znacznik czasu, co do sekundy | Kiedy nadeszło żądanie, wraz z przesunięciem strefy czasowej | Wzorzec godzin, który jest najpierw dniem roboczym, potem regionem, a potem rutyną |
| Linia żądania | Metoda, cała ścieżka wraz ze wszystkim, co następuje po znaku zapytania, oraz protokół | Każdy token, identyfikator sesji i jednorazowy link, jaki kiedykolwiek umieszczono w adresie URL na Państwa stronie |
| Status i liczba bajtów | Czy się powiodło i ile danych wróciło | Który dokument został wysłany. Kod 200 o znanej długości wskazuje stronę, nawet jeśli połączenie było szyfrowane |
| Adres odsyłający | Strona, na której czytelnik był chwilę wcześniej | Prywatny link, który im wysłano, forum, na którym była o Państwu mowa, oraz wyszukiwane przez nich zapytanie w przypadku starszych nagłówków referera |
| User agent | Przeglądarka, wersja, silnik, system operacyjny, czasem model urządzenia | Niewiele samo w sobie, a bardzo dużo w połączeniu z innymi — to pierwsze pole każdego odcisku cyfrowego, jaki kiedykolwiek zbudowano |
| Uwierzytelniony użytkownik | Ten, kogo zapisała tam Państwa aplikacja lub mechanizm basic auth | Nazwane konto, połączone ze wszystkimi sześcioma powyższymi polami, w jednej linii |
Siedem pól, jedna linia, zapisywana dla każdego żądania wysyłanego przez przeglądarkę — co przy jednym wyświetleniu strony daje zwykle gdzieś między dwadzieścia a osiemdziesiąt linii. Nic z tego nie było decyzją. Wszystko to jest zapisem.
Dziewięć miejsc, w których własny stos technologiczny zapisuje odwiedzającego
Niemal każdy spór o logowanie dotyczy pierwszego wiersza. To ten, o którego istnieniu ludzie wiedzą, a jednocześnie daleko mu do najbardziej ujawniającej rzeczy na maszynie.
| Gdzie | Co zapisuje | Jak długo zwykle przetrwa |
|---|---|---|
| Log dostępu | Siedem powyższych pól, dla każdego żądania | Rotacja, której Państwo nie wybrali. Dwa tygodnie to typowe ustawienie domyślne |
| Log błędów | Nieudane i odrzucone żądania, wraz z adresem, pełnym adresem URL i często stroną odsyłającą | Ta sama rotacja, a nikt nigdy go nie otworzył |
| Log aplikacji | Cokolwiek Państwa framework uznał za godne zapisania w linii: identyfikatory kont, adresy e-mail, czasem cała treść żądania | Aż do zapełnienia dysku, w bardzo wielu instalacjach |
| Log bazy danych | Wolne zapytania zapisane dosłownie, wraz z parametrami | Dopóki ktoś nie zauważy, że jest włączony |
| Log poczty | Każdy adres, na który wysłano wiadomość, każdy adres, z którego przyszedł zwrot, oraz moment, w którym każdy z nich był próbowany | Rotacja, plus wszystko, co utknęło w kolejce |
| Proxy lub CDN przed serwerem | To samo żądanie jeszcze raz, w innej firmie, z prawdziwym adresem przeniesionym do nagłówka | Retencja tej firmy, która nie jest Państwa retencją i nie jest publikowana na Państwa stronie polityki prywatności |
| Analityka | Wizyta, adres, ekran, adres odsyłający oraz uporządkowana ścieżka po stronie | Miesiące domyślnie, lata, jeśli ustawienia domyślnego nie zmieniono |
| Tracker błędów | Stack trace, adres, który go wywołał, i wszystko, co akurat znajdowało się w zakresie (scope), gdy do tego doszło | Cokolwiek obejmuje wykupiony plan |
| Każda kopia zapasowa ośmiu powyższych | Wszystko to jeszcze raz, zamrożone w momencie wykonania migawki | Retencja kopii zapasowych — niezmiennie największa liczba w tej tabeli |
Ostatni wiersz jest tym, który niweczy większość dobrych intencji. Skrócenie rotacji logów z czternastu dni do jednego zmienia to, co znajduje się na dysku, i nie zmienia zupełnie niczego w kopii, która została zrobiona o trzeciej nad ranem i będzie przechowywana przez rok. Usunięcie zapisu, który już Państwo zreplikowali, jest zmianą lokalizacji, a nie usunięciem.
Dwa pola, które zdradzają więcej niż adres
Adres to pole, o które wszyscy się spierają, i to takie, które ma najkrótszy użyteczny okres życia: zmienia się, jest współdzielony, a w sieci komórkowej należy do operatora, a nie do osoby. Dwa pola obok niego są po cichu gorsze.
Adres odsyłający opisuje czytelnika, nie żądanie
Odpowiada na pytanie, którego nikt nie zadał: gdzie ta osoba była chwilę wcześniej. To może być przesłany jej prywatny link do dokumentu, wewnętrzny system zgłoszeń, podgląd w kliencie pocztowym albo strona, której nie chcieliby Państwo łączyć z własną. Przeglądarki obcinają dziś ścieżkę, gdy cel znajduje się w innym originie, co pomaga — i nie daje zupełnie nic w przypadku linków wewnątrz Państwa własnej strony, gdzie pełna ścieżka wciąż jest wysyłana i wciąż zapisywana.
User agent to zalążek odcisku cyfrowego
Sam w sobie to tłum. W połączeniu z adresem, nagłówkiem języka, kolejnością żądań i zestawem akceptowanych formatów, bardzo często wskazuje jednego odwiedzającego na przestrzeni tygodni — bez cookie, bez zgody i bez tego, by ktokolwiek zdecydował się cokolwiek śledzić. To właśnie ten mechanizm sprawia, że zdanie “przechowujemy tylko logi serwera” jest słabsze, niż wydaje się osobie, która je wypowiada.
Sekrety trafiają do logu, ponieważ były w adresie URL
To błąd, dla którego warto przeczytać tę stronę, ponieważ jest powszechny, jest cichy i całkowicie leży w zakresie Państwa kontroli. Wszystko po znaku zapytania jest częścią linii żądania, a to właśnie linia żądania trafia do zapisu.
- Linki do resetowania hasła. Jednorazowy token w parametrach zapytania jest zapisywany jawnym tekstem w logu dostępu, w kopii zapasowej logu dostępu oraz na każdym proxy między czytelnikiem a Państwem.
- Linki z zaproszeniem i rezygnacją z subskrypcji. Ten sam kształt, dłuższy czas życia i zwykle brak terminu ważności w ogóle.
- Identyfikatory sesji przekazywane w adresie URL. Rzadkie w nowym kodzie, wciąż obecne w starym, i pełne przejęcie konta dla każdego, kto posiada ten plik.
- Klucze API przekazywane do przeglądarki. Klucz w parametrach zapytania to klucz w logu, klucz w adresie odsyłającym wysłanym do strony trzeciej i klucz w historii przeglądania czytelnika.
- Pole wyszukiwania. Wyszukiwarka na stronie, która wysyła zapytanie metodą GET, zapisuje każde hasło, jakie ktokolwiek kiedykolwiek wpisał na Państwa stronie, obok adresu, który je wpisał.
Rozwiązaniem nie jest ustawienie logowania. Trzeba przenieść wartość do nagłówka lub treści żądania, gdzie żaden domyślny format jej nie zapisze, i zrotować wszystko, co już zostało zapisane. Filtr logów usuwający tokeny to kolejna rzecz do utrzymania, i zawiedzie przy pierwszej okazji, gdy ktoś doda nowy parametr.
Co można od Państwa zażądać i przez kogo
Inne przewodniki na tej stronie dotyczą instrumentów prawnych docierających do firmy hostingowej w jurysdykcji wybranej właśnie w tym celu. Instrument, który dociera do Państwa własnych logów, jest prostszy: doręcza się go Państwu, tam gdzie Państwo są, a lokalizacja maszyny nie ma nic do rzeczy.
- Żądanie cywilne we własnym kraju. Ktoś, kto pozywa w związku z komentarzem, wyciekiem albo zakupem, żąda od operatora strony tego, co operator posiada. Tym operatorem są Państwo, a dwa tygodnie logów dostępu to coś, co łatwo nakazać do wydania.
- Żądanie od czytelnika. Na mocy europejskiego prawa ochrony danych osobowych każda osoba może zapytać, co Państwo o niej przechowują, a adres jest zdolny być daną osobową: Trybunał Sprawiedliwości potwierdził to już w 2016 roku w Case C-582/14, w którym dynamiczny adres przechowywany przez operatora strony internetowej stanowił dane osobowe, ponieważ istniała zgodna z prawem droga dotarcia do abonenta. Samo przechowywanie musi być też uzasadnione — Article 5(1)(e) mówi, że nie dłużej niż to konieczne, a “tak akurat wysłano paczkę” nie jest celem.
- Ktokolwiek złamie zabezpieczenia maszyny. Najbardziej prawdopodobnym czytelnikiem Państwa logu dostępu wcale nie jest sąd. Logi są rzadko szyfrowane, rzadko monitorowane i niemal nigdy nieuwzględniane w modelu zagrożeń, a na każdym serwerze skonfigurowanym w typowy sposób leżą w przewidywalnej ścieżce.
- Każdy, do kogo dotrą Państwa kopie zapasowe. Kopia przechowywana poza siedzibą to kopia w innej firmie, pod inną jurysdykcją, podlegająca instrumentom prawnym, których Państwo nie czytali.
Nic z tego nie jest poradą prawną, a ta firma nie jest Państwa prawnikiem. To ta sama logika wykazu, zastosowana po Państwa stronie łącza: czego nie można wydać, tego nie można od Państwa zażądać, a wszystko inne to kwestia tego, czyj sąd pyta. Jak to wygląda po stronie hostingu, opisano w tym, co naprawdę dzieje się, gdy policja pyta hosta.
Przechowywać mniej, nie tracąc orientacji
Instynkt po przeczytaniu aż dotąd podpowiada, by wyłączyć logowanie całkowicie, i jest to zły ruch: serwera bez logów nie da się debugować, nie da się sensownie ograniczać liczby żądań, i nie powie Państwu, że akurat trwa do niego włamanie. Celem nie jest zero. Celem jest zachowanie tej części, która odpowiada na pytanie operacyjne, i odrzucenie tej, która odpowiada wyłącznie na pytanie o osobę.
| Zmiana | Co robi | Co Państwa kosztuje |
|---|---|---|
| Obcinać adres już w momencie zapisu | Wyzerowanie ostatniego oktetu adresu v4 albo ostatnich osiemdziesięciu bitów adresu v6 bezpośrednio w formacie logu, tak by pełna wartość nigdy nie trafiła na dysk | Analiza śledcza pojedynczego odwiedzającego po fakcie. Blokowanie i ograniczanie liczby żądań nadal działają, ponieważ oba mechanizmy działają na żywym żądaniu, a nie na pliku |
| Świadomie skrócić rotację | Jeden dzień dla publicznej strony, zachowany dlatego, że tę liczbę wybrali Państwo, a nie dlatego, że zrobił to jakiś pakiet | Możliwość zbadania czegokolwiek starszego niż wybrane przez Państwa okno czasowe |
| Przestać logować zasoby statyczne | Usuwa cztery piąte linii i nic ze znaczenia | Nic. To jedyny wiersz bez kompromisu |
| Zrezygnować z adresu odsyłającego | Przestać zapisywać, gdzie czytelnik był chwilę wcześniej | Wiedzę o tym, który link lub która dyskusja przysyła Państwu czytelników, na co w zamian może odpowiedzieć analityka działająca za zgodą |
| Rozdzielić log bezpieczeństwa od logu analitycznego | Dwa pliki, dwa cele, dwie liczby retencji, a adresy przechowuje tylko jeden z nich | Dwadzieścia minut konfiguracji, raz na zawsze |
| Umieścić logi na liście wykluczeń kopii zapasowej | Powstrzymuje nocną migawkę przed cichym zachowywaniem tego, co rotacja właśnie zniszczyła | Niczego, czego kiedykolwiek będzie Państwu brakować. Nikt nigdy nie przywrócił kopii zapasowej, żeby przeczytać stary log dostępu |
Dwie z tych sześciu zmian nie kosztują zupełnie nic, a znoszą większość ekspozycji opisanej na tej stronie. O ostatniej nikt nie myśli, i to właśnie z jej powodu pozostałe pięć nie daje pełnego efektu.
Strony trzecie, które logują Państwa czytelników za Państwa
Wszystko powyżej dotyczy plików na maszynie, którą Państwo kontrolują. Przeglądarka ładująca Państwa stronę otwiera też połączenie z każdym innym originem wymienionym na stronie, a każdy z nich otrzymuje adres, user agenta i adres odsyłający wskazujący, która ze stron była czytana — jeszcze zanim ktokolwiek odpowie na baner zgody, bo żądanie już zdążyło wyjść.
- Czcionka serwowana przez kogoś innego. Jedna linia w arkuszu stylów, i każdy czytelnik każdej strony jest ujawniany stronie trzeciej dla pliku, który mogliby Państwo hostować w tym samym katalogu co resztę strony.
- Osadzony film albo mapa. Ładowane od razu, na każdej stronie, na której się pojawiają, niezależnie od tego, czy ktokolwiek naciśnie odtwarzanie.
- Widżet czatu albo menedżer tagów. Z założenia obecne na każdej stronie, zdolne wczytać dodatkowy kod, którego Państwo nie sprawdzili.
- Tracker błędów. Najbardziej użyteczny z nich i najbardziej ujawniający: istnieje po to, by przesyłać Państwu stan sesji kogoś innego.
- CDN przed całą stroną. To nie argument przeciwko niemu — to rozsądny kompromis — ale to firma, która widzi każde żądanie, zanim zobaczą je Państwo, przechowuje własne logi i odpowiada przed własną jurysdykcją.
Samodzielne hostowanie pierwszych trzech to zwykle popołudnie pracy, a usuwa więcej obserwacji ze strony trzecich firm niż jakiekolwiek ustawienie na własnym serwerze. To też część tej strony, która poprawia to, co dostają Państwa czytelnicy, a nie tylko to, co można Państwu nakazać wydać, i dlatego warto zrobić to najpierw. Równoważna lista, skierowana na własną ekspozycję, a nie ekspozycję czytelników, znajduje się w dziewięciu rzeczach, które identyfikują stronę.
Co ta firma może z tym zrobić, a czego nie może
Uczciwe wytyczenie granicy jest warte więcej niż zapewnienie, więc oto ona z tej strony.
- Nasze własne logi dostępu HTTP są niszczone w cyklu dwudziestu czterech godzin, nie istnieje historia adresów, nie istnieje zapis lokalizacji logowania i nie przetrwa żaden odcisk cyfrowy. Pełna lista tego, co jednak przetrwa, jest opublikowana jako wykaz i liczy siedem zapisów.
- To, co dociera drogą prawną, jest liczone w raporcie przejrzystości, a to, co faktycznie wydaje ważny nakaz, jest ustalone z góry, a nie decydowane na bieżąco.
- Na VPS albo serwerze dedykowanym logi opisane na tej stronie znajdują się wewnątrz Państwa systemu operacyjnego. Nie czytamy ich, nie wysyłamy ich nigdzie, a także nie możemy ich Państwu skonfigurować — wyłączna dzierżawa działa w obie strony, o to właśnie w niej chodzi.
- To, co możemy unieść, to warstwa poniżej: brak zapisu tożsamości przy rejestracji, rozliczenia wyłącznie on-chain oraz maszyna w wybranej przez Państwa jurysdykcji, a nie tej, w której działa wystawca Państwa karty.
I zdanie, dla którego istnieje ta strona: wybranie hosta na podstawie tego, czego odmawia przechowywania, a następnie samodzielne przechowywanie tego samego przez dwa tygodnie, to decyzja o prywatności unieważniona przez plik konfiguracyjny. Te dwie połowy nie są porównywalne pod względem nakładu pracy. Jedna zajęła tydzień czytania, druga zajmuje popołudnie, a tylko jedna z nich jest dokończona.
Godzinny audyt własnych logów
Żaden z poniższych kroków nie wymaga narzędzia, które trzeba kupić, a każdy z nich mówi coś, czego nie ujawnił poprzedni.
- Wydrukować jedną linię własnego logu dostępu i przeczytać ją na głos, pole po polu, tak jak zrobiłby to ktoś obcy.
- Wypisać wszystkie pliki znajdujące się w katalogu logów, a następnie zaznaczyć te, które były otwierane w ciągu ostatniego roku. Niezaznaczone to czyste ryzyko, niedające niczego w zamian.
- Sprawdzić konfigurację rotacji i zapisać liczbę dni, przez jaką logi są faktycznie przechowywane, a nie liczbę, na jaką, jak się Państwu wydaje, kiedyś przystali.
- Przywrócić kopię zapasową z zeszłego miesiąca do katalogu roboczego i poszukać w niej logu, który, jak się Państwu wydaje, został usunięty dwa tygodnie temu.
- Przeszukać własny log dostępu pod kątem słów token, reset, key, session i password. Wszystko, co się znajdzie, to sekret, który już trafił na dysk i wymaga rotacji, a nie tylko poprawki.
- Otworzyć własną stronę główną z włączonym panelem sieciowym przeglądarki i zapisać każdą domenę, z którą nawiązano połączenie, a która nie jest własna. Każda z nich to firma przechowująca dane Państwa czytelników na mocy własnej retencji.
- Sprawdzić, który nagłówek przenosi prawdziwy adres zza proxy lub CDN, oraz potwierdzić, czy origin go zapisuje. CDN nie powstrzymuje logowania po stronie originu; przenosi jedynie pole.
- Otworzyć najnowsze zdarzenie we własnym trackerze błędów i policzyć, ile szczegółów dotyczących prawdziwego czytelnika znajduje się w przesyłanych danych (payload).
- Świadomie ustalić trzy liczby retencji — dla bezpieczeństwa, analityki i kopii zapasowych — i zapisać je tam, gdzie znajdzie je kolejna osoba, która dotknie tego serwera.
- Spisać wykaz: co istnieje, gdzie, jak długo, i co zostałoby wydane, gdyby jutro rano nadszedł ważny nakaz. Jeśli ten dokument jest niewygodny do napisania, to właśnie ta godzina jest najbardziej użyteczna z całej listy.
Pytania, które faktycznie są zadawane
Czy logi serwera liczą się jako dane osobowe?
Często tak, a powodem jest adres. Trybunał Sprawiedliwości Unii Europejskiej orzekł w 2016 roku, że dynamiczny adres przechowywany przez operatora strony internetowej jest daną osobową, jeśli istnieje zgodna z prawem droga identyfikacji abonenta, a to samo rozumowanie jest dziś powszechne również gdzie indziej. Praktyczną konsekwencją nie jest kara, lecz obowiązek: o to, co Państwo przechowują, można Państwa zapytać, a to, co Państwo zachowują, trzeba umieć uzasadnić.
Jak długo należy przechowywać logi dostępu?
Wystarczająco długo, by odpowiedzieć na pytanie, które faktycznie się im zadaje, a które dla większości stron brzmi: “co się działo w ciągu ostatniej doby lub dwóch”. Domyślne dwa tygodnie wybrał opiekun pakietu, który nigdy nie widział Państwa strony. Należy wybrać liczbę, zapisać uzasadnienie i sprawdzić, czy kopia zapasowa po cichu nie przechowuje egzemplarza jeszcze przez rok po jego wygaśnięciu.
Czy należy po prostu całkowicie wyłączyć logowanie?
Nie, a to najczęstsza nadgorliwość w drugą stronę. Serwera bez logów nie da się debugować, gdy się psuje, i nie powie Państwu, że akurat jest atakowany. Obcięcie adresu, pominięcie zasobów statycznych i skrócenie okna usuwają niemal całą ekspozycję, pozostawiając plik nadal użytecznym.
Czy hosting offshore chroni logi moich własnych odwiedzających?
Chroni je przed instrumentem doręczonym firmie hostingowej. Nie robi nic w sprawie instrumentu doręczonego Państwu, w kraju, w którym Państwo mieszkają, żądającego tego, co Państwo przechowują — a Państwo przechowują system operacyjny. Przeniesienie maszyny i zmiana operatora to dwie różne decyzje, i tylko jedna z nich jest zakupem.
Czy obcięcie adresu IP wystarczy?
To pojedyncza najskuteczniejsza zmiana, choć sama w sobie niewystarczająca. Log z usuniętym adresem, ale wciąż zawierający znacznik czasu co do sekundy, pełną ścieżkę i user agenta, nadal pozwala śledzić jednego odwiedzającego w obrębie sesji, a często i między sesjami. Trzeba obciąć adres, a następnie skrócić retencję, a połączenie tych dwóch działań jest warte więcej niż każde z osobna.
A co z logami, które przechowuje moje narzędzie analityczne?
Zwykle mają dłuższy czas życia i są bogatsze niż log serwera, a jeśli narzędzie jest hostowane przez kogoś innego, znajdują się w innej firmie, pod inną jurysdykcją. Samodzielnie hostowana analityka z włączonym maskowaniem adresów i świadomie ustawioną retencją odpowiada na to samo pytanie biznesowe, zachowując ułamek zapisu.
Czy logi błędów są tak samo ważne jak logi dostępu?
Często nawet bardziej, a otrzymują ułamek uwagi. Log błędów zapisuje żądania, które się nie powiodły, a to właśnie tam trafiają zniekształcone adresy URL, w połowie wpisane dane logowania i stack trace zawierające prawdziwe dane. To też plik, dla którego najmniej prawdopodobne jest, by ktokolwiek świadomie wybrał retencję.
Jaka jedna zmiana jest dziś warta wprowadzenia?
Wykluczyć katalog logów z kopii zapasowej, a następnie obciąć adres w formacie logu. Pierwsze działanie powstrzymuje cofanie każdej nocy usunięcia, które już Państwo skonfigurowali; drugie usuwa pole, przez które reszta linii identyfikuje osobę. Razem zajmują około dwudziestu minut i są tymi dwoma, których większość ludzi nigdy nie wykonuje.
Każda cena w tej infrastrukturze jest publikowana w całości, w jednym miejscu. Zobacz cały katalog

