Para evitar que ataques como esse aconteçam novamente, você deve implementar diversas práticas de segurança, especialmente relacionadas ao upload de arquivos e à configuração do servidor web. Aqui estão as principais medidas que você pode adotar:

1. Validação e Restrição de Uploads

  • Verificação de MIME Type: Não se baseie apenas na extensão do arquivo (como .jpg ou .png), pois isso pode ser facilmente manipulado. Verifique o MIME type real do arquivo carregado para garantir que ele é de fato uma imagem.
  • Limite de Extensões Permitidas: Permita apenas extensões absolutamente necessárias, como .jpg, .jpeg, .png, e .gif. Bloqueie qualquer extensão que possa ser usada para scripts, como .php, .html, ou extensões duplas, como .php.jpg.
  • Rejeitar Extensões Duplas: Configure o sistema para recusar uploads que contenham múltiplas extensões (como image.php.jpg).
  • Sanitização de Nomes de Arquivos: Renomeie os arquivos após o upload para algo seguro (ex.: hash aleatório + extensão), removendo caracteres especiais e evitando que o nome do arquivo tenha efeito sobre o servidor.

2. Configurações no Servidor Web

  • Desabilitar Execução de Scripts no Diretório de Uploads:
    • No Apache, use um arquivo .htaccess no diretório de uploads para bloquear a execução de scripts PHP:
      apache
      <FilesMatch "\.(php|php\..*|phtml)$"> Order Allow,Deny Deny from all </FilesMatch>
    • No Nginx, você pode configurar uma regra para impedir a execução de scripts PHP em um diretório específico:
      nginx
      location /uploads/ { location ~ \.php$ { deny all; } }
  • Desabilitar manipulação de extensões duplas: Configure o servidor para não processar arquivos com extensões duplas. Por exemplo, no Apache:
    apache
    <IfModule mod_negotiation.c> Options -MultiViews </IfModule>

3. Restrições no Arquivo de Configuração PHP

  • Desativar Funções Perigosas: No php.ini, desative funções que permitem execução de comandos no servidor, como:
    ini
    disable_functions = exec, shell_exec, system, passthru, proc_open, popen
  • Limitar Uploads de Arquivos: Configure o php.ini para permitir apenas os tipos de arquivos necessários e limitar o tamanho máximo do upload:
    ini
    file_uploads = On upload_max_filesize = 2M post_max_size = 2M

4. Monitoramento e Logs

  • Ativar Monitoramento: Use ferramentas de monitoramento como o Fail2Ban para detectar tentativas de invasão e bloquear IPs maliciosos.
  • Registro de Logs: Ative o log detalhado de uploads e ações em diretórios sensíveis. Monitore as tentativas de upload de arquivos suspeitos e atue rapidamente em caso de anomalias.

5. Firewall de Aplicação Web (WAF)

  • Um WAF (Web Application Firewall), como ModSecurity ou Cloudflare, pode detectar e bloquear atividades maliciosas automaticamente. Um WAF inspeciona as requisições HTTP e pode bloquear uploads que contenham código malicioso.

6. Permissões de Arquivos e Diretórios

  • Defina as permissões corretas no sistema de arquivos. Diretórios de upload não devem ter permissões de execução.
    • Diretórios de upload devem ter permissões chmod 0755 e arquivos criados pelo sistema devem ter permissões chmod 0644.
  • Certifique-se de que os diretórios não permitem a listagem de arquivos (protegendo contra ataques de diretório).

7. Escaneamento de Arquivos e Backdoors

  • Implemente um mecanismo para escanear automaticamente os arquivos carregados, buscando por padrões de código malicioso, com ferramentas como ClamAV ou soluções de antivírus para servidores web.
  • Faça uma auditoria em seu sistema para garantir que não há backdoors instalados. Ferramentas de segurança como o rkhunter ou chkrootkit podem ajudar na detecção de rootkits.

8. Atualizações Regulares

  • Mantenha seu servidor, scripts PHP e qualquer software ou biblioteca atualizados. Vulnerabilidades conhecidas em versões antigas são o principal vetor de ataque.

9. Isolamento de Ambiente

  • Se possível, execute a aplicação em um ambiente isolado usando contêineres (como Docker) ou máquinas virtuais. Isso reduz o impacto de um ataque, limitando o que o atacante pode acessar.

0 Comments

Say something

Login OR Register to write comments