[pt-BR] Configurando um scanner antimalware para WordPress em Docker
Marcos Vilela
Posted on November 22, 2024
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
- Docker e Docker Compose instalados na máquina.
- 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
- 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"]
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
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"]
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
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.
Posted on November 22, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.