Назад | Перейти на главную страницу

Как создать журнал доступа к HTTP-серверу, соответствующий GDPR, с упором на удаленную анонимность IP и nginx?

Общий регламент ЕС по защите данных (GDPR) и реализация DSGVO в Германии очень строги, когда речь идет об индивидуальных данных (например, IP-адресах). Однако этот вопрос не о GDPR, но как реализовать регулирование с помощью журнала доступа HTTP nginx, сохраняя при этом возможность «идентификации» анонимного пользователя в рамках пользовательского пути (чтобы ограничить путь пользователя от других).

Моя текущая реализация заключается в том, что я вообще не записываю удаленный IP-адрес и порт. Я очистил переменные среды для апстримов / прокси / и т.д., и у простого нет информации об удаленном IP и порте с журналами доступа.

Теперь я столкнулся с проблемой, когда мне нужно пройти путь пользователя. У меня просто нет способа «определить», какие запросы находятся в рамках пути пользователя. Хочу отметить, что я также не использую файлы cookie и т. Д.

Традиционный подход к «идентификации» «анонимного пользователя» заключается в поиске удаленного IP-адреса и информации о дате. В течение одного дня один и тот же удаленный IP-адрес, скорее всего, будет одним и тем же пользователем. Однако, как упоминалось выше, я не регистрирую информацию об удаленных IP и портах. И я не хочу этого даже сейчас.

Сейчас я хочу хешировать удаленный IP-адрес с удаленным портом и датой запроса. У меня была бы информация о дате с журналами, но не об удаленном порту, поэтому я не могу - без серьезного перебора - восстановить удаленный IP-адрес, индивидуальные данные. Такой подход поможет вернуть некоторые уровень идентификация пути пользователя, что мне немного поможет.

Общий рабочий процесс для реализации этого подхода будет следующим:

  1. Запрос принят nginx,
  2. nginx выполняет операцию хеширования с удаленным IP-адресом, удаленным портом и текущей датой (например, md5_hex("$remote_addr $remote_port $current_date")) и сохраняет хеш в новой переменной (например, $remote_ip_anonymous),
  3. log_format будет иметь переменную $ remote_ip_anonymous.

Хэш изменится, даже если удаленный IP-адрес и удаленный порт будут одинаковыми из-за текущей соли даты. И это изменится при изменении удаленного порта. Таким образом, это должно быть нормально для GDPR или, по крайней мере, для самой низкой категории безопасности данных, в то время как фактический удаленный IP-адрес будет относиться к основной категории безопасности данных с GDPR.

Довольно теории ... как мне реализовать такую ​​удаленную анонимизацию IP? Должен ли я использовать модуль Perl nginx или модуль Lua, или есть другой (более быстрый) способ получить этот хеш и сохранить его в переменной nginx?

Общий регламент ЕС по защите данных (GDPR) касается «защиты физических лиц в отношении обработки личных данных и правил, касающихся свободного перемещения личных данных». Дело не в том, как саботировать ИТ-системы. Лучший способ - успокоиться и посмотреть, что в порядке. и что не в порядке? о защите личных данных.

Технически важно, чтобы веб-сервер обрабатывал IP-адрес браузера / клиента. Без этой возможности веб-сервер не смог бы отправить ответ браузеру / клиенту.

Избежать обработки личных данных невозможно. (На самом деле, конечно, есть варианты. Например, браузер TOR или использование прокси-сервера анонимизации могут быть вариантом. Но это должен делать клиент.)

Что касается вашего веб-сервера и настройки жалобы GDPR, вам следует:

  • позаботьтесь о том, чтобы ваши файлы журналов были удалены через 7 дней (рекомендация Управления по защите данных Баварии)
  • включать IP-адрес и другие собранные личные данные (например, строку идентификатора браузера) в заявление о конфиденциальности вашего веб-сайта
  • включить HTTPS и перенаправить весь HTTP-трафик на HTTPS (или даже использовать HSTS)
  • позаботьтесь о настройке безопасного сервера (см. Лучшие практики по усилению защиты нового сервера в 2017 году)

Однако есть правильный способ анонимизировать регистрацию IP-адресов в Nginx. Я бы не рекомендовал это, но это работает.

Как удалить файлы журнала через 7 дней:

С установленной службой ротации журнала вам необходимо изменить файл конфигурации Nginx следующим образом ...

vim /etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    prerotate
            if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                    run-parts /etc/logrotate.d/httpd-prerotate; \
            fi \
    endscript
    postrotate
            invoke-rc.d nginx rotate >/dev/null 2>&1
    endscript
}