Mostrando entradas con la etiqueta TP Link. Mostrar todas las entradas
Mostrando entradas con la etiqueta TP Link. Mostrar todas las entradas

domingo, 11 de diciembre de 2016

¿Cómo puedo hacer una "caja Tor" para navegar anónimamente?

¡Trabajadores!

En ocasiones nuestro Movimiento ha de encolumnarse activamente en una lucha por la defensa de los intereses de la Nación en contra de una Oligarquía sin Patria ni Bandera.

En ellas ocasiones podremos tener que recurrir al último recurso que aguarda a los hombres que tienen algo que defender: recurrir a una guerra cruenta, sumamente dañina y sumamente peligrosa.
Pero en más ocasiones podremos sumar golpes de mano a un enemigo desprevenido y confiado, haciendo uso del terreno para proteger nuestras fuerzas y de nuestro Pueblo como herramental de lucha.

Este tipo de estratagema es tan antigua como las huestes de Darío, y contarán con las mismas ventajas que las de antaño: podrán maniobrar, golpear y retirarse sin necesidad de una pesada carga ni de un férreo liderazgo centralizado. Sólo es requerida la organización que en terreno y en el campo de acción pueda darse a unos pocos hombres decididos que deben sabér qué es lo que han de hacer.

Nuestro objetivo fundamental a tener en cuenta es el de lograr el bienestar de los trabajadores. Cuando el mismo se vea en peligro, tendremos ante nosotros una lucha tan necesaria como sencilla, en vista de una divisa clara y un enemigo identificado.

Nuestra acción en el campo táctico hace uso y potestad del anonimato que otorga el accionar entre la Masa. 
Indudablemente que un problema básico para dicho anonimato y privacidad radica en lo obvio: que el enemigo intercepte el tráfico telemático. Una manera muy simple de análisis de tráfico puede realizarse en cualquier lugar intermedio, e incluso en estos casos simples, poner en peligro a nuestra Masa de Acción y sus organizaciones.

Mis descamisados me han preguntado ¿cómo funciona el análisis de tráfico? Pues bien, os lo explicaré. Los paquetes de datos fundamentales de internet  constan por designio del protocolo TCP/IP de dos partes: una carga útil y un encabezado empleado para su enrutamiento. La carga útil puede convertirse en cualquier dato digital traficado, ya sea un mensaje de correo electrónico, contenido de una página web, un archivo de audio, parte de un stream audiovisual, etc. Incluso si encriptamos la carga útil en sus comunicaciones, un análisis superficial de datos puede aún revelar gran parte de nuestras supuestas actividades y accionares. Esto es así porque tal procedimiento hace foco sobre  el encabezado del paquete telemático (que contiene el remitente, el destino, el tamaño, datos de horarios, etc). Intermediarios autorizados, como los proveedores de internet, y a veces intermediarios no autorizados (como dichos mismos proveedores cuando están en manos oligárquicas coaligadas) pueden reconocer rápidamente patrones de tráfico, desde donde y hacia donde se originan, y trazar conclusiones relativamente directas sobre su contenido, las tácticas empleadas, etc.

Pero también existen análisis de tráfico profundos, mucho más negativos y peligrosos: un actor dedicado puede espiar múltiples partes de la red y emplear cruzados estadísticos sofisticados para rastrear patrones de comunicación de individuos u organizaciones específicas, para lograr peinar los datos con mucha más fiabilidad.

Para evitar dichos avances, los hombres que luchan han de conocerlos y poderles hacer frente. Nuestro Movimiento, anclado en una vertiente de Justicia Social en el software, ha desarrollado una red oscura, tan oscura como la piel del más negro de nuestros grasitas. Se trata del proyecto Tor.
Tor

Tor, a través de sus servidores, ayuda a reducir los riesgos telemáticos inherentes a través de la distribución de las transacciones telemáticas a lo largo de múltiples lugares en la Internet, de manera que en ningún punto pueda se pueda dirigir hacia su destino u origen específico, de la misma manera que una liebre alguien podría seguir una ruta rebuscada para perder al mastín, y luego periódicamente borrase sus huellas. En lugar de que la paquetería TCP/IP siga una ruta relativamente directa en pos de la velocidad, en la red Tor dicha paquetería pasará a través de varios caminos secundarios que cubren sus pasos, de manera tal que ningún observador pueda hacer rastreos de origen o destino. Esto se realiza en beneficio de un uso anónimo y neutral de la red.

Para navegar a través de Tor lo más sencillo es hacer uso de un navegador especialmente concebido, situación que ya he explicado. Pero esto acarrea ciertas limitaciones. En particular, el hecho de que el navegador sólo protege el tráfico dable de visualizarse en el mismo, y no otro tipo de conexiones telemáticas que podríamos querer o necesitar realizar en nuestro equipo.

Para suplir dichos inconvenientes, lo más completo por hacer es blindar completamente nuestra conexión hogareña a través de un punto de Acceso Tor. Una forma muy completa y potente de hacerlo es reprogramando un barato router y disponerlo para que el uso del mismo sea absolutamente exclusivo para la red oscura.

Punto de Acceso Wifi con Tor
El navegador Tor anterior es una herramienta muy útil para navegar anónimamente de forma Montonera, pero a lo bueno hemos de transformarlo en lo mejor. Gracias al Justicialismo, podremos hacer que el tráfico entero de una red sea transmitido a los servidores Tor por medio de un dispositivo de enrutamiento especial.


Esto es extremadamente útil y poderoso en ocasiones específicas de seguridad, cuando realizamos una peña de ajusticiamiento telemático, y en toda ocasión conspirativa donde hemos de combatir a la opresión del sistema Capitalista.

Sólo necesitamos reprogramar un minirouter y tornarlo en una caja compañera que oficie de proxy Tor ¡y hacer de él un punto de acceso wifi que ofusque todo nuestro tráfico a terceros a través de la red negra peronista!

Para ello emplearemos un Router Portátil N150 3G/4G TP-Link TL-MR3020 y un pendrive viejo. La acción de reprogramación consistirá en instalarle un firmware peronista, el OpenWrt, convenientemente modificado para este menester Tor.
The portable 3G/4G wireless N router TL-MR3020 from TP-Link





El hardware original era una auténtica burla al Pueblo, una avivada de aquellas a las que nos tiene acostumbrado un Capital sin Patria ni Bandera. A pesar de que se vende bajo la premisa de ser "un router Wifi N portátil de redes 3G/4G", la realidad es que el MR3020 no posee ninguna interfaz de telecomunicaciones para dichas normas móviles, y si el usuario quere hacer uso de lo que se anuncia en la caja del aparato, debería proveer una aparte, de tipo USB y con un chip activado para dichas redes. En dicho caso, preveía "compartir" la conexión 3G/4G a través de señal Wifi normalizada. Hoy muchos smartphones ya cuentan con dicha posibilidad incorporada, lo que hace redundante esta cajita de 400 pesos.

El aparatito consiste en un minirouter que tiene una interfaz Wifi 802.11n de 150mbps, un conector Ethernet de 100mbps, junto con un puerto USB 2.0. Se lo alimenta a través de un segundo puerto USB mini-B (este unicamente para alimentación), y tiene como ventaja un consumo extremadamente bajo, ya que gasta en promedio 120 miliamperes a 5 volts, aproximadamente 600 miliwatts. Su hardware es típico para un router viejo, con un microprocesador de arquitectura MIPS Atheros AR9331 de 400 MHz, 32MB de memoria RAM DDR y una memoria ROM flasheable, de 4MB, todo adosado en una plaquetita con dos LEDs (uno pulsable, botón WPS) y un conmutador. Como su utilidad original básica ha sido incorporada ya en muchos teléfonos celulares que ya pueden oficiar de router portátil, haremos uso de este TL3020 un Robocop justicialista agregándole el firmware compañero OpenWRT, el Linux capaz de correr en routers peronistas.

Para ello os guiaré paso a paso, como válido Conductor de la Masa Justicialista.

Suponiendo que el minirouter cuenta con sus valores de fábrica, podremos reprogramarlo rápidamente instalándole OpenWRT Barrier Braker, versión liviana y suficiente. Para ello nos conectamos a Internet con el minirouter a través de un cable Ethernet, y descargamos a nuestro sistema el archivo openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin. Luego nos loguemos a la ventana de control del minirouter dirigiendo nuestro navegador a la dirección IP de la misma (de fábrica es 192.168.0.1, usuario admin, contraseña admin). Conforme veamos la web de control del minirouter, vamos ala función Herramientas de Sistema ("System Tools") / Actualizar firmware ("firmware update") y presionando el botón Browse le ingresamos el fichero openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin que acabamos de descargar, y presionamos el botón Actualizar ("Upgrade").

La barra de progreso se llenará dos veces (reprogramando la EEPROM del minirouter y reiniciándolo, accionar que dura unos 4 minutos). Concluido este requisito tendremos instalado el firmware OpenWRT Barrier Breaker en el minirouter.

Inicialmente podremos loguearnos al minirouter TL3020 reprogramado abriendo una terminal Linux con Ctrl+Alt+T e ingresando de forma no cifrada, por medio del comando:

telnet 192.168.1.1

Ahora podremos usar el editor Vi incorporado en el firmware libre del minirouter para modificar sus archivos de configuración y de esta manera reprogramar su funcionamiento, a fin de que opere como un cliente proxy de Tor altamente seguro.
Lo primero será ponerle al minirouter una clave para conectarnos a través de un enlace seguro SSH. Ingresamos el comando:

passwd
El sistema nos indicará:
Changing password for root 
New Password:
Tipeamos "a ciegas" una contraseña que se nos ocurra para las sesiones de configuración del minirouter. Debemos repetirla para no tener problemas. Una vez que el procedimiento esté completo, nos indicará con el mensaje "Password for Root changed by root" ("contraseña para root cambiada por el root"). Es importante saber que una vez configurada nuestra clave a través del sistema de consola insegura Telnet, la misma se desactivará, de modo que a partir de este momento sólo podremos utilizar el método de logueo seguro cifrado SSH.
 
Ahora reconfiguraremos el minirouter. Usaremos el editor Vi para modificar algunos archivos de configuración. Tendrán presente que Vi es un editor de texto mínimo, adecuado para correr directamente desde el procesador del minirouter. En Vi, a diferencia de Nano u otros editores más complejos, no podremos escribir hasta que no activemos el modo de inserción de texto. Esto lo haremos presionando la tecla "i". Luego podremos tipear y modificar el texto.
Modificamos el archivo de configuración /etc/config/system con este comando:

vi /etc/config/system

...buscamos la primera línea hostname que dice:

config system
    option hostname 'OpenWrt'


...presionamos i para pasar al modo de inserción de texto, y la modificamos para que quede:

config system
    option hostname 'cajator'


Una vez que hayamos hecho la edición, debemos guardar el archivo en la memoria del minirouter. Para hacer esto en el editor Vi presionamos Esc para pasar al modo de comandos y luego ingresamos:

:w


...y salimos del editor con:

:q


Ahora bien, el programa de proxy Tor para el minirouter está disponible como un simple paquete del gestor de paquetes de OpenWrt, el opkg. esto lo hace fácil de instalar. Sin embargo, con los escasos 4MB de memoria EEPROM que tiene el minirouter en su placa, es insuficiente para instalarlo en él. Para resolver esto necesitaremos más espacio para instalar paquetes: usaremos como almacenamiento externo un pendrive viejo (en este caso uno de 1GB), conectado al puerto USB del minirouter. Para ello pasaremos el sistema de archivos de resguardo ("overlay") a dicho medio de almacenamiento externo.

En primer lugar formateamos el pendrive USB viejo con formato ext4 empleando nuestra PC con Linux (por ejemplo, usando la aplicación gnome-disks), y luego lo conectamos al minirouter.

Podremos entonces montar el sistema de archivos (necesitaremos instalar algunos paquetes para los módulos de kernel adecuados), y copiar la partición de resguardo ("overlay") allí. Nos volvemos a loguear al minirouter, y desde una terminal usamos de ahora en más una conexión SSH en lugar de la Telnet (que ha quedado desactivada):

ssh root@cajator
Una vez ingresados a la consola del minirouter, ingresamos los siguientes comandos de organización:

opkg update
opkg install kmod-usb-storage kmod-fs-ext4 block-mount
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
tar -cf -C /overlay - . | tar -xf -C /mnt/usb -


Al emplear el comando tar para copiar el sistema de archivos de resguardo ("overlay") es siempre un buen hábito mantener todo absolutamente intacto (incluendo permisos y enlaces directos). Lo que hace tar realmente es reducir todo el sistema de archivos a un chorro de bytes, y luego convierte este chorro de bytes en un sistema de archivos.

Luego modificaremos el archivo /etc/config/fstab con:

vi /etc/config/fstab

...pasamos al modo de inserción de texto presionando i y agregamos lo siguiente al final del archivo:
...grabamos el archivo y salimos del editor presionando Esc y luego escribiendo :wq y presionando Enter.

Acto seguido, reiniciaremos el minirouter, de manera que el pendrive USB colocado quede montado en la carpeta /overlay de su sistema de archivos del mismo. Podremos hacerlo desde la consola del minirouter mediante el comando:

reboot


Conforme el minirouter vuelva en sí, podamos volver a acceder a su consola con el comando:

ssh root@cajator

...y podremos instalar Tor en el pendrive externo fácilmente. Para ello le ingresamos los siguientes Comandos de Organización:

opkg update
opkg install tor

...y como el sistema ahora tendrá suficiente espacio en el pendrive para descargar la pesada paquetería de Tor, podrá instalarlo. Debemos notar que - como es obvio - el pendrive siempre deberá permanecer conectado al minirouter cuando querremos usar el proxy Tor. Para que todo funcione, como siguiente medida hemos de configurar la interfaz inalámbrica del minirouter (si la deseamos emplear). Ello lo haremos con:
vi /etc/config/wireless

Y nos aseguramos de modificar el campo wifi-iface para que quede de la siguiente manera:
Luego de guardar los cambios y salir del editor Vi con Esc + :wq, configuraremos la red cableada y sus relaciones. La red LAN empleará el rango de direcciones IP 192.168.180.0/24 y la interfaz Ethernet del router empleará la IP fija 192.168.180.1. Para ello empleamos el comando:

vi /etc/config/network

...y editamos el siguiente contenido en los campos 'lan' y 'wan':


Conforme todo esto esté realizado y grabado, modificaremos la configuración del Cortafuegos para desactivar la compartición entre las redes LAN y WAN. Usamos el comando:

vi /etc/config/firewall

...y nos aseguramos de que las los cambios al principio del archivo dejen al mismo con las siguientes modificaciones de contenido:

Ahora necesitamos agregar dos líneas específicas de iptables en el archivo /etc/firewall.user para redirigir los pedidos de DNS y las conexiones TCP de la red LAN al demonio Tor. Otros tipos de tráfico, por ejemplo otros protocolos sobre UDP, no serán ruteados a la WAN, y simplemente serán rechazados. Esta configuración restrictiva impide ciertos ataques. Sin embargo, no seamos tan inocentes como para pretender que otros protocolos no puramente basados en TCP como VoIP o BitTorrent puedan operar correctamente detrás de la caja Tor. Si deseamos ello, debemos conectarnos a través de un router convencional, y no esta cajita profiláctica. Manos a la obra, ingresamos el comando:

vi  /etc/firewall.user 

...y le agregamos estas dos líneas:
De manera central nos debemos atener a configurar el demonio Tor en sí, ingresando:

vi /etc/tor/torrc

...y agregamos el siguiente contenido:

Una vez que grabemos las modificaciones y salgamos de Vi, ya estará todo listo para dar inicio a la funcionalidad pura de la caja Tor. Por alguna razón, el demonio Tor no iniciará con la orden /etc/init.d/tor enable, de modo que lo más sencillo es arrancarlo desde el archivo /etc/rc.local, que arranca cualquier cosa. Para ello ingresamos:

vi /etc/rc.local 

...y le agregamos el siguiente texto al final:
...guardamos y salimos de Vi (Esc + :wq), y reiniciarmos el minirouter para que funcione la conexión inalámbrica, el la subida y bajada de los servidores Tor a través de su demonio. Recordamos que reiniciamos desde la consola con el comando:

reboot

Luego de unos 30 segundos de iniciado y siempre que el router esté conectado por cable a un router con DHCP, el minirouter habrá establecido la conexión a la red Tor y habrá activado una red Wifi llamada "Caja Tor Peroncha".

Conectándonos a dicha red wifi tendremos acceso a todos los servicios ocultos y anónimos y las direcciones .onion estarán disponibles. Por supuesto, todos los compañeros que se conecten a ella podrán usarla desde cualquier navegador y sistema, sin necesidad de tener que configurar nada en sus equipos personales.

Recuerden que todo lo que hacemos es responsabilidad inherente nuestra, y que el anonimato no es excusa para ser gorila. Por otro lado no existe nada como el anonimato puro en la red sólo por emplear Tor. Asegúrense de no loguearse a ningún servicio en la red ni emplear ningún recurso "de la nube", emplear modo privado, activar TLS toda vez que ello sea posible, y escuchar a los Ratones Paranoicos.

Modo Failsafe 

Si quisiéramos resetear el router a su valor inicial de OpenWrt, debemos

  • Encender el minirouter TL-MR3020
  • Cuando el botón WPS comience a parpadear.
    • Si le instalamos el firmware OpenWrt Breaking Barrier, movemos la palanquita del router de una posición extrema (3G) a la otra (AP).
      Debemos hacerlo varias veces de forma repetida hasta que el botón WPS comienza a parpadear más rápido.
  • Ahora el dispositivo se encuentra en modo a prueba de fallos.
  • Podremos conectarnos al TL-MR3020 en su configuración "básica" desde nuestra PC, por medio de un cable ethernet, y loguearnos a su pantalla de control por medio del comando:
    telnet 192.168.1.1

miércoles, 9 de septiembre de 2015

¿Cómo puedo ejecutar programas en OpenWRT?

¡Trabajadores!

Como verdaderos apóstoles, hemos de instalar software libre en todos los dispositivos que tengamos a mano. Solo así nos aseguraremos de transitar la real senda de la Liberación.

He comentado ya del caso del router TP Link WR491ND y de su firmware de control alternativo y abierto OpenWRT. Gracias a el nuestro router dejará de ser un dispositivo bobo, y pasará a convertirse en un verdadero router peronista capaz de correr otras aplicaciones. OpenWRT es un firmware abierto, pensado para controlar enrutadores. Como tal, es un sistema operativo que convierte a nuestro router en una computadora de pequeñas dimensiones y potencia reducida, pero programable para conducir efectivamente una serie de tareas.

Por medio de OpenWRT y un router compatible, podremos crear un servidor de archivos, servidores pequeños de correo de status, controlar en horarios determinados dispositivos electrónicos a través de interfaces seriales, USB, o Ethernet.

Con un poco de dificultad, se pueden programar entonces dispositivos controlados a partir del router, como por ejemplo, aspersores que trabajen a horario, unidades de medición del clima que lean las condiciones de temperatura y humedad y la transmitan por internet, podremos controlar cámaras de seguridad, relays que enciendan luces, abran o cierren portones eléctricos, enciendan bombas o motores eléctricos, o con más software libre podremos convertir nuestro router en un dispositivo de transmisión de medios (fotos, audio e incluso video) para operar dentro de la red local, y muchso etcéteras

Sin embargo, no necesitamos tanta dificultad, aún así podremos desarrollar nuestras propias "aplicaciones caseras" por medio de código Ash. Dicho código comprende comandos y condicionales, de manera de poder realizar ciertas acciones útiles, con poco ingenio y habilidad.

Es importante si bien los guiones los almacenaremos dentro del directorio /root del router, los mismos han de concentrarse en operar dentro del directorio /tmp/ del router, ya que el mismo es la memoria RAM volátil. Esto es así pues los routers disponen de muy poco espacio físico (un chip EEPROM de 4 megabytes, y raramente más).

Para disponer nuestros scripts, crearemos dentro del router un directorio a tal efecto:

mkdir /root/scripts/
Por ejemplo, si nuestro proveedor nos da IP dinámica y quisiéramos saber cuáles nuestra dirección IP de salida actual para montar un servidor de juego o por cualquier motivo, podríamos crear un script que lo haga.

Para ello, hemos de utilizar siempre el básico editor Vi. Se trata de un editor mínimo incorporado dentro del router. Para editar texto debemos llamarlo con vi nombredelarchivo.

En este caso podriamos hacer:

vi /root/scripts/decimelaip

Presionamos i para entrar al modo edición, y le pegamos el siguiente código peronista:

#!/bin/sh
# Scropt decimelaip Informa la IP de salida.
rm -f /tmp/log/ipactual.log
wget -q http://ipecho.net/plain -O /tmp/log/ipactual.log
echo La direccion IP actual de salida a internet es:
echo '' >> /tmp/log/ipactual.log
cat /tmp/log/ipactual.log


Para guardar el archivo y abandonar el editor, debemos presionar Esc y escribir :wq seguido de Enter.

Ahora podremos darle permisos de ejecución con:

chmod +x /root/scripts/decimelaip

y ejecutarlo con:

sh ~/scripts/decimelaip
 
También podríamos configurar un script que revise por medio de un ping a google.com, para saber si hay conexión WAN (al cablemódem), y si no la encuentra, que reinicie el router. Este microprograma puede ser útil para una tarea de administración remota.

Para ello editaríamos el archivo:

vi /root/scripts/pingreset

Activamos el modo de edición con i y le pegamos el siguiente código:

#!/bin/sh
# Programa para probar la conexion o resetear.
if ping -c 1 google.com > /dev/null ; then
echo "Todo OK, el cliente funciona y no necesita reiniciarse"
pingfail=0
else
 pingfail=$(($pingfail+1))
echo $pingfail " ping fracasados"
if [ $pingfail -gt 10 ];
then
echo "mas de 10 ping a google fracasados. RESETEANDO EL ROUTER!!"
reboot
fi
fi


Luego guardamos y salimos con Esc +:wq, y le damos permisos de ejecución con:

chmod +x /root/scripts/pingreset

Podremos ejecutarlo con:

sh ~/scripts/pingreset

Un script que conviene tener en el directorio root de nuestro router es uno que active o desactive la red wifi. Para ello editamos:

vi ~/wifionoff

Se abrirá el editor Vi con el archivo en blanco. Presionamos i y le insertamos el siguiente código:

#!/bin/sh
# Crea un archivo con el registro de estado del Wifi (on u off)
# Si el wifi está on lo apaga, si está off lo enciende.

STATEFILE="/tmp/wifionoff.state"
 
if [ $# -eq 1 ]; then
  case $1 in
    "up"|"on")
      STATE=off
      ;;
    "down"|"off")
      STATE=on
      ;;
  esac
else
  if [ ! -e ${STATEFILE} ]; then
    STATE=on
  else
    . ${STATEFILE}
  fi
fi
if [ -z ${STATE} ]; then
  STATE=on
fi
 
if [ ${STATE} == "on" ]; then
  /sbin/wifi down
  STATE=off
else
  /sbin/wifi up
  STATE=on
fi
 
echo "STATE=${STATE}" > ${STATEFILE}


Una vez realizado esto, podremos darle permiso con:

chmod +x /root/wifionoff

Con este archivo creado, podremos ahora apagar o encender el wifi con dicho comando (siempre que estemos conectados por cable, claro está).

En vista de dicho archivo y si por algún motivo necesitásemos reiniciar solamente la red inalámbrica, pero queremos hacerlo estando conectados por wifi, podremos crear un script a tal efecto.

Para ello ingresamos

vi /root/scripts/resetearwifi

Y le pegamos el siguiente código:

#!/bin/sh
#Programa para resetear el wifi estando conectado por wifi
# requiere script wifionoff en /root/
cd /root/
./wifionoff && ./wifionoff


Lo guardamos y salimos con Esc + :wq, y le asignamos permisos de escritura con chmod + /root/scripts/resetearwifi.

En el caso de necesitar scripts puros para encender o apagar el wifi (por ejemplo, para utilizarlos a través de una orden cronometrada Cron, y activar o desactivar el wifi en determinadas horas del día), podremos utilizar Vi para incorporar dos archivos:

Un archivo /root/script/wifion que contenga el siguiente código:

#!/bin/sh
# Enciende la WLAN (sin detener el dispositivo de emision radio0)
wifi up


...y un archivo /root/script/wifioff que contenga el siguiente código:


#!/bin/sh
# Apaga la WLAN (sin detener el dispositivo de emision radio0)
wifi down



Es siempre útil contar con un script que nos presente el status del router. Para ello podremos crear con Vi un archivo /root/status e insertarle el código:

#!/bin/sh
# Programa que devuelve datos de estado del router
date
uptime
echo Detalle de las Conexiones del router
ifconfig
echo Direcciones IP cedidas por DHCP
cat /tmp/dhcp.leases
rm -f /tmp/log/ipactual.log
wget -q http://ipecho.net/plain -O /tmp/log/ipactual.log
echo '' >> /tmp/log/ipactual.log
echo La dirección IP actual de salida a internet es:
cat /tmp/log/ipactual.log


Guardamos el archivo con Esc + :wq y le damos permisos de ejecución con chmod +x /root/status.

Para ejecutarlo, podremos utilizar el comando ./status o sh /root/status.

Podremos crear otro programa de información aún mas detallado con facilidad. Por ejemplo, podríamos escribir un guion llamado /root/scripts/info con el siguiente contenido:

#scripts para detalles
echo INFORMACION DEL ROUTER - presione q para salir > /tmp/log/info
echo Dispositivo >> /tmp/log/info
cat /tmp/sysinfo/model >> /tmp/log/info
cat /proc/version >> /tmp/log/info
uname -mnrs >> /tmp/log/info
cd /tmp/
rm -f /tmp/log/ipactual.log
wget -q http://ipecho.net/plain -O /tmp/log/ipactual.log
echo '' >> /tmp/log/ipactual.log
echo La IP actual de salida a Internet es >> /tmp/log/info
cat /tmp/log/ipactual.log >> /tmp/log/info
echo INFORMACION DE LA CPU DEL ROUTER >> /tmp/log/info
cat /proc/cpuinfo >> /tmp/log/info

echo '' >> /tmp/log/info
echo ESTADO DE LA MEMORIA >> /tmp/log/info
cat /proc/meminfo >> /tmp/log/info

echo '' >> /tmp/log/info
echo MODULOS CARGADOS EN MEMORIA >> /tmp/log/info
cat /proc/modules >> /tmp/log/info

echo '' >> /tmp/log/info
echo DMESG DEL ROUTER >> /tmp/log/info
dmesg >> /tmp/log/info

echo '' >> /tmp/log/info
echo LOG INTERNO DEL APARATO >> /tmp/log/info
logread >> /tmp/log/info

echo '' >> /tmp/log/info
echo Generando archivo nuevo en tmp/log/info
cat /tmp/log/info | less
# Comentar para que no elimine el archivo al terminal el proceso:
rm /tmp/log/info


Con ello, al darle permisos de ejecución y ejecutar el script, nos devolverá una gran cantidad de información de status, en un paginador con le cual podremos movernos usando las flechas del cursor.
Para cerrar el paginador, debemos presionar q.

Red de invitados
En mi residencia de Puerta de Hierro dispongo de un único router que utilizo para mis quehaceres, pero en ocasiones debo montar el wifi para que mis invitados puedan utilizar sus dispositivos móviles. Es verdad que existen configuraciones específicas para el tema que nos aislan la red wifi de la red local, pero en mi caso no lo considero necesario de momento, por lo que simplemente dispongo una red wifi con una clave simple, diferente a la utilizada regularmente.

En tal caso, podremos preveer dos scripts que cambien la configuración de la red, y la activen. Cada uno de ellos depende de distintos archivos de parámetros generales.

En OpenWRT la red inalámbrica se configura a través del archivo /etc/config/wireless, el cual delimita las opciones de la red wifi, entre ellas el nombre de red (ssid) y la contraseña (key).

Para el funcionamiento adecuado crearé dos archivos de configuración. En el archivo /etc/config/wireless.normal indicaremos nuestros datos normales de la red, incluyendo su nombre de red y su contraseña. Por ejemplo, indicaré:

# configuracion de la red Wifi normal
config wifi-device 'radio0'
    option type 'mac80211'
    option hwmode '11ng'
    option path 'platform/ath9k'
    option disabled '0'
    option country 'AR'
    option txpower '20'
    option htmode 'HT40'
    option channel 'auto'

config wifi-iface
    option device 'radio0'
    option network 'lan'
    option mode 'ap'
    option ssid 'Wifi de Peron'
    option key 'eStA cLabe nO lA Bas A DeScUBrIr nI LoCO'
    option encryption 'psk2+ccmp'


En tanto, en el archivo /etc/config/wireless.invitado pondremos los datos que corresponderán a la red temporal para invitados:

# configuracion del Wifi para invitados
config wifi-device 'radio0'
    option type 'mac80211'
    option hwmode '11ng'
    option path 'platform/ath9k'
    option disabled '0'
    option country 'AR'
    option txpower '20'
    option htmode 'HT40'
    option channel 'auto'

config wifi-iface
    option device 'radio0'
    option network 'lan'
    option mode 'ap'
    option ssid 'Puerta de Hierro - Invitados'
    option key 'vivaperon'
    option encryption 'psk2+ccmp'
# Activarlo con el programa /root/scripts/confwifiinvitado
# Para volver a la wifi normal usar /root/scripts/wifinormal


Estos archivos de configuración no requieren permisos de ejecución.

Para poder activar la red Wifi de invitados o la red Wifi normal, debemos crear dos scripts y darles permisos de ejecución que las den de alta. En el archivo /root/scripts/confwifiinvitado ingresamos el siguiente código:

#!/bin/sh
#activa wifi invitado siguiendo el archivo /etc/config/wireless.invitado
cd /root
wifi down
rm -f /etc/config/wireless
cp /etc/config/wireless.invitado /etc/config/wireless
wifi up
echo Se activo la wifi de invitado!

Luego en el archivo /root/scripts/confwifinormal, le incorporamos el siguiente código:

#!/bin/sh
#activa wifi normal segun archivo /etc/config/wireless.normal
cd /root
wifi down
rm -f /etc/config/wireless
cp /etc/config/wireless.normal /etc/config/wireless
wifi up
echo Se reestablecio la wifi normal...


Tras editar ambos scripts, les otorgamos sus necesaarios permisos de ejecución con:

chmod +x /root/scripts/confwifiinvitado /root/scritps/confwifinormal:

Ahora, si ejecutamos el script confwifiinvitado, la red se llamara "Puerta de Hierro - Invitados" y la contraseña será "vivaperon". Y si ejecutamos confwifinormal, la red se llamará "Red de Peron" y la contraseña será la dificultosa "eStA cLabe nO lA Bas A DeScUBrIr nI LoCO".

viernes, 7 de agosto de 2015

¿Como puedo programar un botón de mi router con OpenWRT?

En la necesidad de modernizar diferentes industrias del país, Juan Perón invitó a un número de personalidades de la técnica, que estableciendo vínculos con la Argentina, pudieron mejorar los prospectos de la industria. De entre las enseñanzas, guardamos aquella de cómo programar los botones de nuestro router a través del firmware OpenWRT para darle nuevos usos.

(...)
Muchas veces me preguntaron porqué traje a los hombres de ciencia de un país derrotado a nuestro Vergel de Paz. Pero la respuesta era simple: los científicos Alemanes nos enseñaron los rudimentos de ciencia en la que nuestros hombres atrasaban, y nos permitieron afianzar la industria del país en un camino de grandeza como lo han tenido las Grandes Naciones del Tierra.


Todo lo que hemos aprendido ha sido bueno, y de lo que no hemos sacado rédito instantáneo, lo hemos hecho al tiempo. Así es como ha de lograrse un verdadero progreso. En ocasiones, nos hemos valido de la improvisación para encontrar un uso a la técnica y utillaje que siquiera sus creadores preveían.

La industria mecánica de Córdoba es un claro ejemplo, con su rastrojero iniciado a partir de utillaje aeronáutico y de circunstancias. Si este ejemplo puede encontrarse en el desarrollo de la industria pesada, cómo no va a haberlo en la telemática. Encontraremos ejemplos en lo que algo pensado para una cosa, termina siendo mejor aplicado para otra.

La mayoría de los enruteadores modernos disponen de un botón nomenclado como WPS. Dicho botón activa una funcionalidad telemática capaz de "asociar" un dispositivo Wifi a nuestra red local inalámbrica cifrada con contraseña sin necesidad de compartir la clave. Explicado de manera sencilla, al presionar el botón se dará inicio a una ventana de tiempo de dos minutos, durante el cual el router - en confianza - asociará a cualquier dispositivo Wifi en el que también se presione dicho botón. Una vez transcurrido los dos minutos, volverá a cifrarse y cerrarse la red inalámbrica.
La idea original estaba bien intencionada. Sin embargo, muchas cosas malas pueden hacerse en dos minutos, y si lo sabrá su madre. Nada impide que durante dicha ventana temporal, usuarios malévolos en las cercanías puedan asociarse a la red sin que tuviésemos maneras obvias de saberlo. Por lo tanto, la funcionalidad WPS - en lugar de hacer la vida más fácil al Pueblo - terminó perjudicándolo y llevándole inseguridad por partes iguales...

Pues bien, en tratados anteriores he relatado a la Masa que muchos routers (como por ejemplo, el TP-Link TL-WR941ND peronista) pueden ser dotados de un firmware libre que reemplaza al limitado programa interno original. He explicado como instalar dicho firmware libre OpenWRT en nuestro router y cómo configurarlo para hacer de él una potente máquina multifunción. ¡Lo hemos dicho! En vista de las mencionadas deficiencias con el sistema de asociación WPS, el firmware libre OpenWRT no usa esta característica, y ello significará que el botón WPS del router (nomenclado como "QSS" en los routers TP-Link) quedará "como cenicero de Pochoneta".

Sin embargo, gracias al Justicialismo y a nuestra doctrina de Software Libre, nos será bien posible utilizar el botón QSS para realizar otras acciones que nos plazcan, si sabemos configurarlo. Podremos programar el botón WPS/QSS para que nos sirva para apagar o encender el radioemisor de Wifi (y por lo tanto, de la red inalámbrica). Esto presenta algunas ventajas: podríamos dejar el router encendido 24x7 realizando tareas de enrutamiento por cable, servicio de correo, o un mini-servidor web, etc, pero decidir apagar el Wifi cuando no estamos en el hogar, o apagarlo de forma manual cuando nadie lo vaya a utilizar, o apagarlo automáticamente siguiendo un patrón de horarios.


Naturalmente que en primer lugar, debemos tener ya instalado y configurado OpenWRT en nuestro aparato (en este caso tomaré como referencia el TP-Link TL-WR941ND). Hemos de notar también que por la característica de esta tarea, nos convendrá conectarnos al router de manera cableada.

Acto seguido, será útil asegurarnos de que el botón QSS del router funciona, y conocer en particular cuál es su "nombre de hardware".

Para ello nos logueamos al router como se ha explicado en otros tratados (normalmente con ssh root@dirección_ip_del_router). Una vez dentro del router (el prompt podría indicar root@OpenWrt o similar) crearemos una carpeta donde irán las rutinas autoejecutables para los botones. Lo haremos ingresando en el router,:

mkdir -p /etc/hotplug.d/button

Ahora usaremos el editor peronista Vi para crear un archivo llamado buttons en dicho directorio, con el comando:

vi /etc/hotplug.d/button/buttons

Es importante conocer bien el funcionamiento del editor, para ser práctico a la hora de configurar el router. El editor Vi normalmente opera en modo revisión, por lo cual no podremos modificar ni agregar ningún texto. Para pasar al modo de inserción de texto hemos de presionar la tecla i. Solo entonces podremos escribir o pegar en la Terminal el texto que querramos. En este caso, hemos de pegar allí el siguiente código, pensado para evaluar el funcionamiento de los botones del router:

#!/bin/sh
# Script para que los botones reporten sus acciones.
logger el boton $BUTTON reporta accion $ACTION


Para guardar los cambios en el archivo recién editado en Vi, hemos de presionar Esc, y tipear el comando :wq que se encargará de grabar (w) y salir (q) del editor. Nos devolverá a la línea de comandos del router.

Conforme estemos en el prompt de nuestro enruteador, habremos de evaluar el botón correspondiente: en el caso del TP-Link TL-WR941ND presionamos el botón "QSS" que se encuentra en la derecha del panel frontal (es el único botón).
Hecho esto, en la terminal del router ejecutaremos el comando:

logread

...y nos devolverá un largo archivo, el cual al final debería indicarnos final algo como:

user.notice root: el boton wps reporta accion pressed
user.notice root: el boton wps reporta accion released


Esta información recabada es importante pues nos confirma el nombre de hardware del botón QSS, que en realidad es "wps", y los estadíos que puede tomar dicho botón de software: "pressed" (presionado) y "released" (soltado).

Sabiendo esto, agregaremos dos archivos nuevos para configurarlo. Unos es el archivo /etc/hotplug.d/button/00-button, que configura el funcionamiento general de los botones, y otro es el que especificará el funcionamiento particular el botón QSS. Para ello los agregamos con Vi:

vi /etc/hotplug.d/button/00-button

Una vez en el editor, presionamos i e insertamos el siguiente código:

#!/bin/sh
. /lib/functions.sh
do_button () {
        local button
        local action
        local handler
        local min
        local max
 
        config_get button $1 button
        config_get action $1 action
        config_get handler $1 handler
        config_get min $1 min
        config_get max $1 max
 
        [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
                [ -z "$min" -o -z "$max" ] && eval $handler
                [ -n "$min" -a -n "$max" ] && {
                        [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
                }
        }
}
 
config_load system
config_foreach do_button button

Guardamos los cambios y salimos de Vi con Esc + :wq.


Acto seguido, agregaremos la especificación de funcionamiento del botón QSS en el fichero configuración correspondiente, que es /etc/config/system. Para ello ingresamos el comando:

vi /etc/config/system

Las especificaciones de funcionamiento del botón QSS/WPS será la de apagar el emisor Wifi y la red inalámbrica al presionarlo brevemente (durante menos de un segundo). Si lo presionamos entre uno y cinco segundos, encenderá el Wifi y la red inalámbrica. Considerando esto, en Vi pasamos al modo inserción con la tecla i, y al final del archivo /etc/config/system, habremos de agregarle las siguientes lineas de configuración:

# Agregado al archivo /etc/config/system 
# para configurar el botón OSS/WPS del Router TP-Link
# Esto apaga el emisor Wifi y la red inalámbrica
# al presionar el boton QSS/WPS menos de 1 segundo.
config button
    option button 'wps'
    option action 'released'
    option handler 'uci set wireless.@wifi-device[0].disabled=1 && wifi'
    option min '0'
    option max '1'
 

# Esto enciende el emisor Wifi y la red inalámbrica
# si se presiona el boton QSS/WPS entre 1 y 5 segundos.
config button
    option button 'wps'
    option action 'released'
    option handler 'uci set wireless.@wifi-device[0].disabled=0 && wifi'
    option min '1'
    option max '5'



...guardamos los cambios y salimos del editor Vi con la consabida combinación de teclas Esc + :wq

Para probar los cambios, debemos reiniciar el router con:

reboot

Una vez que el router se reinicie, debemos presionar y soltar el botón QSS durante menos de un segundo, y se apagará el Wifi (podremos comprobarlo al comprobar el apagado de la luz "WLAN" del panel frontal del router. Para reencender el Wifi, debemos presionar el botón QSS entre 1 y 5 segundos (se encenderá la luz WLAN y podremos conectarnos inalámbricamente).

Configurar el encendido / apagado del Wifi a un horario determinado:

Hemos mencionado la potencia y versatilidad que nos permiten los scripts de Cron para activar o desactivar el Wifi en horarios particulares. Por ejemplo, supongamos que según nuestros horarios de trabajo y sueño nos conviene que el Wifi se apague automáticamente a la 23:30PM y se encienda a diana, a las 6:30 AM durante los días de semana.

Para ello será necesario crear dos scripts ejecutables, uno para encender el Wifi y otro para apagarlo, y programar el cronómetro del router (cron). Todo ello lo haremos también desde la terminal del router. Una vez logueados en él, podremos ingresar:

vi /root/wifioff

...presionamos i y le pegamos el siguiente código

#!/bin/sh
# Apaga la WLAN (sin detener el dispositivo de emision radio0)
wifi down


Una vez guardado el fichero y salido del editor (Esc + :wq), utilizaremos el siguiente comando para crear el archivo de encendido:


vi /root/wifion

...y nuevamente usamos i para pegarle su código correspondiente que figura a continuación:

#!/bin/sh
# Enciende la WLAN (sin detener el dispositivo de emision radio0)
wifi on


Guardamos y salimos con Esc + :wq


Conforme hayamos ingresado ambos archivos, nos será imprescindible otorgarles permisos de ejecución para que dichos guiones puedan utilizarse. Lo haremos con el comando:

chmod +x wifionoff wifion wifioff

Ahora podremos programar el cronómetro de ejecución (cron). Esto se hace por medio de una tabla de texto (crontab), modificando el archivo /etc/crontabs/root. Para hacer la tabla crontab editamos el archivo referenciado usando Vi, con el comando:

vi /etc/crontabs/root

...presionamos i para configurar al siguiente texto al final del archivo:

# Ejecuta este script wifioff todos los dias
# a las 23:30pm
30 23 * * * /root/wifioff
# ejecuta el script wifion a las 06:30am
# a las 6:30am

30 06 * * * /root/wifion

...guardamos la tabla de cron recién creada con Esc + :wq y al volver al prompt del router, debemos ejecutar el comando reboot para que surta efecto. Veremos que con ello el Wifi se apagará automáticamente a las 23:30 y se encenderá a las 06:30. Si necesitásemos encenderlo durante ese horario, bien podríamos presionar el botón del aparato durante 1 y 5 segundos para activarlo.


Podría ser que en determinadas ocasiones necesitemos un script distinto, que  si el Wifi está encendido lo apague, y si está apagado, lo encienda. Para ello, debemos ingresar el siguiente script:

vi /root/wifionoff

y le pegamos el siguiente código:

#!/bin/sh
STATEFILE="/tmp/wifionoff.state"

if [ $# -eq 1 ]; then
  case $1 in
    "up"|"on")
      STATE=off
      ;;
    "down"|"off")
      STATE=on
      ;;
  esac
else
  if [ ! -e ${STATEFILE} ]; then
    STATE=on
  else
    . ${STATEFILE}
  fi
fi
if [ -z ${STATE} ]; then
  STATE=on
fi

if [ ${STATE} == "on" ]; then
  /sbin/wifi down
  STATE=off
else
  /sbin/wifi up
  STATE=on
fi

echo "STATE=${STATE}" > ${STATEFILE}


Guardamos y salimos del editor Vi con Esc + :wq.