Bloquear una IP atacante con null route

En alguna ocasion podemos encontrarnos con algun tipo de ataque de una determinada IP o red (rezando para que no sean multiples) hacia nuestra red/sistema.

En Linux (y BSD/Solaris/Unix Flavours) podemos mandar los paquetes de una determinada IP o red a ninguna parte (blackhole route o null route) añadiendo una entrada en nuestra tabla de rutas.

USANDO EL COMANDO ROUTE PARA NULL ROUTE

route add 192.168.1.5 gw 127.0.0.1 lo

En este comando especificariamos que la IP atacante es 192.168.1.5 y queremos enviar los paquetes que nos envie a la interfaz de loopback.

Verificar que se ha “null routeado” la IP en nuestra tabla de rutas

route -n

O bien usando Netstat

netstat -nr

Tambien podemos hacer un reject:

route add -host 192.168.1.5 reject

Mandar a Null route una red entera

Imaginaros que queremos filtrar el sistema autónomo completo de McColo (si algún ISP anunciara sus prefijos, claro).

route add -net 208.66.192.0/24 gw 127.0.0.1 lo

Borrar entradas de la tabla de rutas

Probablemente haya un tiempo en el que ya no nos interese bloquear a determinada IP o bloque. Para borrar una entrada haremos lo siguiente:

route delete 192.168.1.5

Resolviendo CAPTCHA con Javascript y Canvas

cpatchasolved1

Un grave problema de seguridad para aquellas páginas que cuentan con el uso de CAPTCHAs para prevenir el registro automático de robots en páginas web. El programa usa un script en javascript y el elemento HTML 5 canvas, incluso poniendo una muestra de cómo resuelve los captchas de la página Megaupload. Lo interesante del programa es que usa una implementación de una red neural en javascript de un sistema de reconocimiento de caracteres ópticos.

Saber que locale están instalados en el servidor con PHP

Si intentamos mostrar una fecha en PHP es posible que nos encontremos que salga con el formato:

July 31, 2007

Para que se muestre correctamente debemos usar el “locale” correcto que haga que se muestre la fecha en el formato adecuado. Los locales más habituales son del estilo de éstos:

es_ES
es_ES.ISO_8859-1

Para establecer un locale se usa la siguiente función:

@setlocale(LC_TIME, 'es_ES');

El problema es que hay que hay que poner el nombre exacto del locale ya que de otra forma no funcionará. Aquí tenéis un sencillo script en PHP que te ayudará a saber qué locales están instalados en tu servidor:

<?php
echo "<hr><br>'Locale' disponibles:<br>";
echo '<pre>';
system('locale -a');
echo '‘;
?>

Si quieres que se muestren sólo los españoles:

<?php
echo "<hr><br>'Locale' disponibles:<br>";
echo '<pre>';
system('locale -a | grep -i es');
echo '‘;
?>

Instalar XCACHE integrado con Lighttpd en CentOS

XCache es un opcode PHP cacher creado por Jan Kneschke creador de Lighttpd. Se ha probado en servidores en produccion con alta carga dando unos resultados francamente buenos.  Según algunos, dando mucho mejor resultado en diversas aplicaciones como Vbulletin que otros como Eaccelerator/APC/IonCube/Zend.

Instalación de Requisitos previos para compilar XCACHE

yum install php-devel

yum groupinstall ‘Development Tools’

yum groupinstall ‘Development Libraries’

Descarga y compilación de XCACHE

cd /tmp
wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
tar xvfz xcache-1.2.2.tar.gz
cd xcache-1.2.2
phpize
./configure –enable-xcache
make
make install

Configurando XCACHE

cp xcache.ini /etc/php.d
vi /etc/php.d/xcache.ini

Opciones de configuración

zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so

* Debemos indicar el lugar donde esta situado el modulo de Xcache

xcache.size = 32M

* Cualquier valor superior a 0 habilita Xcache. 0 lo deshabilita

Todas las opciones de configuración están en la pagina oficial: http://xcache.lighttpd.net/wiki/XcacheIni

Reiniciamos Lighttpd

service lighttpd restart

Si todo ha ido bien, deberíamos tener cargado la extensión de XCACHE para nuestro PHP:

PHP 5.1.6 (cli) (built: Jul 16 2008 19:52:52)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo