Michele Agostinelli Blog

pihole

Aggiornamento 14/02/2024: aggiungo in fondo all'articolo le modifiche necessarie per la parte server.

Questo metodo lo utilizzo ormai da svariati mesi e funziona benissimo!

Premetto subito che non è una semplice soluzione adatta per tutti, poiché richiede un server #wireguard e un'installazione di #pihole. Però se avete un amico che ha già configurato tutto per se, sarà molto semplice farlo usare anche a voi! E' complessa la configurazione server, mentre la parte client è semplicissima: scaricare un'app e scansionare un qr code.

Abbiamo visto la configurazione di entrambi su questo blog (cliccate sui due hashtag per le leggere le guide).

Con questo metodo non solo bloccherete le pubblicità invasive sul browser, ma su tutte le app! Inoltre oltre al blocco pubblicità avrete anche il blocco dei siti malevoli (in base alle liste che avete deciso di aggiungere a pihole).

Il trucco è usare la vpn per fare in modo che lo smartphone navighi nello stessa modalità che avviene da casa, cioè protetto da pihole!

Abbiamo due diverse modalità di uso per la vpn: – usarla solo per la risoluzione dns – usarla per tutto il traffico

L'una non esclude l'altra, cioè possiamo fare due profili diversi e passare da uno all'altro in base alle necessità (ad esempio se ci connettiamo un WiFi pubblico non protetto, conviene usare la seconda opzione). La prima soluzione ha il vantaggio di consumare pochissima banda per il server, solo lo stretto necessario per le risoluzioni dns.

Esempio di configurazione solo dns:

[Interface]
PrivateKey = chiave_priv_client1
Address = 192.168.20.2/24
Dns = ip_vpn_privato_server
[Peer]
PublicKey = chiave_pub_server
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = ip_vpn_privato_server/32
Endpoint = hostname_pubblico_server:porta

Esempio di configurazione traffico completo:

[Interface]
PrivateKey = chiave_priv_client1
Address = 192.168.20.2/24
Dns = ip_vpn_privato_server
[Peer]
PublicKey = chiave_pub_server
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs  = 0.0.0.0/0, ::/0
Endpoint = hostname_pubblico_server:porta

Vi consiglio di usare questo client per wireguard wg-tunnel, perché ha una funzionalità fondamentale per il nostro scopo: è in grado di attivare automaticamente la vpn quando ci disconnettiamo dalla nostra wifi (è possibile scegliere più reti fidate).

Wg tunnel Logo

Wg tunnel Screen 1 Wg tunnel Screen 2

Non ho provato questa soluzione su iPhone, ma presumo che possa funzionare anche lì.

Infine vi consiglio anche un'ottimo client #android per gestire pihole: Pi-hole Droid.

Aggiornamento 14/12/2024

Modifiche configurazione server

Affinchè il server sia in grado di ruotare i pacchetti ricevuti dalla VPN è necessaria qualche configurazione in più, dei comandi “standard” #iptables per gli addetti ai lavori. (su iptables trovate ampia documentazione on line) Ma veniamo al dunque

Esempio di righe in aggiunta alla parte server:

...
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# DNS - sostituire 192.168.1.x con ip del proprio pihole
PostUp = iptables -I FORWARD -i %i -p udp -m udp -d 192.168.1.x/32 --dport 53 -j ACCEPT
PostUp = iptables -I FORWARD -i %i -p tcp -m tcp -d 192.168.1.x/32 --dport 53 -j ACCEPT

# Blocco rete locale per tutti (nell'esempio è con subnet 192.168.1.0)
PostUp = iptables -I FORWARD -i %i -d 192.168.1.0/24 -j REJECT

# Apertura rete locale ad un singolo ip
PostUp = iptables -I FORWARD -i %i -s 172.16.2.2/32 -d 192.168.1.0/24 -j ACCEPT

PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
...

#pubblicità #blocco #pi-hole #vpn #wireguard

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Definizione

WireGuard è un programma open source che implementa una connessione VPN per creare connessioni sicure punto-punto

Wireguard Logo

A cosa serve?

Sicuramente avrete già sentito parlare di vpn, qualora ne siate a digiuno provo a scriverlo brevemente. Attivando questa connessione tra due dispositivi, collegati entrambi alla rete internet, permette loro, in modo sixuro, di comunicare tra di loro.

Vantaggi

Wireguard si distingue da altri programmi simili per la sua leggerezza, occupa pochissime risorse, e per le prestazioni. Se lo provate, con una buona connessione da ambo i lati, vi sembrerà davvero di essere in rete locale. La connessione tra i due punti è cifrata e quindi sicura.

