Archivo de la Categoría “Linux”

Manuales, Tips, Configuraciones… Etc…

En muchas ocasiones se requiere cambiar cadenas de texto en uno o más archivos de textos, en mi caso fue la necesidad de cambiar una opción de configuración en diferentes archivos del Nagios, con lo cual no quería abrir 200 archivos y cambiarlo uno por uno.

La forma utilizada fue a través de Perl, la cual es muy sencilla, en un intérprete de línea de comandos ponemos lo siguiente:

perl -pi -e ’s/cadena/reemplazo/g’ *.cfg

Lee el resto de esta entrada »

Comments No Hay Comentarios »

En este articulo tratare de explicar como monitorear y graficar el trafico que pasa por una interfaz en un dispositivo de red, en mi caso era usarlo en los equipos Alvarion BreezeNET y Alvarion BreezeACCESS para ver el uso de ancho de banda del enlace.

El motor para monitorear los dispositivos es Nagios 3.0.2 y el software para graficar es PNP4Nagios, que usa RRDTool para graficar, todo esto haciendo uso del protocolo SNMP. El porque no se uso MRTG fue porque en la instalación actual se estaba usando ya PNP4Nagios para graficar el RTA y Packet Loss de los dispositivos, por lo que agregar MRTG ocuparía agregar más procesos, Cron’s y realizar alguna interfaz para agregar los dispositivos que se querian monitorear.

Lee el resto de esta entrada »

Comments No Hay Comentarios »

Mientras estaba a punto de dormir, me puse a pensar si en realidad romper una llave WEP era complicado, según había leído no lo era, pero tenia que comprobarlo, así que agarre mi pequeño Router Inalámbrico, le puse una llave WEP de 128 bits, encendí mi laptop y a darle se ha dicho.

Mi primera prueba fue con inyección de paquetes en modo interactivo, esto fue demasiado lento y se veía que iba a tardar demasiado, así que leí un poco y me decidí usar la técnica de FAuth+ARP, al configurar todo, la captura empezó a crecer de forma significativa, para asegurarme de que el número de paquetes capturados fuera suficiente lo deje en 800,000, según leí, con 150,000-700,000 es el rango para una llave de 128 bits, pero va, platicando con Sir y TAz se me fue el tiempo, aparte de una buena dosis de nicotina, cuando acorde ya habían transcurrido 40 minutos y decidí dar la primera pasada con aircrack, todo fue de maravilla y no tardo mas de un minuto en sacar la llave.

Conclusión

Las redes WEP como ya se ha visto en muchos lugares que es demasiado débil, sin mucho conocimiento esta puede ser obtenida de manera fácil y rápida, mas con los Routers 2WIRE que tienen el número de serie como llave y WEP-Open activado por default. Así que esto no es la octava maravilla pero va bien.

Por hacer

Lo siguiente será desempolvar mis Rainbow Tables para darle una pasada a las llaves WPA-PSK y ver el tiempo que tarda en sacar una WPA-PSK, así como probar con mas exactitud el tiempo y número de paquetes necesario para las WEP 64/128/152/256 y 512.

He aquí una imagen de los hechos:

WEP-Open

Comments 7 Comentarios »

Bueno, después de haber hecho el articulo de “Chrooting SHOUTcast“, he decido publicar el script de inicio que uso para ejecutar el servicio, este se divide en dos archivos, uno sobre /etc/init.d/shoutcast y otro en /usr/sbin/shoutcast

/usr/sbin/shoutcast:

#!/bin/sh
#SHOUTcast Server 0.1 by RwZ
#For SHOUTcast Server

# Directorio de enjaulamiento
SHOUTJAIL=/shoutjail

# Directorio de configuración dentro de la jaula
SHOUTCONF=/etc/shoutcast

# Usuario no privilegiado con el que se ejecuta
SHOUTUSER=shoutcast

if [ "$UID" -ne 0 ];
then
        if [ "$UID" -ne 0 ];
        then
                echo "You must be root to run this script"
                exit 64
        fi
fi

check_pid ()
{
        if [ -e /var/run/sc_$1.pid ]
        then
                PID=`cat /var/run/sc_$1.pid`
        else
                PID=0
        fi
}

make_pid()
{
        PID=`pidof -s sc_serv`
        echo $PID > /var/run/sc_$1.pid
}

noconf ()
{
        echo ""
        echo "Wrong config file"
        echo "Please specify a filename"
        echo "-h|--help for usage"
        echo ""
        exit 68
}

start ()
{
        start-stop-daemon --start --background --nicelevel -20 \
        --exec=/usr/sbin/chroot -- $SHOUTJAIL /bin/sudo -b -u \
        shoutcast /bin/sc_serv $SHOUTCONF/$1.conf

        make_pid $1
        check_pid $1

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server running with conf: "$1
                echo ""
        else
                echo ""
                echo "ERROR Shoutcast server failed to start"
                echo ""
                exit 66
        fi
}

stop ()
{
        check_pid $1

        if [ $PID -ne 0 ]
        then
                kill $PID
                echo ""
                echo "Shoutcast server killed with conf: "$1" and PID: "$PID" Stopped."
                echo ""
                rm /var/run/sc_$1.pid
        else
                echo ""
                echo "ERROR Shoutcast server with conf: "$1" Not Running."
                echo ""
                exit 67
        fi
}

case $1 in
-h|--help)
        echo ""
        echo "Shoutcast script by RwZ"
        echo "       start [config file]"
        echo "       stop [config file]"
        echo "       restart [config file]"
        echo "       status [config file]"
        echo ""
        ;;
start)
        check_pid $2

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server is already running with PID: " $PID
                echo ""
                exit 70
        else
                start $2
        fi
        ;;
stop)
        stop $2
        ;;
restart)
        stop $2
        start $2
        ;;
status)
        check_pid $2

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server with config file: "$2" Running with PID: "$PID
                echo ""
        else
                echo ""
                echo "Shoutcast server with config file: "$2" Not Running"
                echo ""
        fi
        ;;

* )
        echo ""
        echo "Invalid Argument $1"
        echo "-h|--help for usage"
        echo ""
        exit 69
        ;;
esac
exit 0

/etc/init.d/shoutcast

#!/bin/sh
#SHOUTcast script 0.1 by RwZ
#For SHOUTcast server

#Path to ranchito script
SHOUTSCRIPT=/usr/sbin/shoutcast

case $1 in
        start)
                $SHOUTSCRIPT start config
        ;;
        stop)
                $SHOUTSCRIPT stop config
        ;;
        restart)
                $SHOUTSCRIPT restart config
        ;;
        status)
                $SHOUTSCRIPT status config
        ;;
        *)
                echo "Error"
        ;;
esac
exit 0

Para activarlo en una distribución Ubuntu

update-rc.d shoutcast defaults 99

Este script es muy basico, puede mejorarse, si ese es el caso y deseas compartirlo, no dudes en dejar un comentario.

Comments No Hay Comentarios »

Con la salida de Radio Ranchito (http://radio.zombies.com.mx) y el nuevo servidor Zombie “Avalon”, se vio la necesidad de instalar el servicio de SHOUTcast con algo de seguridad, para lo cual se uso la técnica de enjaulamiento (chroot) y como ejecutarlo con privilegios de mortal.

No soy muy bueno escribiendo manuales, así que pondré solamente la lista de comandos en orden y algunos comentarios sencillos de que es lo que hace.

# Agregamos un usuario que ejecute el servicio.

useradd whatever

# Creamos una nueva estructura de raiz

mkdir -p /shoutjail/{bin,etc,lib,usr,var,tmp,dev}
mkdir -p /shoutjail/etc/shoutcast

# Para evitar que poner dobles archivos.

ln -s /shoutjail/bin /shoutjail/usr/bin
ln -s /shoutjail/lib /shoutjail/usr/lib

# Permisos

chown -R root.root /shoutjail
chmod -R 0755 /shoutjail
chmod 1777 /shoutjail/tmp

# Ahora necesitamos que el usuario con el que se ejecutará el servicio pueda ejecutar chroot sin tener que usar password de root, así que para esto agregaremos una linea en el archivo /etc/sudoers con el comando “visudo”, la cual permitira al usuario ejecutar chroot y solo chroot.

visudo

# Dentro de /etc/sudoers

whatever ALL=NOPASSWD: /usr/sbin/chroot

# Librerias que usa el servicio shoutcast

ldd sc_serv

# Mas archivos utilizados por la aplicación.

strace -o sc_serv.strace -v -f -r -e trace=open -tt ./sc_serv

# La siguiente linea también se puede emplear con “fgrep -i open sc_serv.strace” para mostrar todos los archivos a los que accesa la aplicación.

fgrep \.so sc_serv.strace

# Agregamos el binario de sudo al jail pero sin la función de PAM, para esto descargamos el paquete y lo compilamos.

http://www.sudo.ws/sudo/dist/sudo.tar.gz
./configure
make
cp sudo /shoutjail/bin/sudo

# Librerias necesarias para “sudo”

ldd /shoutjail/bin/sudo

# Mas archivos.

strace -o sudo.strace -v -f -r -e trace=open -tt ./sudo -u whatever /bin/bash
fgrep \.so sudo.strace

# Con la siguiente lista de librerias es suficiente para ejecutar el comando “sudo”, si estas librerias faltan, al ejecutar sudo mostrara que no hay ningun usuario con UID 0 o algo así.

cp /lib/libnss_files.so.2 /shoutjail/lib/
cp /lib/libnss_compat.so.2 /shoutjail/lib/
cp /lib/libnss_nis.so.2 /shoutjail/lib/

# sudoers File

cp /etc/sudoers /shoutjail/etc/sudoers

# Solo dejamos en el archivo.

root    ALL=(ALL) ALL

# Copiamos /etc/passwd a /shoutjail/etc/passwd donde solo dejamos el usuario y root para ejecutar el servicio.

root:x:0:0:root
whatever:x:100:100:whatever:/home/whatever:/bin/bash

# Creamos /dev/nul

mknod null c 1 3

# Iniciando el servicio

# Ya sea como root

chroot /shoutjail /bin/sudo -u whatever bin/sc_serv /etc/sc_serv.conf

# O usuario mortal whatever.

sudo chroot /shoutjail /bin/sudo -u whatever bin/sc_serv /etc/sc_serv.conf

# Por ahi me encontre unos comandos para copiar las librerias necesrias de un archivo ejecutable, pero no las implemente, de cualquier forma las dejo para que lo prueben.

ldd /bin/su | awk '{ print $3; }' | sed 's/\(\/.*\/\(.*\)\)/\1 \2/g' - | xargs -l1 --no-run-if-empty cp

Bueno, con esto será suficiente para enjaular el servicio de SHOUTcast y con acceso de mortal. Si existe alguna duda, comentario, sugerencia, aclaración, no dudes en hacerla llegar mediante el sistema comentarios y así yo implementarla en esta mini-guia.

Comments 2 Comentarios »