ARM es una herramienta de linea de comandos que permite monitorizar el comportamiento y los eventos ocurridos en TOR, funcionando de una forma muy similar a como lo hace el comando “top” en distribuciones basadas en Linux. Esta aplicación se encuentra escrita en python y no necesita un proceso de construcción/compilación e instalación previo siendo muy sencillo su uso. Para descargar esta herramienta se puede utilizar “APT” en distribuciones basadas en Debian, o directamente el “tarball” desde aquí: http://www.atagar.com/arm/download.php posteriormente se puede utilizar el script “setup” para instalar ARM

>python setup.py –help-commands

Standard commands:

build build everything needed to install

build_py «build» pure Python modules (copy to build directory)

build_ext build C/C++ extensions (compile/link to build directory)

build_clib build C/C++ libraries used by Python extensions

build_scripts «build» scripts (copy and fixup #! line)

clean clean up temporary files from ‘build’ command

install install everything from build directory

install_lib install all Python modules (extensions and pure Python)

install_headers install C/C++ header files

install_scripts install scripts (Python or otherwise)

install_data install data files

sdist create a source distribution (tarball, zip file, etc.)

register register the distribution with the Python package index

bdist create a built (binary) distribution

bdist_dumb create a «dumb» built distribution

bdist_rpm create an RPM distribution

bdist_wininst create an executable installer for MS Windows

upload upload binary package to PyPI

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] …]

or: setup.py –help [cmd1 cmd2 …]

or: setup.py –help-commands

or: setup.py cmd –help

Se procede a instalar la aplicación en el sistema local.

>python setup.py install

running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-2.6

creating build/lib.linux-x86_64-2.6/arm

……..

running install_egg_info

Writing /usr/share/arm-1.4.3.egg-info

Removing /tmp/tmpYcc0vr/arm.1.gz

Removing /usr/share/arm-1.4.3.egg-info

La instalación se lleva a cabo en los directorios compartidos del sistema (/usr/share/arm/) ahora es posible comenzar a utilizar ARM simplemente ejecutando el comando “arm” desde consola, de este modo de podrá ver información del servicio TOR correspondiente a:

  • Figerprint del servicio
  • Nickname del servicio
  • Número de bytes de subida y de bajada
  • Porcentaje de Memoria utilizada por TOR
  • Porcentaje de CPU utilizado por TOR
  • PID del servicio TOR
  • Tiempo que lleva activo el servicio
  • Reporte en tiempo real
  • Menú de opciones muy completo para controla el servicio de TOR y las conexiones establecidas.

USO DE ARM

Antes de comenzar a utilizar ARM, es necesario que el fichero de configuración de TOR (torrc) tenga la opción ControlPort, esto es obligatorio ya que esta opción permite que clientes externos (como en este caso ARM)  establecer una conexión con el servicio y posteriormente consultar sus propiedades y controlar su comportamiento. Además se recomienda definir la opción HashedControlPassword o CookieAuthentication con el fin de no permitir que cualquier cliente se pueda conectar al servicio de TOR, evidentemente es mejor evitar que cualquier usuario pueda conectarse sin ningún tipo de restricción al servicio de TOR. En el caso de que estas opciones se declaren en el fichero de configuración de TOR, cuando se inicie ARM, lo primero que solicitará TOR será la contraseña de acceso al servicio (El puerto por defecto es el 9051).

Las opciones disponibles en ARM son:

>arm -h

Usage arm [OPTION]

Terminal status monitor for Tor relays.

-g, –gui launch the Gtk+ interface

-i, –interface [ADDRESS:]PORT change control interface from 127.0.0.1:9051

-c, –config CONFIG_PATH loaded configuration options, CONFIG_PATH

defaults to: /root/.arm/armrc

-d, –debug writes all arm logs to /root/.arm/log

-b, –blind disable connection lookups

-e, –event EVENT_FLAGS event types in message log (default: N3)

d DEBUG a ADDRMAP k DESCCHANGED s STREAM

i INFO f AUTHDIR_NEWDESCS g GUARD r STREAM_BW

n NOTICE h BUILDTIMEOUT_SET l NEWCONSENSUS t STATUS_CLIENT

w WARN b BW m NEWDESC u STATUS_GENERAL

e ERR c CIRC p NS v STATUS_SERVER

j CLIENTS_SEEN q ORCONN

DINWE tor runlevel+ A All Events

12345 arm runlevel+ X No Events

67890 torctl runlevel+ U Unknown Events

-v, –version provides version information

-h, –help presents this help

Example:

arm -b -i 1643 hide connection data, attaching to control port 1643

arm -e we -c /tmp/cfg use this configuration file with ‘WARN’/’ERR’ events

Como puede apreciarse, el valor por defecto de la interfaz de control es 127.0.0.1:9051, sin embargo si el servicio de TOR se encuentra en ejecución en un puerto distinto (o en una máquina distinta) es necesario establecer este valor con la opción “-i”.

Ahora, el funcionamiento de ARM es casi por completo interactivo y muchas de las opciones que definen el comportamiento de la herramienta pueden ser cambiadas posteriormente desde la propia herramienta en ejecución, a continuación se indica el funcionamiento de ARM utilizando algunas capturas de pantalla, principalmente porque “una imagen vale más que mil palabras”

>arm -d -e ani

Controller password:

En el panel superior de la interfaz se puede apreciar datos relacionados con el relay y las políticas asociadas a este, así como también se puede apreciar información general como la versión de TOR, el tiempo que lleva en ejecución, la carga de la maquina y el fingerprint del servicio. En la zona central se puede apreciar el trafico de subida y de bajada y finalmente en la parte inferior de la pantalla se pueden ver las trazas relacionadas con los eventos ADDMAP (a), NOTICE (n) y INFO (i) estos valores representan la opción “-e ani” del comando ejecutado.

Por otro lado, se pueden controlar todos los eventos y demás con las opciones que aparecen justo por encima de los reportes en tiempo real de subida y bajada

(page 1 / 4 – m: menu, p: pause, h: page help, q: quit)

Los valores se entienden fácilmente, para ver la ayuda, presionar la tecla “h”

Allí aparecen las opciones disponibles en la interfaz, posteriormente, el Menú de ARM permite personalizar el comportamiento general la presentación que tendrá ARM.

Las opciones que se incluyen en este menú se indican a continuación:
Actions:

Close Menu: Cierra el Menú.

New Identity: Crea un nuevo circuito para cambiar la dirección de origen de las peticiones.

Stop TOR: Detiene TOR

Reset TOR: Resetea TOR

Setup Wizard: Asistente encargado de configurar el servicio de TOR, habilitando opciones muy similares a las disponibles en Vidalia, tales como crear un Internal Relay, Exit Relay, Bridge y Client.

Pause: Pausar el gráfico en tiempo real y los logs enseñados en ARM

Exit: Salir del Programa.

Posteriormente en el menú “View” se incluyen reportes y opciones muy interesantes

View → Grap

Valor por defecto para enseñar el trafico de subida y bajada en tiempo real

View → Connections

Reporte en tiempo real de las conexiones que se han establecido en la red TOR.

View → Configuration

Interesante opción que permite cambiar “en caliente” las opciones de configuración de TOR, incluyendo una descripción de cada una de ellas y permitiendo su edición.

View → Torrc

Incluye el fichero de configuración utilizado para la ejecución de TOR

View → Color

Permite establecer el color de la interfaz de ARM

Grap → None

No se incluye ningún reporte en la interfaz de ARM

Grap → Bandwidth

Reporte por defecto.

Grap → Connections

Reporte sobre las conexiones de entrada y salida

Grap → Resources

Reporte sobre el uso de CPU y Memoria

Grap → Resize, Grap → Interval, Grap → Bounds

Indica el tamaño, la frecuencia y los limites del reporte respectivamente

Log → Events

Enseña los tipos de eventos que pueden ser activados en ARM para mas o menos trazas.

Log → Snapshots, Log → Clear, Log → Hide Duplicates, Log → Filter

Toma capturas de pantalla, limpia los logs, Oculta los duplicados y permite filtrar por expresiones regulares.

Finalmente, ARM tiene una interfaz visual un poco mas “refinada” utilizando la opción “-g” o “–gui” que utiliza GTK para cargar los elementos visuales, no obstante contiene las mismas opciones que se han explicado en los párrafos anteriores, el único cambio es meramente visual.