
Bloqueio de bots maliciosos no Nginx, bloqueador de referrers de spam, scanners de vulnerabilidades, user-agents, malware, adware, ransomware, sites maliciosos, com anti-DDOS, bloqueio do WordPress Theme Detector e jail do Fail2Ban para reincidentes.
| REPO | TORNE-SE UM PATROCINADOR |
|---|
| O seu logotipo e link para o seu domínio aparecerão aqui se você se tornar um patrocinador. Basta enviar um e-mail para [email protected] se desejar patrocinar este projeto, pois a África do Sul ainda não é suportada no programa de patrocinadores do Github. | |
| Ajude-me em https://ko-fi.com/mitchellkrog |
Certifique-se de estar inscrito nas Notificações do Github para ser notificado quando o bloqueador for atualizado ou quando ocorrerem alterações importantes ou críticas para a missão (potencialmente quebráveis).
Este é o nosso novo método preferido de instalação, que agora é feito através de um conjunto de scripts de shell contribuídos para este repositório e mantidos por Stuart Cardall @itoffshore, que é um dos mantenedores de pacotes do Alpine Linux.
As instruções abaixo são para um processo de instalação rápido e sem dor que baixa todos os arquivos necessários para o bloqueador, e os scripts incluem a adição dos includes necessários ao seu nginx.conf e aos arquivos .vhost do nginx. O script de configuração assume que os seus arquivos de configuração de vhost estão localizados em /etc/nginx/sites-available/ e que cada arquivo de configuração de vhost termina com uma extensão de arquivo .vhost
Para instruções de instalação manual, veja - Por favor, veja: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
setup-ngxblocker, install-ngxblocker e update-ngxblocker podem todos ser configurados com locais personalizados de instalação / atualização a partir da linha de comando. (Veja o Passo 11 das instruções para saber como usar esses scripts e locais não padrão do Nginx)
Execute qualquer um dos scripts de configuração, instalação ou atualização com --help ou -h para ver as opções.
OBSERVAÇÃO: Para aqueles que usam Certificados SSL Let's Encrypt, o método preferido e 100% funcional é usar o Método Autenticador Webroot. Parece haver alguns problemas com pessoas que usam o método de desafio http, mas posso confirmar que o webroot funciona perfeitamente. Não temos certeza neste momento se o método de desafio http-01 é um bug do certbot ou do nginx.
Os relatórios de rede duplicados do Nginx NÃO são um bug nem podem ser corrigidos; este é o comportamento desejado do bloqueador. As atualizações diárias das listas negras de IP fazem com que alguns IPs e faixas bem conhecidos sejam colocados na lista negra old value "1"; estes são então colocados na lista branca no final do globalblocklist, que é a ordem de carregamento que então define os IPs que sabemos serem bons para o seu novo value "0", colocando-os assim na lista branca. Tem sido assim desde o primeiro dia do bloqueador e continuará assim. Estas são simplesmente mensagens [WARN], não mensagens [EMERG], e não afetam a operação do Nginx de forma alguma.

Baixe o install-ngxblocker para o seu diretório /usr/local/sbin/ e torne o script executável.```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
Se a sua distribuição Linux não tiver o wget, você pode substituir o comando wget acima usando curl da seguinte forma:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
Instale o pacote.```sh pkg install www/nginx-ultimate-bad-bot-blocker
Alternativamente, instale via portmaster:```sh
portmaster www/nginx-ultimate-bad-bot-blocker

Agora execute o script install-ngxblocker em MODO DE TESTE (DRY-MODE), que mostrará quais alterações ele fará e quais arquivos baixará para você. Este é apenas um TESTE (DRY-RUN), portanto nenhuma alteração está sendo feita ainda.
O install-ngxblocker baixa todos os arquivos necessários, incluindo os scripts de configuração e atualização.```sh cd /usr/local/sbin sudo ./install-ngxblocker
Isto mostrará a saída das alterações que serão feitas
**(NOTA: isto é apenas um DRY-RUN, nenhuma alteração foi feita)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
Os scripts setup-ngxblocker, install-ngxblocker e update-ngxblocker podem todos ser configurados com locais personalizados de instalação/atualização a partir da linha de comando.
Execute qualquer um dos scripts de configuração, instalação ou atualização com --help ou -h para visualizar as opções.

Agora execute o script de instalação com o parâmetro -x para baixar todos os arquivos necessários do repositório:```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
Isto dar-lhe-á o seguinte resultado:```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
Todos os ficheiros necessários já foram descarregados para as pastas corretas no Nginx diretamente do repositório.
CERTIFICA-TE de que defines os teus scripts de configuração e atualização como executáveis, executando os dois comandos seguintes. Isto é importante antes de continuares com o Passo 4 e seguintes.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**Os scripts setup-ngxblocker, install-ngxblocker e update-ngxblocker podem todos ser configurados com locais personalizados de instalação / atualização a partir da linha de comando.**
**Execute qualquer um dos scripts de configuração, instalação ou atualização com --help ou -h para ver as opções.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
Agora execute o script setup-ngxblocker em MODO-DRY, que mostrará quais alterações ele fará e quais arquivos baixará para você. Este é apenas um DRY-RUN, portanto nenhuma alteração está sendo feita ainda.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
Isto dar-lhe-á a saída da seguinte forma (esta saída abaixo assume que o seu ficheiro nginx.conf já tem o include padrão de /etc/nginx/conf.d/*) Todas as instalações Nginx que conheço têm este include padrão no ficheiro nginx.conf distribuído com todas as versões.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Este script também adiciona seu IP à lista de permissões no arquivo whitelist-ips.conf para você.
Outros IPs ou faixas de IP podem ser adicionados ao seu arquivo personalizável whitelist-ips.conf localizado em /etc/nginx/bots.d/whitelist-ips.conf.
**setup-ngxblocker, install-ngxblocker e update-ngxblocker podem todos ser configurados com locais personalizados de instalação / atualização a partir da linha de comando.**
**Execute qualquer um dos scripts de setup, install ou update com --help ou -h para ver as opções.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
Agora execute o script de setup com o parâmetro -x para fazer todas as alterações necessárias no seu nginx.conf (se necessário) e também para adicionar os includes necessários em todos os seus arquivos de vhost.
Este script setup-ngxblocker assume que todos os seus arquivos de vhost localizados em /etc/nginx/sites-available terminam com a extensão .vhost. É uma boa prática fazer com que todos os seus arquivos de configuração de vhost terminem com a extensão .vhost, mas se você preferir manter o que já tem, por exemplo .conf, você pode simplesmente modificar a execução do setup-ngxblocker usando o parâmetro `-e` para especificar a extensão que você usa para seus arquivos de vhost.
Por exemplo, se seus arquivos de vhost terminam em .conf, você mudará isso executando o setup-ngxblocker com um parâmetro adicional de linha de comando da seguinte forma:
`sudo ./setup-ngxblocker -x -e conf`
Então agora vamos executar o script de setup e deixá-lo fazer todas as alterações necessárias para ativar o Bot Blocker em todos os seus sites.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
Aqui está a saída que verá:
[conteúdo do chunk 25/35 a ser traduzido]
``````text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf
inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost
inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost
inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Notará que ele fez os includes em todos os arquivos .vhost no meu servidor de teste e também incluiu seu próprio endereço IP na lista de permissões no arquivo whitelist-ips.conf para você. Outros IPs ou faixas de IP podem ser adicionados ao seu arquivo personalizável whitelist-ips.conf localizado em /etc/nginx/bots.d/whitelist-ips.conf.
O que este script de configuração fez foi simplesmente adicionar as seguintes declarações de include nos seus arquivos .vhost para você; ele também adiciona /etc/nginx/conf.d/* aos includes no nginx.conf (se ainda não estiver no nginx.conf), caso contrário, todo o script falhará.```nginx
include /etc/nginx/bots.d/ddos.conf; include /etc/nginx/bots.d/blockbots.conf;
**setup-ngxblocker, install-ngxblocker e update-ngxblocker podem todos ser configurados com locais personalizados de instalação / atualização a partir da linha de comando.**
**Execute qualquer um dos scripts de setup, install ou update com --help ou -h para ver as opções.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-6.png"/>
Agora teste a sua configuração do nginx
`sudo nginx -t`
e deverá ver```text
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Agora basta recarregar / reiniciar o Nginx e o Bot Blocker ficará imediatamente ativo e protegerá todos os seus sites.
sudo nginx -t && sudo nginx -s reload
ou
sudo service nginx restart
É isso, o bloqueador está agora ativo e protege os seus sites de milhares de bots e domínios maliciosos.

Agora configure o cron para atualizar automaticamente o bloqueador todos os dias, para que você tenha sempre a proteção mais recente.
sudo crontab -e
Adicione a seguinte linha no final do seu arquivo crontab. Note que adicionar o parâmetro de linha de comando -e especifica o seu endereço de e-mail para onde o relatório de atualização é enviado. Obviamente, substitua [email protected] pelo seu endereço de e-mail real, caso contrário você não receberá o e-mail quando o script for atualizado.
00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]
Isso atualizará o bloqueador todas as noites às 22h.
Se quiser que ele atualize com mais frequência (pois às vezes eu publico 3-4 atualizações por dia), você pode configurá-lo da seguinte forma para executar o cron a cada 8 horas, embora apenas uma vez por dia seja mais do que suficiente.
00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]
Se você não quiser nenhuma notificação por e-mail após uma atualização (não recomendado, caso o Nginx tenha algum EMERG ao recarregar), basta executar o seu cron da seguinte forma.
00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n
Se preferir enviar e-mail via mailgun, execute o seu cron assim:
00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]
É isso, o bloqueador se manterá automaticamente atualizado e também recarregará o Nginx assim que baixar a versão mais recente do arquivo globalblacklist.conf.

Agora você pode personalizar qualquer um dos seguintes arquivos abaixo para adequar ao seu ambiente ou requisitos. Esses arquivos nunca são modificados durante uma atualização usando o script de atualização automática acima, portanto, quaisquer personalizações que você fizer aqui nunca serão sobrescritas durante uma atualização.```text /etc/nginx/bots.d/whitelist-ips.conf /etc/nginx/bots.d/whitelist-domains.conf /etc/nginx/bots.d/blockbots.conf /etc/nginx/bots.d/blacklist-domains.conf /etc/nginx/bots.d/blacklist-user-agents.conf /etc/nginx/bots.d/blacklist-ips.conf /etc/nginx/bots.d/bad-referrer-words.conf /etc/nginx/bots.d/custom-bad-referrers.conf /etc/nginx/bots.d/ddos.conf
Digamos que, por alguma razão "obscura", você realmente queira bloquear o GoogleBot de acessar seu site. Você simplesmente o adicionaria ao arquivo /etc/nginx/bots.d/blacklist-user-agents.conf e ele substituirá a whitelist padrão para o GoogleBot. O mesmo se aplica a qualquer outro bot que esteja na whitelist por padrão.
Todos os arquivos de include são comentados para sua conveniência.
************************************************
## Se Este Projeto Ajudou Você, Ajude a Apoiá-lo
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-10.png"/>
(TESTE QUE ESTÁ FUNCIONANDO)
**TESTES**
Execute os seguintes comandos um por um a partir de um terminal em outra máquina Linux contra o seu próprio nome de domínio.
:exclamation:
**substitua http://seudominio.com :exclamation: nos exemplos abaixo pelo seu NOME DE DOMÍNIO REAL :exclamation:**
`curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com`
`curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com`
**Deve responder com 200 OK**
`curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com`
`curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com`
**Deve responder com uma das seguintes mensagens de erro:**
- curl: (52) Empty reply from server
- curl: (56) TCP connection reset by peer
- curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
`curl -I http://yourdomain.com -e http://100dollars-seo.com`
`curl -I http://yourdomain.com -e http://zx6.ru`
**Deve responder com uma das seguintes mensagens de erro:**
- curl: (52) Empty reply from server
- curl: (56) TCP connection reset by peer
- curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
O Nginx Ultimate Bot Blocker agora está FUNCIONANDO e PROTEGENDO seus sites !!!
:exclamation:
**substitua http://seudominio.com :exclamation: nos exemplos abaixo pelo seu NOME DE DOMÍNIO REAL :exclamation:**
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/nginx-ultimate-bad-bot-blocker-testing-instructions.jpg"/>
### NOTA para Usuários do Cloudflare !!!
Se você é um usuário do Cloudflare que está usando o sistema de CDN / Cache do Cloudflare, você deve sempre desabilitar o CDN do Cloudflare (definir Cloud cinza)
Durante os testes, você obterá os códigos de resposta corretos, conforme abaixo:
- curl: (52) Empty reply from server
- curl: (56) TCP connection reset by peer
- curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
Isso é por design. O CDN está fazendo seu trabalho, ou seja, a primeira resposta do seu servidor disse ao bot "vá embora" emitindo respostas `444` ou `443`.
O Cloudflare armazena em cache essa resposta e, portanto, na segunda vez que você testar, receberá uma mensagem de erro de origem `520 Origin Error`.
Ao testar o bloqueador, desabilite o sistema de CDN / cache e, quando estiver satisfeito com seus testes, reabilite o CDN/Cache em seu ambiente de produção, pois você quer que os bots recebam essa resposta do Cloudflare.
A maioria dos outros sistemas de CDN provavelmente mostrará o mesmo comportamento, então sempre desabilite um CDN durante os testes para descartar qualquer coisa que possa interferir em seus testes. Sempre certifique-se de reabilitar o CDN quando terminar os testes !!
Depois de habilitar o CDN do Cloudflare, teste novamente.
Durante os testes, você obtém
- curl: 520 Origin Error
Isso significa que o CDN está funcionando.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-11.png"/>
#### OPCIONAL
**INSTALANDO O BLOQUEADOR EM LOCAIS DE PASTA NGINX NÃO PADRÃO**
Algumas pessoas compilam o Nginx por conta própria e não acabam tendo os locais de pasta padrão do nginx em `/etc/nginx`
Para usuários como este, você pode executar o install-ngxblocker, setup-ngxblocker e update-ngxblocker especificando seu
local de pasta nas linhas de comando da seguinte forma.
`sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d`
`sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d`
`sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]`
Isso colocará automaticamente os arquivos nos locais que você especificar, fará os includes em seus vhosts usando seus locais personalizados e, quando o update-ngxblocker baixar uma nova atualização, ele também reescreverá automaticamente as seções "Include" dentro do arquivo globalblacklist.conf com seus próprios locais personalizados. Agradecimentos novamente a Stuart Cardall @itoffshore por suas contribuições com esses excelentes scripts.
************************************************
# [AVISO] MENSAGENS DE REDE DUPLICADAS DO NGINX
## POR FAVOR, LEIA ISTO
Os relatórios de rede duplicados do Nginx NÃO são um bug nem podem ser corrigidos; este é o comportamento desejado do bloqueador. Atualizações diárias das listas negras de IP fazem com que alguns IPs e faixas bem conhecidos sejam colocados na lista negra **```old value "1"```** e estes são então colocados na whitelist no final do globalblocklist, que é a ordem de carregamento que então define os IPs que sabemos serem bons para seu novo **```value "0"```**, colocando-os assim na whitelist. Tem sido assim desde o primeiro dia do bloqueador e permanecerá assim. Estas são simplesmente mensagens **[WARN]**, não mensagens **[EMERG]**, e não afetam a operação do Nginx de forma alguma.
************************************************
# POR QUE BLOQUEAR BOTS RUINS ?
<h4 id="define-bad-bots">
Definição de Bots Ruins
</h4>
##### Bots ruins são:
- Referrers ruins
- Strings de User-Agent ruins
- Referrers de spam
- Bots de spam e bots maliciosos
- Bots incômodos ou indesejados
- Sites vinculados a campanhas lucrativas de clickjacking de Malware, Adware e Ransomware
- Scanners de vulnerabilidades
- Sites de jogos de azar e pornografia
- Coletores de e-mail
- Raspadores de conteúdo
- Bots de classificação de links
- Bots agressivos que raspam conteúdo
- Sites de hotlinking de imagens e ladrões de imagens
- Bots ou servidores vinculados a vírus ou malware
- Bots de vigilância governamental
- Redes de ataque Botnet (Mirai)
- Detectores de temas Wordpress conhecidos (Atualizados Regularmente)
- Empresas de SEO que seus concorrentes usam para tentar melhorar seu SEO
- Ferramentas de pesquisa de links e teste de backlinks
- Parar o Google Analytics Ghost Spam
- Adware e Malware de navegador (Yontoo etc)
(Mais de 4000 referrers ruins, referrers de spam, user-agents, bots ruins, IPs ruins, sites de pornografia, jogos de azar e clickjacking, empresas de seo lucrativas, detectores de temas wordpress e contando)
- Inclui a criação de um arquivo google-exclude.txt para criar filtros / segmentos no Google Analytics (veja instruções abaixo)
- Inclui a criação de um arquivo google-disavow.txt para uso no Google Webmaster Tools (veja instruções abaixo)
- Veja a configuração de exemplo de Vhost SSL Nginx em: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/NGINX-SSL-Site-Config-Example.md
************************************************
## Ajude a Apoiar Este Projeto
Milhares de horas de programação e testes foram investidas neste projeto, mostre algum amor
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
## Bem-vindo ao Ultimate Nginx Bad Bot, User-Agent, Spam Referrer Blocker, Adware, Malware e Ransomware Blocker, Click-Jacking Blocker, Click-Redirect Blocker e Bad IP Blocker com Sistema Anti DDOS, Rate Limiting Nginx e Bloqueio de Detector de Temas Wordpress.
Os bots tentam se fazer passar por outro software ou sites disfarçando seu user agent. Seus nomes de user agent podem parecer inofensivos, perfeitamente legítimos até.
Por exemplo, "^Java", mas de acordo com o Project Honeypot, é na verdade um dos mais perigosos, MAS muitos bots legítimos por aí têm "Java" em sua string de user agent, então a abordagem adotada por muitos de bloquear "Java" não é apenas ignorante, mas também bloqueia rastreadores muito legítimos, incluindo alguns do Google e do Bing, e deixa muito claro para mim que aqueles que escrevem scripts de bloqueio de bots raramente os testam.
Referrers de spam e nomes de domínio de spam usam técnicas muito inteligentes para sair de seus sites executando campanhas muito lucrativas de click-jacking e click-redirecting que servem anúncios a pessoas desavisadas navegando na web ou até mesmo instalando malware, adware ou ransomware em seus navegadores, que então se tornam parte de sua rede lucrativa de bots.
Este Bot Blocker inclui centenas de nomes de domínio e endereços IP que a maioria das pessoas nem verá em seus logs do Nginx. Isso vem como resultado de todos os meus sites rodando em SSL e usando Content-Security-Policy (CSP), que bloqueia coisas antes mesmo de chegarem ao Nginx, e eu capturei e continuo capturando alguns dos piores domínios e bots que existem.
Uma quantidade massiva de sites de Pornografia, Jogos de Azar e Fake News também é bloqueada neste script bloqueador, que também cresce em ritmo acelerado.
Infelizmente, a maioria dos scripts de bloqueio de bots por aí são simplesmente copiados e colados dos scripts de outras pessoas e feitos para parecerem trabalho próprio. Este foi inspirado pelo criado por https://github.com/mariusv e eu contribuí para aquele projeto, mas fui para um layout totalmente novo, limpei-o bastante e comecei do zero. Agora é um projeto completamente independente. É limpo, funciona e foi testado minuciosamente.
************************************************
### O BÁSICO
Esta lista de bloqueio de bots ruins do nginx é projetada para ser um arquivo de include global do Nginx e usa as diretivas Nginx map $http_user_agent, map $http_referer e geo $validate_client.
Dessa forma, o arquivo .conf é carregado uma vez na memória pelo Nginx e fica disponível para todos os sites que você opera. Você simplesmente precisa usar uma instrução Include em um arquivo de conf de vhost do Nginx.
************************************************
### É CENTRALIZADO:
A beleza disso é que é um arquivo central usado por todos os seus sites. Isso significa que há apenas um lugar para fazer alterações, ou seja, adicionar novos bots que você descobrir em seus arquivos de log. Quaisquer alterações são aplicadas imediatamente a todos os sites após um simples "sudo service nginx reload". Mas, é claro, sempre faça um sudo nginx -t para testar quaisquer alterações de configuração antes de recarregar.
************************************************
### É MINÚSCULO E LEVE
O arquivo é minúsculo em tamanho. No momento em que este texto foi escrito e no primeiro commit público deste, o tamanho do arquivo incluindo todos os comentários "que o nginx ignora" está atualmente em **apenas 185 kb de tamanho** e já contém mais de 5000 domínios ruins, bots ruins e endereços IP ruins. É tão leve que o Nginx nem percebe que está lá. Já contém milhares de entradas - total atualizado no topo deste README.
************************************************
### É PRECISO E À PROVA DE FALSOS POSITIVOS
Ao contrário de muitos outros bloqueadores de bots ruins para Nginx e Apache, onde as pessoas simplesmente copiam e colam listas de outros, esta lista foi construída do zero e testada minuciosamente, e quero dizer minuciosamente, por mais de 10 meses. Ela vem de logs de servidor reais que são monitorados diariamente e há pelo menos 3-10 novas adições a este arquivo quase diariamente.
Também foi testada minuciosamente quanto a falsos positivos usando meses de testes constantes e regulares e monitoramento de arquivos de log.
Todos os sites listados nos referrers ruins são verificados um por um antes mesmo de serem adicionados. Simplesmente copiar qualquer coisa que pareça suspeita em seu arquivo de log e adicioná-la a um bloqueador como este sem realmente ver o que é primeiro .... bem, é tolice, no mínimo.
************************************************
### DERRUBE-OS E É ISSO
O Nginx tem um erro adorável chamado 444 que simplesmente derruba a conexão. Todas essas regras emitem uma resposta 444, então se uma regra corresponder, o IP solicitante simplesmente não recebe resposta e pareceria que seu servidor não existe para eles ou parece estar offline.
Um teste com curl usando uma das linhas de comando de teste documentadas no arquivo /conf.d/globalblacklist.conf dará um simples "curl: (52) Empty reply from server" e essa é a resposta que os referrers e bots ruins recebem.
************************************************
### FUNCIONALIDADE DE RATE LIMITING INTEGRADA
Para bots ou spiders que você ainda deseja permitir, mas deseja limitar sua taxa de visitas, você pode usar as funções de rate limiting integradas que incluí. O arquivo é extensivamente comentado em todo o seu conteúdo, então você deve descobrir como fazer; caso contrário, simplesmente me envie uma mensagem se estiver tendo problemas.
************************************************
### PULL REQUESTS / CORREÇÕES / FALSOS POSITIVOS:
[](https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/issues) ou para contribuir com seus próprios referrers ruins, bots ou para fazer correções em quaisquer bots ou domínios bloqueados incorretamente, por favor, faça um fork de uma cópia deste repositório e envie pull requests nos <a href="https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/tree/master/_generator_lists">arquivos individuais localizados aqui</a> e depois envie um pull request (PR).
##### Todas as Adições, Remoções e Correções serão verificadas quanto à precisão antes de serem mescladas no bloqueador principal.
************************************************
### PROBLEMAS:
[](https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/issues) sobre listagens incorretas ou quaisquer outros problemas no sistema de issues e eles serão investigados e removidos, se necessário. Eu respondo muito rapidamente aos problemas dos usuários e ajudei inúmeros usuários por dias a fio a fazer seu bloqueador de bots funcionar. Você poderia dizer que sou louco (discutível), mas adoro ajudar pessoas e não ignoro issues ou pessoas com problemas para fazer isso funcionar.
************************************************
## RECURSOS DO NGINX BAD BOT BLOCKER:
- Listas extensas de Bots e Raspadores Ruins e Conhecidamente Ruins (atualizadas quase diariamente)
- Bloqueio de Domínios e Sites de Referrers de Spam
- Bloqueio de empresas de coleta de dados de SEO como Semalt.com, Builtwith.com, WooRank.com e muitas outras (atualizadas regularmente)
- Bloqueio de sites de clickjacking vinculados a Adware, Malware e Ransomware
- Bloqueio de sites de Pornografia e Jogos de Azar que usam maneiras lucrativas de ganhar dinheiro servindo anúncios ao sair de seus nomes de domínio e sites.
- Bloqueio de Domínios e IPs Ruins que você nem consegue ver em seus Logs do Nginx. Graças à Content Security Policy (CSP) em todos os meus sites SSL, posso ver coisas tentando puxar recursos de meus sites antes mesmo de chegarem ao Nginx e serem bloqueadas pela CSP.
- Filtro Anti DDOS e Rate Limiting de Bots Agressivos
- Ordenado alfabeticamente para manutenção mais fácil (Pull Requests Bem-Vindos)
- Seções comentadas de certos bots importantes para ter certeza antes de bloquear
- Inclui a faixa de IP da Cyveillance, conhecida por ignorar as regras do robots.txt
e bisbilhotar por toda a Internet.
- Whitelisting das Faixas de IP do Google, Bing e Cloudflare
- Whitelisting de suas próprias faixas de IP que você deseja evitar bloquear por engano.
- Capacidade de adicionar outras faixas de IP e blocos de IP que você deseja bloquear.
- Se está por aí e é ruim, já está aqui e BLOQUEADO !!
************************************************
### ENTENDE NOMES DE DOMÍNIO PUNYCODE / IDN
Muitas listas por aí colocam domínios engraçados em seu arquivo hosts. Seu arquivo hosts e DNS não entenderão isso. Esta lista usa domínios convertidos que estão no formato DNS correto para serem entendidos por qualquer sistema operacional. **Evite usar listas** que não coloquem a estrutura de domínio formatada corretamente em suas listas.
Por exemplo
O domínio:
`lifehacĸer.com` (observe o K)
na verdade se traduz para:
`xn--lifehacer-1rb.com`
Você pode fazer um nslookup em qualquer sistema operacional e ele resolverá corretamente.
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com
origin = dns1.yandex.net
mail addr = iskalko.yandex.ru
serial = 2016120703
refresh = 14400
retry = 900
expire = 1209600
minimum = 14400
xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net.
Name: xn--lifehacer-1rb.com
Address: 78.110.60.230
xn--lifehacer-1rb.com nameserver = dns2.yandex.net.
xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net"
xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
CERTIFIQUE-SE de monitorar os logs do seu site após implementar isto. Sugiro que você primeiro carregue isto em um site e monitore possíveis falsos positivos antes de colocar em produção em todos os seus sites.
Não fique como uma avestruz com a cabeça na areia; ser um operador de servidor responsável e proprietário de site significa que você deve monitorar seus logs com frequência. Uma razão pela qual muitos de vocês acabaram aqui em primeiro lugar é porque viram coisas desagradáveis nos seus arquivos de log do Nginx.
Também monitore seus logs diariamente em busca de novos referers maliciosos e strings de user-agent que você queira bloquear. Sua melhor fonte para adicionar a esta lista são os seus próprios logs de servidor, não os meus.
Sinta-se à vontade para contribuir com referers maliciosos dos seus próprios logs para este projeto enviando um Pull Request (PR). Você pode, no entanto, confiar nesta lista para manter fora 99% dos invasores.
Com grande agradecimento e apreço a
Para monitorar seus principais referers nos arquivos de log de um site diariamente, use os seguintes cron jobs simples que enviarão por e-mail uma lista dos principais referers / user agents todas as manhãs a partir dos arquivos de log de um site específico. Este é um exemplo de apenas um cron job para um site. Configure vários para cada um que você deseja monitorar. Aqui está um cron que roda às 8h todas as manhãs e me envia por e-mail o log de referers reduzido. Quando digo reduzido, o domínio do site e outros referers como Google e Bing são removidos dos resultados. Claro, você deve alterar o nome do arquivo de log, o nome do domínio e seu endereço de e-mail nos exemplos abaixo. O segundo cron para coletar user agents não remove nenhum referer, mas você pode adicionar essa funcionalidade se quiser copiando a instrução awk !~ do primeiro exemplo.
00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]
Isto envia por e-mail uma lista diária de referers usando um comando awk para excluir domínios como google, bing e seu próprio nome de domínio.
00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]
Isto envia por e-mail uma lista dos principais User-Agents que visitaram seu site nas últimas 24 horas, útil para detectar strings de User-Agents suspeitas ou maliciosas.
Adicionei um filtro e ação personalizados do Fail2Ban que escrevi e que monitoram seus logs do Nginx em busca de bots que geram um grande número de erros 444. Esta jail personalizada para Fail2Ban examinará logs por um período de 1 semana e banirá o infrator por 24 horas. Isso ajuda muito a manter fora alguns infratores reincidentes e a impedi-los de encher seus arquivos de log com erros 444. Veja a pasta Fail2Ban para instruções sobre como configurar este ótimo complemento para o Nginx Bad Bot Blocker.
Simplesmente usar o bloqueador do Nginx não impede o spam de referência fantasma do Google Analytics porque eles atingem o Analytics diretamente e nem sempre tocam necessariamente seu site.
Você deve usar filtros regex no Analytics para impedir o spam de referência fantasma.
Para isso, existem vários arquivos google-exclude-0*.txt que foram criados para você e são atualizados ao mesmo tempo em que o Bloqueador Nginx é atualizado. Conforme a lista cresce, mais arquivos de exclusão serão criados.
Siga as instruções visuais passo a passo abaixo para adicionar esses arquivos google-exclude como segmentos ao seu site.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
(Como usar o arquivo google-disavow.txt)
Adicionei a criação de um arquivo de texto Google Disavow chamado google-disavow.txt. Este arquivo pode ser usado nas Ferramentas para Webmasters do Google para bloquear todos esses domínios como links de spam ou ruins. Use com cautela.
Muitas pessoas estão à mercê de sua empresa de hospedagem e não têm acesso root ao servidor que roda por trás de seu site. Se esta for sua situação, confira o arquivo robots.txt gerado automaticamente, que ajudará até certo ponto a manter muitos Bots Ruins e User-Agents fora de seus sites.
Muitas pessoas estão à mercê de sua empresa de hospedagem e não têm acesso root ao servidor que roda por trás de seu site.
Se esta for sua situação, confira as versões .htaccess geradas automaticamente do Spam Referrer Blocker, que podem ser encontradas em este repositório. Este método .htaccess (SOMENTE PARA SITES APACHE) ajudará a manter todos os Spam Referrers deste bloqueador fora do seu site.
Isto é meramente mencionado aqui porque muitas pessoas que usam sistemas CPanel pensam que estão atrás de um servidor Nginx, mas na realidade estão rodando em um servidor Apache atrás de um servidor proxy Nginx. .htaccess não funciona em sites Nginx.
Milhares de horas de programação e testes foram investidas neste projeto, mostre um pouco de amor
Este repositório contém uma lista de todos os sites que encontro que foram hackeados com malware. A maioria dos proprietários de sites não sabe que seus sites foram hackeados e estão sendo usados para plantar malware.
Venha me visitar em mitchellkrog.com ou Facebook ou Siga-me no Twitter
Muito obrigado àqueles que contribuem para este projeto.
Muitas partes dos scripts geradores e do código que roda por trás deste projeto foram adaptadas de trechos de centenas de fontes. Na verdade, é tão difícil mencionar todos, mas aqui estão algumas pessoas-chave cujos pequenos trechos de código me ajudaram a introduzir novos recursos o tempo todo. Mostre a eles um pouco de amor e confira também alguns de seus projetos.
Se você acredita que seu nome deveria estar aqui, envie-me uma mensagem.
Milhares de horas de programação e testes foram investidas neste projeto, mostre um pouco de amor

É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e permitir que as pessoas a quem o Software é fornecido o façam, sujeito às seguintes condições:
O aviso de copyright acima e este aviso de permissão deverão ser incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.