Perché usarlo

  • Collegarsi alla propria rete domestica da fuori casa (senza esporre pubblicamente i servizi, ma solo la porta della vpn)
  • Amministrare / gestire dispositivi di: amici / parenti / clienti
  • Condividere risorse locali solo con chi si vuole
  • Anonimato (navigare sul web come se fisicamente si ci trovasse nella rete del server vpn)
  • Sicurezza: se si è connessi ad una rete pubblica il nostro traffico sarà comunque cifrato
  • blocco pubblicità su smartphone se usato in accoppiata a #pihole (seguirà articolo dedicato)
  • Supporto dello split tunnel

Caratteristiche

  • Si basa su protocollo udp, e non tcp per avere prestazioni migliori
  • Disponibile per svariati sistemi operativi
  • Funziona su tutti i dispositivi mobili
  • Risorse richieste quasi nulle, funziona benissimo su vecchi pc o su #raspberrypi
  • Configurazione facile con un file unico (portatile)
  • Configurazione tramite qr code
  • Possibilità di avere più vpn attive contemporaneamente

Wireguard Connections

Creare una nuova connessione

  1. Installare il software
  2. Scgliere una porta udp dedicata
  3. Abllitare il forwarding della porta sul nostro router
  4. Scelta di una subnet (dedicata)
  5. Abilitare il forwarding dei pacchetti ip
  6. Creare la configurazione

Configurazione manuale (da riga di comando)

Di seguito vari comandi, divisi per argomento, che permettono di attivare la nostra prima vpn. La preshared key non è obbligatoria ma se la si usa si renderà la connessione ancora piuù sicura. Negli esempi sottostanti abbiamo scelto 92.168.20.0/24 come subnet per la nostra vpn.

Installazione (debian)

sudo apt update
sudo apt install wireguard
sudo vi /etc/sysctl.conf
	net.ipv4.ip_forward=1
sudo sysctl -p

Generazione chiavi

Le chiavi generate vanno sia per una configurazione come server che come client

umask 077
wg genkey > privatekey
wg pubkey < privatekey > publickey
wg genpsk > preshared.keys

Esempio di file conf del server

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = chiave_privata_server
Address = 192.168.20.1/24
ListenPort = 52001
SaveConfig = true
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = chiave_pub_client_1
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 192.168.20.2/32

Esempio di file conf del client

[Interface]
PrivateKey = chiave_priv_client1
Address = 192.168.20.2/24

[Peer]
PublicKey = chiave_pub_server
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = hostname_pubblico_server:52001

Comandi per la connessione

sudo wg-quick up wg1
sudo wg-quick down wg1
sudo wh show

Avvio automatico con systemd

sudo systemctl enable wg-quick@wg0.service
sudo systemctl start wg-quick@wg0.service
sudo systemctl status wg-quick@wg0.service

Generare Qr code

Installare il software qrencode

qrencode -t ansiutf8 < /etc/wireguard/clients/client1.conf

Wireguard Command Line

Aggiunta nuovi client

Per aggiungere un nuovo client, conviene spengere la vpn del server (wg down), aggiungere le nuove righe al file di configurazione, e riattivare la connessione (wg up)

Configurazione guidata

