Introduzione

Squid è un proxy con memorizzazione nella cache completo che supporta i protocolli di rete più diffusi come HTTP, HTTPS, FTP e altri. Può essere utilizzato per migliorare le prestazioni del server Web memorizzando nella cache richieste ripetute, filtrando il traffico Web e accedendo al contenuto con restrizioni geografiche.

In questo tutorial, spiegheremo come impostare un proxy Squid su Debian 10 Buster. Vedremo anche come configurare i browser web Firefox e Google Chrome per usarlo.

Installazione di Squid su Debian

Il pacchetto Squid è incluso nello standard nei repository Debian 10. Esegui i seguenti comandi come utente sudo per installare Squid.

Aggiornare l'elenco dei pacchetti disponibili di Debian 10:

sudo apt update

Installare Squid:

sudo apt install squid

Una volta completata l'installazione, il servizio Squid si avvierà automaticamente.

Verificare che l'installazione abbia avuto esito positivo e che il servizio Squid sia in esecuzione controllando lo stato del servizio Squid:

sudo systemctl status squid

Dovreste ricevere un messaggio di output simile al seguente:

● squid.service - Squid Web Proxy Server
   Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-09-07 16:28:25 CEST; 2min 10s ago
     Docs: man:squid(8)
  Process: 2287 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
  Process: 2290 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
 Main PID: 2291 (squid)
    Tasks: 4 (limit: 2301)
   Memory: 15.8M
   CGroup: /system.slice/squid.service
           ├─2291 /usr/sbin/squid -sYC
           ├─2294 (squid-1) --kid squid-1 -sYC
           ├─2295 (logfile-daemon) /var/log/squid/access.log
           └─2296 (pinger)
...

Configurare Squid

Squid può essere configurato modificando il  file di configurazione /etc/squid/squid.conf. File di configurazione separati possono essere inclusi usando la direttiva "include".

Il file squid.conf di configurazione include commenti che descrivono l'utilità di ciascuna opzione di configurazione.

Prima di apportare qualsiasi modifica, è sempre consigliabile eseguire il backup del file originale:

sudo cp /etc/squid/squid.conf{,.orginal}

Per modificare la configurazione, apri il file nel tuo editor di testo :

sudo nano /etc/squid/squid.conf

Per impostazione predefinita, Squid è in ascolto sulla porta 3128 su tutte le interfacce di rete.

Se si desidera modificare la porta e impostare un'interfaccia di ascolto, individuare la riga che inizia con http_port e specificare l'indirizzo IP dell'interfaccia e la nuova porta. Se non viene specificata alcuna interfaccia, Squid ascolterà su tutte le interfacce.

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

L'esecuzione di Squid su tutte le interfacce e sulla porta predefinita dovrebbe andare bene per la maggior parte degli utenti.

Gli elenchi di controllo di accesso (ACL) consentono di controllare in che modo i client possono accedere alle risorse Web. Per impostazione predefinita, Squid consente l'accesso solo dall'host locale.

Se tutti i client che useranno il proxy hanno un indirizzo IP statico, l'opzione più semplice è quella di creare un ACL che includerà gli IP consentiti.

Invece di aggiungere gli indirizzi IP nel file di configurazione principale, creeremo un nuovo file include che memorizzerà gli indirizzi IP.

Creare il file di configurazione allowed_ips.txt:

sudo nano /etc/squid/allowed_ips.txt

Inserire gli indirizzi IP:

192.168.30.1
# All other allowed IPs

Una volta terminato, apri il file di configurazione principale. Creato un nuovo ACL denominato allowed_ips, consentire l'accesso a tale ACL utilizzando la direttiva http_access.

Aprire nuovamente il file di configurazione principale:

sudo nano /etc/squid/squid.conf

Includere le seguenti righe:

  • acl allowed_ips  src "/etc/squid/allowed_ips.txt"
  • http_access allow allowed_ips
# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

L'ordine delle regole è importante. Assicurati di aggiungere le righe prima di http_access deny all.

La direttiva http_access funziona in modo simile alle regole del firewall. Squid legge le regole dall'alto verso il basso e quando una regola corrisponde alle regole seguenti non vengono elaborate.

