[pt-BR] Configurando um scanner antimalware para WordPress em Docker

marcos_vilela

Marcos Vilela

Posted on November 22, 2024

[pt-BR] Configurando um scanner antimalware para WordPress em Docker

Neste artigo, vamos configurar uma ferramenta de escaneamento antimalware PHP no Docker para monitorar projetos WordPress. Utilizaremos o PHP-Antimalware-Scanner, um utilitário de código aberto que analisa arquivos PHP em busca de código suspeito. Ele também pode ser útil para outros projetos PHP além do WordPress, oferecendo uma camada adicional de segurança para análise em sandbox.

Pré-requisitos

  1. Docker e Docker Compose instalados na máquina.
  2. Conhecimento básico sobre Docker e ambientes WordPress.

Nota: Esse tutorial presume que você já tem um ambiente Docker para WordPress em uso. Para quem ainda não tem, recomendo configurar primeiro um ambiente como esse projeto como exemplo setup WordPress Docker. Os recursos devem ser adaptados ao seu ambiente.

Estrutura do Projeto

O scanner de malware será configurado como um serviço adicional. Para isso, vamos criar um novo Dockerfile específico para o scanner e configurar um script de entrada para executar a varredura sempre que necessário.

Estrutura de Diretórios

Crie a seguinte estrutura de diretórios para o serviço de varredura dentro da pasta do seu projeto:

project-root/
├── docker/
│   └── php-antimalware-scanner
│       ├── Dockerfile
│       ├── docker-entrypoint.sh
├── quarantine/
│       │   ├── scan-report.html
│       │   └── scan-report.log
Enter fullscreen mode Exit fullscreen mode
  • Dockerfile: arquivo Docker para configurar o PHP-Antimalware-Scanner.
  • docker-entrypoint.sh: script que configura o scanner para executar e salvar relatórios.
  • quarantine/: pasta para guardar relatórios e arquivos suspeitos isolados.

Criando o Dockerfile do Scanner

Dentro do diretório php-antimalware-scanner, crie o arquivo Dockerfile com o seguinte conteúdo:

FROM php:latest

VOLUME [ "/src" ]

RUN apt-get update && apt-get install -y wget && \
    wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner -O /usr/local/bin/awscan.phar && \
    echo '#!/bin/bash\nphp /usr/local/bin/awscan.phar "$@"' > /usr/local/bin/awscan && \
    chmod +x /usr/local/bin/awscan.phar && \
    chmod +x /usr/local/bin/awscan

WORKDIR /var/www/html

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
Enter fullscreen mode Exit fullscreen mode

Esse Dockerfile configura o ambiente com o PHP-Antimalware-Scanner.

Script de Entrada para Varredura Automática

O script docker-entrypoint.sh será responsável por rodar o scanner e salvar os relatórios. Adicione o seguinte código ao arquivo docker-entrypoint.sh:

#!/bin/bash
set -euo pipefail

/usr/local/bin/awscan \
    --report --disable-checksum --report-format html --path-report /quarantine/scan-report.html \
    --auto-quarantine --path-quarantine /quarantine/ --lite \
    /var/www/html \
    2>&1 | tee /quarantine/scan-report.log
Enter fullscreen mode Exit fullscreen mode

Esse script configura o scanner para:

  • Salvar o relatório da varredura em HTML no diretório /quarantine/scan-report.html.
  • Isolar arquivos suspeitos na pasta quarantine.
  • Armazenar o log detalhado em scan-report.log.

Configurando o Serviço Docker no docker-compose.yml

No seu arquivo docker-compose.yml, adicione o seguinte serviço para o scanner:

services:
    scanner:
    build:
      context: ./docker/php-antimalware-scanner
    volumes:
      - ./wordpress:/var/www/html
      - ./quarantine:/quarantine
    profiles:
    - manual
    entrypoint: ["/usr/local/bin/docker-entrypoint.sh"]
Enter fullscreen mode Exit fullscreen mode

Aqui, o volume /var/www/html representa o código-fonte do projeto WordPress ou PHP que será escaneado.

Executando o Scanner

Para rodar o scanner, basta levantar o ambiente e acionar o service do scanner:

$ docker compose build --pull
$ docker compose up -d
$ docker compose run --rm scanner
Enter fullscreen mode Exit fullscreen mode

Observações Importantes

  • Quarentena de Arquivos: Este modelo de implantação move arquivos suspeitos para a pasta de quarentena automaticamente. Tenha cuidado ao utilizá-lo, pois isso pode comprometer a estrutura do projeto. Revise cuidadosamente os arquivos retidos.

  • Falsos Positivos: O scanner pode identificar códigos fracos que não são necessariamente maliciosos. Considere ajustar o docker-entrypoint.sh para tornar o scanner menos agressivo. Consulte a documentação oficial para configurar o entrypoint conforme necessário.

Com essas instruções, você tem uma implementação prática do PHP-Antimalware-Scanner em um ambiente local dockerizado para varrer a segurança de projetos WordPress e ou PHP.

Explorando os Resultados

Ao final da varredura, você encontrará dois arquivos importantes na pasta quarantine:

  • scan-report.html: um relatório visual com detalhes dos arquivos suspeitos.
  • scan-report.log: um log completo das atividades do scanner, que inclui detalhes técnicos da execução.
  • Esses relatórios indicam quais arquivos precisam de atenção e se algum foi automaticamente isolado.

Considerações Finais

Essa configuração permite rodar varreduras de segurança diretamente no ambiente de desenvolvimento, sem necessidade de configurações adicionais. Como o PHP-Antimalware-Scanner varre apenas arquivos .php, ele é uma ótima escolha para ambientes WordPress, além de funcionar para qualquer aplicação PHP.

💖 💪 🙅 🚩
marcos_vilela
Marcos Vilela

Posted on November 22, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related