Introduzione

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

Questo tutorial ti guiderà attraverso il processo di impostazione di un proxy Squid su Ubuntu 18.04 e la configurazione di browser Web Firefox e Google Chrome per usarlo.

Installare Squid su Ubuntu

Il pacchetto Squid è incluso nei repository Ubuntu 18.04 predefiniti. Per installarlo inserisci i seguenti comandi come utente sudo:

sudo apt update

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

Per verificare che l'installazione abbia avuto esito positivo e che il servizio Squid sia in esecuzione, digitare il comando seguente che stamperà lo stato del servizio:

sudo systemctl status squid

Dovresti ricevere un messaggio di output simile al seguente:

● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; generated)
   Active: active (running) since Wed 2020-01-08 12:15:21 CET; 9h ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 5 (limit: 2299)
   CGroup: /system.slice/squid.service
           ├─23948 /usr/sbin/squid -YC -f /etc/squid/squid.conf
           ├─23950 (squid-1) -YC -f /etc/squid/squid.conf
           ├─23951 (logfile-daemon) /var/log/squid/access.log
           ├─23952 (pinger)
           └─23965 (basic_ncsa_auth) /etc/squid/htpasswd

Jan 08 12:15:21 TEST-SERVER-1 systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x...
Jan 08 12:15:21 TEST-SERVER-1 squid[23898]:  * Starting Squid HTTP Proxy squid
Jan 08 12:15:21 TEST-SERVER-1 squid[23898]:    ...done.
....

Configurare Squid

Squid può essere configurato modificando il file /etc/squid/squid.conf. Puoi anche usare file separati con opzioni di configurazione che possono essere incluse usando la direttiva include.

Il file di configurazione contiene commenti che descrivono cosa fa ciascuna opzione di configurazione.

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

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

Per modificare il file, aprilo nel tuo editor di testo:

sudo nano /etc/squid/squid.conf

Per impostazione predefinita, Squid è configurato per l'ascolto sulla porta 3128 su tutte le interfacce di rete sul server.

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

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

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

In Squid, puoi controllare come i client possono accedere alle risorse Web usando gli elenchi di controllo di accesso (ACL).

Per impostazione predefinita, Squid consente l'accesso solo dall'host locale.

Se tutti i client che utilizzeranno il proxy dispongono di un indirizzo IP statico, è possibile creare un ACL che includerà gli IP consentiti.

Invece di aggiungere gli indirizzi IP nel file di configurazione principale, creeremo un nuovo file dedicato che conterrà gli IP:

sudo nano /etc/squid/allowed_ips.txt

Aggiungere uno o più indirizzi IP:

192.168.22.22
# All other allowed IPs

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Una volta terminato, apri il file di configurazione principale e crea un nuovo ACL denominato allowed_ips e consenti l'accesso a tale ACL utilizzando la direttiva http_access:

sudo nano /etc/squid/squid.conf

Aggiungere le seguenti righe:

# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
http_access deny all

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

L'ordine delle regole http_access è 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 tutorial, configureremo Squid per utilizzare l'autent di base. È un semplice metodo di autenticazione integrato nel protocollo HTTP.

Useremo openssl per generare le password e aggiungere la coppia username:password al file /etc/squid/htpasswd usando il comando tee come mostrato di seguito.

Creiamo un utente chiamato "alice" con password "1390fh19":

printf "alice:$(openssl passwd -crypt '1390fh19')\n" | sudo tee -a /etc/squid/htpasswd

Dovesti ricevere un output simile al seguente:

alice:HDWEnTTbcud1A

Ora che l'utente viene creato, il passaggio successivo è abilitare l'autenticazione di base HTTP e includere il file htpasswd.

Apri la configurazione principale:

sudo nano /etc/squid/squid.conf

Aggiungi e modifica i parametri in questo modo:

# ...
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 evidenziate stanno creando un nuovo ACL denominato authenticated e l'ultima riga evidenziata consente l'accesso agli utenti autenticati.

Riavvia il servizio Squid:

sudo systemctl restart squid

Configurare il firewall

Supponendo che si stia utilizzando UFW per gestire il firewall, è necessario aprire la porta di Squid. A tale scopo abilitare il profilo "Squid" che include le regole per le porte Squid predefinite.

sudo ufw allow 'Squid'

Per verificare il tipo di stato:

sudo ufw status

L'output sarà simile al seguente:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Squid                      ALLOW       Anywhere            
22/tcp (v6)                ALLOW       Anywhere (v6)             
Squid (v6)                 ALLOW       Anywhere (v6)  

Se Squid è in esecuzione su un altra porta non predefinita, ad esempio, 8888 è possibile consentire il traffico su quella porta con: sudo ufw allow 8888/tcp.

Configurare il browser per l'utilizzo del proxy

Ora che hai configurato Squid, l'ultimo passo è configurare il tuo browser preferito per usarlo.

Firefox

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

  1. Nell'angolo in alto a destra, fai clic sull'icona dell'hamburger per aprire il menu di Firefox:
  2. Clicca sul link ⚙ Preferences
  3. 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.
  • 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 "what is my ip" e dovresti vedere il tuo indirizzo IP del server Squid.

Per ripristinare le impostazioni predefinite Network Settings, selezionare il pulsante Use system proxy settings e salva le impostazioni.

Esistono diversi plugin che possono anche aiutarti a configurare le impostazioni proxy di Firefox come FoxyProxy .

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 inserendo l'indirizzo IP del server su cui hai installato Squid:

Linux:

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

Mac OS :

"/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"

Se dovessero esserci problemi verificare che il percorso del file di avvio di Google Chrome sia corretto.

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

Per confermare che il server proxy funziona correttamente, apri google.com e digita "what is my ip". L'IP mostrato nel browser dovrebbe essere l'indirizzo IP del tuo server.

Conclusione

Hai imparato come installare Squid su Ubuntu 18.04 e come configurare il tuo browser per usarlo.

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.