Soporte telefonicp 24x7
Area de clientes (Administracion, productos y servicios contratados, facturacion, tickets)
Soporte mediante tickets gratis de ayuda
Correo electronico comercial
Demo Panel de Control Cpanel
2Checkout

DosEvasive y googlebot

Atención, abrir en una nueva ventana. ImprimirE-mail

Aunque tiene sus detractores, por ineficacia, Mod_evasive (o modevasive) es una herramienta más de freno a los crackers que campan por Internet, frenando ciertos tipos de ataque DoS al servidor web Apache.

Pero uno de los problemas que tiene, es que aunque ajustemos relajadamente los valores de su configuración, Googlebot, a veces es como un elefante en una cacharreria. Su extremada velocidad de rastreo, puede llevarle a ser incluido en la lista temporal de baneados, algo que nadie desea.

El script es sencillo. Aunque podiamos haber usado las listas de IP de Google disponibles en IPLists.com, tras un analisis de estas listas, obervamos que muchas de las IP que contienen no son de sus rastreadores, sino de IP de sus rangos, y eso es otro cantar.

En su defecto, hemos usado lo que el propio Google dice, sobre sus boots, "siempre en su PTR tienen la cadena googlebot", aunque nos avisan de que alguien puede hacer una dirección inversa spoofed, por lo que hemos añadido una pequeña pieza de código que verifica en segunda parte, que la IP pertenezca a Google, algo más dificil de suplantar.

Para el uso del script se requiere que se configure el path de logs de mod_evasive, en un directorio propio, algo que no viene por defecto. Creara una lista de mantenimiento, y añadirá las IP a la lista blanca (whitelist) de modevasive.

   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 
  39 
  40 
  41 
  42 
  43 
  44 
  45 
  46 
  47 
  48 
  49 
  50 
  51 
  52 
  53 
  54 
  55 
  56 
  57 
  58 
  59 
  60 
  61 
  62 
  63 
  64 
  65 
  66 
  67 
  68 
  69 
  70 
  71 
  72 
  73 
  74 
  75 
  76 
  77 
  78 
  79 
  80 
  81 
  82 
  83 
  84 
  85 
  86 
  87 
  88 
  89 
  90 
  91 
  92 
  93 
  94 
  95 
  96 
  97 
  98 
  99 
 100 
#!/bin/sh
# ##############################################################################
# Script de anadir a la lista blanca de mod_evasive las IP que corresponden a
# los boot de google, que tiene tendencia a ser baneados por velocidad de scaneo
# Version: 0.20
#
# Fecha: 10/05/2010
# Notas de la version:
# evasive - Lista blanca para googleboot en mod_evasive (Cpanel)
# Copyright (C)2009 Abdelkarim Mateos, Tamainut, S.L.
# Contact abkrim[at]tamainut.com.
# Tamainut IT, S.L. (Madrid - Spain)
# Licencia: GPL3
# #############################################################################
# TODO
# * Sistema para guardar las IP con el fin de no hacer el bucle una y otra vez
#

IFS="$"

#Variables
DW="DosWhitelist "
LOGDE="/var/log/mod_evasive"
LDWL="/tmp/evasive-list-ip.txt"
LDWLG="/tmp/evasive-list-ip-google.txt"
FDWL="/usr/local/apache/conf/mod_evasive_whitelist.txt"
FCDWL="/usr/local/apache/conf/mod_evasive_whitelist.conf" 
GOOGLE="Google Inc."  # Cadena que tiene wl hwois de las IP de Google
NOIP=""

#Comprobamos primero si existe el fichero temporal
if [ -f "$LDWL" ]; then
    rm -f $LDWL
fi
if [ -f "$LDWLG" ]; then
    rm -f $LDWLG
fi

ls -liSt $LOGDE | while read MEIP; do
  #echo "Comprobando IP bloqueadas ${MEIP} ..."
  SIP=${MEIP##*-}
  echo "IP sin delantera ${SIP}"
  #find /home/${CPUSER}/public_html -type 'd' > /tmp/${CPUSER}.dir.$$
  PTR=`dig +short -x ${SIP}`
  GOOGLEBOT=`echo "$PTR" | grep "googlebot"`
  echo "$PTR"
  echo "$GOOGLEBOT"
  if [ "$PTR" != "" ] && [ "$GOOGLEBOT" != "" ]; then
      # Se que es un poco chapuza pero perdi mucho tiempo buscando hacerlo
      # con awk o bash. Practicidad (mejor hacerlo que no hacerlo)
      # De lo que se trata es de comprobar que la IP esta registrada por 
      # Google ya que cualquiera que gestione un LIR, o tenga delegadas X
      # IP's puede hacerse un PTR falso poniendo la cadena. Si lo pongo
      # Es porque ya he visto este tipo de suplantacion
      # Es ok
      IFWHOIS=$(whois "$SIP" | grep "$GOOGLE")
      if [ "$IFWHOIS" != "" ]; then
        echo "La Ip de google es:   $SIP"
        echo $SIP >> $LDWL
      fi 
  fi
  echo "=============================================="  
done

# Comprobamos que existe el fichero de IP de mod_evasive
if [ ! -f "$FDWL" ]; then
    touch $FDWL
fi
# Comprobmaos que existe el fichero include whitelist de mod_evasive
# Debe existir un Include a este fichero en el fichero de configuracion
# de mod_evasive
# Include "/usr/local/apache/conf/mod_evasive_whitelist.conf"
if [ ! -f "$FCDWL" ]; then
    touch $FCDWL
fi

# Bucle para comprobar que las IP's no esten en la lista y no duplicarlas
while read line; do
    NOIP=$line
    echo "Comprobando la IP: ${NOIP}"
    while read line2; do # Comprobamos que la IP no esta en el fichero 
        if [ "$line" = "$line2" ]; then
            NOIP=""
            break
        fi
    done < $FDWL
    echo "Add la IP ${NOIP}"
    sleep 10
    # Si hay una nueva IP la grabamos
    if [ "$NOIP" != "" ]; then
        echo "No existe la IP ${NOIP} en el fichero. Add"
        echo $NOIP >> $FDWL
        echo $DW $NOIP >> $FCDWL
    fi
done < $LDWL

# Un restart graceful para que lea la nueva configuracion
/etc/rc.d/init.d/httpd graceful    


Descargar código

Porqué IslaServer?

  • Precios únicos en el mercado.
  • Profesionales dedicados a su servicio.
  • Soporte 24 x 7 x 365 días al año.
  • Atención telefónica PROFESIONAL.
  • Seguridad, fiabilidad y eficacia.

Garantía de 30 días

Garantia de devolución de 30 díasIslaServer te ofrece 30 días para que pruebes nuestros servicios. Sino no quedas totalmente satisfecho te devolvemos el importe abonado mediante nuestra garantía de calidad. Solo queremos clientes satisfechos.

 

(Excepto registro de dominios y certificados SSL)