Raccomandato, 2024

Scelta Del Redattore

Come usare Raspberry Pi come router e filtro dei contenuti

Se hai dei bambini a casa tua, potresti aver sentito la necessità di bloccare determinati siti web indesiderati. Un'altra area problematica comune sono i siti web dei social media: potresti ritenere che i bambini (e gli adulti) perdano troppo tempo su Facebook, Twitter, ecc. E vogliano bloccarli, o almeno renderli accessibili solo in determinati momenti della giornata.

Per rendere ciò possibile, abbiamo bisogno di un router più filtro per i contenuti - un'appliance attraverso cui tutti i nostri dispositivi come laptop, smartphone e tablet si connettono a Internet. Questo dispositivo intercetta anche i siti Web a cui questi dispositivi accedono e li blocca se provano ad accedere a un sito Web nella lista nera.

Esistono dei filtri commerciali pronti per l'uso disponibili sul mercato, ma per noi tipi fai-da-te, non c'è niente di divertente in questo. Quindi, ci sporcheremo le mani e installeremo un Raspberry Pi per il lavoro. Abbiamo scelto il Raspberry Pi per questo progetto a causa delle sue dimensioni ridotte e del consumo di energia trascurabile. Tuttavia, queste istruzioni funzioneranno quasi senza modifiche con quasi tutti i computer che eseguono Debian Linux o un derivato (Ubuntu, Mint ecc.).

Dichiarazione di non responsabilità : questa guida presuppone un livello intermedio di esperienza con Linux e una disponibilità a risolvere i problemi se e quando si presentano. L'esperienza precedente con linee di comando e firewall è un vantaggio.

Come funziona

Hardware

Useremo il Raspberry Pi 3 come un filtro per il contenuto del router. Per questo, avremo bisogno di due interfacce di rete : una per connettersi a Internet e l'altra per fungere da hotspot WiFi per gli altri dispositivi a cui connettersi. Il Raspberry Pi 3 ha un jack Ethernet integrato e un modulo WiFi. Quindi in questo scenario, possiamo usare un cavo Ethernet ( eth0 ) per connettersi a Internet, mentre il modulo WiFi ( wlan0 ) fungerà da hotspot.

Ovviamente, la connessione a Internet tramite Ethernet non è sempre possibile. In questo caso, è necessario un dongle WiFi USB compatibile ( wlan1 ) per connettersi a Internet, mentre il modulo WiFi integrato ( wlan0 ) fungerà da hotspot. Questa è la configurazione che useremo in questa guida.

Tieni presente che mentre un Raspberry Pi 3 è in gran parte adeguato per una configurazione domestica con pochi laptop e smartphone, non fornirà le prestazioni necessarie per una grande installazione in ufficio . Cerca in un hardware più potente se molti client si collegheranno al tuo filtro dei contenuti.

Software

Useremo l'eccellente E2Guardian per intercettare e filtrare le nostre richieste web. Poiché il filtraggio dei contenuti può avere un impatto sulle prestazioni (a seconda delle dimensioni della blocklist), utilizzeremo la cache di Squid per compensare questo calo di prestazioni.

Prerequisiti

1. Raspberry Pi 3 con l'ultima versione del sistema operativo Raspbian installato e accesso a Internet. Se stai iniziando solo con il Raspberry Pi, ti consigliamo di leggere la nostra guida su come iniziare con Raspberry Pi 3.

2. [Opzionale] Dongle WiFi USB - Questo è necessario se, e solo se non è possibile connettere il Raspberry Pi 3 a Internet con un cavo Ethernet. Se si prevede di utilizzare il Wi-Fi sia per la connessione a Internet che come hotspot, è necessario.

3. Accesso fisico al Raspberry Pi - A causa della natura di questo articolo, un singolo errore nella configurazione del firewall può bloccarti dal tuo Pi se lo usi in modalità headless. Pertanto, si consiglia di collegare un monitor, una tastiera e un mouse durante la configurazione finché tutto è impostato.

Usa Raspberry Pi come router

1. Connetti il ​​tuo Pi a Internet usando Ethernet ( eth0 ). Se si utilizza un dongle WiFi USB (probabilmente wlan1 ), collegarlo a Internet. Lascia il modulo WiFi integrato ( wlan0 ) come è per ora.

2. Ottieni il software prerequisito di cui abbiamo bisogno:

 sudo apt install iptables iptables-persistent hostapd dnsmasq squid3 

3. Configureremo hostapd modo che il nostro Pi possa fungere da hotspot WiFi . Per questo, crea un file di configurazione usando il tuo editor di testo preferito, ad esempio sudo nano /etc/hostapd/hostapd.conf, e incolla il contenuto dalla nostra pagina GitHub.

Alcune linee che potresti voler modificare secondo il gusto sono:

 ssid = RaspberryPiAP 

Questa linea indica quale sarà il nome del punto di accesso. Ho scelto RaspberryPiAP .

 wpa_passphrase = beebom.com 

Specifica la passphrase utilizzata per accedere all'hotspot. Ho usato beebom.com, ma si consiglia di cambiarlo in una passphrase forte di tua scelta.

4. Quindi, configureremo un server DHCP usando dnsmasq . Modifica il file di configurazione /etc/dnsmasq.conf e aggiungi le seguenti righe alla fine:

[Sorgente] interface = lo, wlan0

no-dhcp-interface = lo

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

Questo rende l'interfaccia su wlan0 (il modulo WiFi integrato) distribuire gli indirizzi IP ai client nell'intervallo da 192.168.8.20 a 192.168.8.254 .

5. Configurare un indirizzo IP statico per il modulo WiFi integrato wlan0 . Apri il file /etc/network/interfaces . Probabilmente sembra qualcosa del genere (enfasi mia):

[codice sorgente] directory-sorgente /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

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

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

Qui, individua le linee in grassetto che si occupano di wlan0 e modificale, in modo che il file assomigli al seguente:

[codice sorgente] directory-sorgente /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
indirizzo 192.168.8.1
maschera di rete 255.255.255.0
allow-hotplug wlan1
iface manuale wlan1 inet
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Questo imposta un indirizzo IP statico 192.168.8.1 su wlan0. Ricorda questo indirizzo, poiché questo è l'indirizzo che useremo per comunicare in seguito con il nostro Raspberry Pi .

6. Ora imposta l'inoltro IP . Modifica il file /etc/sysctl.conf e aggiungi la seguente riga:

 net.ipv4.ip_forward = 1 

7. Ora configureremo la traduzione degli indirizzi di rete (NAT) nel nostro firewall. Per fare ciò, inserisci i seguenti 2 comandi:

 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 

Il primo comando imposta NAT, mentre il secondo comando salva la configurazione attuale del firewall in un file chiamato /etc/iptables/rules.v4 . Questo assicura che la configurazione permanga attraverso i riavvii.

8. A questo punto, riavvia il tuo Raspberry Pi . Questo per garantire che tutte le modifiche apportate ai file di configurazione siano funzionanti.

9. Dopo il riavvio, dovresti essere in grado di vedere l'hotspot RaspberryPiAP appena creato (a meno che tu non abbia cambiato il nome nel passaggio 3) su altri dispositivi come laptop e smartphone. È possibile connettersi utilizzando la password specificata e accedere a Internet.

Questo è tutto ciò che devi fare se hai bisogno di un router di base a basso consumo. Se vuoi impostare anche un filtro dei contenuti, continua a leggere.

Impostare il filtro del contenuto usando E2guardian

E2guardian non è presente nei repository Raspbian di default. Per installarlo, vai alla pagina Github del progetto e scarica il file che termina in armhf.deb . Ora apri Terminale, vai alla tua cartella Download (o ovunque tu abbia scelto di scaricare il file), e installalo:

 cd ~ / Downloads sudo dpkg -i ./e2guardian_*_jessie_armhf.deb 

Probabilmente noterai alcuni errori relativi alla mancanza di pacchetti quando installi E2guardian. Per risolvere il problema, completare l'installazione e immettere il seguente comando:

 sudo apt-get install -f 

Utilizzo di elenchi di contenuti

Ci sono diversi elenchi presenti nella directory /etc/e2guardian/lists . Questi file includono lista di estensioni vietate, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, lista delle eccezioni e altro. Questi file sono adeguatamente documentati con commenti. Dai un'occhiata a loro per familiarizzare.

Ad esempio, supponiamo di voler bloccare alcuni social network popolari . Apri il /etc/e2guardian/lists/bannedsitelist e sotto il blocco Blanket / CONNECT Blanket (poiché questi siti web utilizzano https invece di plain http ), aggiungi le seguenti linee:

 facebook.com twitter.com reddit.com 

Ora ricarica il servizio E2guardian usando il comando sudo service e2guardian reload ( dovrai eseguire questo comando ogni volta che modifichi i file di configurazione ). Ora i client che utilizzano il filtro dei contenuti non saranno in grado di accedere a questi siti Web. Anche i siti mobili (ad esempio m.twitter.com) e le app dedicate per smartphone non funzioneranno.

E2Guardian blocca anche il porno di default . Se si desidera consentire (hey, non stiamo giudicando), aprire il /etc/e2guardian/lists/bannedphraselist e individuare la riga seguente:

 .Includere 

Commentalo aggiungendo un hash (simbolo #) in primo piano, in modo che assomigli a questo:

 #.Includere 

Di nuovo, ricarica la configurazione con il sudo service e2guardian reload, e il gioco è fatto.

Configurazione dei client

Ora che il nostro server proxy è impostato, possiamo passare alla configurazione dei client. Per utilizzare il filtro del contenuto, tutti i client devono essere connessi all'hotspot di Rapberry Pi e configurati per utilizzare il proxy. La configurazione di un proxy è diversa tra tutti i sistemi operativi e i dispositivi. Tuttavia, dimostreremo come configurarlo su Windows e Android, poiché questi sono più popolari.

finestre

Vai a Pannello di controllo> Rete e Internet> Opzioni Internet . Nella finestra che si apre, vai alla scheda Connessioni e fai clic su Impostazioni LAN .

Qui, fai clic su Avanzate e inserisci 192.168.8.1 come indirizzo proxy e 8080 come porta. Assicurarsi che la casella Usa lo stesso server proxy per tutti i protocolli sia selezionata. Clicca OK .

Questo è tutto ciò che devi fare. I browser Web più popolari come Google Chrome e Firefox acquisiscono automaticamente le impostazioni del proxy di sistema.

androide

Vai a Impostazioni di sistema> WiFi . Ora tocca e tieni premuto l'hotspot Raspberry Pi e seleziona Modifica rete . In Opzioni avanzate, impostare l'opzione Proxy su Manuale . Ora, sotto Nome host proxy, inserire l'indirizzo IP del Pi 192.168.8.1 . Sotto Porta proxy, inserire 8080 e toccare Salva .

Ora puoi testare la configurazione del proxy. Prova ad andare su un sito web nella tua lista nera - vedrai una pagina "Accesso negato" come questa:

Imporre l'utilizzo del proxy

Finora, ci siamo affidati a clienti che giocavano bene e usando internet attraverso il filtro dei contenuti. Certo, questo accade raramente nel mondo reale. Quindi, per far sì che tutti i client eseguano il proxy, esegui i seguenti comandi:

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

Questo reindirizzerà automaticamente tutto il traffico http (porta 80) e https (porta 443) sull'hotspot del raspberry Pi al proxy del filtro del contenuto. Ora, senza configurare le impostazioni proxy sui tuoi dispositivi, non potranno accedere a siti Web https sicuri come Facebook, Gmail, Twitter ecc. Questo assicura che chiunque desideri connettersi al tuo hotspot Pi debba passare attraverso il proxy.

Questo è tutto ciò che devi sapere per l'utilizzo di base del filtro dei contenuti. Se desideri imparare alcune funzioni avanzate, continua a leggere.

Scenari di utilizzo avanzato

Impostazione di un filtro basato sul tempo

Supponiamo che tu voglia bloccare i siti web menzionati nella sezione Uso delle liste di contenuti sopra, ma solo in determinati momenti della giornata . Personalmente preferisco bloccare Reddit, Facebook e Twitter durante l'orario di lavoro (dalle 9:00 alle 17:00) nei giorni feriali perché sono un incubo di produttività.

Apri il /etc/e2guardian/lists/bannedsitelist e aggiungi la seguente riga:

 tempo: 9 0 17 0 01234 

Questa linea funziona come segue: il timer inizia alle 9 (9:00) 0 (00 minuti), fino alle 17 (17:00 nel formato 24 ore) 0 (00 minuti), da 0 (lunedì) a 4 (venerdì).

Facciamo un altro esempio:

 tempo: 10 30 20 45 024 

Ciò bloccherà i siti configurati dalle 10:30 am (10 30) alle 20:45 (20 45) lunedì (0), mercoledì (2) e venerdì (4).

Lasciando determinati indirizzi IP Bypassare il proxy

È possibile consentire a determinati indirizzi IP di ignorare il filtro del contenuto. Questo può essere configurato configurando il firewall . Avrai notato che nel nostro dnsmasq.conf, impostiamo l'hotspot solo per assegnare indirizzi IP da 192.168.8.20 a 192.168.8.254 ai client. Ciò significa che gli indirizzi da 192.168.8.2 a 192.168.8.19 non saranno assegnati automaticamente a nessun client (non possiamo usare 192.168.8.1 perché è quello che usa il nostro Raspberry Pi stesso).

Per fare ciò, prima imposta un IP statico sul dispositivo a cui vuoi dare pieno accesso. Ad esempio, per impostare un IP statico di 192.168.8.2 su un computer Windows, utilizzare queste impostazioni:

Ora, sul tuo Raspberry Pi, esegui i seguenti comandi.

 sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destinazione-porta 80 -j RETURN sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destinazione-porta 443 -j RETURN 

Ora, disabilita l'uso del proxy sul tuo dispositivo e prova ad aprire un sito web vietato. Dovresti essere in grado di aprirlo. Se ci sono più indirizzi IP che si desidera aggiungere alla whitelist, eseguire di nuovo i due comandi precedenti, ma sostituire l'indirizzo IP con quello desiderato. Una volta che sei soddisfatto della whitelist, esegui il seguente comando per salvare la configurazione del firewall:

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

Una cosa importante da tenere a mente è che non dovresti far sapere a nessuno gli indirizzi IP autorizzati. Altrimenti, possono semplicemente impostare il loro dispositivo su quell'indirizzo IP per bypassare il proxy.

Problemi di sicurezza

Poiché il tuo Raspberry Pi sarà il punto di ingresso e di uscita per tutte le tue comunicazioni, è importante proteggerlo. Ecco alcuni suggerimenti su come migliorare la sicurezza. Tieni presente che questi sono solo indicatori di base e non un elenco completo delle insidie ​​della sicurezza. La quantità di sicurezza dipenderà dalla natura della tua rete (casa, piccolo ufficio ecc.) E da quanto maliziosi siano gli utenti.

Disabilitare i servizi non necessari

Poiché si tratta di un router, è meglio eseguire solo i servizi di cui abbiamo bisogno. Più servizi in esecuzione significa più vulnerabilità che possono essere potenzialmente sfruttate. Sicuramente non usare questo sistema come un normale desktop .

Vai a Menu> Preferenze> Configurazione Raspberry Pi . Nella scheda Interfacce, disabilitare tutti i servizi che non si richiedono.

Modifica la password predefinita

Una nuova installazione di Raspbian viene fornita con la password predefinita "raspberry" per l'utente predefinito "pi". Si consiglia di cambiarlo in una password più sicura. Per cambiarlo, apri un terminale esegui questo comando:

 passwd 

Rimuovere il monitor e altre periferiche

Poiché tutto ciò che verrà eseguito su questo Pi è il software necessario per utilizzarlo come router e filtro web, non è necessario un monitor o altre periferiche come mouse e tastiera. Se è necessario modificare le impostazioni e tali, è sempre possibile utilizzare SSH o collegare un monitor e una tastiera secondo necessità.

Disattiva accesso automatico

Raspbian è configurato per accedere automaticamente con le credenziali dell'utente "pi" senza richiedere la password. Questo potrebbe essere ok per un desktop di famiglia generico, ma pericoloso per un router. Per disabilitare questo, sul desktop Raspbian, andare su Menu> Preferenze> Configurazione Raspberry Pi . Nella scheda Sistema, davanti all'intestazione Accesso automatico, deselezionare la casella di controllo Accedi come utente "pi" .

Nella stessa finestra di dialogo, è anche consigliabile impostare l'impostazione di avvio su A CLI . Ciò consentirà di risparmiare risorse poiché non abbiamo bisogno di una GUI su un router. Se si desidera utilizzare il desktop per qualsiasi motivo, accedere con il proprio nome utente ed eseguire il comando startx per attivare l'interfaccia grafica.

Risoluzione dei problemi comuni

Le interfacce continuano a essere rinominate

Questo è molto comune se stai usando due interfacce wireless sul tuo Pi. Se stai utilizzando Ethernet per connettere il tuo Pi a Internet, puoi tranquillamente ignorare questa sezione . Il problema è che entrambe le interfacce wireless ( wlan0 e wlan1 ) talvolta scambiano i nomi dopo un riavvio. Cioè, il modulo WiFi integrato wlan0 viene rinominato in wlan1 e viceversa. Questo è ovviamente un grosso problema dal momento che ci affidiamo a loro con un nome coerente per i nostri file di configurazione. Ecco come renderlo coerente attraverso i riavvii:

1. Scopri l' indirizzo MAC delle tue interfacce . Esegui il comando ifconfig | grep HWaddr ifconfig | grep HWaddr sul tuo Raspberry Pi. Vedrai un output simile al seguente:

Annota il testo a destra della parola "HWaddr" nella sezione wlan0 e wlan1 . Puoi tranquillamente ignorare la sezione eth0 . Questi sono gli indirizzi MAC delle tue interfacce wireless.

Se non sei sicuro di quale indirizzo MAC appartenga a quale interfaccia, scollega semplicemente il dongle WiFi USB ed esegui nuovamente il comando. L'interfaccia wlan che appare ora è la tua interfaccia WiFi integrata, mentre l'altra è USB.

2. Crea un nuovo file /etc/udev/rules.d/10-network.rules usando il tuo editor di testo preferito. Per esempio :

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

3. Immettere il seguente testo in questo file. Sostituisci xx: xx: xx: xx ecc. Con l'indirizzo MAC appropriato :

[codice sorgente] # Imposta il modulo WiFi integrato come wlan0. Sostituisci xx: xx: xx ecc. Con
# indirizzo MAC del modulo integrato
SUBSYSTEM == "net", ACTION == "aggiungi", ATTR {indirizzo} == "xx: xx: xx: xx: xx: xx", NOME = "wlan0"

# Configurare il dongle WiFi USB come wlan1. Sostituire il yy: yy: yy ecc con il
# Indirizzo MAC del dongle USB
SUBSYSTEM == "net", ACTION == "aggiungi", ATTR {indirizzo} == "yy: yy: yy: yy: yy", NAME = "wlan1" [/ sourcecode]

Assicurati che l'indirizzo MAC dell'interfaccia WiFi integrata corrisponda a wlan0 e USB WiFi a wlan1 poiché questa è la convenzione che seguiamo in questa guida.

4. Riavvia il tuo Raspberry Pi. Le tue interfacce inizieranno con il nome corretto ora.

Ripristino della configurazione del firewall

Un altro problema comune è un firewall mal configurato. A seconda della configurazione di rete, potrebbero essere necessari diversi tentativi prima di ottenere il firewall corretto. Se in qualsiasi momento pensi che potresti aver incasinato la configurazione del firewall, esegui i seguenti comandi per iniziare da zero:

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

Questo cancellerà tutta la configurazione del firewall. Ora puoi iniziare a configurare il firewall da zero. Una volta che sei soddisfatto, esegui il comando sudo iptables-save | sudo tee /etc/iptables/rules.v4 sudo iptables-save | sudo tee /etc/iptables/rules.v4 per rendere permanente la configurazione.

Usa il tuo Raspberry Pi come router e filtro dei contenuti

Questo è tutto per trasformare il tuo Raspberry Pi in un potente router più proxy del filtro dei contenuti. Puoi ottenere gli esatti file di configurazione che abbiamo usato per la nostra configurazione sulla nostra pagina GitHub. Fateci sapere come funziona per voi. Se qualcosa non funziona come previsto, o un passaggio sembra troppo confuso, sentiti libero di farci una domanda nella sezione commenti qui sotto.

Top