OVH Community, your new community space.

Mod Evasive, añadir a lalista blanca las IP de googlebot


Demiurgo
26/01/2011, 17:58
hace tiempo leí un artículo bastante interesante sobre un fallo de programación en mod evasive => http://el-blog-de-thor.blogspot.com/...odevasive.html

PacoSS
26/01/2011, 07:37
Es un tema ampliamente documentado en internet.

http://www.linuca.org/body.phtml?nIdNoticia=256
http://web.mit.edu/rhel-doc/3/rhel-s...autotasks.html
http://www.guatewireless.org/os/linu...cron-de-linux/
...

Rbsmarte
25/01/2011, 20:10
Podrias explicarmelo con un poco mas de detalle, nunca he programado una tarea cron y asi aprendo a hacerlo.Gracias

tonysanchez
25/01/2011, 17:21
Usando una tarea cron.

Rbsmarte
25/01/2011, 16:35
Hola, podrias comentarme como has hecho para usar ese script y que se ejecute automaticamente?.Gracias

tonysanchez
17/05/2010, 11:04
Muchos dudan de la eficacia del ModEvasive, pero la tiene. Es una herramienta más frente a los ataques DoS a Apache, que son muchos (algunos pueden tumbarte el servidor si esta mal configurado o incluso teniendolo bien configurado.

Pero tiene un problema, y es GoogleBoot.

El Boot de Google, entra con fuerza y a veces rastrea con dolor para el servidor cayendo en la lista negra.

La mejor manera es añadirle a la lista blanca de ModEvasive.

Aqui un script que puede ir añadiendo las Ip a la lista blanca.

He optado por este camino ya que hay otras herramientas como IPLists pero que en sus listas no distinguen entre Googleboot e Ip's de Google, sus datas, y sus oficinas.

Que lo disfruteis, y las versiones mas modernas estaran disponibles en IslaServer

Código:
#!/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