Журнали сервера і приватністьВаш хостинг припинив журналювання. Ваш сервер — ні.

Кожен інший посібник тут запитує, що хостинг-компанія фіксує про Вас. А цей ставить питання навпаки, тому що в момент, коли Ви починаєте керувати сайтом, Ви самі стаєте компанією, про яку хтось інший запитує — а файл із Вашими читачами всередині налаштували Ви самі, на машині, де звинувачувати, крім Вас, більше нікого.

13 хв читання · Востаннє перевірено 8 вересня 2026 · Це не рекламна сторінка

Тепер Ви — сторона, до якої звертаються

Читач, який хоче дізнатися, хто відвідував Ваш сайт, починає не з Вашого хостингу. Він починає з Вас, тому що Ви — та єдина ланка в ланцюжку, яка має прямий інтерес у збереженні запису, юридичну адресу, на яку можна написати, і жодного звіту про прозорість, який можна опублікувати згодом.

Це незручне речення для хостинг-компанії, але ось арифметика, що стоїть за ним. Перелік, опублікований тут, стверджує, що журнали доступу HTTP знищуються за таймером у двадцять чотири години і що жодної історії адрес після цього ніде не залишається. Звичайний веб-сервер на орендованій у нас машині зберігає власний журнал доступу приблизно два тижні, у нічній резервній копії — рік, і жодне з цих чисел ніхто не встановлював навмисно. Ретельний вибір хостингу зводиться нанівець типовим налаштуванням, яке ніхто не прочитав.

Що насправді містить один рядок журналу доступу

Типовий формат на обох поширених веб-серверах не змінювався двадцять п'ять років, і майже ніхто не читає його як запис про людину. Варто прочитати його саме так хоча б один раз, тому що кожне поле нижче — це окреме розкриття інформації, і вони накопичуються.

ПолеЩо воно показуєЩо воно може ідентифікувати
Адреса клієнтаАдреса, з якої надійшов запит, повністюАбонентська лінія, яку сторона, що її призначила, може зіставити з домогосподарством чи роботодавцем, а будь-хто з базою даних — з містом
Мітка часу, з точністю до секундиКоли надійшов запит, зі зміщенням часового поясуСхема годин, яка спочатку виказує робочий день, потім регіон, потім рутину
Рядок запитуМетод, повний шлях, включно з усім після знака питання, і протоколКожен токен, ідентифікатор сесії й одноразове посилання, які коли-небудь потрапляли в URL на Вашому сайті
Код стану і кількість байтівЧи спрацював запит, і скільки даних повернулосяЯкий документ було віддано. 200 при відомій довжині називає сторінку, навіть якщо з'єднання було зашифроване
РеферерСторінка, на якій читач був безпосередньо перед цимПриватне посилання, яке йому надіслали, форум, що обговорював Вас, а на старіших реферерах — пошуковий запит, який він виконав
User-AgentБраузер, версія, рушій, операційна система, іноді модель пристроюМало саме по собі й дуже багато в поєднанні — це перше поле будь-якого відбитка, який коли-небудь створювали
Автентифікований користувачТе, що туди записав Ваш застосунок або базова автентифікаціяІменований обліковий запис, поєднаний з усіма шістьма полями вище, в одному рядку

Сім полів, один рядок, який записується для кожного запиту браузера — а для одного перегляду сторінки це зазвичай від двадцяти до вісімдесяти рядків. Жодне з цих полів не було рішенням. Усі вони — запис.

Дев'ять місць, де Ваш власний стек записує відвідувача

Майже кожна суперечка про журналювання стосується першого рядка. Це той рядок, про існування якого всі знають, і він аж ніяк не найвикривальніша річ на цій машині.