Ogni volta che si apportano modifiche al file di configurazione, è necessario riavviare il servizio Squid affinché le modifiche abbiano effetto:

sudo systemctl restart squid

Autenticazione di Squid

Squid può utilizzare back-end diversi, tra cui Samba, LDAP e HTTP basic auth per gli utenti autenticati.

In questo esempio, configureremo Squid per utilizzare ìil basic auth.. È un semplice metodo di autenticazione integrato nel protocollo HTTP.

Useremo l'utilità openssl per generare le password e aggiungere username:password al file /etc/squid/htpasswd con il comando tee come mostrato di seguito:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

Creiamo un utente chiamato "buster" con password "1dk232_Z":

printf "buster:$(openssl passwd -crypt '1dk232_Z')\n" | sudo tee -a /etc/squid/htpasswd

Dovresti ricevere un messaggio di output simile al seguente:

buster:iWTMPC8kxGssA

Il prossimo passo è abilitare l'autenticazione di base HTTP. Aprire nuovamente il file di configurazione principale:

sudo nano /etc/squid/squid.conf

Includere le seguenti righe:

  • auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
  • auth_param basic realm proxy
  • acl authenticated proxy_auth REQUIRED
  • http_access allow authenticated

Quindi:

# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

Le prime tre righe stanno creando un nuovo ACL denominato authenticated e l'ultima riga consente l'accesso agli utenti autenticati.

Riavviare il servizio Squid:

sudo systemctl restart squid

Configurazione del firewall

Se non utilizzate nessun firewall saltate questi passaggi e passate al paragrafo successivo.

Gli utenti UFW possono aprire la porta 3128 abilitando il profilo 'Squid':

sudo ufw allow 'Squid'

Se si utilizza nftables per filtrare le connessioni al proprio sistema, aprire le porte necessarie eseguendo il comando seguente:

Se Squid è in esecuzione su un'altra porta non predefinita, dovrai consentire il traffico su quella porta.

Configurazione del browser per l'utilizzo del proxy

In questa sezione vedremo come configurare il tuo browser per usare Squid proxy.

Firefox

I passaggi seguenti sono gli stessi per Windows, macOS e Linux.

  • Nell'angolo in alto a destra, fai clic sull'icona dell'hamburger per aprire il menu di Firefox:
  • Clicca sul link ⚙ Preferences.
  • Scorri verso il basso fino alla sezione Network Settings e fai clic sul pulsante Settings...

Verrà aperta una nuova finestra.

  • Seleziona il pulsante Manual proxy configuration di opzione.
  • Immettere l'indirizzo IP del server Squid nel campo HTTP host e 3128 nel campo Port.
  • Seleziona la casella di controllo Use this proxy server for all protocols.
  • Fare clic sul pulsante  OK per salvare le impostazioni.

A questo punto, Firefox è configurato e puoi navigare in Internet tramite il proxy Squid. Per verificarlo, apri google.com, digita "find is my ip" e dovresti vedere il tuo indirizzo IP del server Squid.

Per ripristinare le impostazioni predefinite andare nuovamente in Network Settings, selezionare il pulsante Use system proxy settings e salvare le impostazioni.

Google Chrome

Google Chrome utilizza le impostazioni proxy di sistema predefinite. Invece di modificare le impostazioni del proxy del sistema operativo, puoi utilizzare un componente aggiuntivo come SwitchyOmega o avviare il browser Web Chrome dalla riga di comando.

Per avviare Chrome utilizzando un nuovo profilo e connettersi al server Squid, utilizzare il comando seguente:

Linux :

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

MacOS:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

Windows :

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

Il profilo verrà creato automaticamente se non esiste. In questo modo è possibile eseguire più istanze di Chrome contemporaneamente.

Per verificarlo, apri google.com, digita "find is my ip" e dovresti vedere il tuo indirizzo IP del server Squid.

Conclusione

Abbiamo trattato le basi di come installare e configurare Squid su Debian 10 e come utilizzarlo sul tuo browser.

Squid è uno dei server di cache proxy più popolari. Migliora la velocità del server Web e può aiutarti a limitare l'accesso degli utenti a Internet.