Ir diretamente para o conteúdo

Instalação segura do Mergin Maps

AVISO

Esta secção tem como objetivo fornecer algumas orientações e um exemplo simples sobre como garantir a segurança de uma Mergin Maps implementação.

Devem ser implementadas novas medidas de reforço da segurança por especialistas, em conformidade com as políticas de cibersegurança em vigor.

Por motivos de segurança e privacidade Mergin Maps as implementações devem permitir uma ligação segura via HTTPS através de um ficheiro de certificado.

Fornecemos um ficheiro de configuração modelo ssl-proxy.confcomo base para a sua configuração.

Vamos dar uma vista de olhos rápida às secções principais:

concha
server {
    listen                  443 ssl;
    server_name             merginmaps.company.com; # FIXME
    client_max_body_size    4G;
    ...

Aqui, ativamos o SSL através da configuração predefinida 443 abrir a porta e configurar o servidor HTTPS com autenticação por nome através de nome_do_servidor. Aqui, deve alterar esta informação de acordo com o nome do servidor de destino.

Não recomendamos definir um client_max_body_size superior ao especificado, pois isso pode provocar erros de tempo limite durante o envio dos seus dados para Mergin Maps.

Em seguida, é necessário indicar os ficheiros de certificado na configuração do NGINX. Isto é feito nas linhas seguintes da configuração de segurança:

concha
...
ssl_certificate_key /etc/letsencrypt/live/merginmaps.company.com/privkey.pem; # FIXME
ssl_certificate     /etc/letsencrypt/live/merginmaps.company.com/fullchain.pem; # A CORRIGIR
...

O exemplo acima utiliza chaves geradas automaticamente pelo CertBot. Para mais informações, visite o site do CertBot e veja como pode gerar as suas próprias chaves.

São disponibilizadas algumas definições de segurança adicionais para os cabeçalhos HTTP. Por favor, analise-as e atualize-as de acordo com as suas necessidades.

concha
# Prevent crawlers from indexing and following links for all content served from the mergin app
add_header X-Robots-Tag "none";

# Protect against clickjacking iframe
add_header Content-Security-Policy "frame-ancestors 'self';" always;

# Add a HSTS policy to prevent plain http from browser
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# Set cookies security flags
proxy_cookie_flags ~ secure httponly samesite=strict;

location / {
    root /var/www/html;

    # The lines below were copied from application proxy
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    # we don't want nginx trying to do something clever with
    # redirects, we set the Host: header above already.
    proxy_redirect off;
    proxy_pass http://app_server;
}