Recommandé, 2024

Choix De L'Éditeur

Comment utiliser Raspberry Pi en tant que routeur et filtre de contenu

Si vous avez des enfants chez vous, vous avez peut-être ressenti le besoin de bloquer certains sites Web indésirables. Les sites de médias sociaux sont un autre problème courant. Vous pourriez penser que les enfants (et les adultes) perdent trop de temps sur Facebook, Twitter, etc. et que vous souhaitez les bloquer, ou du moins les rendre accessibles uniquement à certains moments de la journée.

Pour rendre cela possible, nous avons besoin d’un routeur plus un filtre de contenu, une appliance à travers laquelle tous nos appareils, tels que les ordinateurs portables, les smartphones et les tablettes, se connectent à Internet. Cet appareil intercepte également les sites Web auxquels ces périphériques ont accès et les bloque s'ils tentent d'accéder à un site Web figurant sur une liste noire.

Il existe sur le marché des filtres de contenu commerciaux prêts à l'emploi, mais pour nous, types de bricolage, il n'y a pas d'amusement à cela. Ainsi, nous allons nous salir les mains et mettre en place un Raspberry Pi. Nous avons choisi le Raspberry Pi pour ce projet en raison de sa taille réduite et de sa consommation d'énergie négligeable. Cependant, ces instructions fonctionneront presque sans modification avec presque tous les ordinateurs exécutant Debian Linux ou un produit dérivé (Ubuntu, Mint, etc.).

Clause de non - responsabilité : Ce guide suppose un niveau d’expérience intermédiaire avec Linux et une volonté de résoudre les problèmes le cas échéant. Une expérience préalable avec les lignes de commande et les pare-feu est un bonus.

Comment ça marche

Matériel

Nous utiliserons le Raspberry Pi 3 comme filtre de contenu pour routeur et cum. Pour cela, nous aurons besoin de deux interfaces réseau : une pour se connecter à Internet et l'autre pour servir de point d'accès WiFi pour les autres appareils auxquels nous connecter. Le Raspberry Pi 3 a une prise Ethernet intégrée et un module WiFi. Ainsi, dans ce scénario, nous pouvons utiliser un câble Ethernet ( eth0 ) pour se connecter à Internet, tandis que le module WiFi ( wlan0 ) fera office de point d'accès.

Bien entendu, la connexion à Internet à l'aide d'Ethernet n'est pas toujours possible. Dans ce cas, vous aurez besoin d'un dongle USB WiFi compatible ( wlan1 ) pour vous connecter à Internet, tandis que le module WiFi intégré ( wlan0 ) servira de point d'accès. C'est la configuration que nous allons utiliser dans ce guide.

Gardez à l'esprit que, bien qu'un Raspberry Pi 3 soit généralement adapté à une installation à domicile avec quelques ordinateurs portables et smartphones, il ne fournira pas les performances nécessaires à une installation dans un grand bureau . Recherchez un matériel plus performant si de nombreux clients se connectent à votre filtre de contenu.

Logiciel

Nous utiliserons l'excellent E2guardian pour intercepter et filtrer nos requêtes Web. Le filtrage du contenu pouvant avoir un impact sur les performances (en fonction de la taille de la liste de blocage), nous allons utiliser le cache Squid pour compenser cet impact négatif sur les performances.

Conditions préalables

1. Raspberry Pi 3 avec la dernière version de Raspbian OS installée et un accès à Internet. Si vous commencez seulement avec le Raspberry Pi, nous vous recommandons de lire notre guide sur la façon de démarrer avec le Raspberry Pi 3.

2. [Facultatif] Clé USB WiFi - Cela est nécessaire si et seulement si vous ne pouvez pas connecter votre Raspberry Pi 3 à Internet avec un câble Ethernet. Si vous envisagez d'utiliser le WiFi pour vous connecter à Internet et en tant que point d'accès, ceci est obligatoire.

3. Accès physique au Raspberry Pi - En raison de la nature de cet article, une seule erreur dans la configuration du pare-feu peut vous empêcher de sortir de votre Pi si vous l’utilisez en mode sans tête. Par conséquent, il est recommandé de connecter un moniteur, un clavier et une souris lors de la configuration jusqu'à ce que tout soit configuré.

Utilisez Raspberry Pi comme routeur

1. Connectez votre Pi à Internet en utilisant Ethernet ( eth0 ). Si vous utilisez plutôt un dongle USB WiFi (probablement wlan1 ), connectez-le à Internet. Laissez le module WiFi intégré ( wlan0 ) tel quel pour le moment.

2. Obtenez le logiciel prérequis dont nous avons besoin:

 sudo apt installer iptables iptables-persistent hostapd dnsmasq squid3 

3. Nous allons configurer hostapd pour que notre Pi puisse jouer le rôle de point d'accès WiFi . Pour cela, créez un fichier de configuration en utilisant votre éditeur de texte favori, par exemple sudo nano /etc/hostapd/hostapd.conf, puis collez le contenu de notre page GitHub.

Certaines lignes que vous pourriez vouloir modifier selon vos goûts sont:

 ssid = RaspberryPiAP 

Cette ligne détermine le nom du point d'accès. J'ai choisi RaspberryPiAP .

 wpa_passphrase = beebom.com 

Ceci spécifie la phrase secrète utilisée pour accéder au hotspot. J'ai utilisé beebom.com, mais il est recommandé de le remplacer par un mot de passe complexe de votre choix.

4. Ensuite, nous allons configurer un serveur DHCP en utilisant dnsmasq . Editez le fichier de configuration /etc/dnsmasq.conf et ajoutez les lignes suivantes à la fin:

[code source] interface = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20, 192.168.8.254, 255.255.255.0, 12h [/ code_source]

Cela permet à l'interface sur wlan0 (le module WiFi intégré) de distribuer des adresses IP aux clients dans la plage 192.168.8.20 à 192.168.8.254 .

5. Configurez une adresse IP statique pour le module WiFi intégré wlan0 . Ouvrez le fichier /etc/network/interfaces . Cela ressemble probablement à quelque chose comme ça (c'est moi qui souligne):

[code source] répertoire source /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manuel

allow-hotplug wlan0
iface wlan0 inet manuel
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manuel
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Ici, localisez les lignes en gras traitant de wlan0 et modifiez-les afin que le fichier ressemble à ce qui suit:

[code source] répertoire source /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manuel

allow-hotplug wlan0
iface wlan0 inet statique
hostapd /etc/hostapd/hostapd.conf
adresse 192.168.8.1
masque de réseau 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manuel
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Ceci configure une adresse IP statique 192.168.8.1 sur wlan0. Rappelez-vous cette adresse, car c’est cette adresse que nous utiliserons pour communiquer avec notre Raspberry Pi ultérieurement .

6. Configurez maintenant le transfert IP . Editez le fichier /etc/sysctl.conf et ajoutez-y la ligne suivante:

 net.ipv4.ip_forward = 1 

7. Nous allons maintenant configurer la traduction d'adresses réseau (NAT) dans notre pare-feu. Pour ce faire, entrez les 2 commandes suivantes:

 sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4 

La première commande configure NAT, tandis que la seconde enregistre la configuration actuelle de notre pare-feu dans un fichier appelé /etc/iptables/rules.v4 . Cela garantit que la configuration persiste après les redémarrages.

8. À ce stade, redémarrez votre Raspberry Pi . Cela permet de s’assurer que toutes les modifications apportées aux fichiers de configuration sont fonctionnelles.

9. Après le redémarrage, vous devriez pouvoir voir le point d'accès RaspberryPiAP nouvellement créé (à moins que vous n'ayez changé le nom à l'étape 3) sur vos autres appareils, tels que les ordinateurs portables et les smartphones. Vous pouvez vous y connecter en utilisant le mot de passe que vous avez spécifié et accéder à Internet.

C’est tout ce que vous avez à faire si vous avez besoin d’un routeur basique de faible puissance. Si vous souhaitez également configurer un filtre de contenu, lisez la suite.

Configurer le filtre de contenu à l'aide d'E2guardian

E2guardian n'est pas présent dans les référentiels Raspbian par défaut. Pour l'installer, allez à la page Github du projet et téléchargez le fichier se terminant par armhf.deb . Maintenant, ouvrez Terminal, allez dans votre dossier Téléchargements (ou là où vous avez choisi de télécharger le fichier) et installez-le:

 cd ~ / Téléchargements sudo dpkg -i ./e2guardian_*_jessie_armhf.deb 

Vous verrez probablement quelques erreurs concernant les paquets manquants lors de l'installation d'E2guardian. Pour remédier à cela, laissez l’installation se terminer et entrez la commande suivante:

 sudo apt-get install -f 

Utiliser les listes de contenu

Plusieurs listes sont présentes dans le /etc/e2guardian/lists . Ces fichiers incluent bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist, etc. Ces fichiers sont correctement documentés avec des commentaires. Jetez un coup d'oeil à eux pour vous familiariser.

Par exemple, supposons que vous souhaitiez bloquer certains réseaux sociaux populaires . Ouvrez le fichier /etc/e2guardian/lists/bannedsitelist et, sous le bloc Blanket SSL / CONNECT (puisque ces sites Web utilisent https au lieu de http simple), ajoutez les lignes suivantes:

 facebook.com twitter.com reddit.com 

Rechargez maintenant le service E2guardian en utilisant la commande sudo service e2guardian reload ( vous devrez exécuter cette commande chaque fois que vous modifierez les fichiers de configuration ). Tous les clients utilisant le filtre de contenu ne pourront plus accéder à ces sites Web. Même les sites mobiles (par exemple, m.twitter.com) et les applications dédiées pour smartphone ne fonctionneront pas.

E2guardian bloque également le porno par défaut . Si vous souhaitez l'autoriser (hé, nous ne jugeons pas), ouvrez le fichier /etc/e2guardian/lists/bannedphraselist et localisez la ligne suivante:

 .Comprendre 

Commentez-le en ajoutant un dièse (symbole #) à l'avant, de sorte qu'il ressemble à ceci:

 #.Comprendre 

Encore une fois, rechargez la configuration avec sudo service e2guardian reload et le tour est joué.

Configuration des clients

Maintenant que notre serveur proxy est configuré, nous pouvons passer à la configuration des clients. Pour utiliser le filtre de contenu, tous les clients doivent être connectés au hotspot de Rapberry Pi et configurés pour utiliser le proxy. La configuration d'un proxy est différente selon les systèmes d'exploitation et les périphériques. Cependant, nous montrerons comment le configurer sous Windows et Android, car ils sont plus populaires.

les fenêtres

Allez au Panneau de configuration> Réseau et Internet> Options Internet . Dans la fenêtre qui s’ouvre, accédez à l’onglet Connexions, puis cliquez sur Paramètres réseau .

Ici, cliquez sur Avancé et entrez 192.168.8.1 comme adresse proxy et 8080 comme port. Assurez-vous que la case Utiliser le même serveur proxy pour tous les protocoles est cochée. Cliquez sur OK

C'est tout ce que vous devez faire. La plupart des navigateurs Web tels que Google Chrome et Firefox captent automatiquement les paramètres de proxy du système.

Android

Accédez à Paramètres système> WiFi . À présent, appuyez et maintenez le point d'accès Raspberry Pi, puis sélectionnez Modifier le réseau . Sous Options avancées, définissez l'option Proxy sur Manuel . Maintenant, sous Nom d’hôte proxy, entrez l’adresse IP du Pi 192.168.8.1 . Sous Port du proxy, entrez 8080 et appuyez sur Enregistrer .

Vous pouvez maintenant tester la configuration du proxy. Essayez d’aller sur un site Web de votre liste noire. Vous verrez alors une page «Accès refusé» comme celle-ci:

Application de l'utilisation du proxy

Jusqu'à présent, nous comptons sur les clients qui jouent bien et utilisent Internet via le filtre de contenu. Bien sûr, cela se produit rarement dans le monde réel. Donc, pour que tous les clients passent par le proxy, exécutez les commandes suivantes:

 sudo iptables -A PREROUTING -t nat -p tcp - destination-port 80 -j REDIRECT --to-ports 8080 sudo iptables -A PREROUTING -t nat -p tcp - destination-port 443 -j REDIRECT --to- ports 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4 

Cela redirigera automatiquement tout le trafic http (port 80) et https (port 443) sur le point chaud du raspberry Pi vers le proxy de filtrage du contenu. Désormais, sans configurer les paramètres de proxy sur vos appareils, ils ne pourront plus accéder aux sites Web sécurisés https tels que Facebook, Gmail, Twitter, etc. Cela garantit que toute personne souhaitant se connecter à votre point d'accès sans fil Pi doit passer par le proxy.

C’est tout ce que vous devez savoir pour utiliser le filtre de contenu de manière basique. Si vous souhaitez apprendre quelques fonctionnalités avancées, lisez la suite.

Scénarios d'utilisation avancés

Configuration d'un filtre temporel

Supposons que vous souhaitiez bloquer les sites Web mentionnés dans la section Utilisation des listes de contenu ci-dessus, mais uniquement à certaines heures de la journée . Personnellement, je préfère bloquer Reddit, Facebook et Twitter pendant les heures de travail (de 9h00 à 17h00) en semaine, car ils sont un cauchemar de productivité.

Ouvrez le fichier /etc/e2guardian/lists/bannedsitelist et ajoutez-y la ligne suivante:

 temps: 9 0 17 0 01234 

Cette ligne fonctionne comme suit - le chronomètre démarre à 9 heures ( 0 minutes), jusqu'à 17 heures ( 17 heures au format 24 heures) 0 heures (00 minutes), de 0 heures (lundi) à 4 heures (vendredi).

Prenons un autre exemple:

 temps: 10 30 20 45 024 

Cela bloquera les sites configurés de 10h30 à 20h45 les lundi, 0, mercredi et le vendredi (4).

Laisser certaines adresses IP contourner le proxy

Il est possible de laisser certaines adresses IP contourner le filtre de contenu. Cela peut être configuré en configurant le pare-feu . Vous avez peut-être remarqué que, dans notre dnsmasq.conf, nous définissons uniquement le point d'accès pour attribuer des adresses IP de 192.168.8.20 à 192.168.8.254 aux clients. Cela signifie que les adresses de 192.168.8.2 à 192.168.8.19 ne seront automatiquement attribuées à aucun client (nous ne pouvons pas utiliser 192.168.8.1, car c’est ce que notre Raspberry Pi utilise lui-même).

Pour ce faire, commencez par configurer une adresse IP statique sur le périphérique auquel vous souhaitez accorder un accès complet. Par exemple, pour configurer une adresse IP statique de 192.168.8.2 sur un ordinateur Windows, utilisez les paramètres suivants:

Maintenant, sur votre Raspberry Pi, exécutez les commandes suivantes.

 sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 - destination-port 80 -j RETOUR sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 - destination-port 443 -j RETURN 

Désactivez maintenant l’utilisation du proxy sur votre appareil et essayez d’ouvrir un site Web interdit. Vous devriez pouvoir l'ouvrir. Si vous souhaitez ajouter d'autres adresses IP à la liste blanche, exécutez à nouveau les deux commandes ci-dessus, mais remplacez l'adresse IP par celle de votre choix. Une fois que vous êtes satisfait de la liste blanche, exécutez la commande suivante pour enregistrer votre configuration de pare-feu:

 sudo iptables-save | sudo tee /etc/iptables/rules.v4 

Il est important de garder à l’esprit que vous ne devez informer personne des adresses IP figurant sur la liste blanche. Sinon, ils peuvent simplement configurer leur appareil avec cette adresse IP pour contourner le proxy.

Problèmes de sécurité

Étant donné que votre Raspberry Pi sera le point d’entrée et de sortie de toutes vos communications, il est important de le sécuriser. Voici quelques conseils pour améliorer la sécurité. Gardez à l'esprit que ce ne sont que des indicateurs de base et non une liste complète des pièges de la sécurité. Le degré de sécurité dépend de la nature de votre réseau (domicile, petit bureau, etc.) et de la méchanceté des utilisateurs.

Désactiver les services inutiles

Comme il s’agit d’un routeur, il est préférable d’exécuter uniquement les services requis. Plus de services en cours d'exécution signifie plus de vulnérabilités qui peuvent potentiellement être exploitées. N'utilisez certainement pas ce système comme un bureau ordinaire .

Allez dans Menu> Préférences> Configuration de Raspberry Pi . Dans l'onglet Interfaces, désactivez tous les services dont vous n'avez pas besoin.

Changer le mot de passe par défaut

Une nouvelle installation de Raspbian est fournie avec le mot de passe par défaut "raspberry" pour l'utilisateur par défaut "pi". Il est recommandé de changer cela en un mot de passe plus sécurisé. Pour le changer, ouvrez un terminal avec la commande suivante:

 passwd 

Retirer le moniteur et les autres périphériques

Puisque tout ce qui se passera sur ce Pi sera le logiciel requis pour l'utiliser en tant que routeur et filtre Web, nous n'avons pas besoin d'un moniteur ou de tout autre périphérique, tel qu'une souris ou un clavier, qui y est connecté. Si vous avez besoin de modifier des paramètres, vous pouvez toujours utiliser SSH ou connecter un moniteur et un clavier selon vos besoins.

Désactiver la connexion automatique

Raspbian est configuré pour se connecter automatiquement avec les informations d'identification de l'utilisateur 'pi' sans demander de mot de passe. Cela peut convenir à un ordinateur de bureau à usage général, mais dangereux pour un routeur. Pour le désactiver, sur le bureau Raspbian, sélectionnez Menu> Préférences> Configuration de Raspberry Pi . Dans l'onglet Système, devant l'en-tête Connexion automatique, décochez la case Connexion en tant qu'utilisateur 'pi' .

Dans la même boîte de dialogue, il est également conseillé de définir le paramètre Boot sur To CLI . Cela permettra d'économiser des ressources car nous n'avons pas besoin d'une interface graphique sur un routeur. Si vous souhaitez utiliser le bureau pour une raison quelconque, connectez-vous avec votre nom d'utilisateur et exécutez la commande startx pour activer l'interface graphique.

Dépannage des problèmes courants

Les interfaces continuent à être renommées

Ceci est très courant si vous utilisez deux interfaces sans fil sur votre Pi. Si vous utilisez Ethernet pour connecter votre Pi à Internet, vous pouvez ignorer cette section en toute sécurité . Le problème est que les interfaces sans fil ( wlan0 et wlan1 ) échangent parfois des noms après un redémarrage. En d’autres termes, le module WiFi intégré wlan0 est renommé en wlan1, et inversement. C'est évidemment un gros problème puisque nous nous basons sur un nom cohérent pour nos fichiers de configuration. Voici comment le rendre cohérent à travers les redémarrages:

1. Recherchez l' adresse MAC de vos interfaces . Exécutez la commande ifconfig | grep HWaddr ifconfig | grep HWaddr sur votre Raspberry Pi. Vous verrez une sortie comme celle-ci:

Notez le texte à droite du mot 'HWaddr' dans les sections wlan0 et wlan1 . Vous pouvez ignorer la section eth0 en toute sécurité. Ce sont les adresses MAC de vos interfaces sans fil.

Si vous ne savez pas quelle adresse MAC appartient à quelle interface, débranchez simplement le dongle USB WiFi et relancez la commande. L’interface wlan qui s’affiche maintenant est votre interface WiFi intégrée, tandis que l’autre est l’USB.

2. Créez un nouveau fichier /etc/udev/rules.d/10-network.rules utilisant votre éditeur de texte préféré. Par exemple :

 sudo nano /etc/udev/rules.d/10-network.rules 

3. Entrez le texte suivant dans ce fichier. Remplacez xx: xx: xx: xx etc. par l'adresse MAC appropriée :

[code source] # Configurez le module WiFi intégré en tant que wlan0. Remplacez xx: xx: xx etc. par le
Adresse MAC du module intégré
SOUS-SYSTEME == "net", ACTION == "ajouter", ATTR {adresse} == "xx: xx: xx: xx: xx: xx", NOM = "wlan0"

# Configurez le dongle USB WiFi en tant que wlan1. Remplacez le yy: aa: aa etc. avec le
Adresse MAC du dongle USB
SOUS-SYSTEME == "net", ACTION == "ajouter", ATTR {adresse} == "yy: aa: yy: yy: yy: yy", NOM = "wlan1" [/ code source]

Assurez-vous que l’adresse MAC de l’interface WiFi intégrée correspond à wlan0 et l’USB WiFi à wlan1 car c’est la convention que nous suivons dans ce guide.

4. Redémarrez votre Raspberry Pi. Vos interfaces vont commencer par le nom correct maintenant.

Réinitialisation de la configuration du pare-feu

Un autre problème courant est un pare-feu mal configuré. En fonction de la configuration de votre réseau, plusieurs tentatives peuvent être nécessaires avant que le pare-feu soit correctement installé. Si, à un moment quelconque, vous pensez que vous avez peut-être perturbé la configuration du pare-feu, exécutez les commandes suivantes pour recommencer à zéro:

 sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain 

Cela supprimera toute la configuration du pare-feu. Vous pouvez maintenant commencer à configurer le pare-feu à partir de zéro. Une fois que vous êtes satisfait, exécutez la commande sudo iptables-save | sudo tee /etc/iptables/rules.v4 sudo iptables-save | sudo tee /etc/iptables/rules.v4 pour rendre la configuration permanente.

Utilisez votre Raspberry Pi comme routeur et filtre de contenu

Tout cela pour transformer votre Raspberry Pi en un puissant routeur ainsi qu’un proxy de filtrage du contenu. Vous pouvez obtenir les fichiers de configuration exacts que nous avons utilisés pour notre configuration sur notre page GitHub. Faites-nous savoir comment cela fonctionne pour vous. Si quelque chose ne fonctionne pas comme prévu ou si une étape vous semble trop déroutante, n'hésitez pas à nous poser une question dans la section commentaires ci-dessous.

Top