Monitorizar señal WiFi

wavemon es una utilidad cuyo propósito es mostrar en tiempo real la calidad y la potencia de la señal WiFi a la que estamos conectados, así como una serie de estadísticas como el volumen de datos recibidos/enviados o la dirección MAC del dispositivo y otros muchos detalles.
Además, una de las cosas que más me gustan de este software es que es capaz de mostrar en una gráfica la calidad de señal a la que estás conectado, simplificándote así el mejor lugar dónde poner el punto de acceso para mejorar la comunicación, por ejemplo, en tu casa.

Instalación

wavemon está disponible en la mayoría de distribuciones, por lo que la instalación es sencilla,
shell> apt-get install wavemon

Ejecución

shell> wavemon -i wlan0
Tras ejecutar el comando en la consola, saldrá una ventana similar a la que se muestra a continuación. En ella hay 5 partes claramente diferenciadas.
  • Interface
    Indica el interfaz de red sobre el que estamos ejecutando el comando.
    Generalmente wlan0 para sistemas Linux.
  • Levels
    Indica la calidad y potencia del enlace1.
  • Statistics
    Muestra las estadísticas del enlace: paquetes enviados, recibidos, erróneos, etc.
  • Info
    Información acerca de la conexión (modo, MAC del AP, etc.).
  • Network
    Detalles de la tarjeta de red empleada (MAC e IP).

Todo el código del proyecto se almacena en github: wavemon

1 Cuanto mayor es el número negativo, mejor señal del enlace.
Leer más

SSH terminal in web

Hoy os voy a mostrar una pequeña forma de tener accesible un servidor SSH desde un navegador. Supongo que a muchos de vosotros esto no os servirá de nada y a otras muchos les será de gran ayuda. Hay veces que tener una conexión segura SSH es más complicado, sin embargo, tener un servicio vía web que se encargue de ser servidor SSH, pues nos vendrá bien.
Por supuesto, lo que voy a contar ahora simplemente facilita la conexión a una máquina, pero para nada garantiza su seguridad. Así que un control de accesos y un extra de seguridad nunca está demás.

Instalación

Lo primero de todo es instalar el software necesario que vamos a emplear. En este caso usaremos shellinabox, que se define a si mismo como una línea de comandos encapsulada en código AJAX.
Puesto que está disponible desde los repositorios oficiales,
shell> apt-get install openssl shellinabox

Configuración de shellinabox

Una vez tenemos todo instalado, ya está el servicio prácticamente listo para arrancar. Lo único que nos queda pendiente es establecer el puerto por defecto en el que vamos a querer que se ejecute. En mi caso lo voy a poner en el 443 (https). Para ello, editamos el fichero de configuración, /etc/default/shellinabox y lo dejamos como sigue.
SHELLINABOX_DAEMON_START=1
SHELLINABOX_PORT=443
SHELLINABOX_ARGS="--no-beep"
Es decir, la configuración por defecto, únicamente cambiando el puerto de escucha.

Configuración avanzada

La configuración por defecto la verdad es que funciona perfectamente y nos permite ya de por sí abrir una consola en el equipo que está haciendo de servidor. Sin embargo, si nos interesa abrir una consola en otro equipo de la red local, también lo podemos hacer directamente empleando shellinabox. Un ejemplo de configuración para ello sería,
SHELLINABOX_PORT=443

# specify the IP address of a destination SSH server
SHELLINABOX_ARGS="--o-beep -s /:SSH:192.168.0.70"
En donde establecemos que se abra un túnel SSH hacia el servidor con IP 192.168.0.70.

Arrancando servicio

Una vez tengamos ya todo configurado simplemente tendremos que arrancar el servicio.
shell> /etc/init.d/shellinabox start
Y ya podremos conectarnos con un navegador al puerto descrito y tener nuestra shell en el equipo.
shellinabox example
shellinabox example

Certificado SSL

Por cierto, shellinabox trae por defecto un certificado autofirmado, pero lógicamente podemos crear nuestro propio certificado si así tenemos más confianza.
shell> cd /var/lib/shellinabox
shell> openssl genrsa -des3 -out server.key 1024
shell> openssl req -new -key server.key -out server.csr
shell> cp server.key server.key.org
shell> openssl rsa -in server.key.org -out server.key
shell> openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
shell> cat server.crt server.key > certificate.pem
Y con ello podemos conseguir, por ejemplo, que el certificado SSL que nos muestre sea de confianza para nuestro navegador, tras importar los certificados pertinentes, lógicamente.

