Control parental y privacidad con NxFilter

Objetivos

Hoy vamos a ver cómo establecer medidas de control parental y privacidad con NxFilter.

Hace unos días asistí a una charla sobre el inicio de la ESO. Uno de los temas que surgieron fue el del acceso a las tecnologías por parte de los niños y la obligación de los padres de controlar e imponer límites a su uso.

Yo hubiese añadido educar sobre su uso, pues creo que es necesario educar antes que controlar. Por ello hemos empezado a hablarle de los peligros del uso indebido de redes sociales, y de Intenet en general, así como de la privacidad.

A estas charlas decidimos acompañarlas de la instauración, dentro del ámbito del hogar, de algún sistema que nos permita ejercer ese control parental y, a la vez, proteger en lo posible nuestra privacidad y eliminar los omnipresentes anuncios.

¿Qué pretendemos con el control parental?

  • Bloquear el acceso a sitios no aptos o no recomendables para menores.
  • Limitar el acceso a Internet a ciertos tramos horarios.
  • Poner trabas al seguimiento (tracking) que nos hacen los sitios web.
  • Bloquear anuncios.
  • Entender el tráfico de Intenet que tenemos y actuar en consecuencia.

El ámbito de aplicación es nuestra casa.

Conceptos y definiciones

Antes de enrollarme con cómo ejercer el control parental y privacidad con NxFilter es necesario entender, por desgracia, algunos conceptos importantes. Sáltate este punto si ya sabes de qué se trata.

Bloqueo

Cuando hablamos de bloqueo, en el ámbito del control parental, nos referimos a impedir que se pueda hacer, desde un equipo, una petición a un cierto recurso en Internet, por ejemplo, a la página apuestasdeportivas.com

Para que pueda existir un bloqueo hay que poder monitorizar las peticiones de acceso, es decir, quién quiere acceder, a qué quiere acceder y determinar si ese alguien tiene o no permiso para acceder a ese algo. En caso de no ser así, se produce el bloqueo.

Las peticiones puedes ser:

  • Explícitas: nosotros pedimos contenido, habitualmente escribiendo el nombre web en un navegador. Aquí sabemos exactamente qué queremos bloquear.
  • Implícitas: el contenido que estamos viendo o la aplicación que estamos usamos realiza las peticiones «ocultas», sin nuestro conocimiento. Esta categoría incluye peticiones que no querremos bloquear, como las de sincronización de fecha y hora y las que son intrusivas y sí querremos bloquear como las que realizan un seguimiento.

Nos interesa aplicar bloqueos a las peticiones explícitas y, también, a las implícitas.

DNS

De la misma forma que nosotros tenemos un DNI que nos identifica unívocamente, los dispositivos conectasdos a una red tienen, también, su «DNI»; ésta es la denominada dirección IP. Un ejemplo de una IP sería 99.100.504.387

De la misma forma que no nombras a tus amigos por su DNI, sino por su nombre, cuando accedes a una web tampoco lo haces por su IP, sino por su nombre, como amazon.es o binariuscogitans.com

Un DNS (Domain Name System) es un servicio que usa un ordenador para traducir nombres como binariuscogitans.com a direcciones IP, que es con lo que realmente se maneja, y todo ello lo hace sin que nos enteremos.

DHCP

El DHPC (Dynamic Host Configuration Protocol) es un

protocolo de red de tipo cliente/servidor mediante el cual un servidor DHCP asigna dinámicamente una dirección IP y otros parámetros de configuración de red a cada dispositivo en una red para que puedan comunicarse con otras redes IP. Este servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme estas van quedando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después. Así los clientes de una red IP pueden conseguir sus parámetros de configuración automáticamente.

Como que ya sabemos qué es una IP, DHCP es, pues, un servicio que tiene nuestro router para expedirle una IP a tu dispositivo y así tenerlo identificado y dirigirle las respuestas a sus peticiones.

Como que la IP es como un DNI, una vez se otorga es IP a un dispositivo, no puede usarse para otro… hasta que desconectas ese dispositivo de la red y queda, por tanto, libre esa IP.

Control Parental

Un sistema de control parental es una herramienta que permite a los padres controlar y/o limitar el contenido a los que sus hijos puedan acceder a Internet desde sus dispositivos.

Esta limitación podemos ejercerla por tiempo (impedir el acceso en ciertos tramos horarios) o por contenidos (impedir el acceso a páginas pornográficas, de apuestas, etc).

El control parental puede ser de diversos tipos:

  • Basado en el dispositivo: permite controlar los contenidos mediante la instalación de un software específico para cada uno de los dispositivos. Un ejemplo de este tipo de software (que es el que uso en iOS y macOS es Lock Down). Soluciones basadas en plugin para navegadores sólo filtran el tráfico saliente del navegador, así que ni las menciono.
  • Basado en router: permite controlar los contenidos desde el router. No hay que instalar nada, pero no todos los routers lo permiten o lo hacen con funcionalidad limitada.
  • Basado en DNS: permite controlar los contenidos mediante un software instalado en un único equipo en tu red, proporcionando mucha funcionalidad.

Yo he optado por la basada en DNS debido a que:

  • Mi router de operadora tiene un control parental de risa.
  • Hay dispositivos, como la TV, que no disponen de software basado en dispositivo.
  • Lo más cómodo es hacer una sola instalación y realizar una configuración centralizada.

La elección final ha sido NxFilter, aunque también me había planteado Pi-Hole.

Deberemos realizar 2 tipos de tareas:

  1. Instalalción y configuración de NxFilter.
  2. Alterar la configuración del DNS de nuestros dispositivos.

¿Qué es NxFilter?

NxFilter es un filtro de DNS gratuito que se ubica entre los dispositivos de la red e Internet, y que permite el control de acceso la red de cada uno de los usuarios, de forma flexible y transparente analizando cada una de las peticiones de acceso que generan los dispositivos.

¿Gratuito? Sí, pero no. Te permite controlar hasta un máximo de 20 dispositivos, o lo que es lo mismo, 20 IP’s diferentes, lo que para un entorno doméstico debe de ser suficiente; en entornos empresariales, con más de 20 dispositivos, se requiere pago.

NxFilter dispone de una lista negra. Ésta va incementando su contenido de forma automática clasificando las direcciones web que visitas, pero si no tienes suficiente, puedes cagar otras listas negras que puedas obtener.

Las funcionalidades más destacables para nosotros son:

  • Políticas de uso/bloqueo.
  • Usuarios y grupos, a los que asignamos las políticas definidas.
  • Listas blancas, para evitar que ciertos dominios queden bloqueados.
  • Informes

Recomendaciones previas

Previo a explicar el funcionamiento del control parental y privacidad con NxFilter es recomendable «poner orden» en las IP’s de nuestros dispositivos. Me parece importante mantener un cierto estado higiene en el tema de las IP’s de los equipos.

Habitualmente las IP te las proporciona tu router a través del DHCP. El «problema» radica en que esas IP son dinámicas (hoy tu tableta tiene una IP y mañana, quizás, una distinta). Esto es un inconveniente si quieres ejercer control sobre cada dispositivo.

Lo suyo es que la IP de un dispositivo sea siempre la misma, es decir, usar IP estáticas.

Para tener IP’s estáticas podemos hacerlo de 2 formas:

  • Vamos a cada dispositivo y le asignamos manualmente una IP, y reconfiguramos las IP que el DHCP puede despachar.
  • Vamos al router, y a cada dispositivo le asignamos una IP para que el DHCP del router asigne siempre esas.

La segunda opción es, para mí, más directa y sencilla, porque lo hacemos desde un solo punto.

En mi router se encuentra en la opción de Configuración → LAN → DHCP estático – Red Local, y para cada dispositivo debemos otrogarle una IP única 

DHCP Estático
DHCP Estático

Haz un inventario de dispositivos, clasifícalos por tipo (ordenadores, móviles/tabletas, IoT, infraestructura, etc), por usuario, o por el criterio que mejor te parezca, y reserva a cada clasificación un rango de IP’s.

Reserva también un rango de IP para dispositivos que no estén en tu lista de IP’s estáticas, para otorgarles una IP dinámica en ese rango. Ejemplo:

  • Ordenadores: de la 192.168.0.200 a 192.168.0.249
  • Móviles y tabletas: de la 192.168.0.249 a 192.168.0.300
  • Dispositivos desconocidos (visitas): 192.168.0.100 a 192.168.0.199

Instalación de NxFilter

Puedes instalar NxFilter en cualquier ordenador que vaya a estar encendido siempre. Por temas de consumo energético y de coste, aconsejo hacerlo en una Raspberry Pi (o similar) o en un NAS si ya dispones de uno en casa.

Necesitas tener instalado Java. Puedes ver si lo tienes instalado desde el terminal escribiendo:

java --version

Puedes consultar cómo llevar a cabo todo el proceso de instalación (incluyendo Java) y arranque desde la web de NxFilter

El arranque tarda un poco. Puedes ver todo el proceso escribiendo en el terminal:

tail -f /nxfilter/log/nxfilter.log 

Configuración de NxFilter

Vamos a ver 2 niveles de configuración:

  • Básico o imprescindible: configuraremos políticas, usuarios y servidores DNS externos.
  • Extendida: colnfiguraremos grupos y tiempo libre.

Para configurar NxFilter, debemos entrar en él. Puedes hacerlo desde el mismo equipo donde lo has instalado escribiendo «localhost/admin» en la barra de direcciones del navegador.

Como que se entiende que el equipo con NxFilter va a estar conectado a la red pero no vas a tener una pantalla y un teclado conectados a él, lo suyo es hacer la configuración desde cualquier otro equipo. Para ello debes saber qué IP le ha asignado tu router a ese equipo. Si no te has saltado el apartado de «Recomendaciones previas» ya sabes qué IP le corresponde.

Supongamos la IP es 192.168.0.200. Teclea en la barra de direcciones http://192.168.0.200/admin.

Las credenciales por defecto son usuario admin y contraseña admin. ¡Te aconsejo que las cambies cuanto antes!

NXFilter se basa en bloquear grupos de sitios web, grupos que ya tiene definidos (aunque tú puedes crear de nuevos), y en los que cada grupo contiene una lista enorme de sitios web preexistentes. Así pues, la pieza fundamental de trabajo son esos grupos, que en NxFilter se deniminan categorías.

Configuración básica: políticas

Desde el menú Polcy → Policy observarás que ya dispones de una política llamada Default.

Esta política dispone de 3 categorías de sitios web para bloquear (anuncios, malware y seguimiento). A esta política le he añadido la de add-remove.

Esta política es la que usaré para todos los usuarios adultos.

Política por defecto

Tengo definidas 2 políticas de control parental para asignar, exclusivamente, a mi hijo:

  • Children, para limitar el acceso en horarios en los que le permito usar sus dispositivos. He marcado un montón de categorías de webs a las que no quiero que acceda. Fíjate que he marcado aquellas categorías que ya tenía marcadas en la política Default, pues son políticas distintas.
  • ChildrenGoToBed, para impedir el uso de sus dispositivos durante la noche, mientras se supone que debe estar durmiendo. En ella no he marcado ninguna categoría; simpplemente le he dicho que lo bloquee absolutamente todo.

Configuración básica: usuarios

Una vez configuradas las políticas, configuramos los usuarios. ¿Quienes son los usuarios? Tú, tu mujer, cada uno de tus hijos, tu suegra 🥶, etc.

Desde el menú User → User podrás dar de alta los usuarios. Para cada uno de ellos debemos establecer:

  • IP’s de sus dispositivos. Así aseguras que esa persona va a tener las mismas restricciones en todos sus equipos.
  • Política de «horario de trabajo». Selecciona la política que desees aplicar a ese usuario. NxFilter asigna Default por defecto.
  • Política de «tiempo libre». Por defecto se aplica la misma que en «horario de trabajo». Yo uso esta característica para configurar un bloqueo absoluto a mi hijo, dentro del período que he establecido como de «tiempo libre», cosa que veremos luego.
  • Grupo al que pertenece el usuario. NxFilter añade el usuario a un grupo ficticio (inexistente) llamado anon-grp. Veremos la utilidad de los grupos en el próximo apartado.

Hay que decirle a NxFilter que reconozca a los usuarios por su IP para poder aplicarles las políticas. Para ello hay que marcar Enable Authentication en el menú Config.

Configuración básica: DNS externos

NxFilter actúa como un filtro, pero no es un servicio DNS como tal, es decir, no resuelve nombres en direcciones IP.

Para resolver esos nombre necesitas usar el DNS de tu proveedor de Internet u otros como el de Google, Cloudflare, etc. Si bien NxFilter por defecto deja configurado el DNS de Google (8.8.8.8), yo uso Cloudflare, así que desde el menú DNS he configurado las DNS de CloudFlare:

Configuración extendida: grupos

¿Qué es un grupo? Pues un conjunto de usuarios.

Puedes establecer la política apropiada a cada usuario pero, si vas a establecer restricciones generales a todo un conjunto de usuarios, mejor lo haces usando esta característica de grupos.

Desde el menú User → Group podrás crear grupos y asignar usuarios a ellos. Para cada uno de ellos debemos establecer:

  • Política de «horario de trabajo». Selecciona la política que desees aplicar a ese usuario. NxFilter asigna Default por defecto.
  • Política de «tiempo libre». Por defecto se aplica la misma que en «horario de trabajo».
  • Miembros del grupo. Una vez asignados los miembros del grupo, a todos ellos se les aplicará la misma política.

Configuración extendida: tiempo libre

Dentro del apartado de políticas te aconsejo configurar, a tu gusto, lo que se denomina Tiempo libre. Este apartado es útil a la hora de configurar una denegación absoluta a mi hijo dentro del horario en que se supone debe de estar durmiendo. A esta política la he denominado «Go to bed»

Desde el menú Policy → Free time podrás crear reglas de lo que es para ti el tiempo libre. Para política de tiempor libre debemos establecer:

  • Tramo horario.
  • Días de la semana en que aplica.

Ahora debes ir al usuario (o grupo) sobre el que quieres establecer este bloqueo absoluto y le asignas en Free-time-policy la política ChildrenGoToBed (antes ponía «Same as work-time policy»).

De este modo, si el usuario está en alguno de los períodos definidos como de tiempo libre, aplicará la política de ChildrenGoToBed y bloqueará cualquier intento de acceso a Internet.

Configuración para dispositivos «especiales»

Hay dspositivos en casa que no son exclusivos de un usuario: la TV, el AppleTV o cualquier otro tipo de HTPC, elementos de IOT como Amazon Alexa, etc. Todos ellos tienen una IP asignada, y hacen peticiones de acceso a Internet, y suelen ser usados por toda la familia, indistintamente.

Es decisión tuya decidir si dichos dispositivos deben pasar por NxFilter o no, y qué tipo de política aplicarles.

Hay servicios de streaming como Amazon Vídeo o DAZN que no funcionan cuando la TV o el HTPC están siendo controlados por NxFilter, debido a los bloqueos que éste produce en muchas de las invocaciones que éstos hacen, especialmente a ciertas API que estos servicios utilizan.

Mi consejo es que optes por:

  1. Dejarlos fuera del control de NxFilter en primera instancia hasta que te familiarices con el uso de NxFilter
  2. Crees un usuario para, al menos, el HTPC y la TV, y crees una política exprofeso para ellos en la que vayas añadiendo categorías poco a poco y probando el buen o mal funcionamiento de estos dispositivos. Utilizando las denominadas páginas blancas, accesibles desde el menú Whitelist, puedes saltarte el filtro de algunos dominios que las categorías bloquean.

Yo me he creado, por ejemplo, una categoría llamada channel-tracking (menú Category→Custom), donde voy incorporando URL de seguimiento que veo que hacen estos dispositivos, y una política llamada TV-HTPC en la que, entre otros, he añadido esta categoría personal.

Configuración de los dispositivos

Hemos configurado NxFilter, pero ahora hay que preparar o configurar, también los dispositivos.

El objetivo es que todos pasen por nuestro filtro en lugar de ir directamente al DNS del proveedor de Internet u otros DNS que podamos tener configurados.

Si el router os da la opción, lo suyo es que sea en el propio router donde indiquéis la IP del equipo en el que habéis instalado WebFilter. De esta manera el router redirigirá todas las peticiones de acceso a Intenet a vuestro filtro DNS.

En mi caso, mi router de operadora no me lo permite, así que tengo que configurar cada uno de los dispositivos para que utilicen nuestro NxFilter, o bien tener mi propio servidor DHCP y hacerlo desde allí, cosa que veremos en un próximo artículo.

Asignar DNS en macOS

Accedemos a Preferencias del sistema → Red → Avanzado → DNS. Pulsando el botón + añadimos la IP del equipo en que tenemos NxFilter y lo ponemos como primer elemento de cualquiera de las DNS que pueda haber en la lista.

Asignar DNS en iOS

Accedemos a Ajustes → Wi-Fi → Información → Configurar DNS. Seleccionamos el modo «manual» y pulsando el botón + añadimos la IP del equipo en que tenemos NxFilter, lo ponemos como primer elemento de cualquiera de las DNS que pueda haber en la lista y pulsamos el botón Guardar.

Asignar DNS en Linux

Accedemos a Parámetros → Red y desde el perfil de red que estamos usando, en DNS, añadimos la IP del equipo en que tenemos NxFilter y lo ponemos como primer elemento de cualquiera de las DNS que pueda haber en la lista.

Asignar DNS en la TV

En mi TV, una LG OLED 55C7V se accede a Configuración → Red → Conexión cableada → Editar → Servidor DNS. Introduce la IP de NxFilter.

Te recomiendo accedas al manual de instrucciones para saber cómo se establecer, manualmente, la IP del DNS usado por tu TV.

Asignar DNS en el AppleTV/HTPC

En el Apple TV, accede a Ajustes → Red → Conexión → Configuración DNS. Estabelce la opción «manual» e introduce la IP de NxFilter.

Para otros HTCP, el procedimiento es similar. Por favor, sigue su manual de instrucciones.

Conclusión final

Además de educar a nuestros hijos en el ámbito del buen uso de las tecnologías y de los peligros que conllevan, no está de más disponer de un control parental y privacidad con NxFilter o cualquier otro software que pueda parecerte mejor, sencillo o adecuado.

Espero que esta guía y explicación haya sido aclaratoria y puedas sacarle provecho durante estos días de confinamiento por motivo del COVID-19. En este sentido, mis mejores deseos de que tanto tú, lector, como familia y allegados gocéis de salud y sobrellevéis, de la mejor manera posible, esta situación larga, pero temporal.