
Nginx Bloquea Bots Maliciosos, Bloqueador de Referrers de Spam, Escáneres de Vulnerabilidades, User-Agents, Malware, Adware, Ransomware, Sitios Maliciosos, con anti-DDOS, Bloqueo de Detectores de Temas de Wordpress y Jail de Fail2Ban para Reincidentes
| REPO | CONVIÉRTETE EN PATROCINADOR |
|---|---|
| Tu logo y enlace a tu dominio aparecerán aquí si te conviertes en patrocinador. Simplemente envíame un correo a [email protected] si deseas patrocinar este proyecto, ya que Sudáfrica aún no es compatible con el programa de patrocinadores de Github. | |
| Apóyame en https://ko-fi.com/mitchellkrog |
Por favor, asegúrate de estar suscrito a las notificaciones de Github para que te avisen cuando el bloqueador se actualice o cuando se produzcan cambios importantes o críticos (potencialmente problemáticos).
Este es nuestro nuevo método preferido de instalación, que ahora se realiza a través de un conjunto de scripts de shell contribuidos a este repositorio y mantenidos por Stuart Cardall @itoffshore, uno de los mantenedores de paquetes de Alpine Linux.
Las instrucciones a continuación son para un proceso de instalación rápido y sin complicaciones que descarga todos los archivos necesarios para el bloqueador, y los scripts incluyen la adición de las inclusiones necesarias a sus archivos nginx.conf y nginx .vhost. El script de configuración asume que sus archivos de configuración de vhost se encuentran en /etc/nginx/sites-available/ y que cada archivo de configuración de vhost termina con una extensión de archivo .vhost
Para instrucciones de instalación manual, consulte - Consulte: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
setup-ngxblocker, install-ngxblocker y update-ngxblocker pueden configurarse con ubicaciones de instalación / actualización personalizadas desde la línea de comandos. (Consulte el Paso 11 de las instrucciones para ver cómo usar estos scripts y ubicaciones de Nginx no estándar)
Ejecute cualquiera de los scripts de configuración, instalación o actualización con --help o -h para ver las opciones.
TENGA EN CUENTA: Para quienes usan certificados SSL de Let's Encrypt, el método preferido y 100% funcional es usar el Método Autenticador Webroot. Parece haber algunos problemas con las personas que usan el método de desafío http, pero podemos confirmar que webroot funciona a la perfección. No estamos seguros en este punto si el método de desafío http-01 es un error de certbot o de nginx.
Los informes de red duplicados de Nginx NO son un error ni pueden corregirse; este es el comportamiento deseado del bloqueador. Las actualizaciones diarias de las listas negras de IP hacen que algunas IP y rangos conocidos sean incluidos en la lista negra old value "1" y luego se incluyan en la lista blanca al final de globalblocklist, que es el orden de carga, lo que establece las IP que sabemos que son buenas a su nuevo value "0" incluyéndolas así en la lista blanca. Ha sido así desde el primer día del bloqueador y seguirá siéndolo. Estos son simples mensajes [WARN], no mensajes [EMERG], y no afectan el funcionamiento de Nginx de ninguna manera.
Descargue install-ngxblocker en su directorio /usr/local/sbin/ y haga que el script sea ejecutable.```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
Si tu distribución de Linux no tiene wget, puedes reemplazar el comando wget anterior usando curl de la siguiente manera:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
Instala el paquete.```sh pkg install www/nginx-ultimate-bad-bot-blocker
Alternativamente, instala vía portmaster:```sh
portmaster www/nginx-ultimate-bad-bot-blocker
Ahora ejecute el script install-ngxblocker en MODO DE PRUEBA (DRY-MODE), que le mostrará qué cambios realizará y qué archivos descargará. Esto es solo una PRUEBA EN SECO (DRY-RUN), por lo que todavía no se realiza ningún cambio.
El install-ngxblocker descarga todos los archivos necesarios, incluidos los scripts de configuración y actualización.```sh cd /usr/local/sbin sudo ./install-ngxblocker
Esto le mostrará la salida de los cambios que se realizarán
**(NOTA: esto es solo un DRY-RUN, no se han realizado cambios)**```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
setup-ngxblocker, install-ngxblocker y update-ngxblocker pueden configurarse todos con ubicaciones personalizadas de instalación / actualización desde la línea de comandos.
Ejecute cualquiera de los scripts de setup, install o update con --help o -h para ver las opciones.
Ahora ejecute el script de instalación con el parámetro -x para descargar todos los archivos necesarios del repositorio:```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
Esto te dará el siguiente 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 los archivos necesarios se han descargado ahora en las carpetas correctas de Nginx directamente desde el repositorio.
ASEGÚRATE de que tus scripts de configuración y actualización sean ejecutables ejecutando los dos comandos siguientes. Esto es importante antes de continuar con el Paso 4 y siguientes.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**setup-ngxblocker, install-ngxblocker y update-ngxblocker pueden configurarse con ubicaciones personalizadas de instalación / actualización desde la línea de comandos.**
**Ejecute cualquiera de los scripts de setup, install o update con --help o -h para ver las opciones.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
Ahora ejecute el script setup-ngxblocker en modo DRY-MODE, que le mostrará qué cambios hará y qué archivos descargará para usted. Esto es solo una DRY-RUN, así que todavía no se están realizando cambios.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
Esto te dará una salida como la siguiente (esta salida a continuación asume que tu archivo nginx.conf ya tiene el include predeterminado de /etc/nginx/conf.d/*) Todas las instalaciones de Nginx que conozco tienen este include predeterminado en el archivo nginx.conf distribuido con todas las versiones.```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 también incluye tu IP en la lista blanca del archivo whitelist-ips.conf por ti.
Se pueden añadir más IPs o rangos de IP a tu archivo personalizable whitelits-ips.conf ubicado en /etc/nginx/bots.d/whitelist-ips.conf.
**setup-ngxblocker, install-ngxblocker y update-ngxblocker pueden configurarse con ubicaciones personalizadas de instalación/actualización desde la línea de comandos.**
**Ejecuta cualquiera de los scripts de configuración, instalación o actualización con --help o -h para ver las opciones.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
Ahora ejecuta el script de configuración con el parámetro -x para realizar todos los cambios necesarios en tu nginx.conf (si es necesario) y también para añadir las inclusiones requeridas en todos tus archivos vhost.
Este script setup-ngxblocker asume que todos tus archivos vhost ubicados en /etc/nginx/sites-available terminan con una extensión .vhost. Es una buena práctica hacer que todos tus archivos de configuración vhost terminen con una extensión .vhost, pero si prefieres quedarte con lo que ya tienes, p. ej., .conf, puedes simplemente modificar y ejecutar setup-ngxblocker usando el parámetro `-e` para especificar la extensión que usas para tus archivos vhost.
Por ejemplo, si tus archivos vhost terminan en .conf, tendrás que ejecutar setup-ngxblocker con un parámetro adicional de línea de comandos de la siguiente manera:
`sudo ./setup-ngxblocker -x -e conf`
Así que ahora ejecutemos el script de configuración y dejemos que haga todos los cambios necesarios para activar el Bot Blocker en todos tus sitios.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
Verá la salida de la siguiente manera:```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 ha realizado los includes en todos los archivos .vhost de mi servidor de pruebas y también ha añadido su propia dirección IP a la lista blanca en el archivo whitelist-ips.conf. Se pueden añadir más IP o rangos de IP a su archivo whitelist-ips.conf personalizable, ubicado en /etc/nginx/bots.d/whitelist-ips.conf.
Lo que este script de configuración ha hecho es simplemente añadir las siguientes sentencias include a sus archivos .vhost por usted; también añade /etc/nginx/conf.d/* a los includes en nginx.conf (si aún no está en nginx.conf); de lo contrario, todo el script fallará.```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
setup-ngxblocker, install-ngxblocker y update-ngxblocker pueden configurarse todos con ubicaciones personalizadas de instalación / actualización desde la línea de comandos.
Ejecute cualquiera de los scripts de setup, install o update con --help o -h para ver las opciones.
Ahora pruebe su configuración de nginx
sudo nginx -t
y debería ver```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
Ahora simplemente recarga / reinicia Nginx y el Bot Blocker quedará activo de inmediato protegiendo todos tus sitios web.
`sudo nginx -t && sudo nginx -s reload`
o
`sudo service nginx restart`
Eso es todo, el bloqueador ya está activo y protege tus sitios de miles de bots y dominios maliciosos.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
Ahora configura cron para que el bloqueador se actualice automáticamente cada día y siempre tengas la protección más reciente.
`sudo crontab -e`
Añade la siguiente línea al final de tu archivo crontab. Ten en cuenta que debes añadir el parámetro de línea de comandos `-e` para especificar tu dirección de correo electrónico a la que se enviará el informe de actualización. Obviamente, sustituye `[email protected]` por tu dirección de correo real o no recibirás el correo cuando el script se haya actualizado.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Esto actualizará el bloqueador cada noche a las 10 PM.
Si quieres que se actualice con más frecuencia (ya que a veces publico 3-4 actualizaciones al día), puedes configurarlo como sigue para que cron se ejecute cada 8 horas, aunque una vez al día es más que suficiente.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Si no deseas recibir ninguna notificación por correo tras una actualización (no recomendable por si Nginx tuviera algún EMERG al recargar), simplemente ejecuta tu cron de la siguiente manera.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
Si prefieres enviar el correo a través de <a href="https://www.mailgun.com/">mailgun</a>, ejecuta tu cron así:
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
Eso es todo, el bloqueador se mantendrá automáticamente actualizado y también recargará Nginx una vez haya descargado la última versión del archivo globalblacklist.conf.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
Ahora puedes personalizar cualquiera de los siguientes archivos para adaptarlos a tu entorno o requisitos. Estos archivos nunca se modifican durante una actualización con el script de autoactualización anterior, por lo que cualquier personalización que hagas aquí nunca se sobrescribirá durante una actualización.```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 alguna razón "oscura" realmente quieres bloquear a GoogleBot para que no acceda a tu sitio. Simplemente tendrías que añadirlo al archivo /etc/nginx/bots.d/blacklist-user-agents.conf y anulará la lista blanca predeterminada para GoogleBot. Lo mismo aplica para cualquier otro bot que esté en la lista blanca por defecto.
Todos los archivos de inclusión están comentados para tu comodidad.
(PRUEBA QUE ESTÁ FUNCIONANDO)
PRUEBAS
Ejecuta los siguientes comandos uno por uno desde una terminal en otra máquina Linux contra tu propio nombre de dominio.
❗ sustituye http:// yourdomain.com ❗ en los ejemplos siguientes por tu propio nombre de dominio REAL ❗
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
Debería responder con 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
Debería responder con uno de los siguientes mensajes de error:
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
Debería responder con uno de los siguientes mensajes de error:
¡¡¡El Bloqueador Definitivo de Bots para Nginx ahora está FUNCIONANDO y PROTEGIENDO tus sitios web !!!
❗ sustituye http:// yourdomain.com ❗ en los ejemplos siguientes por tu propio nombre de dominio REAL ❗
Si eres un usuario de Cloudflare que utiliza el sistema de CDN / Caché de Cloudflare, siempre debes desactivar el CDN de Cloudflare (pon la nube gris)
Mientras pruebas obtendrás los códigos de respuesta correctos como se muestra a continuación:
Esto es por diseño. El CDN está haciendo su trabajo, es decir, la primera respuesta de tu servidor le dijo al bot "vete" emitiéndole respuestas 444 o 443.
Cloudflare almacena en caché esa respuesta y, por lo tanto, la segunda vez que pruebes recibirás un mensaje de error de origen 520 Origin Error.
Mientras pruebas el bloqueador, desactiva el sistema de CDN / caché y, una vez que estés satisfecho con tus pruebas, vuelve a activar el CDN/Caché en tu entorno de producción, ya que sí quieres que los bots reciban esa respuesta desde Cloudflare.
La mayoría de los otros sistemas CDN probablemente mostrarán el mismo comportamiento, así que siempre desactiva un CDN durante las pruebas para descartar cualquier cosa que interfiera con ellas. ¡¡Asegúrate siempre de volver a activar el CDN al terminar las pruebas !!
Una vez que actives el CDN de Cloudflare, prueba de nuevo.
Mientras pruebas, obtienes
Esto significa que el CDN está funcionando.
INSTALAR EL BLOQUEADOR EN UBICACIONES DE CARPETAS DE NGINX NO ESTÁNDAR
Algunas personas compilan Nginx por sí mismas y no terminan teniendo las ubicaciones estándar de carpetas de nginx en /etc/nginx
Para usuarios como este puedes ejecutar install-ngxblocker, setup-ngxblocker y update-ngxblocker especificando tu ubicación de carpeta en las líneas de comando de la siguiente manera.
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]
Esto colocará automáticamente los archivos en las ubicaciones que especifiques, hará las inclusiones en tus vhosts usando tus ubicaciones personalizadas y cuando update-ngxblocker descargue una nueva actualización, también reescribirá automáticamente las secciones "Include" dentro del archivo globalblacklist.conf con tus propias ubicaciones personalizadas. Gracias de nuevo a Stuart Cardall @itoffshore por sus contribuciones de estos excelentes scripts.
Los informes de red duplicados de Nginx NO son un error ni se pueden corregir; este es el comportamiento deseado del bloqueador. Las actualizaciones diarias de las listas negras de IP hacen que algunas IP y rangos conocidos sean incluidos en la lista negra old value "1" y luego se añaden a la lista blanca al final de globalblocklist, que es el orden de carga, lo que establece las IP que sabemos que son buenas a su nuevo value "0" poniéndolas así en la lista blanca. Ha sido así desde el primer día del bloqueador y seguirá siéndolo. Estos son simples mensajes [WARN] no mensajes [EMERG] y no afectan el funcionamiento de Nginx de ninguna manera.
(Más de 4000 referidores maliciosos, referidores de spam, user-agents, bots maliciosos, IP maliciosas, sitios de pornografía, apuestas y clickjacking, empresas lucrativas de SEO, detectores de temas de wordpress y contando)
Miles de horas de programación y pruebas se han invertido en este proyecto, muestra algo de amor
Los bots intentan hacerse pasar por otro software o sitios web disfrazando su user agent. Sus nombres de user agent pueden parecer inofensivos, incluso perfectamente legítimos.
Por ejemplo, "^Java" pero según Project Honeypot, en realidad es uno de los más peligrosos, PERO muchos bots legítimos por ahí tienen "Java" en su cadena de user agent, por lo que el enfoque que muchos toman de bloquear "Java" no solo es ignorante sino que también bloquea rastreadores muy legítimos, incluidos algunos de Google y Bing, y me deja muy claro que quienes escriben scripts de bloqueo de bots rara vez los prueban.
Los Referidores de Spam y los Nombres de Dominio de Spam utilizan técnicas muy inteligentes para saltar desde tus sitios ejecutando campañas muy lucrativas de click-jacking y click-redirecting que sirven anuncios a personas desprevenidas que navegan por la web o incluso plantan malware, adware o ransomware en sus navegadores, que luego pasan a formar parte de su lucrativa red de bots.
Este Bloqueador de Bots incluye cientos de nombres de dominio y direcciones IP que la mayoría de las personas ni siquiera verán en sus registros de Nginx. Esto es el resultado de que todos mis sitios se ejecutan con SSL y usan Content-Security-Policy (CSP), que bloquea cosas antes de que siquiera lleguen a Nginx, y he detectado y sigo detectando algunos de los peores dominios y bots que existen.
También se bloquea una gran cantidad de sitios web de Pornografía, Apuestas y Noticias Falsas en este script de bloqueo, que además crece a un ritmo rápido.
Desafortunadamente, la mayoría de los scripts de bloqueo de bots por ahí son simplemente copiados y pegados de los scripts de otras personas y hechos para parecer su propio trabajo. Este fue inspirado por el creado por https://github.com/mariusv y contribuí a ese proyecto pero me fui por un diseño totalmente nuevo, lo limpié a fondo y empecé desde cero. Ahora es un proyecto completamente independiente. Es limpio, funciona y ha sido probado a fondo.
Esta lista de bloqueo de bots maliciosos para nginx está diseñada para ser un archivo de inclusión global de Nginx y utiliza las directivas map $http_user_agent, map $http_referer y geo $validate_client de Nginx.
De esta manera, el archivo .conf se carga una sola vez en memoria por Nginx y está disponible para todos los sitios web que operes. Simplemente necesitas usar una declaración Include en un archivo de configuración de vhost de Nginx.
Lo hermoso de esto es que es un archivo central usado por todos tus sitios web. Esto significa que solo hay un lugar para hacer modificaciones, es decir, añadir nuevos bots que descubras en tus archivos de registro. Cualquier cambio se aplica inmediatamente a todos los sitios después de un simple "sudo service nginx reload". Pero, por supuesto, siempre ejecuta un sudo nginx -t para probar cualquier cambio de configuración antes de recargar.
El archivo es diminuto en tamaño. Al momento de escribir esto y del primer commit público, el tamaño del archivo incluyendo todos los comentarios "que nginx ignora" es actualmente de apenas 185 kb y ya contiene más de 5000 dominios maliciosos, bots maliciosos y direcciones IP maliciosas. Es tan ligero que Nginx ni siquiera nota que está ahí. Ya contiene miles de entradas: total actualizado en la parte superior de este README.
A diferencia de muchos otros bloqueadores de bots maliciosos para Nginx y Apache donde la gente simplemente copia y pega listas de otros, esta lista ha sido construida desde cero y probada a fondo, y quiero decir a fondo, durante más de 10 meses. Proviene de registros de servidor reales que se monitorean a diario y hay al menos 3-10 nuevas adiciones a este archivo casi a diario.
También ha sido probada a fondo en busca de falsos positivos mediante meses de pruebas constantes y regulares y monitoreo de archivos de registro.
Todos los sitios web listados en los referidores maliciosos se verifican uno por uno antes de ser añadidos. Simplemente copiar cualquier cosa que parezca sospechosa en tu archivo de registro y añadirla a un bloqueador como este sin ver realmente qué es primero.... bueno, es una tontería, por decir lo menos.
Nginx tiene un error encantador llamado 444 que literalmente corta la conexión. Todas estas reglas emiten una respuesta 444, por lo que si una regla coincide, la IP solicitante simplemente no recibe respuesta y les parecería que tu servidor no existe o que parece estar fuera de línea.
Una prueba con curl usando una de las líneas de comando de prueba documentadas en el archivo /conf.d/globalblacklist.conf dará un simple "curl: (52) Empty reply from server" y esa es la respuesta que reciben los referidores maliciosos y los bots.
Para bots o arañas a los que aún quieras permitir el acceso pero quieras limitar su tasa de visitas, puedes usar las funciones integradas de limitación de velocidad que he incluido. El archivo está extensamente comentado en todo su contenido, así que deberías poder resolverlo; de lo contrario, simplemente envíame un mensaje si tienes problemas.
o para contribuir con tus propios referidores maliciosos, bots o para hacer correcciones a cualquier bot o dominio bloqueado incorrectamente, por favor haz un fork de una copia de este repositorio y envía pull requests en los archivos individuales ubicados aquí y luego envía un pull request (PR).
relativas a listados incorrectos o cualquier otro problema en el sistema de issues y serán investigadas y eliminadas si es necesario. Respondo muy rápidamente a los problemas de los usuarios y he ayudado a innumerables usuarios durante días enteros a conseguir que su bloqueador de bots funcione. Podrías decir que estoy loco (discutible), pero me encanta ayudar a la gente y no ignoro los issues ni a las personas con problemas para hacer funcionar esto.
Muchas listas por ahí ponen dominios extraños en su archivo hosts. Tu archivo hosts y tu DNS no entenderán esto. Esta lista utiliza dominios convertidos que están en el formato DNS correcto para ser entendidos por cualquier sistema operativo. Evita usar listas que no incluyan la estructura de dominio correctamente formateada en sus listas.
Por ejemplo El dominio:
lifehacĸer.com (nota la K)
en realidad se traduce a:
xn--lifehacer-1rb.com
Puedes hacer un nslookup en cualquier sistema operativo y se resolverá correctamente.
`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.
- Consulta: https://www.charset.org/punycode para más información sobre esto.
************************************************
## SUPERVISA SIEMPRE LO QUE ESTÁS HACIENDO:
**ASEGÚRATE de supervisar los registros de tu sitio web** después de implementar esto. Sugiero que primero lo cargues en un sitio y lo supervises para detectar posibles falsos positivos antes de ponerlo en producción en todos tus sitios web.
No escondas la cabeza en la arena como un avestruz; ser un operador de servidores y propietario de sitios web responsable significa que debes supervisar tus registros con frecuencia. Una de las razones por las que muchos de ustedes terminaron aquí en primer lugar es porque vieron cosas de aspecto desagradable en sus archivos de registro de Nginx.
Supervisa también tus registros a diario para detectar nuevos referers maliciosos y cadenas de user-agent que quieras bloquear. Tu mejor fuente para añadir a esta lista son tus propios registros de servidor, no los míos.
No dudes en contribuir con referers maliciosos de tus propios registros a este proyecto enviando un Pull Request (PR). Sin embargo, puedes confiar en esta lista para mantener fuera al 99% de los malos que hay por ahí.
************************************************
## CÓMO SUPERVISAR TUS REGISTROS A DIARIO (La Manera Fácil):
**Con enorme agradecimiento y reconocimiento para**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
Para supervisar a diario los referers principales de los archivos de registro de un sitio web, usa los siguientes trabajos cron sencillos, que te enviarán por correo electrónico una lista de los principales referers / user agents cada mañana desde los archivos de registro de un sitio web en particular. Este es un ejemplo de un solo trabajo cron para un solo sitio. Configura varios para cada sitio que quieras supervisar. Aquí tienes un cron que se ejecuta a las 8 de la mañana todos los días y me envía por correo el registro de referers depurado. Cuando digo depurado, el dominio del sitio y otros referers como Google y Bing se eliminan de los resultados. Por supuesto, debes cambiar el nombre del archivo de registro, el nombre de dominio y tu dirección de correo electrónico en los ejemplos siguientes. El segundo cron para recopilar user agents no elimina ningún referer, pero puedes añadir esa funcionalidad si quieres copiando la sentencia awk !~ del primer ejemplo.
##### Cron para supervisar referers a diario en Nginx
`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]`
Esto te envía por correo una lista diaria de referers usando un comando awk para excluir dominios como google, bing y tu propio nombre de dominio.
##### Cron para supervisar user agents a diario en Nginx
`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]`
Esto te envía por correo una lista de los principales User-Agents que visitaron tu sitio en las últimas 24 horas, útil para detectar cualquier cadena de User-Agents maliciosa o de aspecto sospechoso.
************************************************
## BLOQUEA BOTS AGRESIVOS A NIVEL DE FIREWALL USANDO FAIL2BAN:
He añadido un filtro y una acción personalizados de Fail2Ban que he escrito y que supervisan tus registros de Nginx en busca de bots que generan una gran cantidad de errores 444. Esta jail personalizada para Fail2Ban escaneará los registros durante un período de 1 semana y baneará al infractor durante 24 horas.
Ayuda enormemente a mantener fuera a algunos infractores reincidentes y a evitar que llenen tus archivos de registro con errores 444.
Consulta la carpeta Fail2Ban para obtener instrucciones sobre cómo configurar este excelente complemento para el Nginx Bad Bot Blocker.
************************************************
## CÓMO DETENER EL SPAM "FANTASMA" DE GOOGLE ANALYTICS:
El simple uso del bloqueador de Nginx no detiene el spam de referencias fantasma de Google Analytics porque estos acceden a Analytics directamente y no siempre tocan tu sitio web.
Deberías usar filtros de regex en Analytics para prevenir el spam de referencias fantasma.
Para ello, hay varios archivos google-exclude-0*.txt que se han creado para ti y se actualizan al mismo tiempo que se actualiza el Bloqueador de Nginx. A medida que la lista crezca, se crearán más archivos de exclusión.
************************************************
## PARA DETENER EL SPAM "FANTASMA" EN GOOGLE ANALYTICS SIGUE LA SENCILLA GUÍA VISUAL DE ABAJO
Sigue las instrucciones visuales paso a paso de abajo para añadir estos archivos google-exclude como segmentos a tu sitio web.
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - Añadiendo segmentos para detener el spam fantasma"/></td>
</tr>
</table>
************************************************
## BLOQUEANDO DOMINIOS DE SPAM USANDO GOOGLE SEARCH CONSOLE / HERRAMIENTAS PARA WEBMASTERS
(Cómo usar el archivo google-disavow.txt)
He añadido la creación de un archivo de texto de Google Disavow llamado google-disavow.txt. Este archivo se puede usar en las Herramientas para Webmasters de Google para bloquear todos estos dominios como enlaces de spam o enlaces maliciosos. Úsalo con precaución.
************************************************
## VERSIÓN ROBOTS.txt PARA AQUELLOS QUE NO PUEDEN USAR ESTE BLOQUEADOR COMPLETO?
Muchas personas están a merced de su empresa de hosting y no tienen acceso root al servidor que está detrás de su sitio web. Si esta es tu situación, echa un vistazo al archivo robots.txt generado automáticamente, que te ayudará hasta cierto punto a mantener alejados de tus sitios a muchos bots maliciosos y User-Agents.
************************************************
## VERSIONES .htaccess PARA AQUELLOS QUE NO PUEDEN USAR ESTE BLOQUEADOR COMPLETO?
Muchas personas están a merced de su empresa de hosting y no tienen acceso root al servidor que está detrás de su sitio web.
Si esta es tu situación, echa un vistazo a las versiones .htaccess generadas automáticamente del Bloqueador de Referrers de Spam que se pueden encontrar en <a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">este repositorio</a>; este método .htaccess (SOLO PARA SITIOS APACHE) te ayudará a mantener fuera de tu sitio todos los Referrers de Spam incluidos en este bloqueador.
Esto se menciona aquí simplemente porque mucha gente que usa sistemas CPanel cree que está detrás de un servidor Nginx pero en realidad está ejecutando un Servidor Apache detrás de un Servidor Proxy Nginx. .htaccess no funciona en sitios Nginx.
¿No usas el servidor web Nginx? Consulta el [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker)
************************************************
# IT FORKING WORKS !!!
************************************************
## Ahora solo disfruta de lo que el Nginx Bad Bot Blocker puede hacer por ti y tus sitios web.
### Y ayuda a apoyar este proyecto
Miles de horas de programación y pruebas se han invertido en este proyecto, muestra algo de cariño
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Invítame a un café" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# ¿HA SIDO HACKEADO TU SITIO WEB?
[](mailto:[email protected]) para ayudarte a limpiar y asegurar tu sitio web.
************************************************
### OTROS PROYECTOS GRATUITOS INCREÍBLES
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### TAMBIÉN ECHA UN VISTAZO A LA NUEVA GRAN LISTA DE SITIOS WEB HACKEADOS CON MALWARE Y WORDPRESS
Este repositorio contiene una lista de todos los sitios web que me encuentro y que están hackeados con malware.
La mayoría de los propietarios de los sitios no saben que sus sitios han sido hackeados y se están utilizando para plantar malware.
Échale un vistazo en: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### ¿TE GUSTA LA FOTOGRAFÍA?
Pásate y visítame en [mitchellkrog.com](https://mitchellkrog.com) o en [Facebook](https://www.facebook.com/MitchellKrogPhotography) o sígueme en Twitter <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### AGRADECIMIENTOS Y COLABORADORES:
Muchas gracias a todos los que contribuyen a este proyecto.
Muchas partes de los scripts del generador y del código que hay detrás de este proyecto se han adaptado de fragmentos de cientos de fuentes.
De hecho, es tan difícil mencionar a todos que aquí hay algunas personas clave cuyos pequeños fragmentos de código me han ayudado a introducir nuevas funciones constantemente. Muéstrales algo de cariño y echa un vistazo también a algunos de sus proyectos.
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (Regex mejorado en el filtro de Fail2Ban)
- Stuart Cardall - https://github.com/itoffshore (Scripts de instalación, actualización y configuración y mantenedor de paquetes de Alpine Linux)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (Excelente script para comprobar nombres de dominio ACTIVOS, INACTIVOS y CADUCADOS)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos de StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (ayuda con el etiquetado y el commit de builds de Travis)
- StackOverflow - http://stackoverflow.com/ (scripts bash de cientos de preguntas y respuestas)
- SuperUser - http://superuser.com/ (fragmentos de varias preguntas y respuestas)
Si crees que tu nombre debería estar aquí, escríbeme una línea.
************************************************
### Escribir código como este lleva mucho tiempo !!
Miles de horas de programación y pruebas se han invertido en este proyecto, muestra algo de cariño
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Invítame a un café" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# Licencia MIT
## Copyright (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
Se otorga permiso, de forma gratuita, a cualquier persona que obtenga una copia
de este software y de los archivos de documentación asociados (el "Software"), para tratar
con el Software sin restricción, incluidos, sin limitación, los derechos
de uso, copia, modificación, fusión, publicación, distribución, sublicencia y/o venta
de copias del Software, y para permitir a las personas a quienes se les
proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso se incluirán en todas
las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O
IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD,
IDONEIDAD PARA UN FIN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS
AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑOS U OTRA
RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE,
O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL
SOFTWARE.