Quitar notificaciones de updates de drweb

En el fichero /etc/cron.daily/drweb-update
se ejecuta /opt/drweb/update.pl

y nos llega un mail diario con este log

/etc/cron.daily/drweb-update:
Dr.Web (R) update details:
Update server: http://update.msk6.drweb.com/unix/500
Update has begun at Fri Mar 22 10:22:49 2013
Update has finished at Fri Mar 22 10:24:12 2013

Following files has been updated:
        /var/drweb/bases/drwdaily.vdb
        /var/drweb/bases/drwtoday.vdb
        /var/drweb/bases/dwntoday.vdb
        /var/drweb/bases/dwrtoday.vdb
        /var/drweb/updates/timestamp

Para evitar que nos llegue, editamos el fichero /etc/drweb/drweb32.ini y cambiamos el CronSummary que por defecto está a yes por no

CronSummary = no

mysql Optimizando tablas grandes de forma alternativa

Si teneis alguna base de datos con unos cuantos millones de registros y se os ocurre lanzar un ‘OPTIMIZE TABLE…’ os podrán dar las tantas de la noche que eso tarda rato largo… Hay otra forma un poco menos convencional que puede ayudar a optimizar los datos, se trata de volcar el contenido a otra tabla nueva y cargarnos la original:

En este ejemplo, nos cansamos de lo que tarda la optimizacion:

mysql> optimize table tabla_enorme ;

^CQuery aborted by Ctrl+C
+------------------------------+----------+----------+---------------------------------+
| Table                        | Op       | Msg_type | Msg_text                        |
+------------------------------+----------+----------+---------------------------------+
| mibasededatos.tabla_enorme   | optimize | error    | Query execution was interrupted | 
| mibasededatos.tabla_enorme   | optimize | status   | Operation failed                | 
+------------------------------+----------+----------+---------------------------------+
2 rows in set, 1 warning (32 min 9.54 sec)

Con 32 minutos ya basta 😀 y aún le quedaban horas.

Si hacemos el volcado a una nueva tabla :

mysql> create table tabla_enorme2 ( select * from tabla_enorme );
Query OK, 16638600 rows affected (2 min 9.44 sec)
Records: 16638600  Duplicates: 0  Warnings: 0

mysql> create index puntos_id_order on tabla_enorme2 (id_order) ;
Query OK, 16638600 rows affected (2 min 24.39 sec)
Records: 16638600  Duplicates: 0  Warnings: 0

mysql> 
mysql> rename table tabla_enorme to tabla_enorme_old;
Query OK, 0 rows affected (0.14 sec)

mysql> rename table tabla_enorme2 to tabla_enorme ;
Query OK, 0 rows affected (0.00 sec)

En 5 minutos lo tenemos hecho y nos sobra para insertar unos indices y tal 😀

fallo de seguridad en componente timthumb afecta a wordpress

Estamos encontrando instalaciones infectadas con wordpress. El punto de entrada es la galería de imágenes timthumb.php que se usa muy frecuentemente en wordpress tanto en themes como en plugins.
Además no se le suele prestar atención a este fichero y pasa por alto en las revisiones. Si no tenemos desactivado allow_url_fopen en php y la version es vieja, seguramente nos habrán colado en alguna ocasión algún script en php.

Para chequear nuestra instalación hemos creado un sencillo script en perl que puedes descargar aqui timthumb-checker.pl

#!/usr/bin/perl -w 

# timthumb.php vulnerability checker 
# search for vulnerable files and suspect  files
# http://www.exploit-db.com/exploits/17602/
#
# http://www.hostingaldescubierto.com 
# contact : jorge@senin.org
#

sub searchFiles  {
    my ( $VHOST_DIR ) = shift  ||  "/var/www/vhosts";
    
print "Searching at $VHOST_DIR...n";

my @files = qx{find ${VHOST_DIR} -name "*thumb.php"};

return @files ;

}



