📒  Confiança e segurança

Como evitar um ataque ddos no Nginx

Como prevenir um ataque ddos no nginx, aprenda como bloquear alguns ataques DDoS com o servidor web Nginx com esta configuração de proteção ddos nginx, isto ajudará o seu servidor a prevenir e bloquear alguns ataques DDoS comuns, com a configuração e endurecimento do Nginx pode bloquear alguns ataques no seu servidor.

A Alexhost oferece proteção Anti-DDoS gratuita contra alguns ataques, pode usar os nossos servidores VPS ou servidores dedicados, oferecemos proteção Anti-DDoS gratuita mas a capacidade de mitigação, métodos, filtragem serão diferentes dependendo da localização que escolher.

Requisitos:
Nginx (é necessário ter o Nginx instalado no seu servidor atual)
Alguns conhecimentos (é necessário saber utilizar os comandos básicos do Linux e aceder a alguns ficheiros Nginx; espera-se que tenha conhecimentos)
Servidor VPS ou servidor dedicado (pode utilizar uma máquina virtual no seu anfitrião local)
Proteção contra DDoS (exigida pelo seu fornecedor de alojamento para poder atenuar os ataques DDoS mais sofisticados)
Linux (qualquer distribuição onde o Nginx possa ser instalado)
Nginx (pode ser necessário ler a documentação do Nginx para testar e verificar se ainda é fiável)

Limitações: este tutorial não é uma defesa “à prova de bala” contra todos os ataques DDoS, mas provavelmente limitará o ataque ao bloquear certos tipos de ataques comuns e ajudará a manter seu servidor online. Há algumas limitações contra alguns ataques DDoS, você precisará que seu provedor de hospedagem ofereça algum tipo de proteção DDoS para bloquear e prevenir, esta configuração não pode proteger contra todos os ataques contra seu servidor. Esta configuração serve para prevenir e bloquear alguns ataques, mas não bloqueará todos os ataques sem a proteção DDoS do seu alojamento.

AVISO: A Alexhost não recomenda o uso desta configuração no seu servidor de produção, recomendamos que a teste antes de fazer qualquer coisa. A Alexhost não se responsabiliza por qualquer problema que isto possa ou não criar. Certifique-se de que tem uma boa segurança no servidor antes de implementar qualquer coisa, faça uma cópia de segurança de tudo no caso de precisar de o restaurar. Por favor, leia a documentação do Nginx sobre a proteção DDoS para entender como ela funciona.

Evitar ataques DDoS reforçando o Nginx

Configurar o Nginx para proteção DDoS e reforçá-lo contra camadas de ataque comuns envolve a implementação de várias estratégias de mitigação e prevenção. Oferecemos um guia sobre como configurar o Nginx para aumentar a segurança e aprender Como evitar um ataque de ddos no nginx reforçando o seu servidor Web:

  1. Atualizar o Nginx: Certifique-se de que está a executar a versão estável mais recente do Nginx para tirar partido dos patches e melhorias de segurança mais recentes.
  2. Limitar conexões: Use o módulo limit_conn para limitar o número de conexões de um único endereço IP. Isto ajuda a evitar ataques DDoS que sobrecarregam o seu servidor com demasiadas ligações simultâneas.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    servidor {
        limit_req zone=req_limit_per_ip burst=5;
        # Outras configurações de servidor...
    }
}

Lista branca/lista negra de endereços IP: use as diretivas allow e deny para colocar endereços IP confiáveis na lista branca e bloquear os maliciosos.
nginx

http {
    # Lista branca de endereços IP confiáveis
    allow 192.168.1.0/24;
    deny all;
    # Outras configurações de servidor...
}

Implementar uma Firewall de Aplicação Web (WAF).

Ativar HTTPS: encriptar a comunicação entre os clientes e o servidor utilizando HTTPS para evitar a interceção de dados e ataques man-in-the-middle.

Desativar módulos não utilizados: Desativar módulos Nginx desnecessários para reduzir a superfície de ataque e melhorar o desempenho.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Ajuste da configuração do Nginx: otimize os parâmetros de configuração do Nginx, como fluxos de trabalho, conexões de trabalho e tempos limite, com base nos recursos de hardware do servidor e no tráfego esperado.
  2. Monitoramento e registro.
  3. Implementar serviços de proteção DDOS: considere a possibilidade de utilizar serviços ou dispositivos de proteção DDoS dedicados sobre o Nginx, como o Cloudflare, o AWS Shield ou o Akamai.
  4. Backups regulares: garanta backups regulares de dados críticos para minimizar o impacto de ataques bem-sucedidos.

Lembre-se de que a segurança é um processo contínuo e que é fundamental manter-se a par das práticas e ameaças de segurança mais recentes para proteger eficazmente o seu servidor de potenciais ataques.

Configurar o Nginx para proteção contra ddos:

