lunes, 24 de septiembre de 2007

Jugando con la Fonera

Hola de nuevo,

hace ya algunos meses compré una Fonera, y la tuve un tiempo funcionando de manera estándar, es decir, la registré en FON, mediante la administración web que traía hice cambios como modificar el nombre, el password, etc. Lo que te dejaba el software desarrollado por FON.

Bajo mi opinión creo que la idea de FON es buena, el que yo pueda tener una conexión Wifi allá donde vaya, tan sólo aportando parte de mi conexión de pago, me parece una magnífica idea, y ahora que encima puedo ganar dinero cada vez que se conecta alguien a mi fonera pagando (un Alien), mejor todavía.

Estuve con la fonera varios meses funcionando, pero me empezó a picar la curiosidad sobre qué era realmente ese aparatillo que había conectado a mi LAN para compartir mi conexión a Internet.

Leí webs como la de Rompiendo mi fonera, que me ayudaron mucho a entender qué era y los peligros que había por tener aquel aparato. Ni que decir tiene, que al leer esta web hice todos los consejos que ahí pone:

Conseguí acceso SSH para siempre con este manual.
Arreglé el problema de que se conecte a FON sin mi permiso con este manual.

Una vez hecho esto, me quedé más tranquilo, sabiendo que la fonera ya no haría caso de su Gran Hermano FON, me haría caso a mi primero.

Seguí investigando sobre la fonera, y vi en esta web que aquel aparato ofrecía muchas posibilidades, podía instalarle un OpenWRT sin modificar, un dd-WRT, hacer WDS, montarle un disco duro para que tenga gigas y gigas, ponerle un ventilador para que no se calentase tanto, hacer p2p, etc.

Vaya, sí que había posibilidades, sin embargo, yo no quería perder la funcionalidad de ser un punto de acceso a la red de FON, me sabía mal, yo quería dar acceso a los foneros a internet, es mi lado altruista el que me ogligaba a ello.

Y os preguntareis: ¿por qué no poner un nuevo firmware a la fonera y dar acceso público a internet, y no sólo a los foneros?
Pues muy fácil, porque no me fio, y me explico: Si dejo el acceso libre, cualquiera puede acceder anónimamente a Intenet desde mi conexión y hacer lo que le plazca, lo mismo se conecta un científico vecino mio y acaba descubriendo la vacuna del SIDA, pero lo mismo se conecta un pedófilo y se empieza a bajar pornografía infantil y a compartirla. Y como no sé qué tipo de gente puede pasear cerca de mi casa, FON me ofrece una forma de saber quién se conecta, si alguna vez viene la policia a mi casa por alguien que ha hecho algo con mi conexión, tengo una posibilidad de defenderme con los logs de FON.

Dicho esto, modifiqué el script de la fonera "/bin/thinclient" y le puse al final el siguiente código:


#me guardo las actualizaciones de FON
MD5ANTERIORFICHERO=$(md5sum /tmp/.thinclient_anterior.sh | awk '{print $1}')
MD5NUEVOFICHERO=$(md5sum /tmp/.thinclient.sh | awk '{print $1}')
if [ "$MD5NUEVOFICHERO" != "$MD5ANTERIORFICHERO" ]; then
NUEVOFICHERO=/tmp/thinclient_$(date '+%Y%m%d-%H%M').sh
echo '#!/bin/sh' > $NUEVOFICHERO
echo '#---------------------------' >> $NUEVOFICHERO
echo '#Script del '$(date '+%Y%m%d-%H%M') >> $NUEVOFICHERO
echo '#---------------------------' >> $NUEVOFICHERO
cat /tmp/.thinclient.sh >> $NUEVOFICHERO
echo '#---------------------------' >> $NUEVOFICHERO
echo '#ahora cambio lo que hayan tocado que pueda perjudicarme' >> $NUEV
echo '/bin/ajustaracceso' >> $NUEVOFICHERO
echo 'rm -f '$NUEVOFICHERO >> $NUEVOFICHERO
echo '#---------------------------' >> $NUEVOFICHERO
chmod a+x $NUEVOFICHERO
fi
mv -f /tmp/.thinclient.sh /tmp/.thinclient_anterior.sh
#. /tmp/.thinclient.sh

Con esto conseguía que los scripts que me mandaba FON quedaran guardados en el fichero "/tmp/thinclient_fecha.sh", pero que no ejecutara nada, por eso la última línea comentada con #. Es decir, hay que cambiar la línea ". /tmp/.thinclient.sh" del fichero original por todo el párrafo de código anterior. Además, veréis que en ese código lo que se hace es una comparación del hash MD5 entre el anterior script que nos mandó FON y el último, si es distinto se creará el fichero de script, sino no se creará. La primera vez que se ejecute se creará ya que no existe el fichero del anterior script "/tmp/.thinclient_anterior.sh", pero el resto de veces funcionará bien.

Un ejemplo de fichero generado es:


#!/bin/sh
#---------------------------
#Script del 20070924-2111
#---------------------------

rm -f /tmp/.thinclient.sh

exit
#---------------------------
#ahora cambio lo que hayan tocado que pueda perjudicarme
/bin/ajustaracceso
rm -f $NUEVOFICHERO
#---------------------------


No os preocupéis por la llamada a "/bin/ajustaracceso" la explicaré más abajo.
Con esto conseguimos que las actualizaciones de FON se vayan guardando en un archivo "/tmp/thinclient_fecha.sh" que podremos ejecutar cuando nosotros queramos.

Pero... ¿qué pasa si alguna actualización nos modifica algunos de nuestros preciados scripts? ¿o nos quita el acceso directo para que se ejecute el demonio SSH? Pues obviamente, podríamos perder el acceso SSH, y eso no es bueno.

Para evitarlo está el script "/bin/ajustarcambios", con el siguiente código:


#!/bin/sh
#
#Ajustar acceso a la fonera
#version 1.0
#


FECHAHORA=$(date '+%Y%m%d-%H%M')

#pongo bien el fichero del firewall
MD5FIREWALLNUEVO=$(md5sum /etc/firewall.user | awk '{print $1}')
MD5FIREWALLANTIGUO=$(md5sum /etc/firewall.user.OK | awk '{print $1}')
if [ "$MD5FIREWALLNUEVO" != "$MD5FIREWALLANTIGUO" ]; then
echo 'Ajustadas las reglas del firewall'
cp -f /etc/firewall.user /etc/firewall.user_$FECHAHORA
cp -f /etc/firewall.user.OK /etc/firewall.user
fi

#pongo bien el fichero /bin/thinclient
MD5THINCLIENTNUEVO=$(md5sum /bin/thinclient | awk '{print $1}')
MD5THINCLIENTANTIGUO=$(md5sum /bin/thinclient.OK | awk '{print $1}')
if [ "$MD5THINCLIENTNUEVO" != "$MD5THINCLIENTANTIGUO" ]; then
echo 'Ajustado el fichero /bin/thinclient'
cp -f /bin/thinclient /bin/thinclient_$FECHAHORA
cp -f /bin/thinclient.OK /bin/thinclient
fi

#pongo bien el que se autoarranque el dropbear (SSH)
if [ ! -e "/etc/init.d/S50dropbear" ]; then
echo 'Ajustado el inicio automatico del SSH'
cd /etc/init.d
ln -s dropbear S50dropbear
fi

Este código hace los ajustes necesarios para que si alguna actualización de FON nos toca algo que no debe, guarde una copia del fichero modificado por FON con la fecha y deje nuestro fichero original. Seremos nosotros los que nos tendremos que preocupar de ver las diferencias y hacer los cambios oportunos. Además comprueba que el demonio SSH dropbear esté puesto para que se ejecute al iniciar la fonera.

Para que funcione bien el anterior script nos tendremos que hacer copia a mano de los ficheros involucrados sólo para la primera vez:


root@OpenWrt:/bin#cp /etc/firewall.user /etc/firewall.user.OK
root@OpenWrt:/bin#cp /bin/thinclient /bin/thinclient.OK


Desde aquí me gustaría hacer una petición a los señores de FON:
¿para cuándo el software FONSPOT para la fonera? Ahora mismo sólo está para MAC y para Linux, pero no para la fonera. Si estuviera para la fonera podría ponerle OpenWRT y ponerle el software FONSPOT y tendría más libertad sin dejar de ser un punto de acceso FON, piénsenlo señores.

Y esto es todo. Yo ahora mismo tengo la fonera con el firm 0.7.1 r5 mediante este sistema, y por ahora no he perdido el acceso por SSH, esperemos que así siga, aunque si alguna vez pasa siempre hay formas de recuperarlo.

Saludos.

1 comentario:

Rubén Bodewig dijo...

hola! me han parecido muy interesantes tus "fonsejos", me los voy a estudiar bien. Yo tengo un fonspot muy cercano al tuyo.

Te invito a visitar www.barriodebenalua.es. Estás invitado a enviarnos comentarios, fotos del barrio... lo que quieras! un saludo!

un saludo!