sub checkVersions {
            
    my @files = @_  ;
    
foreach $file (@files) {
    chop( $file );
    # search for version at file 
    @versions = qx{ grep "VERSION" ${file} };
    foreach my$version ( @versions ) {
        # extract version info
        
        if ( my ( $mayor, $minor, $revision )  = ( $version =~ /'(d{1,2}).(d{1,2}).(d{1,2})'/m )) {

            if ( $mayor < 2 ) {
                if ( $minor < 33 ) {
                    print "WARNING VULNERABLE !  version ($mayor.$minor.$revision) at $filen ";
                }
                else {
                    print "WARNING! seems not vulnerable but obsolete: version ($mayor.$minor.$revision) at $filen ";
                }
            }
            else {
                print "not vulnerable version ($mayor.$minor.$revision) at $filen";
            }
        }

    }
}

}

sub searchInfected {
    
    my ( $VHOST_DIR ) = shift  ||  "/var/www/vhosts";
    
    @files = qx{find ${VHOST_DIR} -path "*/cache/*php"};
    foreach my $file ( @files ) {
        chop( $file );
        print "Warning ! $file must not to be there!!!!n";
    }
    
}

  
my $path = $ARGV[0];
my @files = searchFiles($path);
checkVersions(@files);
searchInfected( $path );

cómo instalar eAccelerator para acelerar tu servidor apache

Últimamente tratamos con bastantes tiendas en prestashop y una de las formas de mejorar el rendimiento de las tiendas es usando eaccelerator.
Es muy fácil de instalar si no tenemos el paquete en nuestra distribución, el único inconveniente es que tienes que recompilar cada vez que instales una versión nueva de php.

# instalamos dependencias
apt-get install php5-dev automake autoconf libtool m4

# descargamos y descomprimimos 
wget https://github.com/eaccelerator/eaccelerator/tarball/master -O eaccelerator.tar.gz
tar zxvf eaccelerator.tar.gz

export PHP_PREFIX="/usr"

$PHP_PREFIX/bin/phpize

./configure 
--enable-shared 
--with-php-config=$PHP_PREFIX/bin/php-config

# compilamos
make
# instalamos
make install 

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

En este punto ya tenemos la instalación ahora solo hace falta configurar el módulo, para configurarlo en debian tenemos que editar el fichero

/etc/php5/conf.d/eaccelerator.ini

y agreagmos este contenido

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Reiniciamos apache y echamos un vistazo al log de errores para verificar que no falla el módulo.
Podemos encontrarnos con un error como este :

"eAccelerator: Unable to change cache directory /var/cache/eaccelerator permissions"

Es debido a que no hay permisos para crear la estructura de directorios de la caché.
Desde la documentación de eaccelerator, nos instan a configurar la ruta de la caché en /tmp
según vemos en este enlace
https://github.com/eaccelerator/eaccelerator/wiki/InstallFromSource#wiki-Step_4_Creating_cache_directory

recuperar linksys wrt54gl de la muerteunbrick wrt54gl

unbrick wrt54gl
wrt54gl

Lo primero bajarse el firmware de la página de linksys

http://support.linksys.com/es-eu/support/routers/WRT54GL

y luego seguir estos pasos :

  1. quitar el cable de corriente del router
  2. conectarnos al router con un cable ethernet
  3. configurar nuestro pc con la ip 192.168.1.2
  4. escribir este comando en consola pero no ejecutar aun :
    [shell]tftp 192.168.1.1 <<EOF
    binary
    trace
    put FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin
    EOF[/shell]
  5. Enchufar la corriente sin soltar el botón de reset
  6. ejecutar el comando de arriba rápidamente

Debería aparecer algo como esto :
[shell]tftp 192.168.1.1 <<EOF
binary
trace
put FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin
EOF
tftp> tftp> Packet tracing on.
tftp> sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>

sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
received ACK <block=0>
sent DATA <block=1, 512 bytes>
received ACK <block=1>
sent DATA <block=2, 512 bytes>
received ACK <block=2>
sent DATA <block=3, 512 bytes>
received ACK <block=3>
….
[/shell]

Cuando termine le dejamos un ping continuo a 192.168.1.1 y cuando responda es que el router ya ha cargado el nuevo firmware !