Introduzione

Squid è un proxy di cache completo che supporta protocolli di rete popolari come HTTP, HTTPS, FTP e altri. Può essere utilizzato per migliorare le prestazioni del server Web memorizzando nella cache richieste ripetute, filtrare il traffico Web e accedere a contenuti con limitazioni geografiche.

Questo tutorial spiega come impostare un proxy Squid su Ubuntu 20.04 LTS Focal Fossa e configurare i browser Web Firefox e Google Chrome per utilizzarlo.

Se desideri installare Squid Proxy su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Squid su Ubuntu

Il pacchetto squid è incluso nei repository standard di Ubuntu 20.04 LTS. Per installarlo, esegui i seguenti comandi come utente sudo:

sudo apt update
sudo apt install squid

Una volta completata l'installazione, il servizio Squid verrà avviato automaticamente. Per verificarlo, controlla lo stato del servizio:

sudo systemctl status squid

L'output sarà simile a questo:

● squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-10-24 12:49:04 CEST; 15s ago
       Docs: man:squid(8)
   Main PID: 166072 (squid)
      Tasks: 4 (limit: 2286)
     Memory: 15.9M

...

Configurare Squid

Il servizio squid può essere configurato modificando il file /etc/squid/squid.conf. Il file di configurazione contiene commenti che descrivono cosa fa ciascuna opzione di configurazione. È inoltre possibile inserire le impostazioni di configurazione in file separati, che possono essere inclusi nel file di configurazione principale utilizzando la direttiva "include".

Prima di apportare modifiche, si consiglia di eseguire il backup del file di configurazione originale:

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

Per iniziare a configurare la tua istanza squid, apri il file nel tuo editor di testo:

sudo nano /etc/squid/squid.conf

Per impostazione predefinita, squid è impostato 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
/etc/squid/squid.conf

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

Squid ti consente di controllare come i client possono accedere alle risorse web utilizzando gli elenchi di controllo di accesso (ACL). Per impostazione predefinita, l'accesso è consentito solo dal localhost.

Se tutti i client che utilizzano il proxy hanno un indirizzo IP statico, l'opzione più semplice per limitare l'accesso al server proxy è creare un ACL che includerà gli IP consentiti. Altrimenti, puoi impostare squid per utilizzare l'autenticazione.

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

sudo nano /etc/squid/allowed_ips.txt
192.168.11.11
# All other allowed IPs
allowed_ips.txt

Una volta fatto, apri il file di configurazione principale e crea un nuovo ACL denominato allowed_ips  aggiungendo acl allowed_ips src "/etc/squid/allowed_ips.txt" e consenti l'accesso a quell'ACL utilizzando la direttiva http_access aggiungendo http_access allow allowed_ips come mostrato di seguito:


# ...
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 http_access è importante. Assicurati di aggiungere la riga prima 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, le 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 Squid

Se la limitazione dell'accesso in base all'IP non funziona per il tuo caso d'uso, puoi configurare squid per utilizzare un back-end per autenticare gli utenti. Squid supporta l'autenticazione di base Samba, LDAP e HTTP.

In questa guida useremo l'autenticazione di base. È un semplice metodo di autenticazione integrato nel protocollo HTTP.

Per generare una password crittografata, utilizza lo strumento openssl. Il comando seguente aggiunge la coppia USERNAME:PASSWORD al file /etc/squid/htpasswd:

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

Ad esempio, per creare un utente alice con password 1390fh19, dovresti eseguire:

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

Il passaggio successivo consiste nell'abilitare l'autenticazione di base HTTP e includere il file contenente le credenziali dell'utente nel file di configurazione squid.

Apri la configurazione principale e aggiungi o modifica le seguenti righe evidenziate:

sudo nano /etc/squid/squid.conf

# ...
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 creano 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

Per aprire le porte Squid, abilita il UFW profilo "Squid":

sudo ufw allow 'Squid'

Se Squid è in esecuzione su un altro, 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 impostato Squid, l'ultimo passaggio è 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. Fare clic sul collegamento ⚙ 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 di opzione Manual proxy configuration.
  • Inserisci il tuo 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, il tuo Firefox è configurato e puoi navigare in Internet tramite il proxy Squid. Per verificarlo, apri google.com, digita "what is my ip" e dovresti vedere l'indirizzo IP del tuo server Squid.

Per ripristinare le impostazioni predefinite, vai a Network Settings, seleziona il pulsante di opzione 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 seguente comando:

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"

Il profilo verrà creato automaticamente se non esiste. In questo modo puoi 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 tuo browser dovrebbe essere l'indirizzo IP del tuo server.

Conclusione

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.

Ti abbiamo mostrato come installare e configurare Squid su Ubuntu 20.04 LTS Focal Fossa e come impostare il tuo browser per usarlo.