Para más información acerca del servicio empleado o de cómo usarlo puedes ir a su página oficial o leer la página del manual en cuestión.
Leer más

Capturar tráfico HTTP

Aunque cualquier sniffer actual puede capturar el tráfico HTTP sin problemas, quizás el gran problema es que captura más cosas de las que suelen interesar. Aunque efectivamente existen filtros para que recoja únicamente lo que interesa, quizás opciones como tcpdumpwireshark sean más complejas que httpry, un software que únicamente sirve para capturar todo el tráfico HTTP, pero de forma muy organizada. Apoyándose en libpcap, misma librería que tcpdump, trae ya por defecto todos los códigos y protocolos del tráfico web, por lo que configurarlo resulta mucho más sencillo. Vamos a ver cómo funciona.

Instalación de httpry

httpry está disponible en las principales distribuciones GNU/Linux, por lo tanto para sistemas Debian y derivados...
shell> apt-get install httpry
Y para sistemas Red Hat y familiares,
shell> yum install httpry

Uso básico

Tras finalizar la instalación, la cual es realmente sencilla, ya podemos ponernos a jugar con la nueva herramienta. Lo único que necesitamos es indicarle sobre qué interfaz de red queremos que trabaje capturando el tráfico.
shell> httpry -i eth0
httpry version 0.1.7 -- HTTP logging and information retrieval tool
Copyright (c) 2005-2012 Jason Bittel jason.bittel@gmail.com
----------------------------
Hash buckets:       64
Nodes inserted:     10
Buckets in use:     10
Hash collisions:    0
Longest hash chain: 1
----------------------------
Starting capture on eth0 interface
2014-08-16 16:14:35   108.160.167.160  192.168.0.15    <  -    -  -  HTTP/1.1  200  OK
2014-08-16 16:14:35   192.168.0.15     108.160.167.160 >  GET  notify10.dropbox.com   /subscribe?host_int=
2014-08-16 16:14:48   192.168.0.15     173.194.41.250  >  GET  pagead2.googlesyndication.com... -
2014-08-16 16:14:48   173.194.41.250   192.168.0.15    <  -    -  -  HTTP/1.1  200  OK
2014-08-16 16:14:48   173.194.41.250   192.168.0.15    <  -    -  -  HTTP/1.1  200  OK
2014-08-16 16:15:03   192.168.0.15     173.194.34.252  >  GET  ad.doubleclick.net...
2014-08-16 16:15:03   173.194.34.252   192.168.0.15    <  -    -  -  HTTP/1.1  200  OK
...
Como se puede observar, desde el momento del arranque ya comienza a capturar tráfico HTTP y aparecen todas las peticiones que se hacen, así como el método que se emplea. Sale la IP origen de la conexión, así como la IP destino de la misma, seguida del método empleado y la URL completa que se envía o recibe.
Esto mismo lo podemos hacer con tcpdump o similares, pero la expresión necesaria para este filtro ya hace que quizás alguna persona se lo piense. Con httpry es muy sencillo.

Uso avanzado

Por supuesto, httpry permite hacer muchas cosas más. Algunas de las cuales vamos a ver a continuación, pero para saber todo su potencial os recomiendo la lectura de su página man.

Capturando métodos específicos

Los que sepáis del protocolo HTTP sabréis que existen multitud de métodos (POST, GET, HEAD, CONNECT, etc.) que éste tiene implementado. Algunos más vulnerables, otros menos. httpry nos permite definir qué método queremos que nos muestre, para así evitarnos tener que leer líneas que no nos van a ser de utilidad.
shell> httpry -i eth0 -m get,post

Captura a fichero para luego procesarlo

También, una de las utilidades más importantes es que la captura y el análisis de la misma no tiene por qué realizarse al mismo tiempo. Esta es una gran utilidad, puesto que nos permite almacenar todo el tráfico para su posterior análisis, con mucha más tranquilidad. Lo primero es, por supuesto, capturar el tráfico de red. Lo podemos hacer en formato binario (opción -b), o en formato texto (opción -o).
shell> httpry -i eth0 -b capture.dump
Una vez tengamos todo el tráfico capturado es hora de procesarlo. Para ello,
shell> httpry -r capture.dump

Esta entrada puede ser muy útil para análisis de tráfico, pero también para que mucha gente vea la facilidad con la que es posible capturar tráfico HTTP y leer lo que pasa por la red. Así que ya sabéis, no facilitéis tarjetas de crédito, contraseñas y demás datos de interés personal si, mínimo, no hay un https en la URL.
Leer más