#Definir uma zona para rastrear conexões de cada endereço IP

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Definir uma zona para registar os pedidos de cada IP
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    servidor {
        listen 80;
        nome_do_servidor exemplo.com;
        # Limitar pedidos por taxa
        limit_req zone=req_limit_per_ip burst=20;
        # Limitar o número máximo de ligações de um único endereço IP
        limit_conn conn_limit_per_ip 20;
        # Negar pedidos com corpos de pedido grandes para reduzir a proteção contra determinados tipos de ataques
        client_body_buffer_size 1k;
        tamanho_do_cabeçalho_do_cliente 1k;
        tamanho_max_do_corpo_do_cliente 1k;
        large_client_header_buffers 2 1k;
        # Ativar a compressão Gzip para poupar largura de banda
        gzip on;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        # Adicionar cabeçalhos de segurança para aumentar a segurança
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block"; # Adicionar cabeçalho X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";;
        add_header Referrer-Policy "same-origin";;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        # Bloquear agentes de utilizador vulneráveis comuns
        se ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Bloquear o acesso a ficheiros ocultos
        localização ~ /\. {
            negar todos;
        }
        # Bloquear o acesso a certos tipos de ficheiros
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$||^#.*#$|\.php_ {
            eliminar tudo;
            retornar para 403;
        }
        # Colocar o seu endereço IP na lista branca para acesso administrativo
        localização /admin {
            allow seu_ip_admin;
            deny all;
        }
        # Negar acesso a determinados diretórios
        localização ~ /(sistema|fornecedor) {
            negar tudo;
            retorna 403;
        }
        # Pedidos de proxy para o seu servidor de aplicações
        localização / {
            proxy_pass http://your_backend_server;
            proxy_set_header Anfitrião $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Esta configuração faz o seguinte:

  1. Limitação da taxa: limita o número de pedidos de cada endereço IP a 10 pedidos por segundo, com um limite de 20 pedidos.
  2. Limitaçãode conexões: limita o número máximo de conexões de cada endereço IP a 20.
  3. Limite de tamanho do corpo do pedido: limita o tamanho dos corpos dos pedidos para reduzir o risco de ataques que enviam corpos de pedidos grandes.
  4. Compressão Gzip: permite a compressão gzip para conservar a largura de banda.
  5. Cabeçalhos de segurança: adiciona cabeçalhos de segurança para melhorar a segurança.
  6. Bloquear agentes de utilizador vulneráveis: bloqueia pedidos de agentes de utilizador vulneráveis comuns.
  7. Bloquear ficheiros ocultos: Bloqueia o acesso a ficheiros e diretórios ocultos.
  8. Whitelisting Administrator Access: Permite o acesso à área de administração apenas a partir do seu endereço IP.
  9. Negar acesso a determinados diretórios: bloqueia o acesso a diretórios confidenciais, como sistema e fornecedor.
  10. Passagem de proxy: Encaminha pedidos para o seu servidor de aplicações.

Certifique-se de que personaliza a configuração de acordo com os seus requisitos específicos, tais como nomes de domínio, endereços de servidor backend e endereços IP administrativos. Além disso, monitorize regularmente os registos do servidor e ajuste as configurações conforme necessário para se adaptar às ameaças em constante mudança.

A configuração fornecida destina-se a ser adicionada ao ficheiro nginx.conf ou incluída em ficheiros de configuração separados. Aqui está um guia passo a passo sobre onde adicionar a configuração:

  1. Localizar o arquivo nginx.conf: Dependendo da sua instalação do Nginx, o arquivo nginx.conf pode estar localizado em diferentes diretórios. As localizações comuns incluem /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf ou /etc/nginx/sites-available/default.
  2. Abrir o ficheiroginx.conf: Pode abrir o ficheiro utilizando um editor de texto ou um editor de linha de comandos, como o nano, vim ou emacs.
  3. Adicione a configuração no bloco http: Dentro do bloco http, que define as configurações do servidor HTTP, você adicionará a configuração fornecida. Normalmente, o bloco http está localizado na parte superior do arquivo nginx.conf.
  4. Colar a configuração fornecida: cole toda a configuração fornecida anteriormente no bloco http. Certifique-se de substituir os valores de espaço reservado, como example.com, your_admin_ip e your_backend_server, pelos valores reais.
  5. Salvar e sair: depois de adicionar a configuração, salve o arquivo nginx.conf e saia do editor de texto.
  6. Testar a configuração do Nginx: antes de reiniciar o Nginx, é uma boa prática testar a configuração quanto a erros de sintaxe.
  7. Isso pode ser feito executando o seguinte comando:
    nginx -t

Se não houver erros de sintaxe, verá uma mensagem indicando que o teste do ficheiro de configuração foi bem sucedido.

Reiniciar o Nginx: Por fim, reinicie o Nginx para aplicar as alterações. Isso pode ser feito com o seguinte comando:
sudo service nginx restart

  1. Se não estiver a utilizar um sistema com systemd, pode utilizar comandos diferentes para reiniciar o Nginx.

Seguindo esses passos, você adicionará a configuração pretendida ao seu servidorNginx, aumentando sua segurança com proteção DDoS e outras medidas de segurança.