OVH Community, your new community space.

Script que avisa de todos los cambios de ficheros PHP


Power
01/04/2012, 22:00
Cita Publicado inicialmente por PacoSS
De la que me acaba de librar el script de Power.

Me habian reventado varios Joomla desde las 6:30 de la mañana.
A las 8.00 lanzo el script en el cron, y a las 9 lo he visto. Los he pillado in-fraganti, baneo ip's, suspendo cuentas, aviso a los webmaster, ...

¡TE DEBO UNA CAÑA POR CADA JOOMLA, POWER!

¡up! !up!
Hola,

PacoSS me alegra mucho que el script te haya servido.
Yo también he pescado, en el mismo día, algún script de PHP que le habían colado a algún cliente mío.

Tomo nota de tu deuda de cervecita por cada Joomla .
A ver si este año, por fín, se celebra el Congreso OVH y tenemos oportunidad de conocernos (y cobrarme esas cañas )
(Sigo gestionando el tema con Matilde, de OVH, a ver si este año puede ser)

Saludos

PacoSS
01/04/2012, 21:41
De la que me acaba de librar el script de Power.

Me habian reventado varios Joomla desde las 6:30 de la mañana.
A las 8.00 lanzo el script en el cron, y a las 9 lo he visto. Los he pillado in-fraganti, baneo ip's, suspendo cuentas, aviso a los webmaster, ...

¡TE DEBO UNA CAÑA POR CADA JOOMLA, POWER!

¡up! !up!

chencho
08/03/2011, 12:50
En eso mismo estaba pensando yo PacoSS

nando.dominios
08/03/2011, 12:37
Lo estoy usando, va genial, muchas gracias.

Power
07/03/2011, 20:20
Hola,

Una magnífica aportación de mejora, PacoSS.
Gracias.

Saludos

Asimov
07/03/2011, 19:00
Muy bueno el script, a ver si tengo un hueco y lo paso a Windows.

PacoSS
07/03/2011, 18:48
Yo además, como tengo varios portales/tiendas con el caché activado, me genera varias páginas del php cambiados, en los típicos directorios caché.

La solución es fácil, pasar la salida por "grep -v" que deja pasar todo, menos lo que tu le digas.

Por ejemplo, si quiero que no salgan los "/cache/phps*":

nice -19 find /home/httpd/$CUENTA/httpdocs/ -mtime -1 -name "*.php" |grep -v "/cache/phps*">> $FICHERO

Y si necesitas mas filtros, pues añades mas grep -v.

Esto me ha simplificado mucho la lectura de los emails diarios.

Power
06/03/2011, 01:12
Hola,

¡¡ Qué casualidad !!
Esta misma noche, gracias a ese script acabo de detectar un fichero de nombre s.php que le habían colado, esta tarde, en su web a uno de mis clientes.

Después de renombrar el fichero a una extensión no ejecutable vía web, y de bloquear esa IP, he comprobado en los logs que habían accedido por FTP desde una IP de USA.
Lo habían conseguido a la primera, así que parece claro que habían obtenido la contraseña de FTP.
Posiblemente desde un PC infectado con algún troyano de algún desarrollador de esa web.

Queda demostrada, una vez más, la utilidad de esa sencilla herramienta.

Saludos

Demiurgo
05/03/2011, 23:26
Muy interesante.

La adaptación para Kloxo :
Código:
#!/bin/bash
# Script para localizar los ficheros de PHP modificados en las últimas 24 horas
CUENTAS=`ls -A1 /home/httpd/`
FICHERO=/tmp/control_diario_scripts
touch $FICHERO

for CUENTA in $CUENTAS
do
    echo "====================================================" >> $FICHERO
    echo $CUENTA >> $FICHERO
    echo "====================================================" >> $FICHERO
    nice -19 find /home/httpd/$CUENTA/httpdocs/ -mtime -1 -name "*.php" >> $FICHERO
done

echo "====================================================" >> $FICHERO

cat $FICHERO | mail -s "Control diario de scripts" mimail@loquesea.com

rm -f $FICHERO

Power
14/04/2010, 10:56
Hola,

Cita Publicado inicialmente por PerroVerd
Para esto ¿no te iría mejor usar los servicios de inotify del kernel?

Con un
#iwatch /var/www
y tocando un poco los ficheros de configuración vienes a tener lo mismo y en tiempo real

http://iwatch.sourceforge.net/
Buenísima y sencilla de usar esa herramienta que (como muchíiiisimas otras) no conocía.

Muchas gracias PerroVerd.

Saludos

chencho
14/04/2010, 10:53
Me ha gustado lo de iwatch, pero... recompilar el kernel otra vez con el server en producción...

Por cierto, la adaptación para Plesk:

Código:
#!/bin/bash
# Script para localizar los ficheros de PHP modificados en las últimas 24 horas

CUENTAS=`ls -A1 /var/www/vhosts/`
FICHERO=/tmp/control_diario_scripts
touch $FICHERO

for CUENTA in $CUENTAS
do
    echo "====================================================" >> $FICHERO
    echo $CUENTA >> $FICHERO
    echo "====================================================" >> $FICHERO
    nice -19 find /var/www/vhosts/$CUENTA/httpdocs/ -mtime -1 -name "*.php" >> $FICHERO
done

echo "====================================================" >> $FICHERO

cat $FICHERO | mail -s "Control diario de scripts" mimail@gmail.com

rm -f $FICHERO

PerroVerd
14/04/2010, 10:10
Para esto ¿no te iría mejor usar los servicios de inotify del kernel?

Con un
#iwatch /var/www
y tocando un poco los ficheros de configuración vienes a tener lo mismo y en tiempo real

http://iwatch.sourceforge.net/

Arturoap
01/04/2010, 15:24
Cita Publicado inicialmente por Power
Hola,

En mi caso, ahora tengo 69 cuentas albergadas en mi servidor.
Pero es raro que haya más de una o dos cuentas que modifiquen ficheros PHP el mismo día.

Y aparte, como quedan separados por cuentas, se hace fácil de leer.

Saludos
Gracias Power sin duda lo voy a implementar junto con el de sendmail !

Power
01/04/2010, 11:10
Hola,

En mi caso, ahora tengo 69 cuentas albergadas en mi servidor.
Pero es raro que haya más de una o dos cuentas que modifiquen ficheros PHP el mismo día.

Y aparte, como quedan separados por cuentas, se hace fácil de leer.

Saludos

virtual
01/04/2010, 10:57
Muy interesante, pero muy pesado cuando tenga que enviarte un mail de archivos que se han modificado de 300 webs.

Power
01/04/2010, 10:44
Hola,

Como estaba un poco harto de tener que buscar "a pelo" los ficheros PHP que se modificaban y podían ser fuente de malware, he preparado este script:
Código:
#!/bin/bash
# Script para localizar los ficheros de PHP modificados en las últimas 24 horas

CUENTAS=`ls -A1 /var/cpanel/users`
FICHERO=/tmp/control_diario_scripts
touch $FICHERO

for CUENTA in $CUENTAS
do
    echo "====================================================" >> $FICHERO
    echo $CUENTA >> $FICHERO
    echo "====================================================" >> $FICHERO
    nice -19 find /home/$CUENTA/public_html/ -mtime -1 -name "*.php" >> $FICHERO
done

echo "====================================================" >> $FICHERO

cat $FICHERO | mail -s "Control diario de scripts" micorreo@gmail.com

rm -f $FICHERO
Se arranca todas las noches desde un cronjob y me envía email con los ficheros PHP de cada cuenta que han variado en las últimas 24 horas.

Está pensado para cPanel, pero se puede adaptar para otros paneles.

Saludos