ДеЩо це записуєСкільки це зазвичай зберігається
Журнал доступуСім полів вище, для кожного запитуРотація, яку Ви не обирали. Типовий варіант за замовчуванням — два тижні
Журнал помилокНевдалі та відхилені запити, з адресою, повним URL і часто з рефереромТа сама ротація, і його ніхто ніколи не відкривав
Журнал застосункуУсе, що Ваш фреймворк вирішив записати: ідентифікатори облікових записів, адреси електронної пошти, іноді ціле тіло запитуПоки не заповниться диск — у дуже багатьох інсталяціях
Журнал бази данихПовільні запити дослівно, разом з параметрамиПоки хтось не помітить, що він увімкнений
Журнал поштиКожна адреса, на яку Ви надсилали лист, кожна адреса, що повернула лист неврученим, і момент, коли кожну з них намагалися надіслатиРотація, плюс усе, що застрягло в черзі
Проксі або CDN попередуТой самий запит ще раз, але вже в іншій компанії, з реальною адресою, перенесеною в заголовокСтрок зберігання цієї компанії — не Ваш, і його не опубліковано на Вашій сторінці приватності
АналітикаВізит, адреса, екран, реферер і впорядкований шлях по сайтуМісяці за замовчуванням, роки — якщо налаштування за замовчуванням ніхто не змінював
Трекер помилокТрасування стека, адреса, що його спричинила, і все, що потрапило в область видимості на той моментУсе, що покриває Ваш тарифний план
Кожна резервна копія восьми пунктів вищеВсе те саме ще раз, заморожене в момент, коли створювався знімокСтрок зберігання резервних копій — незмінно найбільше число в цій таблиці

Останній рядок — той, що зводить нанівець більшість добрих намірів. Скорочення ротації журналу з чотирнадцяти днів до одного змінює те, що є на диску, і зовсім не змінює копію, яку зробили о третій ночі і яку зберігатимуть рік. Видалення запису, який Ви вже реплікували, — це зміна місця, а не видалення.

Два поля, які видають більше, ніж адреса

Адреса — це те поле, навколо якого всі сперечаються, і водночас те, що має найкоротший корисний строк життя: вона змінюється, вона є спільною для багатьох, а в мобільній мережі вона взагалі належить оператору зв'язку, а не людині. Два поля поряд з нею — непомітно гірші.

Реферер описує читача, а не запит

Він відповідає на питання, якого Ви ніколи не ставили: де ця людина була секунду тому. Це приватне посилання на документ, надіслане їй, внутрішня система тикетів, попередній перегляд листа в поштовому клієнті або сторінка сайту, яку вона не хотіла б пов'язувати з Вашим. Браузери тепер обрізають шлях, коли адреса призначення — інший origin, і це допомагає — але анітрохи не допомагає з посиланнями всередині Вашого власного сайту, де повний шлях, як і раніше, надсилається і записується.

User-Agent — це зерно відбитка

Сам по собі він — натовп. У поєднанні з адресою, мовним заголовком, порядком запитів і набором прийнятних форматів він часто виявляється одним і тим самим відвідувачем протягом тижнів — без cookie, без згоди і без того, щоб хтось узагалі вирішив когось відстежувати. Саме цей механізм робить фразу “ми зберігаємо лише журнали сервера” слабшою, ніж думає той, хто її вимовляє.

Секрети потрапляють у журнал, бо вони були в URL

Заради цієї помилки варто читати цю сторінку, бо вона поширена, вона непомітна і повністю у Вашій владі. Усе, що йде після знака питання, — частина рядка запиту, а рядок запиту — це те, що записується.

  • Посилання для скидання пароля. Одноразовий токен у рядку параметрів записується відкритим текстом у журнал доступу, у резервну копію журналу доступу і на кожному проксі між читачем і Вами.
  • Посилання-запрошення та посилання для відписки. Та сама форма, тільки довговічніша і, як правило, взагалі без строку дії.
  • Ідентифікатори сесії, передані в URL. Рідкість у новому коді, але все ще трапляється у старому, і для будь-кого, хто має цей файл, — це повне захоплення облікового запису.
  • API-ключі, передані браузеру. Ключ у рядку параметрів — це ключ у журналі, ключ у реферері, надісланому третій стороні, і ключ в історії читача.
  • Поле пошуку. Пошук на сайті, який надсилає дані методом GET, записує кожен запит, який будь-хто коли-небудь вводив на Вашому сайті, поруч з адресою, яка його ввела.

Виправлення — це не налаштування журналювання. Перенесіть значення в заголовок або в тіло запиту, де жоден типовий формат його не записує, і виконайте ротацію всього, що вже було записано. Фільтр журналів, який вирізає токени, — це ще одна річ, яку треба підтримувати, і він схибить одразу, щойно хтось додасть новий параметр.

Що можна вимагати від Вас і хто

Інші посібники тут — про інструменти, які надходять до хостинг-компанії в юрисдикції, обраній саме з цією метою. Інструмент, який дістається Ваших власних журналів, простіший: його вручають Вам, там, де Ви є, і розташування машини тут узагалі ні до чого.

  • Цивільна вимога у Вашій власній країні. Той, хто подає позов через коментар, витік даних чи покупку, вимагає від оператора сайту те, що той зберігає. Оператор — це Ви, а два тижні журналів доступу — це те, що Вам легко можуть наказати надати.
  • Запит від читача. За європейським законодавством про захист даних людина може запитати, що Ви про неї зберігаєте, а адреса цілком здатна бути персональними даними: Суд Європейського Союзу підтвердив це ще в 2016 році у справі C-582/14, де динамічна адреса, яку зберігав оператор сайту, визнана персональними даними, бо існував законний спосіб дійти до абонента. Строк зберігання теж треба обґрунтовувати — стаття 5(1)(e) вимагає не довше, ніж необхідно, а “пакет постачався саме так” метою не є.
  • Будь-хто, хто зламає машину. Найімовірніший читач Вашого журналу доступу — це взагалі не суд. Журнали рідко шифрують, рідко моніторять і майже ніколи не враховують у моделі загроз, і вони лежать у передбачуваному шляху на кожному сервері, налаштованому звичайним способом.
  • Будь-хто, до кого доходять Ваші резервні копії. Копія поза майданчиком — це копія в іншій компанії, під іншою юрисдикцією, підзвітна інструментам, яких Ви не читали.

Ніщо з цього не є юридичною консультацією, і це господарство — не Ваш юрист. Це та сама логіка переліку, застосована до Вашого боку дроту: те, чого Ви не можете надати, не можна від Вас і вимагати, а все решта — питання того, чий саме суд запитує. Як це виглядає з боку хостингу, викладено в матеріалі що насправді відбувається, коли поліція звертається до хостингу.

Зберігати менше, не осліпнувши

Прочитавши аж досі, виникає бажання просто вимкнути журналювання, і це неправильний крок: сервер без журналів неможливо налагоджувати, неможливо розумно обмежити частоту запитів до нього, і він не може повідомити Вам, що його прямо зараз зламують. Мета — не нуль. Мета — залишити ту частину, яка відповідає на операційне питання, і відкинути ту, яка відповідає лише на питання про людину.

ЗмінаЩо вона робитьУ що вона Вам обходиться
Обрізати адресу одразу під час записуОбнуліть останній октет адреси v4 або останні вісімдесят бітів адреси v6 просто у форматі журналу — так, щоб повне значення взагалі ніколи не потрапляло на дискРозслідування дій конкретного відвідувача заднім числом. Блокування та обмеження частоти запитів усе ще працюють, бо обидва діють на живий запит, а не на файл
Свідомо скоротити ротаціюОдин день для публічного сайту — залишений тому, що це число обрали Ви, а не тому, що так вирішив якийсь пакетМожливість розслідувати будь-що старіше за обране Вами вікно
Припинити журналювання статичних файлівПрибирає чотири п'ятих рядків і жодної крихти сенсуНічого. Це єдиний рядок без жодного компромісу
Прибрати реферерПерестати записувати, де читач був мить томуРозуміння того, яке посилання чи яке обговорення надсилає Вам читачів — а на це аналітика, за згодою, може відповісти і без журналу
Розділити журнал безпеки й журнал аналітикиДва файли, дві мети, два строки зберігання, і лише один з них містить адресиДвадцять хвилин налаштування, один раз
Додати журнали до списку винятків резервного копіюванняЗупиняє нічний знімок від тихого збереження того, що ротація щойно знищилаНічого, за чим Ви колись пожалкуєте. Ніхто ніколи не відновлював резервну копію, щоб прочитати старий журнал доступу

Дві з цих шести змін не коштують взагалі нічого і скасовують більшу частину ризиків, описаних на цій сторінці. Про останню ніхто не думає, і саме через це решта п'яти недопрацьовують.

Треті сторони, які журналюють Ваших читачів за Вас

Усе сказане вище стосується файлів на машині, яку контролюєте Ви. Але браузер, завантажуючи Вашу сторінку, також відкриває з'єднання з кожним іншим origin, який ця сторінка називає, і кожен з них отримує адресу, User-Agent і реферер, що вказує, яку саме з Ваших сторінок читали — ще до того, як хтось відповість на банер згоди, бо запит уже пішов.

  • Шрифт, який віддає хтось інший. Один рядок у таблиці стилів — і кожен читач кожної сторінки розкривається третій стороні заради файлу, який Ви цілком могли б розмістити в тій самій директорії, що й решту сайту.
  • Вбудоване відео чи карта. Завантажується одразу, на кожній сторінці, де воно є, незалежно від того, чи хтось узагалі натисне «відтворити».
  • Віджет чату або менеджер тегів. За задумом присутній на кожній сторінці і здатний підвантажувати ще код, який Ви не перевіряли.
  • Трекер помилок. Найкорисніший з них і водночас найвикривальніший: він існує саме для того, щоб надсилати Вам стан чужої сесії.
  • CDN перед усім сайтом. Це не аргумент проти нього — це цілком розумний обмін — але це компанія, яка бачить кожен запит раніше за Вас, веде власні журнали і підзвітна власній юрисдикції.

Самостійний хостинг перших трьох зазвичай забирає пів дня роботи і прибирає більше стороннього спостереження, ніж будь-яке налаштування на Вашому власному сервері. Це також та частина сторінки, яка покращує те, що отримують Ваші читачі, а не лише те, що з Вас можуть наказати надати, і саме тому варто зробити це першим. Еквівалентний список, спрямований на Вашу власну вразливість, а не на вразливість Ваших читачів, — у матеріалі дев'ять речей, які ідентифікують сайт.

Що це господарство може з цим зробити, а що — ні

Чесно провести межу важливіше за заспокійливі запевнення, тож ось вона з нашого боку.

  • Наші власні журнали доступу HTTP знищуються за таймером у двадцять чотири години, і не залишається ні історії адрес, ні запису про місце входу, ні відбитка, який би це пережив. Повний перелік того, що таки виживає, опубліковано як перелік, і він налічує сім записів.
  • Те, що надходить у порядку юридичної процедури, враховано у звіті про прозорість, а те, що насправді видається за чинним наказом, записано заздалегідь, а не вирішується на місці.
  • На VPS або виділеному сервері журнали, описані на цій сторінці, перебувають усередині Вашої операційної системи. Ми їх не читаємо, ми їх нікуди не надсилаємо, але ми також не можемо налаштувати їх за Вас — виключне користування сервером має два боки, і в цьому весь сенс.
  • Що ми справді можемо нести на собі — це рівень нижче: жодного запису про особу при реєстрації, розрахунки лише в блокчейні, і машина в юрисдикції, яку обрали Ви, а не в тій, де живе емітент Вашої картки.

І ось речення, заради якого існує ця сторінка: обрати хостинг за тим, що він відмовляється зберігати, а потім самому зберігати те саме протягом двох тижнів — це рішення про приватність, скасоване одним конфігураційним файлом. Ці дві половини незіставні за зусиллями. Одна забрала тиждень читання, інша забирає пів дня, і завершена з них лише одна.

Годинний аудит Ваших власних журналів

Ніщо з переліченого нижче не потребує інструмента, який треба купувати, і кожен крок повідомляє щось таке, чого не було в попередньому.

  1. Роздрукуйте один рядок Вашого власного журналу доступу і прочитайте його вголос, поле за полем, так, як прочитала б стороння людина.
  2. Складіть список усіх файлів у Вашій директорії журналів, а потім позначте ті, які Ви відкривали за останній рік. Непозначені — це чистий ризик.
  3. Прочитайте налаштування ротації і запишіть, скільки днів вона насправді зберігає — а не те число, яке, як Вам здається, Ви колись погодили.
  4. Відновіть минуломісячну резервну копію в тимчасову директорію і пошукайте там журнал, який, як Ви думаєте, було видалено два тижні тому.
  5. Пошукайте у Вашому журналі доступу слова token, reset, key, session і password. Усе, що знайдете, — це секрет, який уже записано на диск і який треба не просто виправити, а ротувати.
  6. Завантажте Вашу головну сторінку з відкритою панеллю мережі в браузері і запишіть кожен домен, до якого пішов запит і який не є Вашим. Кожен такий домен — це компанія, що тримає Ваших читачів на власних умовах зберігання.
  7. Перевірте, який заголовок несе реальну адресу за Вашим проксі чи CDN, і з'ясуйте, чи записує його сервер-джерело. CDN не зупиняє журналювання на сервері-джерелі — він просто переносить поле.
  8. Відкрийте найновішу подію у Вашому трекері помилок і порахуйте, скільки деталей про реального читача міститься в корисному навантаженні.
  9. Свідомо визначте три строки зберігання — для безпеки, для аналітики, для резервних копій — і запишіть їх там, де їх знайде наступна людина, яка торкнеться сервера.
  10. Складіть перелік: що існує, де, як довго, і що б Ви надали, якби завтра вранці надійшов чинний наказ. Якщо цей документ незручно писати, це найкорисніша година зі всього цього списку.

Питання, які справді ставлять

Чи вважаються журнали сервера персональними даними?

Часто так, і причина цьому — адреса. Суд Європейського Союзу ще в 2016 році постановив, що динамічна адреса, яку зберігає оператор сайту, є персональними даними, якщо існує законний спосіб ідентифікувати абонента, і тепер таку саму логіку застосовують і деінде. Практичний наслідок — не штраф, а обов'язок: про те, що Ви зберігаєте, у Вас можуть запитати, а те, що Ви тримаєте, Вам доведеться обґрунтувати.

Як довго варто зберігати журнали доступу?

Досить довго, щоб відповісти на питання, яке Ви їм насправді ставите, а для більшості сайтів це “що сталося за останню добу чи дві”. Типові два тижні за замовчуванням обрав мейнтейнер пакета, який ніколи не бачив Вашого сайту. Оберіть число, запишіть чому, і перевірте, що резервна копія тихо не тримає копію ще рік після того, як строк мав спливти.

Чи варто просто повністю вимкнути журналювання?

Ні, і це найпоширеніша надмірна реакція. Сервер без журналів неможливо налагодити, коли він ламається, і він не може повідомити Вам, що його саме зараз атакують. Обрізання адреси, відмова від журналювання статичних файлів і скорочення вікна прибирають майже всю вразливість, залишаючи файл корисним.

Чи захищає офшорний хостинг мої власні журнали відвідувачів?

Він захищає їх від інструменту, врученого хостинг-компанії. Але він нічого не робить проти інструменту, врученого Вам, у країні, де Ви живете, з вимогою надати те, що Ви зберігаєте — а зберігаєте Ви операційну систему. Перенести машину і перенести оператора — це різні рішення, і лише одне з них можна просто купити.

Чи достатньо обрізати IP-адресу?

Це найефективніша окрема зміна, але сама по собі вона недостатня. Журнал без адреси, але з міткою часу до секунди, повним шляхом і User-Agent, усе одно простежує одного відвідувача протягом сесії, а часто й між сесіями. Обріжте адресу, потім скоротіть строк зберігання — і разом вони варті більшого, ніж кожен окремо.

А як щодо журналів, які веде мій інструмент аналітики?

Вони зазвичай живуть довше і містять більше даних, ніж журнал сервера, а якщо інструмент розміщений у когось іншого, вони опиняються в іншій компанії під іншою юрисдикцією. Самостійно розміщена аналітика з увімкненим маскуванням адрес і свідомо встановленим строком зберігання відповідає на те саме бізнес-питання значно меншим обсягом даних.

Чи важливі журнали помилок так само, як журнали доступу?

Часто навіть більше, а уваги йому дістається в рази менше. Журнал помилок фіксує запити, які пішли не так, а саме туди потрапляють неправильно сформовані URL, наполовину введені облікові дані й трасування стека з реальними даними всередині. Це також файл, для якого найменш імовірно, що хтось свідомо обирав строк зберігання.

Яку одну зміну варто зробити вже сьогодні?

Виключіть директорію журналів з резервного копіювання, а потім обріжте адресу у форматі журналу. Перше зупиняє щоночне скасування видалення, яке Ви вже налаштували; друге прибирає те поле, через яке решта рядка ідентифікує людину. Разом це забирає близько двадцяти хвилин, і саме ці дві зміни більшість людей так ніколи й не робить.

Кожна ціна цієї інфраструктури повністю опублікована в одному місці. Переглянути весь каталог