Вы находитесь на странице: 1из 26

Droidwall a fondo. Tutorial para el cortafuegos Droidwall 1.5.

7
Publicado el 20/07/2012de loquehice

Para disfrutar de esta estupenda aplicacin open source de Rodrigo Zechin Rosauro (un
desarrollador de So Paulo (Brasil) al que le estoy muy agradecido por su esfuerzo
desinteresado) me fue necesario compilar y flashear el kernel, pero ha valido la pena. En mi
Samsung Galaxy Y Pro B5510 sala el error no chains/target/match by that name que pude
solucionar como detallo en esta otra entrada.
He tratado de hacer un tutorial lo ms completo posible para animar a que cada vez ms gente
utilice el Droidwall. Sern bienvenidas las aportaciones, correcciones y sugerencias en los
comentarios.
Contenido
1.Listadodeaplicaciones
2.Modosdefuncionamiento
3.Opcionesdelmen
4.Aadirelwidget
5.LocalizacindeDroidwall
6.Formadetrabajo
7.Lasreglasdeiptables
8.Elscript"droidwall.sh"
9.Elestadoinactivo
10.Customscripts.Aadirreglaspersonalizadas
11.ExportarelLogaunfichero
12.Algunosproblemasquepuedensurgir
13.Palabrasfinales
14.Enlaces

1. El listado de aplicaciones
El Droidwall es un cortafuegos que utiliza el iptables de linux para filtrar los paquetes y
necesita tener acceso root. Muestra un listado con las aplicaciones, y hace posible de manera
muy sencilla que podamos seleccionar qu aplicaciones pueden salir y cuales no. Adems nos

da la facultad de escoger por qu interfaz le permitimos la salida: wifi o 3G (esta expresin


engloba los interfaces 2G, 3G, 4G, etc).

A la izquierda de cada fila aparece, cuando lo hay, el icono de cada aplicacin. A continuacin
estn dos columnas de casillas en las que marcar cuando damos permiso a una aplicacin (wifi
y 3G). El listado est compuesto por todas las aplicaciones instaladas que tienen permiso para
acceder a internet (hasta la versin 1.3.7 las mostraba todas), y tambin por lo que su creador
ha llamado aplicaciones especiales, que son las siguientes:
Any application: marcar esta opcin es lo mismo que marcar todas las aplicaciones una a
una, pero tiene la ventaja de que emplea una sola regla en iptables haciendo ms rpida la
generacin de reglas y el filtrado de paquetes.
Linux Kernel: desde el kernel tambin puede haber accesos a la red, como estos intentos de
conexin a direcciones ip de la red de google:

Root : marca de una sola vez todas las aplicaciones que estn siendo ejecutadas con permisos
de root.
Media server: para reproducir vdeos desde la red. Si no est marcada no se pueden ver los
vdeos de youtube.

VPN networking: conexines a una red privada virtual.


Linux shell (uid:2000): para establecer conexiones adb sobre wifi .
En el listado de aplicaciones que muestra Droidwall aparecen primero las que tienen alguna
casilla marcada, y a continuacin todas las dems por orden alfabtico.
2. Modos de funcionamiento
Pulsando en la zona de arriba encima del listado de aplicaciones podemos elegir el criterio a
seguir para generar las reglas en iptables.

lista blanca: permitir salida a red a las aplicaciones seleccionadas


lista negra: bloquear salida a red a las aplicaciones seleccionadas
Para mi gusto da ms tranquilidad usar el modo lista blanca. As nos aseguramos que slo
tendrn acceso al exterior las aplicaciones a las que se lo permitamos expresamente. La idea es
partir de todo cerrado e ir permitiendo lo que vamos necesitando:
si necesitamos enviar sms, le permitimos la salida por 3G a la apliacin de mensajera que
utilicemos.
si queremos ver vdeos desde la aplicacin youtube, le permitimos la salida a dicha aplicacin
(para las bsquedas) y tambin a otra llamada Media Server (para reproducir los vdeos)

3. Opciones del men


Al pulsar el botn men nos aparecen estas opciones:

Estado del firewall


Por un error en la traduccin al espaol las cadenas de ambos
estados se han cambiado. Cuando est en verde est activo (aunque ponga Firewall inactivo y
viceversa)
En el cdigo fuente se puede apreciar este error de traduccin:

El estado del cortafuegos nada ms instalar Droidwall es inactivo. No era as inicialmente,


pero haba usuarios que lo instalaban y se olvidaban de aplicar las reglas, quedando el
cortafuegos en estado activo pero sin reglas de filtrado.
Estado del Log

Cuando el Log est activo se aaden a las reglas del cortafuegos las que
permite loguear los paquetes rechazados. Al dejarlo inactivo se suprimen dichas reglas.
La posibilidad de ver el Log se aadi en la versin 1.4.2 y fue un avance muy importante,
condicionado eso s por la existencia en el kernel del mdulo que aade el LOG target.
Aplicar reglas
Al pulsar este botn Droidwall da instrucciones a iptables para que genere y aplique las reglas.
Como esto requiere acceso al kernel el cortafuegos necesita permisos de superusuario (de ah la
necesidad de tener el telfono rooteado) y aparece el siguiente mensaje del sistema operativo:

la ruta de la parte final del texto es el lugar de la memoria interna donde se encuentra el script
que utiliza Droidwall para generar las reglas, cuyo nombre es droidwall.sh. Ms adelante
hablaremos de l.

Quedan unas cuantas opciones del men que el desarrollador ha incluido en el


botnMs por falta de espacio.

mostrar log: muestra para cada aplicacin informacin sobre los paquetes interceptados.
En el Log se detallan los intentos de conexin por parte de aplicaciones que no tienen la salida
a red permitida, como en este ejemplo:

La informacin proporcionada es: aplicacin que realiza el intento de conexin, uid de la


aplicacin, nmero de paquetes interceptados y direccin ip de destino.
En caso de que el Log est vaco sale el mensaje

mostrar reglas: aqu se pueden ver las reglas generadas en


iptables

borrar log: el Log de droidwall se almacena en la memoria interna y con esta opcin lo
borramos.
definir contrasea: para el que quiera acceder a Droidwall de forma segura

definir script personalizado: los usuarios con conocimientos de iptables pueden hacer su
propio script. Ms adelante veremos cmo.
4. Aadir el widget
En la versin 1.4.0 se incluy un widget para poder cambiar entre los estados activo/inactivo
directamente desde el home. Para aadir el widget de Droidwall, desde home pulsar un par de
segundos en la pantalla y aparece el men de aadir a pantalla de inicio, seleccionar
Widgets y ya est.
5. Localizacin de Droidwall
Los ficheros de Droidwall se localizan en la siguiente ruta de nuestro telfono correspondiente
a la particin /data de la memoria interna:
/data/data/com.googlecode.droidwall/
Aqu se almacena la estructura de directorios de la aplicacin, consistente en tres carpetas

En app_bin se encuentran tres ficheros:


busybox_g1: desde la versin 1.4.2 se incluye un binario de busybox, que incluye muchas
herramientas de Unix, algunas de las cuales necesita Droidwall.
droidwall.sh: es un script que se genera cada vez que se van a actualizar las reglas de
iptables. Una vez generado se ejecuta para que iptables cree las reglas.
iptables_armv5: es el binario de iptables compilado para la arquitectura ARM que necesita

Droidwall. Desde la versin 1.5.2 se incluye este binario cuya versin de iptables es la 1.4.10. El
binario iptables que trae el kernel (/system/bin/iptables) en los Gingerbread es la 1.3.7 y no
sirve para Droidwall. Aunque inicialmente Droidwall utilizaba el iptables del sistema, el autor
compil un kernel ms actualizado y lo incluy desde la versin 1.4.0 en la aplicacin para que
se pudiese utilizar desde ms modelos de telfono.
6. Forma de trabajo
Droidwall no est permanentemente activo como los antivirus u otros cortafuegos, ya que es
slo un front-end para iptables/netfilter. El trabajo de interceptar los paquetes lo hace netfilter
desde el kernel de linux.

La intencin de su creador fue que Droidwall no tuviera que estar residente en memoria
constantemente corriendo como un servicio todo el tiempo, sino que se activase solamente ante
determinados eventos para luego volverse a cerrar. Esta decisin tiene sus consecuencias,
como que desde Droidwall no se pueda ir almacenando el Log entero en un fichero.
Los eventos que provocan la activacin de Droidwal (listados desde la aplicacin Autostarts)
son:

Vamos a ver qu es lo que pasa cuando se produce cada uno de estos eventos.
After Startup: Si tenemos activado el cortafuegos, el Droidwall se ejecuta cada vez que se
encienda el telfono, apareciendo el mensaje del sistema que avisa de que se le han concedido
permisos de superusuario. Simplemente ejecuta el script almacenado en la ruta
/data/data/com.googlecode.droidwall/app_bin/droidwall.sh, que se encarga de mandar a
iptables que genere las reglas para que netfilter pueda hacer el filtrado de paquetes.

A continuacin Droidwall se
cierra y queda actuando netfilter desde el kernel.
Application installed: este evento ocurre cada vez que instalamos una aplicacin. En ese caso
Droidwall debe activarse, incluirla en el script y ejecutarlo para que iptables genere las nuevas
reglas . Si est trabajando en modo lista blanca la aplicacin tendr por defecto denegada la
salida a red. En modo lista negra no lo he probado.
Cuando entramos en Droidwall nos muestra en primer lugar las aplicaciones instaladas desde
la ltima vez que entramos, para que podamos elegir si queremos marcar alguna de las casillas
sin tener que buscar por el listado. En segundo lugar muestra las que tienen alguna casilla
marcada, y por ltimo todas las dems por orden alfabtico.
Application removed: despus de desinstalar una aplicacin tambin hay que actualizar las
regas de la misma manera que en el caso anterior, eliminando de ellas si es necesario la
aplicacin que acabamos de desinstalar.
Widget updating: Droidwall viene con un widget para que se pueda cambiar el estado del
cortafuegos de actuvo a inactivo desde el home. Este evento se produce cada vez que el usuario
utiliza el widget.
En este esquema vemos de manera grfica el funcionamiento de Droidwall activandose su
proceso com.googlecode.droidwall ante ciertos eventos, as como la existencia o no de las
reglas en iptables segn el estado del cortafuegos:

7. Las reglas de iptables

Para ver realmente cuales son las reglas con las que Droidwall configura en nuestro telfono es
necesario instalar primero un emulador de terminal, como por ejemplo este, llamado Android
Terminal Emulator de Jack Palevich (ver web del proyecto)

y teclear los siguientes comandos:


su
/data/data/com.googlecode.droidwall/app_bin/iptables_armv5Lvn

El resultado es algo parecido a esto:

Para poder interpretar las reglas conviene tener una idea de cmo funciona iptables. Hay
muchos tutoriales sobre iptables. Estos dos estn muy bien.
IPTABLES. Manual prctico de Pello Xabier Altadill Izura
Tutorial de IPtables de Oskar Andreasson
En este esquema se muestra un poco de como funcionan las cadenas en iptables

Dentro de las cadenas se colocan las reglas de filtrado de paquetes.


De todas formas no hace falta estudiarse a fondo los tutoriales. La forma en que Droidwall
configura las reglas se puede ver con un ejemplo.
En un telfono con Droidwall instalado y con las reglas aplicadas por ejemplo para rechazar el
trfico 3G y permitir slo algunas aplicaciones por wifi, lo que aparecera al listar las reglas
sera esto:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target

prot opt in

out

source

destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target

prot opt in

out

source

destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target
0

prot opt in

0 droidwall all *

out

source

0.0.0.0/0

destination
0.0.0.0/0

Chain droidwall (1 references)


pkts bytes target

prot opt in
udp *

out
*

source

0.0.0.0/0

destination

0 RETURN

0.0.0.0/0

0 droidwall-3g all *

rmnet+ 0.0.0.0/0

0 droidwall-3g all *

pdp+ 0.0.0.0/0

0.0.0.0/0

0 droidwall-3g all *

ppp+ 0.0.0.0/0

0.0.0.0/0

0 droidwall-3g all *

uwbr+ 0.0.0.0/0

0.0.0.0/0

0.0.0.0/0

udp dpt:53

0 droidwall-3g all *

wimax+ 0.0.0.0/0

0 droidwall-3g all *

vsnet+ 0.0.0.0/0

0 droidwall-3g all *

ccmni+ 0.0.0.0/0

0 droidwall-3g all *

usb+ 0.0.0.0/0

0 droidwall-wifi all *

tiwlan+ 0.0.0.0/0

0 droidwall-wifi all *

wlan+ 0.0.0.0/0

0 droidwall-wifi all *

eth+ 0.0.0.0/0

0.0.0.0/0

0 droidwall-wifi all *

ra+

0.0.0.0/0

0.0.0.0/0

0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

Chain droidwall-3g (8 references)


pkts bytes target
0

prot opt in

out

0 droidwall-reject all *

source

destination

0.0.0.0/0

0.0.0.0/0

Chain droidwall-reject (2 references)


pkts bytes target
0

0 LOG

0 REJECT

prot opt in

all *
all *

out

source

0.0.0.0/0
*

destination
0.0.0.0/0

0.0.0.0/0

LOG flags 8 level 4 prefix `[DROIDWALL]

0.0.0.0/0

reject-with icmp-port-unreachable

Chain droidwall-wifi (4 references)


pkts bytes target

prot opt in

out

source

destination

0 RETURN

all *

0.0.0.0/0

0.0.0.0/0

owner UID match 1014

0 RETURN

all *

0.0.0.0/0

0.0.0.0/0

owner UID match 1010

0 RETURN

all *

0.0.0.0/0

0.0.0.0/0

owner UID match 10027

0 RETURN

all *

0.0.0.0/0

0.0.0.0/0

owner UID match 10063

0 droidwall-reject all *

0.0.0.0/0

0.0.0.0/0

.
NOTA: las dos reglas que estn en color rojo existen solamente si el LOG de Droidwall est
puesto en estado activo. Se borran cuando pulsamos para desactivar el Log y se crean
cuando pulsamos activar el Log.
En primer lugar est la poltica por defecto para las cadenas INPUT, FORWARD y OUTPUT
que en los tres casos es ACCEPT (tambin podra ser DROP)
En la cadena OUTPUT hay una regla que manda todo el trfico a otra subcadena creada por el
cortafuegos, llamada droidwall. Esto quiere decir que todo el trfico de salida se encamina a
dicha cadena en primer lugar.
En la cadena droidwall el trfico se manda a otras subcadenas segn el interfaz de salida,
excepto el trfico UDP destinado al puerto 53, que se supone va destinado al DNS y se le aplica
(con el RETURN) la poltica por defecto de la cadena OUTPUT que en este caso es ACCEPT.
Esta regla (en rojo) slo se crea cuando lo necesita el Log.

El trfico destinado a cualquier interfaz que sea por wifi se encamina a la cadenadroidwallwifi y el trfico destinado a la red mvil a la cadena droidwall-3g.
En la cadena droidwall-3g todo el trfico se enva a la cadena droidwall-reject, que es donde se
va a tratar todo el trfico rechazado, envindolo al Log antes de rechazarlo para poder
analizarlo posteriormente. La regla que est en rojo es la que hace que se genere un Log con los
paquetes rechazados, y se crea siempre que est el Log activo.
En la cadena droidwall-wifi estn las reglas con las aplicaciones permitidas.
Las dos primeras lneas las aade siempre droidwall para asegurarse que tengan acceso a red
el DHCP (uid 1014) que nos permite recibir una direccin ip, y la conexin wifi (uid 1010). Los
uid de nuestras aplicaciones estarn a partir del 10000 (cinco cifras), que seran las lneas
tercera y cuarta. En el ejemplo tiene las UID 10027 y 10063.
Vemos que lo que hace Droidwall es aadir dentro de la cadena OUTPUT una serie de
subcadenas donde colocar sus reglas:

La idea de utilizar estas subcadenas personalizadas se puso en prctica en la versin 1.4.0 para
evitar conflictos con otras aplicaciones que tambin utilizan iptables.
Si lo que queremos es exportar las reglas a un fichero valdra este comando:
su>(ojo,estecomandosoloesnecesarioejecutarlounavezencada
sesin)
/data/data/com.googlecode.droidwall/app_bin/iptables_armv5Lvn>
/mnt/sdcard/reglas.txt

8. El script droidwall.sh
Cada vez que Droidwall necesita que iptables genere las reglas para netfilter lo que hace es
ejecutar un script situado en:
/data/data/com.googlecode.droidwall/app_bin/droidwall.sh

En primer lugar busca el binario de busybox (el fichero busybox_g1), ya que necesita las
utilidades grep y echo. Si no encuentra grep nos dar un error (The grep command is
required. DroidWall will not work.), ya que esta herramienta es fundamental para Droidwall.
A continuacin busca el binario que contiene a iptables (el fichero iptables_armv5) y una vez
encontrado borra las reglas preexistentes (slo en las cadenas pertenecientes a Droidwall) y
ejecuta los comandos para crear las nuevas reglas.
El script que genera las reglas del ejemplo del apartado anterior lo puedes encontrar eneste
enlace.
El droidwall.sh se vuelve a crear cada vez que se actualizan las reglas desde Droidwall: al inicio,
al poner el cortafuegos en estado activo, al pulsar el botn Aplicar Reglas, y tambin si es
necesario despus de instalar o desinstalar aplicaciones.
9. El estado inactivo
Qu ocurre cuando pasamos Droidwall a estado inactivo? Para entenderlo veamos primero
cuales son las reglas que quedan en iptables al desactivar el cortafuegos. Primero entramos en
Droidwall y lo desactivamos. Nos salimos y entramos en el Terminal Emulator como hicimos
ms arriba en el apartado Las reglas de iptables, e introducimos los comandos vistos para
listar las reglas. Que sale? Pues esto:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target

prot opt in

out

source

destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target

prot opt in

out

source

destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)


pkts bytes target
0

prot opt in

0 droidwall all *

out

source

0.0.0.0/0

destination
0.0.0.0/0

Chain droidwall (1 references)


pkts bytes target

prot opt in

out

source

destination

source

destination

Chain droidwall-3g (0 references)


pkts bytes target

prot opt in

out

Chain droidwall-reject (0 references)


pkts bytes target

prot opt in

out

source

destination

source

destination

Chain droidwall-wifi (0 references)


pkts bytes target

prot opt in

out

.
Son las mismas cadenas que antes pero se les han borrado las reglas. En la prctica es como si
estuviesen solamente las tres cadenas INPUT, FORWARD y OUTPUT con sus polticas por

defecto ACCEPT. No hay restricciones de trfico. Sin embargo aunque se han borrado las
reglas, ha quedado intacta la estructura de subcadenas de Droidwall.
Es importante entender que al dejar inactivo el cortafuegos estamos borrando todas las reglas
existentes en las subcadenas de Droidwall. Las cadenas INPUT, FORWARD y OUTPUT no las
toca.
10. Custom scripts. Aadir reglas personalizadas
En la versin 1.5.3 de Droidwall su autor Rodrigo Zechin implement una peticin de algunos
de los usuarios que solicitaban que se pudieran personalizar las reglas. Aadi la
opcin Definir script personalizado (custom script), desde la que es posible cambiar la ruta
y nombre del script que Droidwall va a ejecutar cada vez que necesite actualizar las reglas. Es
decir, creamos un nuevo script, lo colocamos en el telfono y le decimos a Droidwall que lo
ejecute siempre en lugar del droidwall.sh.
Al pinchar en dicha opcin, aparece un formulario con dos cuadros de texto.
* En el primero debemos meter la nueva ruta de la siguiente manera: un punto . seguido de
un espacio y a continuacin la ruta a nuestro script, como por ejemplo:

Y se pulsa el botn aceptar de abajo. Las reglas anteriores (slo las contenidas en las
subcadenas de Droidwall) sern borradas antes de aplicar las del nuevo script. A partir de este
momento nuestro script ser ejecutado en todos los casos en que antes se ejecutaba
eldroidwall.sh. Tambin se posible meter varias lneas con el mismo formato indicando
distintos scripts que deben ejecutarse uno a continuacin del otro. En caso de que se quiera
volver a trabajar con el droidwall.sh se dejara el cuadro de texto en blanco y se le dara a
aceptar.

La ventaja de utilizar un script personalizado es poder aprovechar las capacidades de iptables


con toda su potencia, aadiendo posibilidades de filtrado como puertos de origen y destino,
direcciones ip, tipo de protocolo, estado de la conexin, etc.
* El segundo cuadro de texto se refiere a otra opcin llamada Custom shutdown
script(script de apagado) consistente en definir otro script para que se ejecute cuando
Droidwall pase al estado desactivado.

El shutdown script es necesario en caso de que el custom script aada reglas en cadenas
distintas de las de Droidwall. Supongamos que nuestro custom script aadimos una regla a la
cadena OUTPUT. Cada vez que sea ejecutado, aadir la misma regla duplicndola en iptables
una y otra vez. Para evitar esto es posible borrar las reglas necesarias desde el shutdown script.
Cada vez que pasemos el cortafuegos a estado inactivo se borrarn primero todas las reglas
contenidas en las subcadenas de Droidwall, y a continuacin se borrarn las que definamos
desde el shutdown script.
Tanto en el custom script como el shutdown script las reglas deben escribirse como cadenas de
texto. Pueden ir dentro de un fichero .sh referenciado como se indic ms arriba, o dentro de
sus respectivos cuadros de texto, sin necesidad de colocar los ficheros de script en el telfono.
Iptables debe invocarse mediante la variable $IPTABLES, como en el siguiente ejemplo:
#bloquearlanavegacinporinternet
$IPTABLESA"droidwall"pTCPdestinationport80j"droidwall
reject"

Cuando estn cubiertos ambos o alguno de los cuadros de texto del formulario de script
personalizado, pulsaremos el boton Aceptar.

Esta nueva posibilidad de scripts personalizados conlleva sin embargo ciertos riesgos ya que
nuestros scripts siempre sern ejecutados como root. Por esa razn no debemos colocarlos
en /sdcard ya que cualquier aplicacin podra modificar las reglas.
La opcin de custom script est muy bien explicada por el autor (en ingles) con unos cuantos
ejemplos de reglas en esta pgina.
11. Exportar el Log a un fichero
Cuando pulsamos la opcin de Mostrar Log, lo que hace Droidwall es ejecutar el comando:
dmesg|$GREPDROIDWALL

dmseg saca por la salida estandar (la pantalla) los mensajes del kernel y grep filtra los que
contengan la palabra DROIDWALL. Acordmonos ahora de las reglas incluidas en la cadena
droidwall-reject:
Chain droidwall-reject (2 references)
pkts bytes target
0

0 LOG

0 REJECT

prot opt in

all *
all *

out

source

0.0.0.0/0
*

0.0.0.0/0

destination
0.0.0.0/0
0.0.0.0/0

LOG flags 8 level 4 prefix `[DROIDWALL]


reject-with icmp-port-unreachable

.
La regla a la que hace referencia el listado es esta:
$IPTABLESAdroidwallrejectjLOGlogprefix\"[DROIDWALL]\"log
uid

Cada vez que se rechace un paquete, netfilter aade una lnea de Log a los mensajes del kernel,
que contiene la clave [DROIDWALL] para que pueda ser facilmente filtrable. Esta es una de
esas lneas:
<4>[110.878448][DROIDWALL]IN=OUT=eth0SRC=192.168.1.35
DST=67.214.210.43LEN=60TOS=0x00PREC=0x00TTL=64ID=10464DFPROTO=TCP
SPT=50203DPT=443WINDOW=5840RES=0x00SYNURGP=0UID=10083GID=10083

Al mostrarnos el log, Droidwall no la ensea entera, sino que hace un resumen de todas las
lneas de cada aplicacin informndonos de cuntos paquetes se bloquearon y a qu
direcciones ip.

Lo ideal es que esta informacin tan preciada la pudiramos almacenar y conservar en un


fichero, pero se necesitara que Droidwall tuviera un servicio activo todo el tiempo, lo cual no
convenca a su creador.
Sorry, but adding such a feature would require DroidWall to keep a service running 100% of the time, and I dont like this
idea.

.
Quien bloquea los paquetes que no cumplen las reglas y genera los mensajes de Log no es
Droidwall sino el target LOG de iptables. Adems no los va metiendo en un fichero, sino en
el kernel ring buffer (buffer de anillo del kernel). Este ring buffer es un archivo especial que se
almacena en la memoria interna, en /proc/kmsg concretamente. Siempre tiene el mismo
tamao porque va borrando las lneas ms antiguas a medida que aparecen las nuevas.
Por eso ocurre a veces que al rato de consultar el LOG de Droidwall y ver paquetes bloqueados,
volvermos a mirar y nos saca el mensaje de que est vaco. El comando dmesgque utiliza
Droidwall para mostrar el Log no hace otra cosa sino mostrarnos por pantalla el kernel ring
buffer filtrado convenientemente con el grep. Un tiempo despus la informacin ha volado.
Hay alguna forma de encaminar la salida de dmesg hacia un fichero? Si que la hay:
dmesg|grepDROIDWALL>/mnt/sdcard/droidwall.log
De esta manera nos vuelca a fichero las lineas de Log que hay en el kernel ring buffer en ese
momento, pero no es la solucin definitiva que estamos buscando.
Otra posibilidad es tratar de encaminar hacia un fichero el propio ring buffer:
cat/proc/kmsg>>/mnt/sdcard/buffer.log

Con este comando iremos almacenando en tiempo real todas las lineas nuevas que se van
aadiendo al kernel ring buffer hasta que apaguemos el telfono o hagamos unVol.Down+c. El
fichero generado buffer.log puede ser filtrado posteriormente en el PC o bien mostrado
nuevamente por pantalla ya filtrado con:
cat</mnt/sdcard/buffer.log|grepDROIDWALL
Los intentos de aplicarle el grep DROIDWALL directamente mientras se almacena
elbuffer.log en la sdcard no me han dado resultado.
Como curiosidad, cuando marcamos la opcin Borrar Log del men, se ejecuta el comando
dmesgc>/dev/null

que borra el ring buffer. Es decir, que cuando marcamos esa opcin lo que estamos haciendo es
borrar no solamente los mensajes de Log relativos a Droidwall, sino el ring buffer completo. Si
ahora metemos el comando dmesg no nos devolvera nada por estar el buffer vaco.
12. Algunos problemas que pueden surgir
Sale mensaje de Log vaco y hace un rato no lo estaba
Como hemos visto cuando utilizamos la opcin de mostrar Log estamos filtrando el kernel
ring buffer. Este buffer se va sobreescribiendo y despus de un tiempo (no mucho) ya no estn
los logs que antes s podamos ver. Por eso el Log no puede ser utilizado para almacenar y
consultar posteriormente, sino para ocasiones puntuales.
Si se quiere guardar un histrico slo se me ocurre encaminar hacia un fichero el ring buffer y
filtrarlo posteriormente en el PC como hemos visto en el apartado anterior.
Error Iptables: No chain/target/match by that name
Despus de instalar Droidwall, al pulsar en el men el botn que pasa a estado activo y de darle
los permisos de superusuario requerido, aparece un mensaje con el texto:
Errorapplyingiptablesrules.Exitcode:11
Iptablesv1.4.10
Iptables:Nochain/target/matchbythatname

Lo que ocurre es que al compilar el kernel de nuestro telfono han dejado deshabilitada la
opcin CONFIG_NETFILTER_XT_METCH_OWNER. la cual permite que se incluya en el
kernel el mdulo netfilter owner, necesario para que funcione Droidwall, pues es el que
permite que iptables pueda distinguir qu aplicacin ha enviado cada paquete en el momento
del filtrado.
La nica solucin es sustituir el kernel por otro, bien actualizando toda la ROM, bien
compilando un kernel apropiado y flashearlo en el telfono. Esta segunda opcin fue la que
utilic.
Trfico no filtrado por Droidwall
Puede ocurrir que al iniciar el sistema se cuele algn trfico que debera haber sido filtrado,
como reporta algn usuario. Al iniciarse el sistema operativo Adroid, por defecto empieza sin
reglas en iptables. Da igual que cuando apaguemos el telfono Droidwall est en estado activo;
las reglas no se conservan. En cuanto el telfono ha arrancado se produce el evento
After_Startup y arrancan todas las aplicaciones que se activen con dicho evento. Puede ocurrir

que Droidwall no sea la primera aplicacion en arrancar y hay unos instantes en que otra
aplicacin puede conectarse a la red, ya que en esos momentos no hay reglas.

No es un problema de Droidwall en realidad. Se puede solucionar con un scrpit en el init.d,


pero en algunos telfonos (en mio por ejemplo) no funciona. La solucin ms eficaz para dar
soporte al init.d es flashear el ramdisk. Otra manera de implementarlo es mediente el
fichero /etc/init_post.sh (que no forma parte del ramdisk) pero as no habra manera de
controlar el orden de ejecucin de los scripts del init.d.
Acceso a red por el puerto 53 cuando el Log est activo y Droidwall trabaja en modo lista
blanca.
Cuando vimos las reglas de iptables en el punto 7, en el ejemplo haba dos reglas marcadas de
color rojo porque Droidwall slo las crea cuando est activo el Log. La primera de ellas no es
estrictamente necesaria para que funcione el Log. Su propsito es que el Log tenga la
posibilidad de traducir direcciones ip cuando estamos en modo lista blanca (todo cerrado
excepto las aplicaciones marcadas). Segn el autor:
"AllowDNSlookupsonwhitelistforabetterlogging"

La regla en cuestin es la siguiente:


IPTABLESAdroidwallpudpdport53jRETURN

y permite que cualquier aplicacin pueda salir por el puerto 53 (en teora para utilizar los
servicios DNS, pero en la prctica es un agujero de seguridad que puede ser utilizado por
aplicaciones malintencionadas) cuando el Log est activo.

Por otra parte, esta regla est situada dentro de la cadena droidwall, es decir, antes de que
discriminemos el trfico segn sea por wifi o 3G. Si alguien desea cerrar totalmente las salidas
por 3G a cualquier aplicacin sencillamente no podra.
Cuando un usuario le hizo notar este problema, el autor respondi que la caracterstica del Log
no estaba pensada para estar activada permanentemente aunque era consciente que la mayora
de la gente lo utilizaba de esa manera, as que iba a considerar la posibilidad de suprimir esa
regla. Pero parece que al final decidi dejarlo como estaba.
En este ejemplo vemos a la aplicacin Fruit Ninja, que an estando bloqueada puede acceder
al DNS.

Sin embargo despus intenta conectarse por el puerto 443 y ya es bloqueada. La captura por
cierto fue hecha con Network Log, que merece un tutorial aparte.
Desafortunadamente al consultar el cdigo fuente comprobamos que la regla que nos ocupa, la
que permite las salidas por el puerto 53, se aade despus de las reglas que podramos incluir
los usuarios a travs del custom script y no al revs.

Esto elimina la posibilidad de borrarla nosotros desde el custom script.


La posibilidad que nos queda a los que utilizamos el modo lista blanca es hacerle caso al autor
teniendo el Log normalmente inactivo y slo activarlo para casos concretos, lo cual tiene
sentido dada la rapidez con la que se pierden los logs al irse llenando el kernel ring buffer.
13. Palabras finales
Esta aplicacin es el resultado de las mejoras introducidas por el autor desde la primera
versin en Julio de 2009 hasta la ltima en Diciembre de 2011, tratando de atender las
sugerencias y problemas de los usuarios. Por el momento parece que est discontinuada, ya

que no he visto actividad del autor en los foros desde Febrero de 2012. Si es as espero que
alguien tome el testigo y se puedan seguir aadiendo mejoras a este estupendo cortafuegos.
Este tutorial no est terminado. Espero ir mejorndolo incorporando las posibles aportaciones
que vayan llegando.
14. Enlaces:
Descargar Droidwall 1.5.7: http://droidwall.googlecode.com/files/droidwall-v1_5_7.apk
Cdigo fuente de la ltima versin de
Droidwall:http://code.google.com/p/droidwall/source/browse/tags/v1.5.7?
spec=svn250&r=250#v1.5.7
Wiki donde los usuarios pueden exponer sus problemas (ya no est mantenida por el
autor): http://code.google.com/p/droidwall/issues/list
Tu voto:

Rate This
Relacionado

Objetivo 3 - Controlar la salida a internet de las aplicacionesEn "Privacidad"


Objetivo 3 (continuacin) - Droidwall: Error "No chain/target/match by that name" - Compilar el kernel del
B5510En "Aplicaciones"
Acceso Root para el Samsung Galaxy Y Pro GT-B5510 (I)En "B5510"
Esta entrada fue publicada en Privacidad, Seguridad, B5510, root, Aplicaciones y
etiquetada android, B5510, control,cortafuegos, Droidwall, Galaxy, iptables, log, manual, netfilter, ring
buffer, rodrigo, Samsung, script, SGY, shutdown script, turorial, Tutorial, y, zechin. Guarda el enlace permanente.
Objetivo 3 (continuacin) Droidwall: Error No chain/target/match by that name Compilar el kernel del B5510
Soporte para poder ejecutar scripts en /etc/init.d antes del arranque

12 respuestas a Droidwall a fondo. Tutorial para el cortafuegos


Droidwall 1.5.7
1.

Paul dijo:
16/08/2012 en 6:50 pm

hola, resumiendo, para un usuario mortal como yo =)

solo tengo que seleccionar en modo lista blanca, palomeo en las aplicaciones que si quiero que
esten activadas para el acceso a internet y listo!???
o es necesario crear eso de las reglas? ahi me mataste xD
Responder

loquehice dijo:

o
16/08/2012 en 10:02 pm

Hola. Lo has resumido muy bien. Con lo que has dicho llega perfectamente, ya que Droidwall
pone l solo las reglas. Y si algn da tienes necesidad de profundizar en iptables para
personalizar las reglas ya sabes por donde empezar. En cuanto al log yo recomendara activarlo
slo cuando quieras vigilar algo en concreto. Un saludo.
Responder

2.

Manuel Bustamante dijo:


29/11/2012 en 10:23 am

Amigo!! una gran duda que espero y me puedas ayudar!!


Esta aplicacin me funciona bien cuando se trata de WIFI, cuando selecciono que bloquee todo
tipo de conexin con wifi si se bloquea, no puedo entrar a ninguna pagina pero el problema
es cuando quiero que bloquee aplicaciones para que NO se conecten a la red 3G. no se
puede terminan por conectarse. lo eh intentado muchas veces y al final en 3G no me
funciona no se si me puedas decir si es un defecto de la aplicacin o porque solo bloquea
aplicaciones wifi y en 3g NO..
Responder

loquehice dijo:

o
29/11/2012 en 11:01 pm

Hola! A m me funciona correctamente en el B5510. Si tienes el modo lista blanca y ninguna


aplicacin seleccionada no debera salir ningn trfico. Has descartado que el problema sea
que se cuele trfico al arrancar el mvil antes que se active Droiewall? (apartado 12 del
tutorial). Tambin podras comprobar qu reglas tiene iptables ya que son estas las que
determinan el trfico que puede salir a internet.
Responder

3.

KumanTejeda dijo:
24/01/2013 en 8:22 pm

Hola, he instalado esta aplicacin pero cuando le doy Firewall activo me da este error Could
not acquire root access. You need a rooted phone to rum DroidWall.
If this phone is already rooted, please make sure DroidWall has enough permissions to execute
the su command.
Error message:
java.io.IOException: Error running exec(). Command [su,c,/data/data/com.googlecode.droidwall.free/app_bin/droidwall.sh] Working Directory: null
Environment: null quisiera saber si alguien me pudiera ayudar.
Responder

loquehice dijo:

o
29/01/2013 en 7:00 pm

Hola. Aparentemente tu mvil no tiene acceso root. Si es as debes hacer una bsqueda para
rootear tu modelo de mvil. Puedes mirar enesta entrada.
Responder

Annimo dijo:

o
29/01/2013 en 7:26 pm

Necesitas tener el Telefono Rooteado para que esta Aplicacion Funcione, es por ello que te salta
ese error!
Responder

4.

ruth dijo:
26/02/2013 en 3:04 am

tambien me aparece esto: Could not acquire root access. You need a rooted phone to rum
DroidWall. lo RARO es que SI lo tengo rooteado. antes me apareca en superuser y ya no :/
osea dejo de funcionar :(
Responder

5.

fafasfas dijo:
18/02/2014 en 2:07 pm

Vaya pedazo informe te has marcado con la appa, impresionante, muchas gracias!
Responder

6.

MariCarmen dijo:
06/06/2014 en 6:22 pm

Hola lo instal en Alcatel OneTouch Mpop 5020 (Android JellyBean) y no encuentro Opciones
del Men :( .. Este equipo no trae botn men, sino botn Aplicaciones Recientes.. y desde la
aplicacin no se como sacar el men Hay alguna manera de hacerlo?
Responder

7.

Annimo dijo:
27/02/2015 en 4:11 pm

La muralla china es mas accesible.


Responder

8.

Lacho dijo:
26/03/2015 en 5:46 pm

hola, estoy usando actualmente el DROIDWALL, en realidad me parece una APP estupenda y
fcil de usar y que hace lo que promete. en realidad no he tenido ningn problema con ella,
estuve leyendo el manual, pero no encontr la respuesta a mi incgnita.
he estado intentando usar el ANCLAJE DE RED de mi celular para conectar mi pc por WiFI y
tomar Internet de mi plan de datos mvil. ahora me he dado cuenta que el anclaje de red
bloquea tambin el uso de datos en este modo. la verdad no se cual es la regla que debo activar
para permitir el paso de los datos para el ANCLAJE DE RED WIFI.
si deshabilito el DORIDWALL ya puedo navegar normalmente desde mi pc a travs de mi
celular.

Acceso Root para el Samsung Galaxy Y Pro GT-B5510 (I)


Publicado el 14/06/2012de loquehice

El paso previo para tomar el control de un mvil con android es conseguir


acceso como root. Como usuario novel de android empiezo a percibir que tanto para Google
como para los fabricantes y operadoras de telecomunicaciones es importante dificultar que los
usuarios de android tengan la posibilidad de rooteo fcil en sus mviles. No es casualidad que
en los ajustes no haya la opcin de acceso root y tampoco lo es que android no disponga de
cortafuegos.
Por otra parte, el modelo de negocio de las apps est basado en gran parte en el
desconocimiento y poca capacidad de maniobra de los usuarios, y las operadoras se benefician
en muchos casos del trfico no deseado generado sin conocimiento del usuario. Por eso se
fomenta un uso dcil y despreocupado del mvil.
Este es el mtodo que he encontrado y seguido para rootear el B5510. Me ha funcionado a la
perfeccin, pero si decides aplicarlo en tu mvil ser bajo tu propia responsabilidad. Lo
encontr en este hilo de xda-developers y el mrito es del desarrollador StoneBoyTony. Lo he
traducido adaptadolo a mis circunstancias:
En primer lugar ojo a las siguientes precauciones:
Este procedimiento slo es vlido para algunos modelos de caractersticas similares. La lista
es la siguiente:
SAMSUNG GALAXY GT-S5570, GT-S5570B, GT-S5570I, GT-S5570L, GT-S5571, GT-S5660, GT-S5660M, GT-S5660L, GT-S5660V, SHW-M290K
(Korean GIO), GT-S5670, GT-S5670B, GT-S5670L, GT-S5830, GT-S5830B, GT-S5830C ,GT-S5830D, GT-S5830i, GT-S5830L, GT-S5830M, GTS5830T, GT-S5830Z, GT-S5839i, GT-B7510, GT-B7510B, GT-B7510L, GT-B7800, GT-B5510, GT-B5510B, GT-B5510L, GT-B5512, GT-B5512B. GTS6102, GT-S6102B, GT-S5300, GT-S5360, GT-S5360B, GT-S5360L, GT-S5360T, GT-S5363, GT-S5369, GT-S5690, GT-S5690M, GT-S5690L, GTI8150, GT-I8150B, GT-I5510, GT-I5510B, GT-I5510L, GT-I5510M, GT-I5510T

Adems, la ROM tiene que ser oficial (no vale una custom ROM) y el recovery debe ser
tambin el oficial.
y el sistema operativo debe ser el Gingerbread 2.3.3 hasta 2.3.7+

Instrucciones a seguir:
1. Activar la opcin Ajustes > Aplicaciones > Fuentes desconocidas para permitir instalar desde
la tarjeta SD aplicaciones que no sean del market, ya que viene desactivada por defecto
2. Bajarse el fichero universal_gb_root_v20.zip
3. Meter el fichero bajado en el directorio raiz de la tarjeta SD. Si no sabes cmo mira enesta
entrada anterior.
4. Arrancar el mvil en modo recovery. Si no sabes como mira esta otra entrada.
5. Elegir la opcin apply update from sdcard del men. Con las teclas Vol+ y Vol- nos
movemos por el men y la tecla Home para seleccionar. Aparece el directorio raiz y da la
opcin de elegir un fichero. Buscar el universal_gb_root_v20.zip y seleccionarlo.
La aplicacin contenida en el fichero entra en ejecucin y cuando esta termina aparece el
mensaje Install from SD complete.
6. Seleccionar en el menu la opcin reboot system now y arrancar en modo normal.
7. Buscar entre las apps el SuperSU, que preguntar si se quiere actualizar el binario SU. Hay
que darle a continuar. El sistema se reinicia y ya est.

Para comprobar si todo ha salido bien se puede utilizar la app Rootvalidator, que debera
haber quedado instalada tambien.
En el hilo de StoneBoyTony habla tambin de como actuar ante posibles problemas con el
SuperSU debidos a las modificaciones que hacen las operadoras en las Stock ROM. Y viene
tambin el procedimiento para el unroot, que yo de momento no utilizar.
Ahora que tengo acceso root ya puedo intentar cumplir los objetivos que me haba propuesto.
Lo primero que intentar hacer es un backup de la stock ROM que trae el B5510 y preparar un
procedimiento para restaurarla si es necesario.