Si tiene niños en su hogar, es posible que haya sentido la necesidad de bloquear ciertos sitios web no deseados. Otra área de problemas comunes son los sitios web de redes sociales: puede sentir que los niños (y adultos) pierden demasiado tiempo en Facebook, Twitter, etc. y desean bloquearlos, o al menos hacerlos accesibles solo en ciertos momentos del día.
Para hacer esto posible, necesitamos un filtro de enrutador más contenido, un dispositivo a través del cual todos nuestros dispositivos, como computadoras portátiles, teléfonos inteligentes y tabletas se conectan a Internet. Este dispositivo también intercepta los sitios web a los que estos dispositivos acceden, y los bloquea si intentan acceder a un sitio web en la lista negra.
Hay filtros de contenido comerciales y listos para usar disponibles en el mercado, pero para nosotros, los tipos de bricolaje, no es divertido. Por lo tanto, nos ensuciaremos las manos y configuraremos una Raspberry Pi para el trabajo. Elegimos la Raspberry Pi para este proyecto debido a su pequeño tamaño y su consumo de energía insignificante. Sin embargo, estas instrucciones funcionarán casi sin modificaciones con casi cualquier computadora que ejecute Debian Linux o un derivado (Ubuntu, Mint, etc.).
Descargo de responsabilidad : esta guía asume un nivel intermedio de experiencia con Linux, y una buena disposición para solucionar problemas cuando estos surjan. La experiencia previa con líneas de comando y firewalls es una ventaja.
Cómo funciona
Hardware
Usaremos la Raspberry Pi 3 como un filtro de contenido de enrutador. Para esto, necesitaremos dos interfaces de red : una para conectarse a Internet y la otra para actuar como un punto de acceso WiFi para que nuestros otros dispositivos se conecten. La Raspberry Pi 3 tiene un conector Ethernet integrado y un módulo WiFi. Entonces, en este escenario, podemos usar un cable Ethernet ( eth0 ) para conectarse a Internet, mientras que el módulo WiFi ( wlan0 ) actuará como un punto de acceso.
Por supuesto, la conexión a Internet mediante Ethernet no siempre es posible. En este caso, necesitará un dongle WiFi USB compatible ( wlan1 ) para conectarse a Internet, mientras que el módulo WiFi integrado ( wlan0 ) actuará como un punto de acceso. Esta es la configuración que usaremos en esta guía.
Tenga en cuenta que si bien una Raspberry Pi 3 es principalmente adecuada para una configuración doméstica con algunas computadoras portátiles y teléfonos inteligentes, no proporcionará el rendimiento necesario para una configuración de gran oficina . Busque en un hardware más capaz si muchos clientes se conectarán a su filtro de contenido.
Software
Usaremos el excelente E2guardian para interceptar y filtrar nuestras solicitudes web. Dado que el filtrado de contenido puede tener un impacto en el rendimiento (dependiendo del tamaño de la lista de bloqueo), usaremos el caché de Squid para compensar este impacto de rendimiento.
Prerrequisitos
1. Raspberry Pi 3 con la última versión de Raspbian OS instalada y acceso a Internet. Si recién está comenzando con Raspberry Pi, le recomendamos que lea nuestra guía sobre cómo comenzar a usar Raspberry Pi 3.
2. [Opcional] USB WiFi Dongle : esto es necesario si, y solo si no puede conectar su Raspberry Pi 3 a Internet con un cable Ethernet. Si planea usar WiFi tanto para conectarse a internet como para un punto de acceso, se requiere.
3. Acceso físico a la Raspberry Pi : debido a la naturaleza de este artículo, un solo error en la configuración del firewall puede bloquearlo fuera de su Pi si lo utiliza en modo sin cabeza. Por lo tanto, se recomienda que conecte un monitor, teclado y mouse mientras lo configura hasta que todo esté configurado.
Usa Raspberry Pi como Router
1. Conecte su Pi a internet usando Ethernet ( eth0 ). Si está utilizando un dongle WiFi USB (probablemente wlan1 ) en su lugar, conéctelo a internet. Deje el módulo WiFi incorporado ( wlan0 ) como está por ahora.
2. Obtenga el software de requisito previo que necesitamos:
sudo apt install iptables iptables-persistent hostapd dnsmasq squid3
3. Configuraremos hostapd
para que nuestra Pi pueda actuar como un punto de acceso WiFi . Para esto, cree un archivo de configuración con su editor de texto favorito, por ejemplo, sudo nano /etc/hostapd/hostapd.conf
, y pegue el contenido de nuestra página de GitHub.
Algunas líneas que puede que desee modificar según el gusto son:
ssid = RaspberryPiAP
Esta línea dicta cuál será el nombre del punto de acceso. Elegí RaspberryPiAP
.
wpa_passphrase = beebom.com
Esto especifica la frase de contraseña utilizada para acceder al punto de acceso. beebom.com
, pero se recomienda cambiarlo a una frase de contraseña segura de su elección.
4. A continuación, configuraremos un servidor DHCP utilizando dnsmasq
. Edite el archivo de configuración /etc/dnsmasq.conf
y agregue las siguientes líneas al final:
[código fuente] interface = lo, wlan0
no-dhcp-interface = lo
dhcp-range = 192.168.8.20, 192.168.8.254, 255.255.255.0, 12h [/ sourcecode]
Esto hace que la interfaz en wlan0
(el módulo WiFi incorporado) distribuya las direcciones IP a los clientes en el rango 192.168.8.20 a 192.168.8.254 .
5. Configure una dirección IP estática para el módulo WiFi wlan0
. Abra el archivo /etc/network/interfaces
. Probablemente se ve algo como esto (énfasis mío):
[código fuente] directorio-fuente /etc/network/interfaces.d
auto lo
iface lo inet loopback
manual de inace iface eth0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Aquí, ubique las líneas en negrita que tratan con wlan0
, y cámbielas, para que el archivo wlan0
el siguiente aspecto:
[código fuente] directorio-fuente /etc/network/interfaces.d
auto lo
iface lo inet loopback
manual de inace iface eth0
allow-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
dirección 192.168.8.1
máscara de red 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Esto configura una dirección IP estática 192.168.8.1
en wlan0. Recuerde esta dirección, ya que esta es la dirección que usaremos para comunicarnos con nuestra Raspberry Pi más adelante .
6. Ahora configure el reenvío de IP . Edite el archivo /etc/sysctl.conf
y agregue la siguiente línea:
net.ipv4.ip_forward = 1
7. Ahora configuraremos la traducción de direcciones de red (NAT) en nuestro firewall. Para hacer esto, ingrese los siguientes 2 comandos:
sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASCARADA sudo iptables-save | sudo tee /etc/iptables/rules.v4
El primer comando configura NAT, mientras que el segundo comando guarda nuestra configuración actual de firewall en un archivo llamado /etc/iptables/rules.v4
. Esto asegura que la configuración persista en los reinicios.
8. En este punto, reinicia tu Raspberry Pi . Esto es para asegurarnos de que todos los cambios que hicimos en los archivos de configuración son funcionales.
9. Después de reiniciar, debería poder ver la zona activa de RaspberryPiAP
recién creada (a menos que haya cambiado el nombre en el paso 3) en sus otros dispositivos, como computadoras portátiles y teléfonos inteligentes. Puede conectarse a él con la contraseña que especificó y acceder a Internet.
Esto es todo lo que debe hacer si necesita un enrutador básico de baja potencia. Si también desea configurar un filtro de contenido, siga leyendo.
Configurar filtro de contenido usando E2guardian
E2guardian no está presente en los repositorios predeterminados de Raspbian. Para instalarlo, vaya a la página Github del proyecto y descargue el archivo que termina en armhf.deb
. Ahora abra Terminal, vaya a su carpeta de Descargas (o dondequiera que elija descargar el archivo), e instálelo:
cd ~ / Descargas sudo dpkg -i ./e2guardian_*_jessie_armhf.deb
Probablemente verá algunos errores sobre los paquetes faltantes cuando instale E2guardian. Para corregir esto, deje que la instalación termine e ingrese el siguiente comando:
sudo apt-get install -f
Uso de listas de contenido
Hay varias listas presentes en el directorio /etc/e2guardian/lists
. Estos archivos incluyen la lista de extensiones prohibidas, la lista de listas prohibidas, la lista de frases prohibidas, la lista de banneds, la lista de listas prohibidas, la lista de excepciones y más. Estos archivos están debidamente documentados con comentarios. Échales un vistazo para familiarizarte.
Como ejemplo, supongamos que desea bloquear algunas redes sociales populares . Abra el /etc/e2guardian/lists/bannedsitelist
, y debajo del bloque Blanket SSL / CONNECT (ya que estos sitios web usan https en lugar de http simple), agregue las siguientes líneas:
facebook.com twitter.com reddit.com
Ahora vuelva a cargar el servicio E2guardian usando el comando sudo service e2guardian reload
( tendrá que ejecutar este comando cada vez que modifique los archivos de configuración ). Cualquier cliente que use el filtro de contenido ahora no podrá acceder a estos sitios web. Incluso los sitios móviles (por ejemplo, m.twitter.com) y las aplicaciones dedicadas para teléfonos inteligentes no funcionarán.
E2guardian también bloquea el porno por defecto . Si desea permitirlo (hey, no estamos juzgando), abra el /etc/e2guardian/lists/bannedphraselist
, y localice la siguiente línea:
.Incluir
Coméntelo agregando un hash (símbolo #) al frente, para que se vea así:
#.Incluir
Nuevamente, vuelva a cargar la configuración con sudo service e2guardian reload
, y listo.
Configurando Clientes
Ahora que nuestro servidor proxy está configurado, podemos continuar con la configuración de los clientes. Para usar el filtro de contenido, todos los clientes deben estar conectados a la zona activa de Rapberry Pi y configurados para usar el proxy. La configuración de un proxy es diferente en todos los sistemas operativos y dispositivos. Sin embargo, demostraremos cómo configurarlo en Windows y Android, ya que son más populares.
Windows
Vaya a Panel de control> Red e Internet> Opciones de Internet . En la ventana que se abre, navegue a la pestaña Conexiones y haga clic en Configuración de LAN .
Aquí, haga clic en Avanzado, e ingrese 192.168.8.1
como la dirección proxy, y 8080
como el puerto. Asegúrese de que la casilla Usar el mismo servidor proxy para todos los protocolos esté marcada. Haga clic en Aceptar .
Eso es todo lo que necesitas hacer. Los navegadores web más populares, como Google Chrome y Firefox, recogerán automáticamente la configuración del proxy del sistema.
Androide
Vaya a Configuración del sistema> WiFi . Ahora toque y mantenga presionado el punto de acceso de la Raspberry Pi y seleccione Modificar red . En Opciones avanzadas, configure la opción Proxy en Manual . Ahora, bajo Nombre de host proxy, ingrese la dirección IP del Pi 192.168.8.1
. En Puerto proxy, ingrese 8080
y toque Guardar .
Ahora puede probar la configuración del proxy. Intente ir a un sitio web en su lista negra: verá una página de "Acceso denegado" como esta:
Aplicación del uso del proxy
Hasta ahora, confiamos en que los clientes jueguen bien y usen internet a través del filtro de contenido. Por supuesto, esto rara vez sucede en el mundo real. Entonces, para hacer que todos los clientes pasen por el proxy, ejecute los siguientes comandos:
sudo iptables -A PREROUTING -t nat -p tcp - puerto de destino 80 -j REDIRECT - a-ports 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-puerto 443 -j REDIRECTO --to- puertos 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4
Esto redirigirá automáticamente todo el tráfico http (puerto 80) y https (puerto 443) en la zona activa de la frambuesa Pi al proxy de filtro de contenido. Ahora, sin configurar los ajustes de proxy en sus dispositivos, no podrán acceder a sitios web https seguros como Facebook, Gmail, Twitter, etc. Esto asegura que cualquier persona que desee conectarse a su punto de acceso de Pi tenga que pasar por el proxy.
Esto es todo lo que necesita saber para el uso básico del filtro de contenido. Si desea aprender algunas características avanzadas, siga leyendo.
Escenarios de uso avanzado
Configuración de un filtro basado en el tiempo
Supongamos que desea bloquear los sitios web que mencionamos en la sección anterior Uso de listas de contenido, pero solo en ciertos momentos del día . Personalmente, prefiero bloquear Reddit, Facebook y Twitter durante las horas de trabajo (de 9 am a 5 pm) entre semana porque son una pesadilla para la productividad.
Abra el /etc/e2guardian/lists/bannedsitelist
, y agregue la siguiente línea:
tiempo: 9 0 17 0 01234
Esta línea funciona de la siguiente manera: el temporizador comienza a las 9 (9 am) 0 (00 minutos), hasta las 17 (5 pm en formato de 24 horas) 0 (00 minutos), desde 0 (lunes) a 4 (viernes).
Tomemos otro ejemplo:
tiempo: 10 30 20 45 024
Esto bloqueará los sitios configurados desde las 10:30 am (10 30) hasta las 8:45 pm (20 45) el lunes (0), el miércoles (2) y el viernes (4).
Dejar que ciertas direcciones IP omitan el proxy
Es posible permitir que ciertas direcciones IP omitan el filtro de contenido. Esto se puede configurar mediante la configuración del servidor de seguridad. Es posible que haya notado que en nuestro dnsmasq.conf
, solo configuramos el punto de acceso para asignar direcciones IP de 192.168.8.20 a 192.168.8.254 a los clientes. Eso significa que las direcciones de 192.168.8.2 a 192.168.8.19 no se asignarán automáticamente a ningún cliente (no podemos usar 192.168.8.1 porque eso es lo que utiliza nuestra propia Raspberry Pi).
Para hacer esto, primero configure una IP estática en el dispositivo al que desea dar acceso completo. Por ejemplo, para configurar una IP estática de 192.168.8.2 en una máquina con Windows, use estos ajustes:
Ahora, en tu Raspberry Pi, ejecuta los siguientes comandos.
sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 - puerto de destino 80 -j RETURN sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-puerto 443 -j VOLVER
Ahora, deshabilite el uso de proxy en su dispositivo e intente abrir un sitio web prohibido. Deberías poder abrirlo. Si hay más direcciones IP que desea agregar a la lista blanca, ejecute nuevamente los dos comandos anteriores, pero reemplace la dirección IP con la que desea. Una vez que esté satisfecho con la lista blanca, ejecute el siguiente comando para guardar la configuración de su firewall:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Una cosa importante a tener en cuenta es que no debe permitir que nadie conozca las direcciones IP incluidas en la lista blanca. De lo contrario, simplemente pueden configurar su dispositivo en esa dirección IP para omitir el proxy.
Preocupaciones de seguridad
Ya que su Raspberry Pi será el punto de entrada y salida para todas sus comunicaciones, es importante asegurarla. Aquí hay algunos consejos sobre cómo mejorar la seguridad. Tenga en cuenta que estos son solo indicadores básicos y no una lista completa de riesgos de seguridad. La cantidad de seguridad dependerá de la naturaleza de su red (hogar, pequeña oficina, etc.) y de lo maliciosos que sean los usuarios.
Deshabilitar servicios innecesarios
Dado que este es un enrutador, es mejor ejecutar solo los servicios que requerimos. Más servicios en ejecución significa más vulnerabilidades que potencialmente pueden ser explotadas. Definitivamente no use este sistema como un escritorio regular .
Vaya a Menú> Preferencias> Configuración de Raspberry Pi . En la pestaña Interfaces, desactive todos los servicios que no requiera.
Cambiar la contraseña predeterminada
Una nueva instalación de Raspbian viene con la contraseña predeterminada 'frambuesa' para el usuario predeterminado 'pi'. Se recomienda cambiar esto a una contraseña más segura. Para cambiarlo, abre un terminal ejecuta este comando:
contraseña
Retire el monitor y otros periféricos
Dado que todo lo que se ejecutará en esta Pi es el software requerido para usarlo como enrutador y filtro web, no necesitamos un monitor u otros periféricos, como un mouse y un teclado. Si necesita cambiar la configuración y eso, siempre puede usar SSH o conectar un monitor y un teclado según sea necesario.
Desactivar inicio de sesión automático
Raspbian está configurado para iniciar sesión automáticamente con las credenciales de usuario 'pi' sin pedir contraseña. Esto podría estar bien para un escritorio familiar de propósito general, pero peligroso para un enrutador. Para deshabilitar esto, en el escritorio de Raspbian, vaya a Menú> Preferencias> Configuración de Raspberry Pi . En la pestaña Sistema, frente al encabezado Iniciar sesión automáticamente, desmarque la casilla Iniciar sesión como usuario 'pi' .
En el mismo cuadro de diálogo, también es recomendable establecer la configuración de inicio en A CLI . Esto ahorrará recursos ya que no necesitamos una GUI en un enrutador. Si desea utilizar el escritorio por cualquier motivo, inicie sesión con su nombre de usuario y ejecute el comando startx
para activar la interfaz gráfica.
Solución de problemas comunes
Las interfaces siguen siendo renombradas
Esto es muy común si está utilizando dos interfaces inalámbricas en su Pi. Si está utilizando Ethernet para conectar su Pi a Internet, puede ignorar esta sección de manera segura . El problema es que ambas interfaces inalámbricas ( wlan0 y wlan1 ) a veces intercambian nombres después de un reinicio. Es decir, el módulo WiFi incorporado wlan0 cambia de nombre a wlan1, y viceversa. Por supuesto, esto es un gran problema ya que confiamos en que tengan un nombre coherente para nuestros archivos de configuración. Aquí es cómo hacer que sea consistente en los reinicios:
1. Averigüe la dirección MAC de sus interfaces . Ejecute el comando ifconfig | grep HWaddr
ifconfig | grep HWaddr
en tu Raspberry Pi. Verás una salida como la siguiente:
Anote el texto a la derecha de la palabra 'HWaddr' en la sección wlan0 y wlan1 . Puede ignorar con seguridad la sección eth0 . Estas son las direcciones MAC de sus interfaces inalámbricas.
Si no está seguro de qué dirección MAC pertenece a qué interfaz, simplemente desenchufe la llave USB WiFi y vuelva a ejecutar el comando. La interfaz WLAN que aparece ahora es su interfaz WiFi incorporada, mientras que la otra es USB.
2. Cree un nuevo archivo /etc/udev/rules.d/10-network.rules
usando su editor de texto favorito. Por ejemplo :
sudo nano /etc/udev/rules.d/10-network.rules
3. Ingrese el siguiente texto en este archivo. Reemplace xx: xx: xx: xx, etc. con la dirección MAC apropiada :
[código fuente] # Configure el módulo WiFi integrado como wlan0. Reemplace xx: xx: xx etc. con el
# dirección MAC del módulo incorporado
SUBSYSTEM == "net", ACTION == "add", ATTR {address} == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"
# Configure el dongle WiFi USB como wlan1. Reemplace el yy: yy: yy etc. con el
# La dirección MAC de la llave USB
SUBSYSTEM == "net", ACTION == "add", ATTR {address} == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ sourcecode]
Asegúrese de que la dirección MAC de la interfaz WiFi incorporada corresponda a wlan0, y de WiFi USB a wlan1, ya que esa es la convención que seguimos en esta guía.
4. Reinicie su Raspberry Pi. Sus interfaces comenzarán ahora con el nombre correcto.
Restablecer la configuración del cortafuegos
Otro problema común es un firewall mal configurado. Dependiendo de la configuración de su red, puede tomar varios intentos antes de obtener el firewall correcto. Si en algún momento piensa que puede haber estropeado la configuración del firewall, ejecute los siguientes comandos para comenzar desde cero:
sudo iptables - flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain
Esto eliminará toda la configuración del firewall. Ahora puede comenzar a configurar el firewall desde cero. Una vez que esté satisfecho, ejecute el comando sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo iptables-save | sudo tee /etc/iptables/rules.v4
para que la configuración sea permanente.
Usa tu Raspberry Pi como enrutador y filtro de contenido
Eso es todo acerca de cómo convertir tu Raspberry Pi en un potente enrutador y filtro de contenido proxy. Puede obtener los archivos de configuración exactos que usamos para nuestra configuración en nuestra página de GitHub. Háganos saber cómo funciona para usted. Si algo no funciona como se esperaba, o si un paso parece demasiado confuso, no dude en hacernos una pregunta en la sección de comentarios a continuación.