Como criar um log de acesso ao servidor HTTP compatível com GDPR com foco na anonimização e no nginx do IP remoto?

2

O Regulamento Geral de Proteção de Dados da UE (GDPR) e a implementação do DSGVO na Alemanha são muito rigorosos quando se trata de dados relacionados a indivíduos (como endereços IP). No entanto, esta questão não é sobre o GDPR, mas como implementar o regulamento com o log de acesso HTTP nginx enquanto mantém a possibilidade de "identificar" o usuário anônimo dentro de uma jornada de usuário (para fazer fronteira com uma jornada de usuário de outro usuário). aqueles).

Minha implementação atual é que eu não gravei o IP e a porta remotos. Limpei as variáveis de ambiente para upstreams / proxies / etc e o simple não tem informações remotas de IP e porta com os logs de acesso.

Agora estou enfrentando o problema de que preciso seguir o caminho de uma jornada do usuário. Simplesmente não tenho como "identificar" quais solicitações estão dentro da jornada do usuário. Quero salientar que também não uso cookies, etc.

A abordagem legada para "identificar" um "usuário anônimo" é procurar o IP remoto e as informações de data. Dentro do mesmo dia, o mesmo IP remoto provavelmente seria o mesmo usuário. No entanto, como mencionado acima, eu não registro informações remotas de IP e porta. E eu não quero isso agora mesmo.

Minha corrente, porém, é fazer o hash do endereço IP remoto com a porta remota e a data da solicitação. Eu teria as informações de data com os logs, mas não a porta remota, por isso não posso - sem forçar a brute pesado - recuperar o IP remoto, um dado relacionado ao indivíduo. Essa abordagem ajudaria a devolver algum nível de identificação de jornada do usuário , o que me ajudaria bastante.

Um fluxo de trabalho geral para realizar essa abordagem seria:

  1. A solicitação é aceita por nginx,
  2. O nginx executa uma operação de hash com IP remoto, porta remota e data atual (por exemplo, md5_hex("$remote_addr $remote_port $current_date") ) e armazena o hash em uma nova variável (por exemplo, $remote_ip_anonymous ),
  3. o log_format estaria tendo a variável $ remote_ip_anonymous.

O hash seria alterado, mesmo quando o IP remoto e a porta remota fossem os mesmos, devido ao sal atual da data. E isso alteraria, quando a porta remota for alterada. Portanto, isso deve ser bom com GDPR ou pelo menos a categoria de segurança de dados mais baixa, enquanto o IP remoto real seria uma categoria de segurança de dados de prefeito com GDPR.

Chega de teoria ... como eu implementaria tal anonimização remota de IP? Eu tenho que usar o módulo nginx Perl ou o módulo Lua, ou existe outra maneira (mais rápida) de conseguir isso? hash e armazená-lo na variável nginx?

    
por burnersk 11.07.2018 / 14:18

1 resposta

3

O Regulamento Geral de Proteção de Dados da UE (GDPR) trata da "proteção de pessoas singulares no que diz respeito ao processamento de dados pessoais e regras relativas à livre circulação de dados pessoais". Não se trata de sabotar sistemas de TI. A melhor abordagem é acalmar e ver o que é O.K. e o que não é O.K. em relação à proteção de dados pessoais.

É tecnicamente essencial que um servidor da Web processe um endereço IP de um navegador / cliente. Sem essa habilidade, um servidor da Web não poderia enviar uma resposta ao navegador / cliente.

Evitar o processamento de dados pessoais não é uma opção . (Na verdade, existem opções de curso. Por exemplo, o navegador TOR ou usando um proxy de anonimização seria uma opção. Mas isso deve ser feito pelo cliente.)

Com relação ao seu servidor da Web e à configuração de reclamação de GDPR, você deve:

  • tome cuidado para que seus arquivos de log sejam excluídos após 7 dias (recomendação da autoridade de proteção de dados da Bavária)
  • inclua o endereço IP e outros dados privados reunidos (por exemplo, string de identificação do navegador) na declaração de privacidade de seus sites
  • ativar HTTPS e redirecionar todo o tráfego HTTP para HTTPS (ou até mesmo usar HSTS)
  • tenha o cuidado de configurar um servidor seguro (consulte Melhores práticas para fortalecer o novo servidor em 2017

No entanto, existe uma maneira adequada de anonimizar o log IP no Nginx . Eu não recomendaria, mas funciona.

Como excluir arquivos de log após sete dias:

Com a rotação do log de serviço instalado, você precisa alterar o arquivo de configuração do Nginx da seguinte forma ...

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
}
    
por 11.07.2018 / 15:09