miércoles, diciembre 31, 2014

Donar con criterio (lo siento, Firefox, pero no)

He dudado mucho si era buena idea escribir esta entrada. La gente se busca tantas excusas para ser tacaño con el tema de las donaciones, que casi mejor no dar más ideas. Y sí, digo bien tacaños: habrá quien sea generoso a la hora de pagar las copas con los amigos, pero si luego no dona un duro para mejorar el mundo, es un tacaño "en la intimidad" ;-).

Recomiendo por ser más breve y eficaz que mis arengas el comentario de Guido de esta entrada (y a quien le interese más el tema de las donaciones y tenga paciencia para leerlas, también escribí esto y esto)

El caso es que esta semana al abrir Firefox me salió una petición de donación para Mozilla. Reconozco que estaba ya bastante predispuesto en contra por el caso Brendan Eich (mi comentario de este tema, al final), pero dedicí informarme mejor y consultar la información sobre Mozilla Foundation/Corporation en Wikipedia.

Hay una serie de datos que me llamaron la atención:
  • 311 millones de ingresos en 2012 (la mayoría procedentes de Google
  • Su máxima ejecutiva, Mitchel Baker, percibió en 2007 más de 500.000$
  • Mozilla Corporation tiene más de 1000 empleados. Entre ellos varios ejecutivos (de hecho además de Baker hay CEO, que el CEO no sea el más alto ejecutivo sólo se da en algunas empresas muy, muy grandes)
Vale, Mozilla es un proyecto sin ánimo de lucro, pero no parece el perfil del que te esperas que te pidan un donativo. Pero sobre todo lo que uno se plantea es el rendimiento que se está obteniendo de los fondos que se manejan o si lo que se está costeando es una estructura. En las ONGs, uno de las métricas más interesantes es el coste de estructura frente al de proyectos. Aquí lo interesante sería saber cuánto se gasta en desarrollo.

Me gusta mucho Firefox, lo uso en PC y móvil. A su lado quedan bastante mal Explorer y Safari. Pero no se puede comparar un Madrid o Barcelona no ya con los modestos de primera sino de regional. Suena a coña que Microsoft o Apple sean aquí los equipos de pobre presupuesto, pero una cosa es el dinero de la compañía y otra lo que dedican a sus navegadores, que no son sus productos estrella, mientras que Firefox sí lo es de Mozilla. Por ejemplo Microsoft ha desmantelado en ocasiones el equipo de Explorer o mantenido sólo unas pocas personas. Otra cosa es cuánto dinero de los 311 millones de Mozilla, ha ido directamente a desarrollo de Firefox.

Por supuesto, también está Firefox OS. Aunque no esté teniendo mucho éxito, creo que es un proyecto interesante, aunque el problema ha sido la estrategia, precisamente el trabajo que debería hacer Mozilla Corporation y sus bien pagados ejecutivos. En comparación, Google ha innovado en comparación a Firefox en todo lo que está alrededor de Chrome también en lo que se refiere a oportunidades, desde el propio navegador a ideas como Chromebook, Chromecast, en lugar de la estrategia suicida del coste de los móviles (cuando un chip con cuatro procesadores cuesta 10$).

Llega el turno de hablar de Brendan Eich. Este señor es el inventor de Javascript y uno de los creadores de Firefox (además de su arquitecto) y fundadores de Mozilla. Ha sido el jefe tecnológico del proyecto y se puede decir que ha dedicado su vida a Mozilla/Firefox. Este año fue ascendido a CEO, lo que sonaba interesante. Quizás si la compañía pasaba a estar gobernada por técnicos como Google, empezara a funcionar mejor (por compararla con la empresa que más le ha robado cuota de mercado y ha visto oportunidades que no vieron en Mozilla).

El problema de Eich es que hace dos años hizo una donación privada para la campaña en el referendum en contra del matrimonio gay. La ley de California persigue explícitamente la discriminación laboral por hacer donaciones por motivos políticos, pero la "intolerancia" de los tolerantes les hace creer que están por encima del bien o del mal y hay que destruir al disidente. De nada sirvieron los intentos de conciliación o que mostrara su disposición a trabajar con las asociaciones de gays  lesbianas y ser receptivos a sus propuestas (como si tuvieran más que aportar que cualquier otra asociación con fines políticos, culturales o educativos).

Eich fue cuestionado y aunque también contó con apoyos, sobre todo por parte de la gente de perfil técnico que había trabajado con él, faltaron apoyos en los que tenían la sartén por el mango en Mozilla Corporation. En el colmo de hipocresía, se  le pidió que siguiera en su puesto de jefe tecnológico, que es tanto como decir no nos gustas como persona pero eres útil técnicamente. No aceptó, dimitió  y Mozilla sigue sin funcionar en la dirección pero además ha perdido a su líder histórico en lo técnico. Además ha quedado a la altura del betún en cuanto a la forma de tratar a su propia gente y dado una imagen de debilidad a la hora de responder a cualquier presión externa, en este caso bastó lo "políticamente incorrecto".

Entre los eventos "post-Eich" es la bajada de pantalones con el tema de DRM. Eich estaba bastante en contra del tema del DRM, aunque en honor de la verdad no se sabe que hubiera pasado de seguir él, porque también era bastante pragmático.

Siento acabar el año con un post de temática negativa, pero así el 2015 empezará con uno mejorando lo presente ;-)

¡Feliz Navidad y 2015!

viernes, agosto 22, 2014

Crear una cuenta con acceso restringido a Internet

Para quien le pueda interesar crear una configuración similar. Se trata de configurar en un ordenador un usuario para un niño, con acceso restringido a Internet, para que no se disperse cuando se supone que tiene que hacer otra cosa ;-).

En mi caso creé esta configuración porque cuando dejo al peque con un programa no quiero que el pillín en lugar de ponerse con ello busque juegos en Internet y se ponga a jugar a la que me descuido. Encima la publicidad que sale como que no es muy recomendable.

He creado en un ordenador con GNU/Linux una cuenta para el niño (les encanta tener su propia cuenta). Para que no tengan acceso a Internet, pero sí a servicios que puedan correr en la propia máquina, supongamos que el usuario del peque se llama "pepito", entonces ejecutamos como root:

iptables -I OUTPUT -m owner --uid-owner pepito  ! --destination 127.0.0.1 -j DROP

Hay varias formas de hacer que esta regla se ejecute cada vez que arranquemos el ordenador sin tener que escribilar de nuevo. Una que sirve para cualquier distribución de Linux es añadirla al fichero /etc/rc.local.

Permitir ir a algunos sitios

Por supuesto si se quiere conceder permiso de acceso a Internet es tan simple como tener otro script para quitar la regla de iptables (para quitar una regla, en lugar de -I o -A, se usa -D). Otro día podemos hablar de cómo poner/quitar la regla fácilmente desde nuestro smartphone.

Ahora bien, puede interesarnos permitir el acceso a Internet, pero sólo a determinadas webs para que se centren por ejemplo en buscar información sobre algo. Una posible solución es añadir reglas que permitan el acceso a determinadas direcciones. Por ejemplo, en lugar de la regla anterior, que bloqueaba totalmente el acceso a Internet para el usuario "pepito" podemos usar estas otras:

iptables -N pepito
iptables -I OUTPUT -m owner --uid-owner pepito -j pepito
iptables -A pepito -j DROP
iptables -I pepito --destination 127.0.0.1 -j ACCEPT

iptables -I pepito --destination museoescultura.mcu.es -j ACCEPT
iptables -I pepito --destination es.wikipedia.org -j ACCEPT

Como se ve, el tráfico a Internet originario del usuario "pepito" pasa una serie de reglas en la cadena "pepito". Si el destino es la IP local (127.0.0.1) o la Wikipedia o el Museo Nacional de Escultura (uno de los pocos musesos nacionales fuera de Madrid), se autoriza, para cualquier otro destino, se deniega.

Este mecanismo es simple, pero tiene sus carencias. Una de ellas es que iptables bloquea realmente el tráfico por dirección IP, no por nombre de sitio. Y los sitios con muchas visitas suelen tener varias direcciones, cuando no usar la infraestructura de una empresa, Akamai, con servidores por todo el mundo para que estén cerca de la red de los usuarios (por ejemplo mirar el resultado de nslookup www.redhat.com y nslookup www.oracle.com).

En la práctica posiblemente no nos de problemas. Aunque iptables lo que haga es resolver la IP y permitir sólo el acceso por esa IP, habitualmente el resultado de resolver la IP se cachea y posteriores peticiones del navegador darán la misma IP. Si así no fuera, se puede solucionar poniendo la IP en /etc/hosts.

Pero no es la solución ideal.

Mejor solución, usar un proxy

La solución más flexible es utilizar un proxy. Vamos a usar tinyproxy.

La idea es volver a poner la regla que impide a "pepito" acceder a Internet. En su lugar configuramos Firefox para usar como proxy web a tinyproxy (ponemos como IP a 127.0.0.1 y como puerto 8888). Como el proxy se ejecuta con su propia identidad y no como usuario "pepito" no le afecta la regla que corta el acceso a Internet. Configuramos tinyproxy para que sólo permita el acceso a las direcciones que enumeremos en un fichero.


El paquete tinyproxy existe tanto en distribuciones basadas en Debian como Fedora/RHEL/CentOS. En Debian el fichero de configuración está en /etc/tinyproxy.conf y en CentOS en /etc/tinyproxy/tinyproxy.conf

Editamos el fichero de configuración /etc/tinyproxy.conf para cambiar dos líneas:
  1. Filter: hay que poner la ruta del fichero en el que pondemos la lista de sitios que permitimos, un dominio por línea (si ponemos wikipedia.org, estamos permiendo tanto es.wikipedia.org como en.wikipedia.org).
  2. FilterDefaultDeny yes
Estas instrucciones son para Debian (supongo que funcionarán igualmente en Ubuntu, al estar basada en Debian). En CentOS son similares, pero el paquete tinyproxy está en el repositorio EPEL, el fichero de configuración en /etc/tinyproxy/tinyproxy.conf. Recordemos así mismo que en CentOS por instalar un servicio no se arranca automáticamente: hay que configurarlo explícitamente para que lo haga:
 chkconfig tinyproxy on
 service tinyproxy start

En CentOS 7 en lugar de chkconfig y service se usa systemctl enable/start.