Confirmación de lectura desde Zimbra

Hace ya años era muy habitual que los correos electrónicos llevasen la petición de confirmación de lectura. Cuando recibías uno, al abrirlo siempre saltaba el mensaje de que confirmases de que lo habías recibido.
De una época hacia aquí, por lo menos a mi, dichas confirmaciones de lectura no suelen venir con los correos (y menos mal!), pero desde luego siempre puedes hacer que estén incluidas. Y Zimbra, como gestor de correo, permite que lo hagas para uno o para todos tus correos salientes. La forma de hacerlo, pues como sigue.

Solicitud de confirmación para un correo

La explicación más sencilla es la que se muestra en la imagen lateral, dónde se observa que en las opciones que hay cuando compones un nuevo correo saliente puedes habilitar dicha confirmación de lectura.

Solicitud de confirmación para todos tus e-mails

También es posible, si te interesa que todos tus correos hagan la petición de dicha confirmación, habilitarlo para la cuenta en general. Para ello, tendrás que ir a Preferencias → Correo y ahí buscar la parte relacionada con "Redactar mensajes". En la imagen adjunta se muestra la pestaña que tendrás que habilitar, que como puedes observar es la de "Solicitar siempre notificación de lectura".
Si decides optar por esta forma, ten presente que a todas las personas que les mandes un correo, también les estarás pidiendo confirmación de lectura, con lo que ello supone.

Internamente, por si alguien se lo está preguntando, esta opción lo que hace es incluir en la cabecera la solicitud, que el cliente lógicamente, tendrá que saber manejar. En código, agrega una línea similar a esta:
Disposition-Notification-To: Javier J.L. <test@domain.com>
Leer más

arpWatch: Controlando los equipos de tu red

arpWatch es un daemon para sistemas GNU/Linux que nos permite de forma rápida tener un sistema de notificación de nuevos equipos conectados a la red. En realidad este pequeño daemon se dedica a observar el listado de correspondencias entre las entradas de la tabla arp y la dirección origen para comprobar su correspondencia. En el momento que un nuevo equipo es conectado a la red, automáticamente se notifica al administrador de ello vía correo electrónico.
arpwatch está en los repositorios de las principales distribuciones, por lo que su instalación resulta sencilla apoyándonos en las herramientas de los diferentes sistemas operativos (debian, red hat, etc.).
debian> apt-get install arpwatch
redhat> yum install arpwatch
Tras ello, y para ponerlo a funcionar, únicamente hay que editar el fichero de configuración (/etc/arpwatch.conf) e indicarle el interfaz de red que deseemos monitorizar, así como la red del mismo y también la dirección de correo electrónico a la que mandar los cambios detectados.
eth0   -m arpwatch@mi.dominio.com -n 192.168.0.0/24
eth1   -m arpwatch@mi.dominio.com -n 192.168.1.0/24
Efectivamente, arpwatch permite incluir varios interfaces de red que monitorizar. Una vez configurado, simplemente arrancamos el nuevo servicio,
shell> /etc/init.d/arpwatch start 
y comenzarán a llegar los correos de todos aquellos equipos accesibles en dicha red en ese momento. Un ejemplo del mail enviado sería,
hostname: backup.local.net
          ip address: 192.168.1.100
           interface: eth0
    ethernet address: 00:0f:51:XX:YY:ZZ
     ethernet vendor: Merit Li-Lin Ent.
           timestamp: Saturday, August 2, 2014 10:57:05 +0200
Hay que decir que en un primer momento enviará un correo por cada equipo que vaya detectando y a partir de ahí, únicamente los nuevos equipos que se conecten. Si la red es bastante estática, por ejemplo una intranet, estos cambios deben de ser mínimos y ante cualquier nuevo evento, habría que revisarlo, pues puede ser un equipo no autorizado.

arpwatch y cómo detectar ataques ARP Spoofing

Como ya dijimos, arpwatch se encarga de mantener un registro de la relación entre IP -> MAC junto a una marca temporal. Si dicho registro se altera, notifica de dicha alteración. Los ataques de ARP Spoofing se basan en el envío de falsos mensajes ARP (spoofed) con la finalidad de asociar una dirección MAC del atacante con una dirección IP.
En caso de intento de envenenamiento de la tabla arp, arpwatch notificaría de dichos cambios y aunque no permitiría detenerlos ni mitigarlo, sí cuando menos detectarlos.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios