Sistema antibots para WebhostingManagement de Core-Admin


#1

1. Introducción

A continuación explicamos cómo funciona una parte del sistema antibot de Core-Admin, basada en la notificación del UserAgent que envía en propio bot.

Este sistema está basado en las experiencia en el terreno, alimentada por las incidencias o quejas recibidas por parte de los usuarios. Es decir, el listado es bastante seguro.

Sin embargo, habrá casos donde sea necesario configurar el mismo para evitar bloqueos, es decir, tráfico de bots que sí que es deseado.

2. Activación y aplicación

El sistema de antibots de core-admin se activa solo y se configura para todas las webs que se hayan dado de alta con el #WebhostingManagement.

Esta activación se realiza de manera automatizada a través del sistema #CradAlwaysUpdated de #CoreAdmin (normalmente por la noche entre las 05:00 y las 06:30 de la mañana).

Si no se desea esperar o se quiere repasar o reparar algo, se puede ejecutar manualmente el comando de activación (que también mostrará depuración de lo que hace):

>> crad-webhosting-mgr.pyc --apply-antibot-config --verbose

Esto creará los ficheros base y localizará los alojamientos a los que les falte esta configuración.

3. Exclusión de bots

El sistema, una vez desplegado, usará el siguiente fichero para saber qué bots no hay que bloquear. Es decir, bots permitidos:

>> cat /etc/core-admin/databases/crad-webhosting-mgr.antibots.filter
# Filter bots to avoid blocking them while using crad-webhosting-mgr.pyc --apply-antibot-config
# Declare one bot by line to avoid it to be excluded. Lines starting with # are considered comments.
# Once added to this file, rebuilding using:
# crad-webhosting-mgr.pyc --apply-antibot-config --verbose

Por defecto, el fichero está vacío (incluyendo el comentario que se muestra para una mejor guía).

Si se desean meter bots a excluir, hay que introducir la identificación del user-agent a excluir. Uno por línea.

¿Cómo saber qué cadenas de bots se pueden incluir? Hay varios métodos:

  1. Se puede ejecutar el siguiente comando para saber el listado y lo que se puede excluir:

    >> crad-webhosting-mgr.pyc --show-bots-for-antibots
    AhrefsBot
    Brightbot
    Brightbot
    serpstatbot
    MJ12bot
    BitSightBot
    msnbot

  2. Normalmente el bot afectado y que necesitamos aceptar se verá con un 404 not found en el fichero de log del alojamiento:

    # pista para localizar bots bloqueados
    >> grep -i ’ 404 ’ /var/webs/dominio.com/logs/access

  3. También podemos revisar el fichero generado de bloqueo para saber los bots actualmente bloqueados, y las cadenas que podemos usar para excluir (marcadas en negrita):

    >> head /etc/apache2/conf.d/core-admin-blocked-bots.conf
    # Core-Admin Antibot configuration
    # Use /etc/core-admin/databases/crad-webhosting-mgr.antibots.filter to include, one bot a line, to exclude from his configuration
    RewriteEngine on

    RewriteCond %{HTTP_USER_AGENT} (AhrefsBot) [OR]
    RewriteCond %{HTTP_USER_AGENT} (ahrefsbot) [OR]
    RewriteCond %{HTTP_USER_AGENT} (Brightbot) [OR]

  4. Una vez identificado el bot a excluir, simplemente añadirlo, uno por línea, en el fichero de filtro indicado en la ayuda y en la cabecera de estos ficheros:

    >> joe /etc/core-admin/databases/crad-webhosting-mgr.antibots.filter

  5. También la ayuda de la herramienta incluye una referencia a este fichero de filtro de bots a excluir:

    >> crad-webhosting-mgr.pyc --help

    –apply-antibot-config
    Adds antibot configuration for all hostings found
    active. In case configuration is already added, it
    updates configuration. You can also use /etc/core-
    admin/databases/crad-webhosting-mgr.antibots.filter
    to
    include one bot a line to be excluded from blocking.
    After adding a bot in that exclude list, you must re-
    rerun this tool.

4. Funcionamiento del bloqueo

Muchos bots genera accesos repetitivos y a urls que generan proceso (consumo php+cpu) que dificulta a la web su tarea de otorgar recursos para las visitas regulares y que le generan valor (para la venta, promoción, etc).

Al mismo tiempo, muchos bots realizan rastreo sin pedir permiso utilizando la información para integrarla en sus bases de datos para realizar procesos de IA, y similares, sin otorgar autoría.

En cualquiera de los casos, salvo que no se necesite algún bot en particular, la configuración por defecto que proporciona Core-Admin es segura y está en constante revisión para reducir al máximo el ruido y las incidencias.

Para saber cómo funciona el bloqueo, revisar el fichero de configuración que se genera, revisando:

>> head /etc/apache2/conf.d/core-admin-blocked-bots.conf
# Core-Admin Antibot configuration
# Use /etc/core-admin/databases/crad-webhosting-mgr.antibots.filter to include, one bot a line, to exclude from his configuration
RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} (AhrefsBot) [OR]
RewriteCond %{HTTP_USER_AGENT} (ahrefsbot) [OR]
RewriteCond %{HTTP_USER_AGENT} (Brightbot) [OR]
RewriteCond %{HTTP_USER_AGENT} (brightbot) [OR]
RewriteCond %{HTTP_USER_AGENT} (Brightbot) [OR]
RewriteCond %{HTTP_USER_AGENT} (brightbot) [OR]

RewriteCond %{HTTP_USER_AGENT} (rainbot) [OR]
RewriteCond %{HTTP_USER_AGENT} (ImagesiftBot) [OR]
RewriteCond %{HTTP_USER_AGENT} (imagesiftbot)
# All matching, denied…
RewriteRule ^ - [L,R=404]

Resumen: la configuración desplegada busca generar un 404 NOT FOUND para que el bot no solo no produzca carga en el servidor, sino también darle la señal de que en ese recurso no hay nada.