Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas
Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas

domingo, octubre 09, 2011

Ettercap en Android

Siguiendo con las frikerias en Android vamos a instalar ettercap en nuestra Debian "chrooteada" dentro de nuestro Android.
Instalamos ettercap con soporte gráfico:
apt-get install ettercap-gtk

Habilitamos iptables para el reenvío de tráfico:
vi /etc/etter.conf
# if you use iptables:
redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport
"

Habilitamos el enrutado en el chroot:
echo 1 > /proc/sys/net/ipv4/ip_forward

Para que ettercap funcione bien en el chroot tendremos que ejecutarlo con UID=0
vi /etc/etter.conf
[privs]
#ec_uid = 65534 # nobody is the default
ec_uid = 0 # nobody is the default
ec_gid = 65534 # nobody is the default

Guardamos y listo!! Ya podemos utilizar ettercap como si de un Linux normal se tratase ;)

miércoles, junio 01, 2011

Red-Termite SSH Cracker

Llevo unos cuantos días escribiendo un script que combina Bash y Expect, se trata de una herramienta de craking ssh.
El script intentará conectarse a los servidores ssh especificados en el fichero de configuración LISTA, este debe estar en el formato: "servidor":"usuario":"password", una vez se haya logado ejecutará last -i y cat /etc/passwd, de este modo tendremos un listado de usuarios y las ips desde las que se conectaron a este servidor.
Despues se intentará acceder a estas ips por ssh empleando:
  • Ususario: "nombre_usuario" Password: "nombre_usuario"
  • Ususario: "nombre_usuario" Password: "Listado_usuarios"
  • Ususario: "Listado_usuarios" Password: "Listado_usuarios"
En las dos primeras opciones solo intentará hacer login en las ips desde donde se conectó cada usuario.

El listado de usuarios se genera a partir de los usuarios obtenidos a través de la conexión ssh y de un fichero local llamado USUARIOS_COMUNES_PREDEFINIDOS, he añadido bastantes nombres de diferentes series, peliculas....... pero se pueden añadir los diccionarios que se deseen:
cat "diccionario" >> USUARIOS_COMUNES_PREDEFINIDOS

Este script se sirve de NMap, NCrack y Dos2Unix para realizar sus operaciones, NMap y Dos2Unix se pueden instalar desde los repositorios:
apt-get install nmap tofrodos

Para instalar NCrack deberemos seguir este artículo anterior donde se explico como hacerlo.

El script consta de varios subscripts:
  • Connect.sh: Script desde el que se iniciarán el resto de scripts.
  • Expect_Nmap_SSH.exp: Script que comprueba que el puerto 22 está escuchando en el host destino.
  • Expect_SSH.exp: Script que realiza la conexión por ssh y ejecuta los comandos last -i y cat /etc/passwd.
  • Process.sh: Script que procesa la salida del script anterior.
  • Auto_Crack.sh: Script que lanza NCrack con los usuarios y passwords obtenidos a partir de las conexiones ssh.
El script solo es válido para sistemas que permitan la opción -i en el comando last por ejemplo FreeBSD no lo permite!! No se si en BSD y otros Unix hay equivalente, pero si la hay será fácil realizar las modificaciones pertinentes en el script en Expect(Expect_SSH.exp).

martes, mayo 24, 2011

Virtualización con Kernel-based Virtual Machine KVM

KVM es una solución de virtualización que se apoya en Qemu como software de virtualización y en unos módulos del kernel para aprovechar los registro VT en procesadores Intel y SVM en los AMD.

Lo primero que haremos será configurar estos módulos en nuestro kernel:
Virtualization --> Kernel-based Virtual Machine (KVM) support --> KVM for Intel processors support

NOTA: En mi caso se trata de un microprocesador de Intel.

Instalamos las aplicaciones a nivel de usuario, para que la gestión de las máquinas virtuales sea mas cómoda también vamos a instalar una utilidad de gestión:
apt-get install qemu-kvm aqemu

Desde aqemu debe ser posible acceder a diferentes funcionalidades de Linux que solo es posible acceder con permisos de root, se pueden cambiar los permisos de diferentes dispositivos pero los mas fácil es editar los comandos permitidos por sudo:
visudo
"usuario" ALL=(root)NOPASSWD: /usr/bin/aqemu

KVM tiene el tema de gestión de red un poco verde, si tenemos una tarjeta de red ethernet no hay problema, tan solo habrá que generar un bridge de la tarjeta cableada pero si la tarjeta de red es inalámbrica en principio esto no es posible, a continuación explicaré como resolver cada uno de los escenarios.

Instalamos el software necesario:
apt-get install uml-utilities parprouted bcrelay

Red cableada:

Para que las máquinas virtuales puedan integrarse en nuestra red cableada es necesario crear un bridge entre nuestra tarjeta de red ethernet y una interfaz tap.

Generamos la interfaz y la levantamos:

tunctl -t tap0
ifconfig tap0 up

Creamos el bridge y le añadimos la interfaz ethernet y la virtual:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0

Reconfiguramos la interfaz ethernet para que no posea ninguna dirección IP y le asignamos una al bridge:

ifconfig eth0 0.0.0.0
dhclient br0


Ahora asociamos nuestra tap0 a la máquina virtual:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Nuestra máquina virtual ya se comportará como si se tratase de un equipo físico conectado a la red ;)

Red wireless:

En la red wireless debemos hacer dos distinciones según el método de asignación de direcciones IP a las máquinas virtualizadas:

IP estática:

Habilitamos el enrutado en el kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward

Generamos una interfaz TAP:
tunctl -t tap0
ifconfig tap0 up

Le asignamos una ip de nuestra red:
ifconfig tap0 192.168.1.100

Con Parprouted conseguiremos hacer magia, se trata de un proxy ARP a nivel 3 ;))
parprouted wlan0 tap0

Añadimos una ruta estática para la máquina virtual:
route add -host 192.168.1.200 dev tap0

Ahora configuramos la máquina virtual en qemu:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Dentro de la máquina virtual se configurará la direcciín IP de forma estática indicandole la IP: 192.168.1.200

Con esto la máquina virtual se podrá comunicar con Internet y con la máquina anfitrión.


IP dinámica:

Habilitamos el enrutado en el kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward

Generamos una interfaz TAP:
tunctl -t tap0
ifconfig tap0 up

Le asignamos una ip de nuestra red:
ifconfig tap0 192.168.1.100

Habilitamos el proxy ARP de capa3:
parprouted wlan0 tap0

Parprouted tiene un inconveniente y es que solo permite el paso de tráfico unicast por el bridge, por lo tanto las peticiones DHCP serán capadas, pero existe la herramienta bcrelay que solventa este problema:
bcrelay -i tap0 -o wlan0 &

Ahora configuramos la máquina virtual en qemu:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Dentro de la máquina virtual se configurará la dirección IP de forma dinámica.


NOTA: Las direcciones IP para las interfaces TAP he decidido que empiezen por la 100 y las IPs de las máquinas virtuales a partir de la 200, estos rangos son totalmente arbitrarios, yo los elegí porque son rangos libre de mi direccionamiento

Para cada máquina virtual habrá que añadir una interfaz tap distinta ocupando una ip de nuestra red :(
Si queremos que las máquinas virtuales puedan comunicarse entre ellas habrá que "bridgearlas" entre ellas:
parprouted tap0 tap1

De este modo nos podremos olvidar de los tediosos problemas que dan Vmware y VirtualBox cuando recompilamos el kernel, módulos que no compilan o ñapas en el código......

NOTA: Si se configura una máquina virtual Linux para que pida dirección por DHCP no funciona, este es un tema en el que seguiré indagando.

Dejo estos scripts para que todo sea automático, nos generará un TAP por máquina vritual, le asignará un IP y la meterá en un bridge junto con el resto de máquinas consiguiendo que todos puedan verse con todos y además tengan acceso a Inet ;), además el script configura de forma automática las intyerfaces con bcrelay.

Para que funcionen tendremos que definir algunas variables en AQemu_UP.sh

- AQemu_UP.sh
#!/bin/bash
clear
echo "|---------------------------------------|"
echo "| Script configuracion interfaces AQemu |"
echo "| By Kr0m V0.1b |"
echo "|---------------------------------------|"
echo " "
echo " "


rm -rf /tmp/TAPS 2>/dev/null
rm -rf /tmp/IP_VM 2>/dev/null

DIR_AQEMU=/mnt/datos/AQemu
N=0
RED_TAP=192.168.1.
IP_TAP=100
RED_VM=192.168.1.
echo $RED_VM > /tmp/RED_VM
IP_VM=200
echo $IP_VM > /tmp/IP_VM
WIFI=wlan0

echo 1 > /proc/sys/net/ipv4/ip_forward

for i in $DIR_AQEMU/*.aqemu
do
#echo i: $i
#echo N: $N
#echo IP_TAP: $IP_TAP
#echo IP_VM: $IP_VM
tunctl -t tap$N
ifconfig tap$N up
ifconfig tap$N $RED_TAP$IP_TAP
route add -host $RED_VM$IP_VM dev tap$N
bcrelay -i tap$N -o $WIFI &
let N=$N+1
let IP_TAP=$IP_TAP+1
let IP_VM=$IP_VM+1
done

N=$((N-1))
#echo N: $N
parprouted $WIFI $(for t in $(seq 0 $N); do echo tap$t; done)

echo $N > /tmp/TAPS

echo " "
echo " "
echo "---------- INTERFACES DE RED ---------------"
ifconfig

echo " "
echo "---------- TABLA DE RUTAS ------------------"
route -n

echo " "
echo "---------- PROCESOSO ARRANCADOS ------------------"
ps aux | grep bcrelay | grep -v grep
ps aux | grep parprouted | grep -v grep


- AQemu_DOWN.sh
#!/bin/bash
clear
echo "|---------------------------------------------|"
echo "|Script eliminacion interfaces AQemu |"
echo "|---------------------------------------------|"
echo " "
echo " "

echo 0 > /proc/sys/net/ipv4/ip_forward

N=$(cat /tmp/TAPS)
for i in $(seq 0 $N)
do
ifconfig tap$i down
done

killall parprouted
killall bcrelay

echo " "
echo " "
echo "------------- INTERFACES DE RED ---------------"
ifconfig

echo " "
echo "------------- TABLA DE RUTAS ------------------"
route -n

echo " "
echo "------------- PROCESOS ARRANCADOS ------------------"
ps aux | grep bcrelay | grep -v grep
ps aux | grep parprouted | grep -v grep

NOTA: Estos scripts precisan de privilegios de root, para ello configuraremos sudo de tal modo que:
"usuario" ALL=(root)NOPASSWD: "ruta AQemu_UP.sh"
"usuario" ALL=(root)NOPASSWD: "ruta AQemu_DOWN.sh"

domingo, mayo 15, 2011

Service tag desde la línea de comandos.

El service tag es un numerito que los fabricantes de equipos piden a los clientes para saber que equipo compraron en su momento, este número puede ser obtenido desde la línea de comandos con la orden:
dmidecode -s system-serial-number

Puede ser útil para llevar una base de datos de los service tags de nuestra empresa, mediante un script en expect resultaría bastante sencillo generar la base de datos ;)

Correspondencia UUID (Universally Unique Identifier) partición

En la última versión de Debian el fstab ya viene con los UUID (Universally Unique Identifier) configurados para hacer referencia a las particiones de nuestro sistema, yo personalmente odio estos números sin sentido ya que no puedo ver de un vistazo que partición se monta sobre que directorio (Sí ya se que en los comentarios pone la partición).
El empleo de UUID tiene una ventaja (y seguramente alguna mas) en cuanto a dispositivos de almacenamiento externos como discos duros USB. Si tenemos dos discos, cada uno con su UUID y el fstab configurado por UUID cuando conectemos alguno de ellos se montará en el directorio especificado en el fstab sin importar el orden de conexión.

Ahora supongamos que configuramos el fstab por "dispositivo" con las entradas:
/dev/sda1 /mnt/usb1 ext4 defaults 0 2
/dev/sdb1 /mnt/usb2 ext4 defaults 0 2

El primer disco que conectemos será /dev/sda1 y el segundo /dev/sda2, por lo tanto si conectamos el disco usb2 será el dispositivo /dev/sda1 y se montará en el directorio /mnt/usb1 cosa que no queremos que ocurra!!!

Si queremos ver la correspondencia de UUID a partición es tan sencillo como ejecutar:
ls -l /dev/disk/by-uuid/

Yo personalmente lo tengo configurado por dispositivo las particiones del sistema y por UUID los discos externos ;)

sábado, mayo 14, 2011

Crackeador Hydra

THC-Hydra es una herramienta que nos permite crackear cuentas de usuario de varios servicios:
cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get} http[s]-{get|post}-form http-proxy icq irc imap ldap2 ldap3[-{cram|digest}md5] mssql mysql ncp nntp oracle-listener oracle-sid pcnfs pop3 pcanywhere postgres rexec rlogin rsh sip smb smbnt smtp smtp-enum snmp socks5 ssh svn teamspeak telnet vnc vmauthd xmpp

Para que poder crackear cada uno de los servicios debemos tener instaladas las librerias que requiera cada uno de los servicios. En nuestro caso nos vamos a centrar en SSH.

Primero deberemos instalar la librería libssh:
http://www.libssh.org/files/
tar xvzf libssh...
cd ...
mkdir build
cd build
cmake ..
make
su
make install

Ahora ya estamos listos para instalar Hydra(la última versión estable NO compila correctamente a fecha e este artículo):
wget http://freeworld.thc.org/releases/hydra-6.3-src.tar.gz
tar xvzf hydra.....
cd ...
./configure
make
su
make install

Un ejemplo de uso de Hydra podría ser este:
hydra -l "usuario" -P "Fichero_passwords" -M "Fichero_ips" ssh

Hydra abre muchos ficheros simultaneamente en el sistema para realizar el proceso de crackeo de forma paralela, de este modo comprueba de forma simultánea varias cuentas, pero esto puede hacer que se alcance el límite impuesto por el sistema de ficheros abiertos.

Para comprobar cuantos ficheros hay abiertos actualmente es tan fácil como:
lsof | wc -l

Podemos consultar el límite con:
sysctl fs.file-max

Si vemos que se supera editamos el fichero /etc/sysctl.conf y aumentamos el límite del parámetro fs.file-max.
Para aplicar los cambios ejetuamos:
sysctl -p

También es posible que nos esté limitando PAM con sus restricciones, para evitar esto editamos el fichero /etc/security/limits.conf

"usuario" hard nofile "max nº de ficheros"

Con esto ya no creo que haya mayor problema a la hora de crackear ;)

CORRECCIÖN: Sigue apareciendo el error del límite de ficheros abiertos, no se si se debe a que la versión que he compilado es una versión beta :(

jueves, abril 14, 2011

HoneyPot básico

Hola amigos, en esta ocasión vamos a preparar un HoneyPot muy básico, este nos permitirá guardar un registro de los comandos enviados al supuesto servicio vulnerable.

Los primero será tener instalado netcat:
apt-get install netcat

Ahora generamos el Script del HoneyPot (honey.sh):
#!/bin/bash

buff="220 ProFTPD 1.3.3c Server (ProFTPD)"
rm -rf /var/log/honeylog.log 2>/dev/null

for i in $(ps aux|grep honey|grep -v grep|grep -v $$| awk '{print $2}'); do kill -9 $i 2>/dev/null; done

while [ 1 ]; do
echo $buff | netcat -v -l -p 21 >> /var/log/honeylog.log 2>> /var/log/honeylog.log
done


Como se puede observar nos hacemos pasar por el servicio ProFTPD 1.3.3c y los logs son guardados en /var/log/honeylog.log, con un tail -f /var/log/honeylog.log podremos ver los accesos en tiempo real.

Cabe destacar que se puede indicar el banner que se desee haciendose pasar por cualquier otro servicio.

Espero que hayais disfrutado con este articulillo, fácil y rápido, que mas se puede pedir ;)

sábado, abril 02, 2011

Permisos en Linux, la guía definitiva.

Los permisos de directorios y ficheros en el mundo Linux son muy sencillos en un principio pero cuando empezamos a tener en cuenta el sticky bit y otras herramientas como chattr la cosa se complica. Todo administrador debería de tener estos conceptos muy claros ya que si no es así el sistema se convertirá en un queso de gruyere en dos días.
En este manual se va a explicar desde los mas básico a lo mas complejo.

-----------------------------------------------------------

PERMISOS BÁSICOS:
Los permisos de un fichero se dividen en tres trios de permisos, los primeros tres corresponden al propietario del usuario, los siguientes tres al grupo al que pertenece y los otros tres a otros.

Un ejemplo en el que el fichero .profile pertenece al usuario root y al grupo root, el propietario tiene permisos de lectura y escritura, el grupo de lectura y los otros de lectura.
-rw-r--r-- 1 root root 140 nov 19 2007 .profile

Para asignar permisos a los ficheros lo mas fácil es aprenderse la correspondencia:
R: 4 --> Lectura
W: 2 --> Escritura
X: 1 --> Ejecución

Por lo tanto si queremos asignar permisos de RW para el propietario, WX para el grupo y R para otros se haría del siguiente modo: chmod 634 "fichero".

Para poder hacer un cd se necesitan permisos de ejecución en el direcotrio.
Para acceder a un subdirectorio que nos pertenece pero cuelga de otro, se necesitan permisos de ejecución en el direcotrio intermedio para poder pasar a través de él.

Si se otorgan permisos de lectura sin ejecución y se hace un ls -la del directorio:
usuario@debian:/$ ls -la aaa/
ls: no se puede acceder a aaa/.: Permiso denegado
ls: no se puede acceder a aaa/..: Permiso denegado
ls: no se puede acceder a aaa/ff.sh: Permiso denegado
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? ff.sh

-----------------------------------------------------------

UMASK:
Se trata de los permisos por defecto que adoptarán los ficheros y directorios cuando se creen. Para definir el valor de umask hay que pensar "a la inversa: wildcard", con un ejemplo se verá claro: umask 007 equivaldría a chmod 770.

También hay que tener en cuenta que los ficheros se generarán con los permisos indicados en umask pero eliminando el permiso de ejecución. Si asigno un umask de 522 se crearían con los siguientes permisos:
- Directorios: 255
- Ficheros: 244

Otro aspecto a tener en cuenta es que el valor de umask va ligado al usuario, para poder definir un umask de forma global debemos editar el fichero: /etc/profile y si queremos hacerlo en un solo usuario: ~/.bashrc, hasta que el usuario no salga y vuelva logarse no se hará efectivo.

-----------------------------------------------------------

STICKY BIT:

Podremos saber si el sticky bit está activado mirando los permisos de ejecución. Para el propietario y el grupo se representa con una s y para otros con una t, si el bit de ejecución ya estaba habilitado aparecerá la s o la t en minúsculas, en caso contrario en mayúsculas.
- Ejemplo en el que NO está habilitado el permiso de ejecución y sí el Sticky bit: rSr-Sr-T.
- Ejemplo en el que SI está habilitado el permiso de ejecución y sí el Sticky bit: rwsr-sr-t.

Este bit se comportará de un modo u otro según esté definido en un directorio o un fichero.

Fichero:
4000 --> Si es ejcutable se ejecutará con los permisos del propoietario
2000 --> Si es ejecutable se ejecutará con los permisos del grupos
1000 --> Se empleaba para que el SO mantuviese el fichero en SWAP, actualmente es ignorado

Directorio:
4000 --> No se utiliza para nada
2000 --> Los ficheros o directorios generados pertenecerán al grupo al que pertenece el directorio actual.
1000 --> Los fichero o directorios solo pueden ser renombrados o borrados por el propietario del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura.
NOTA:Pero si que pueden ser editados si se tienen los permisos adecuados.

Para eliminar el sticky bit no basta con ejecutar 0799 por ejemplo, hay que hacerlo con:
- chmod -s
- chmod -t

-----------------------------------------------------------

CHATTR:

NOTA:
- Las opciones c, s y u no están implementadas de forma nativa en ext2 y ext3
- La opción j solo funciona sobre ext3
- La opción D requiere un kernel >= 2.5.19


+A --> No se actualiza la hora de acceso al fichero, pero sí la de modificación.
+a --> Solo se puede añadir al fichero, solo ROOT puede asignar este parámetro.
+c --> Comprime de forma transparente el fichero
+D --> Si se aplica a un directorio los cambios realizados en él son escritos al momento en el disco duro.
+d --> Este fichero será ignorado por el programa dump (Backups)
E --> Indica que hay un problema de compresión con el fichero, no se puede modificar, solo se puede ver con lsattr
e --> Indica que se emplean "extents" para saber las posiciones del disco que contienen la información del fichero, no se debe modificar.
I --> Indica que el directorio es indexado empleando hashed tree, no tocar
h --> Indica que el tamaño del fichero se entrega en bloques no en sectores, no tocar.
+i --> No puede ser borrado, renombrado o vinculado mediante un link.
+j --> La información del fichero es escrita primero al journal si la partición está montada con las opciones "data=ordered" or "data=writeback".
+s --> Cuando se borre este fichero se sobreescribe se escriben ceros ;)
+S --> La información se escribe al momento en el disco.
+T --> Si se deshabilita el algoritmo de distribución de datos en el disco (Orlov) intentará meter los datos lo mas juntos posible entre ellos.
+t --> Deshabilita el "tail-merging" (aprovechar huecos de otros ficheros para meter información de este fichero) del fichero, opción necasaria para LILO (acceso directo el disco).
+u --> Permite el "undelete" del fichero
X --> Indica que el contenido de un fichero comprimido puede ser accedido en "raw", no se puede cambiar
Z --> Indica que el contenido de un fichero comprimido está "dirty", no se puede cambiar

Podemos ver los atributos de un fichero con el el comando lsattr.

Para comprobar opciones como +A se puede emplear la herramienta stat.
stat "fichero": Muestra información sobre el acceso a los ficheros.

Espero que le saqueis jugo al artículo ya que en mi opinión está muy completito ;)

jueves, marzo 03, 2011

Conky a fondo

Hola amigos, en esta ocasión vamos a instalar y configurar una de las herramientas de monitorización mas versátiles en Linux, estoy hablando de Conky. Ya escribí con anterioridad un artículo sobre este software pero esta vez vamos a destriparlo al completo ;)

Lo primero será descargar el software desde la página del proyecto en SourceForge.

Descargamos las fuentes:
cd /usr/src
wget http://sourceforge.net/projects/conky/files/conky/1.8.1/conky-1.8.1.tar.gz

Una vez descargado lo descomprimimos de la forma habitual:
tar xvzf conky-1.8.1.tar.gz

Lo instalamos:
cd conky-1.8.1
./configure --enable-weather-metar --enable-lua --enable-wlan
make
make install

Ahora ya tendríamos Conky listo para funcionar, pero si queremos monitorizar aspectos meteorológicos desde el tendremos que instalarle un paquete adicional llamado conkyForecast.
dpkg -i conkyforecast_2.09_all.deb

Para poder realizar consultas debemos abrirnos una cuenta en:
http://www.weather.com/services/xmloap.html

Los ficheros de configuración de Forecast además de necesitar los datos de acceso también necesita el código de la zona geográfica, para Madrid por ejemplo se obtendría visitando esta página.

Editamos el fichero de configuración de ConkyForecast:
vi /usr/share/conkyforecast/conkyForecast.config




Copiamos el fichero de configuración al directorio home del usuario:
cp /usr/share/conkyforecast/conkyForecast.config /home/"usuario"/.conkyForecast.config
chown "usuario"."usuario" /home/"usuario"/.conkyForecast.config

Para pedir información desde el fichero de configuración se hará del siguiente modo:
${offset 165}${voffset -45}${font Weather:size=14}${color Red}y ${color}${font}Temp: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=LT} / ${execi 3600 conkyForecast --location=SPXX0050 --datatype=HT}
${offset 165}${font ConkyWeather:size=11}${color Deep Sky Blue}8 ${color}${font}Humedad: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=HM}
${offset 165}${font ConkyWeather:size=11}${color Aquamarine}2 ${color}${font}Viento: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=WS}

Estos son solo algunos parámetros, para ver que mas se puede pedir ejecutamos:
conkyForecast --help

Como ya he dicho Conky es altamente configurable, tanto que permite añadir diferentes fuentes, para ello habrá que instalarlas primero. Una buena página de donde descargarlas es Dafont.

Cuando nos bajemos las fuentes las decomprimimos en un directorio y las movemos a /usr/share/fonts/truetype:
cp *.ttf /usr/share/fonts/truetype

Asignamos los permisos pertinentes:
chmod 755 /usr/share/fonts/truetype/*

Regeneramos el índice de fuentes:
su "usuario"
fc-cache -f -v

Para ver las fuentes disponibles:
fc-list
exit

Cabe destacar que si indicamos en el fichero de configuración una fuente que no se encuentra instalada nos aparecerá la letra pero no el dibujo.

Otra opción interesante de Conky es colorear el texto, un ejemplo puede ser:
${font StyleBats:size=16}i${font}${color Tan1} Kernel: ${color}${alignr}${kernel}

Existe una tabla con los colores disponibles en la Wikipedia.

Creamos el directorio donde guardaremos todos los ficheros relacionados con conky:
mkdir /home/"usuario"/.conky

Conky nos permite pintar diferentes textos o gráficos en base a ciertas condiciones, es tan sencillo como esto:
MAC_AP: $alignr${execi 30 /home/"usuario"/.conky/MAC.sh}${if_existing /tmp/MAC_OK}${color Green}${font sans-serif:normal:size=8}${execi 60 GW=$(/sbin/route -n|grep UG|awk -F " " '{print$2}') && /usr/sbin/arp -a|grep $GW|awk -F " " '{print$4}'}${font}${color}${else}${color Red}${font sans-serif:normal:size=8}${execi 60 GW=$(/sbin/route -n|grep UG|awk -F " " '{print$2}') && /usr/sbin/arp -a|grep $GW|awk -F " " '{print$4}'}${font}${color}${endif}

Primero ejecuta el script /home/"usuario"/.conky/MAC.sh, este generará el fichero /tmp/MAC_OK en caso de que la MAC del AP coincida con una conocida, en caso contrario no lo generará.
Si existe el fichero /tmp/MAC_OK nos pintará de color verde la salida del comando /usr/sbin/arp -a|grep wlan0|awk -F " " '{print$4}' en caso contrario lo hará en rojo.

De este modo podemos monitorizar si nos han envenenado la tabla ARP para el AP ;)

En el script MAC.sh hay que modificar el parámetro MAC por la MAC de vuestro AP.

Si os fijais en la configuración de mi Conky podreis ver que hay otras comparaciones sobre uso de RAM o disco duro de modo que si se supera el 90% el icono será pintado en rojo.

Aquí podeis encontrar mi configuración con resolución de portatil.
Aquí la del monitor.

Para ejecutarla sería tan sencillo como conky -c conky-config
También me he currado un pequeño script que se puede añadir al arranque de gnome para que compruebe la resolución de las X y cargue una configuración u otra.

Creo que con esto queda casi todo explicado sobre Conky, solo quedaría el tema de los scripts en LUA pero esa es otra historia.......

domingo, diciembre 26, 2010

IE en Linux

Por desgracia hay varias páginas web que no funcionan correctamente si no se visualizan en Internet Explorer, hay otras que incluso realizan comprobaciones del navegador empleado y deniegan el acceso, este último problema se puede resolver fácilmente mediante un plug-in de Firefox.

En el primero de los casos no tendremos mas remedio que tragar e instalar IE.

apt-get install wine libxxf86dga1 libxxf86vm1 cabextract lib32nss-mdns

wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
tar zxvf ies4linux-latest.tar.gz
cd ies4linux-*
./ies4linux

Ahora ya podremos ver las páginas que daban problemas ;)

Seleccionar dispositivo de video.

Hoy en día cada vez es mas frecuente encontrarse con portatiles o monitores que incorporan una webcam para videoconferencia, estos dispositivos pueden servirnos para realizar videos en una calidad mas o menos decente, dependiendo de la webcam que poseamos.
En este artículo voy a explicar como realizar grabaciones a través de mencoder y como visualizar el video capturado en tiempo real desde la webcam.

Para realizar las grabaciones basta con especificar el dispositivo de video:
mencoder tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -nosound -ovc lavc -o wcrecording.avi

Para reproducir en tiempo real lo que la webcam está capturando:
mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0

Si se tiene mas de una webcam se podrá seleccionar la apropiada cambiando /dev/video0 por /dev/videoX

miércoles, septiembre 29, 2010

Cambiar colores bash

Es posible configurar bash para que nos muestre ciertos ficheros de un color determinado, esto se consigue con la orden ls --color=tty.

Los pasos a seguir son:
cd ~
dircolors --print-database > .dir_colors
vim .dir_colors
DIR 01;33 # directory --> Con esto el color de los directorios pasará de azul asqueroso a un bonito amarillo ;)

vim .bashrc
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b .dir_colors`"
alias ls='ls --color=auto'
fi

Cerramos el terminal, abrimos otro y listo.

lunes, agosto 23, 2010

Ocultar password en scripts Bash

Ya que me he puesto con el tema de scripting voy a comentar un truquillo que seguro que le va a gustar a mas de uno.
Se trata de como deshabilitar el echo de nuestro terminal para poder introducir passwords sin que aparezcan en pantalla.

Es tan sencillo como:
#!/bin/bash
stty_save=$(stty -g) ---> Guardamos el estado de nuestro terminal
stty -echo --> Deshabilitamos el echo
echo Introduzca Password:
read secret
stty $stty_save --> Reestaablecemos la configuración inicial
echo Password introducido:
echo $secret

Scripting Interactivo

Seguro que alguna vez habeis tenido que programar algún script que precisaba de interacción humana porque pedía usuario y password y no había forma de pasarle estos parámetros al invocar el programa.

Para esta problemática se inventó expect, gracias a expect podremos esperar respuesta por parte del comando ejecutado y responder en consecuencia.

Lo mejor de todo es que podemos empotrar código expect dentro de nuestros scripts en bash.

Voy a poner un ejemplo en el que se realiza una conexión por telnet y reinicia el router:

#!/bin/bash

/usr/bin/expect -- << EOF
spawn telnet 192.168.1.1
expect "Trying 192.168.1.1..."
expect "Connected to 192.168.1.1."
expect "Escape character is '^]'."
expect "BCM96348 ADSL Router"
expect "Login:"
send "1234\r"
expect "Password:"
send "1234\r"
expect ">"
send "reboot"
send "\r"
expect "The system shell is being reset. Please wait..."
EOF

Así de fácil ;)

domingo, julio 25, 2010

Compilación de Asterisk-RSP

Hola amigos, después de una larga temporada me he decidido a escribir una articulo sobre como compilar Asterisk-RSP.
Se trata de un asterisk con una serie de parches para que resulte ser lo mas fiable, estable y seguro posible.

Las fuentes las bajaremos desde sus repositorios de subversion:
apt-get install subversion

cd /usr/src
svn checkout http://asterisk-es-rsp.irontec.com/svn/asterisk-es-rsp/branches asterisk-es-rsp

Por si tenemos algún asterisk anterior instalado:
/etc/init.d/dahdi stop

Antes de comenzar comentar que las librerias libpri son necesarias si se van a emplear tarjetas RDSI en nuestra centralita, DAHDI en cambio es lo que anteriormente se conocía como zaptel que no son ni mas ni menos que drivers para diferentes tarjetas.

Empezamos la compilación y la instalación:

cd asterisk-es-rsp/libpri/"versión"
make
make install

cd ../../dahdi-linux/"versión"
make
make install

cd ../../dahdi-tools/"versión"
./configure
make menuselect --> Lo dejamos por defecto a no ser que queramos alguna opción fuera de lo normal.

make clean
make
make install
make config

cd ../../asterisk/"versión"
./configure
make clean
make
make install
make samples --> CUIDADO BORRA CONFIG ANTERIOR!!!!!!!
make progdocs
make es-sounds
Decir que si a todos los formatos
make config

Borramos extensiones y configuración de prueba del dialplan.
rm /etc/asterisk/extensions.ael
rm -rf /usr/src/asterisk-es-rsp/asterisk/1.4.24/pbx/ael/ael-test/*

Configuramos Dahdi:
cp /usr/src/asterisk-es-rsp/dahdi-tools/2.1.0.2/xpp/genconf_parameters /etc/dahdi/genconf_parameters.sample
/etc/init.d/dahdi start
dahdi_genconf
dahdi_cfg -vv

DAHDI solo es necesario si se van a emplear trajetas para llamar al exterior.

Los ficheros de configuración de DAHDI son:
/etc/dahdi/system.conf
/etc/dahdi/modules --> Modulos que debe cargar dependiendo de nuestras tarjetas
/etc/asterisk/chan_dahdi.conf --> Indicamos a Asterisk los canales DAHDI.

He creado un script que nos facilitará la vida en instalaciones desde cero, este nos genera varios ficheros con la configuración indicada.

viernes, mayo 07, 2010

Sheeva una autentica maravilla

Voy a explicar como conectar con los equipos Sheeva, se trata de unos equipos con un micro a 1.2GHz, 512Mb de ram, todo esto embebido en una cajita muy mona.
Tenemos la posibilidad de pedirlo con Debian preinstalado ya sea en la NAND o en una tarjeta SD.
Para poder conectarnos por el miniUSB que trae tendremos que añadir cierto modulo en el kernel.
El driver en cuestió se encuentra en:
Device drivers --> USB Support --> USB Serial converter --> USB FTDI Single Port Serial Driver

Después reiniciamos con este kernel, si lo hemos compilado dentro del kernel pues ya estaremos listos, si no cargamos el módulo: modprobe ftdi_sio

Después de cargar el módulo podemos observar que se ha generado el dispositivo: /dev/ttyUSB0

Instalamos minicom:
apt-get install minicom

Lo configuramos de forma apropiada:
minicom -s

Configuración de la puerta serial:
| A - Dispositivo Serial : /dev/ttyUSB0
| B - Localización del Archivo de Bloqueo : /var/lock
| C - Programa de Acceso :
| D - Programa de Salida :
| E - Bps/Paridad/Bits : 115200 8N1
| F - Control de Flujo por Hardware: No
| G - Control de Flujo por Software: No

Con esto ya estamos listos, guardamos la configuración como predeterminada:
Salvar configuración como dfl

Ejecutamos minicom.

Nos aparecerá una ventana de login, accedemos como root con password: nosoup4u


La verdad es que este aparatillo es ideal para tener un servidor que consuma poca energia, además al usar los repositorios de debian todo el software disponible para esta distro está a nuestro alcance ;)

viernes, abril 30, 2010

Claves públicas SSH

Hoy voy a explicar como autenticarse mediante el uso de claves públicas de SSH, esto nos permitirá conectarnos a nuestro servidor sin tener que teclear nuestra password.

Modificamos el fichero de configuración del servidor:

vi /etc/ssh/sshd_config
Protocol 2
RSAAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Cada usuario puede generar las claves o lo puede hacer el administrador del servidor:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/"usuario"/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again: --> Si se deja en blanco luego será comodisimo
Your identification has been saved in /home/"usuario"/.ssh/id_rsa.
Your public key has been saved in /home/"usuario"/.ssh/id_rsa.pub.
The key fingerprint is:
11:fr:60:f8:a9:42:87:d6:38:c0:a7:22:64:8b:94:cd "usuario"@"host"
The key's randomart image is:
+--[ RSA 2048]----+
| ..o . ... |
| . O o -. |
| .+* o +.+ |
|oo+E. . ... |
|.= .+. S |
|. . |
| |
| |
| |
+-----------------+

/home/"usuario"/.ssh/id_rsa --> Clave privada: Cuidadin
/home/"usuario"/.ssh/id_rsa.pub --> Clave pública

Hacemos llegar nuestra clave pública al servidor SSH:
ssh-copy-id "usuario"@"servidor" --> Pedirá la passphrase y luego la password de "usuario"

Si en el servidor vamos a tener mas usuarios, generamos las claves y cuando nos pregunte:
Enter file in which to save the key (/home/"usuario"/.ssh/id_rsa)
Vamos dandole nombres distintos como id_rsa2,3,4......

Subimos cada una de las claves públicas:
ssh-copy-id "usuario"@"servidor" --> Pedirá la passphrase y luego la password de "usuario"

Aseguramos el servidor:
PasswordAuthentication no
PermitRootLogin no

/etc/init.d/ssh restart

Ya lo tenemos, ahora conectamos con nuestro usuario y por arte de magia accedemos sin necesidad de password ;)

ssh -i .ssh/id_rsa"N" "usuarioN"@"servidor"

sábado, abril 24, 2010

LiveCD en USB mas fácil que nunca

Hace ya tiempo que estoy leyendo en mis ratos libres como lograr instalar una distro LiveCD en mi memoria usb, hay varios métodos, unos mas complicados que otros pero sin duda alguna el mas intuitivo es UNetbootin.
Tan solo hay que bajarse el binario, darle permisos de ejecución y "voila" ya podemos comenzar el proceso de instalación en la memoria USB, soporta un gran número de distros así como otros sistemas operativos basados en UNIX.
Tan solo hay que inidcarle la distro, la imagen de origen y el usb de destino, esto nos generará unos ficheros desde los cuales nuestra BIOS podrá arrancar como si de una partición mas se tratase.

Este programa ha sido probado con BackTrack4, pero supongo que con el resto de distros será igual de fácil.

domingo, abril 18, 2010

Formato de video rmvb

El tema de los formatos de video en Linux ha sido un tema delicado, sobre todo con formatos como Windows Media Video y otros que son cerrados. Esta vez le toca a rmvb, pero la solución es bastante sencilla.

Bajamos los codecs:
wget http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2

Descomprimimos los codecs:
bzip2 -dc essential-amd64-20071007.tar.bz2 | tar xv

Copiamos los codecs al directorio correcto:
mkdir /usr/local/lib/codecs/
cp essential-amd64-20071007/* /usr/local/lib/codecs/

Con este procedimiento se logra reproducir este formato usando xine como reproductor, en otros no funciona, mi teoria es que no todos los reproductores buscan los codecs en el mismo directorio, si alguie sabe como hacer que funcione con todos que escriba un comentario por favor.

sábado, marzo 20, 2010

Conectar a redes WEP y WPA2

Hola chavales, por fin tengo un poco de tiempo para escribir sobre frikerias varias.
Esta vez voy a explicar un tema que está muy poco claro si se googlea, primero voy a explicar como conectar con una red WEP y luego a una red WPA2 con password compartida.

Para ver las redes a nuestro alcance:
iwlist "interfaz" scan

Para la red WEP es tan sencillo como:
iwconfig wlan0 mode managed
iwconfig wlan0 essid "essid"
iwconfig wlan0 key s:"clave"
dhclient "interfaz"

Con una red WPA2 es un poco mas complicado:
apt-get install wpasupplicant

Editamos el fichero /etc/network/interfaces:
auto wlan0
iface wlan0 inet dhcp
wpa-ap-scan 2
wpa-driver wext
wpa-ssid "ESSID"
wpa-bssid "BSSID"
wpa-psk "PASSWORD"
wpa-key-mgmt WPA-PSK
wpa-group TKIP
wpa-pairwise TKIP
wpa-proto RSN

Toda esta configuración se podría realizar en el fichero /etc/wpa_supplicant/wpa_supplicant.conf pero resulta mas sencillo hacerlo aquí ;)


Reiniciamos la red:
/etc/init.d/network-manager restart
/etc/init.d/networking restart

Ya lo tenemos, espero que sea de ayuda ;)