Vedi i due frontend web suggeriti sotto per la parte server. Per la configurazione come client è sufficiente importare il file conf generato o in alternativa il qr code. Per la connessione è sufficiente utilizzare un client; – Su linux è possibile usare li strumenti integrati nel desktop in uso attraverso NetworkManager (kde, gnome, ecc) – Su windows è sufficiente scaricare il client dal sito ufficiale (https://www.wireguard.com) – Android Play store: https://play.google.com/store/apps/details?id=com.wireguard.android – Apple store: https://apps.apple.com/it/app/wireguard/id1441195209

Programmi accessori (frontend)

Funzioni avanzate

Dns

Nella configurazione del client è anche possibile indicare quale server dns utilizzare

Firewall per i client

Nalle configurazione server è possibile aggiungere più righe di PostUp con iptables, e quindi configurare il firewall con assoluta personalizzazione: è possibile, quindi, limitare la risorse da accedere a specifici indirizzi

Limitare la banda

Sempre grazie ai comandi postup è possibile anche limitare, qualora si voglia, la banda passante per i client (sia in upload che ion download), ad esempio:

PostUp = tc qdisc add dev wg0 ingress; tc filter add dev wg1 protocol ip ingress prio 2 u32 match ip dst 0.0.0.0/0 action police
rate 10mbit burst 10mbit; tc filter add dev wg0 protocol ip ingress prio 2 u32 match ip src 0.0.0.0/0 action police rate 10mbit burst 10mbit
PostUp = tc qdisc add dev wg0 parent root handle 1: hfsc default 1; tc class add dev wg0 parent 1: classid 1:1 hfsc sc rate 10mbit ul rate 10mbit

Wireguard Network #vpn #wireguard #wg #tunnel #sicurezza

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Fa parte dei software indispensabili: vi consiglio di installarlo sul vostro #raspberrypi, sul vostro #NAS o su qualsiasi dispositivo (su base #linux) che terrete sempre acceso. Il mio consiglio va in direzione del raspberry, viste i consumi e dimensioni ridotte, ma ciascuno rimane libero di fare le proprie scelte.

Pi-hole Logo

Cos'è

Pi-hole è un'applicazione **Linux ** pensata per bloccare la pubblicità e il tracciamento degli utenti su Internet a livello di rete locale. Pi-hole agisce come un DNS sinkhole[ e, opzionalmente, come un server DHCP. Fonte: https://it.wikipedia.org/wiki/Pi-hole

Come funziona

Si affianca al vostro router per la connettività Internet ed è in grado di bloccare le pubblicità e i traccianti per tutti i dispositivi di casa. Può funzionare come server #DHCP (in questo caso dovrete disattivare quello presente sul vostro router), oppure può affiancarlo (nelle impostaziooni dhcp del router dovrete indicare là indirizzo ip di pi-hole come server dns per i client). Una volta fatta questa configurazione non dovrete fare niente sui vostri dispositivi, che siano computer, telefoni o smarttv, facile no?

Pi-hole Logo

Installazione

Standalone

curl -sSL https://install.pi-hole.net | bash

Prerequisiti e sistemi supportati

Consultate la pagina ufficiale qui: https://docs.pi-hole.net/main/prerequisites/

Docker

Consiglio di usare docker-compose, di seguito una configurazione di base che potete personalizzare a voswtro piacimento version: “3”

version: "3"

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
      - "80:80/tcp"
    environment:
      TZ: 'Europe/Rome'
      # WEBPASSWORD: 'set a secure password here or it will be random'
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
    restart: unless-stopped 

Personalizzazione

Aggiunta di liste di blocco

Le liste si configurano dall'interfaccia web alla voce AdList, eccone alcune che potete aggiungere: – https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txthttps://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txthttps://s3.amazonaws.com/lists.disconnect.me/simple_ad.txthttps://raw.githubusercontent.com/StevenBlack/hosts/master/hostshttp://sysctl.org/cameleon/hosts

L' elenco non è certo esaustivo, esistono sicuramente altre liste, le potrete trovare con una semplice ricerca sul web.

Pi-hole Logo

Utilizzo

Una volta che avete configurato la porta dell'interfaccia web, collegatevi a quest'ultima, e gestirete tutto da li. Dal menu, in Tools –> Update Gravity potete aggiornare le liste d ei blocchi (come quelle indicate sopra). Attraverso la voce disable blocking potete intemrrompere temporaneamente (o meno) il blocco. Da query log vedrete tutte le varie richieste e se i siti richiesti sono bloccati o meno, da qui potete anche aggiungerli manualmente alla whitelist, come nel caso venga bloccato un sito che a voi serve.

Consiglio importante

Una volta installato funzionerà tutto in automatico e senza che ci sia bisogno di particolari interventi, proprio per questo vi consiglio di avere solo questa unica e semplice accortezza: Ricordatevi che lo avete installato, e nel caso abbiate qualche sito mal funzionante, tenete presente che potrebbe essere per questo che qualcosa non vi funziona!

A me personalmente è successo qualche volta, ma sono prontamente intervenuto (whitelist o disabilitazione temporanea) e ho risolto velocemente e facilmente. I malfunzionamenti dipendono sempre dal tipo e numero di liste che inserite. Alcuni esempi di malfunzionamenti che mi sono capitati: – app amazon – rai play sulla tv

DNS Consigliati

Companion app

Per la sua gestione da pc non avrete problemi, basterà usare la sua comodissima interfaccia web (la porta dipende dal tipo di installazione/configurazione che avete effettuato). Per Il vostro tablet/smartphone vi consiglio queste applicazioni: 1. Pi-hole Connect 2. Pi-hole Droid 3. DroidHole

Se volete curiosare, questo è il sito ufficiale: https://pi-hole.net/

#pihole #pubblicita #blocco #raspberrypi #linux

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA