Squid è un proxy di memorizzazione nella cache completo che supporta i protocolli di rete più diffusi come HTTP, HTTPS, FTP e altri. Posizionare Squid davanti a un server Web può migliorare notevolmente le prestazioni del server memorizzando nella cache le richieste ripetute, filtrando il traffico Web e accedendo a contenuti con restrizioni geografiche.
Questo tutorial spiega come configurare Squid su CentOS 7 e configurare i browser Web Firefox e Google Chrome per utilizzare il proxy.
Installazione di Squid su CentOS #
Il pacchetto Squid è incluso nei repository CentOS 7 predefiniti. Per installarlo esegui il seguente comando come utente sudo:
sudo yum install squid
Una volta completata l'installazione, avvia e abilita il servizio Squid:
sudo systemctl start squid
sudo systemctl enable squid
Per verificare che l'installazione sia andata a buon fine, digita il seguente comando che stamperà lo stato del servizio:
sudo systemctl status squid
● squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2019-07-13 16:47:56 UTC; 12s ago
...
Configurazione di Squid #
Squid può essere configurato modificando il /etc/squid/squid.conf
file. È possibile includere file aggiuntivi con opzioni di configurazione utilizzando la direttiva "include".
Prima di apportare modifiche, eseguire il backup del file di configurazione originale con il cp
comando:
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 vuoi cambiare la porta e impostare un'interfaccia di ascolto, individua 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.
Puoi controllare l'accesso al server Squid utilizzando gli elenchi di controllo di accesso (ACL).
Per impostazione predefinita, Squid consente l'accesso solo da localhost e localnet.
Se tutti i client che utilizzeranno il proxy hanno un indirizzo IP statico, puoi creare un ACL che includa gli IP consentiti.
Invece di aggiungere gli indirizzi IP nel file di configurazione principale creeremo un nuovo file dedicato che conterrà gli IP:
/etc/squid/allowed_ips.txt192.168.33.1
# All other allowed IPs
Una volta terminato, apri il file di configurazione principale e crea una nuova ACL denominata allowed_ips
(prima riga evidenziata) e consenti l'accesso a tale ACL utilizzando il http_access
direttiva (seconda riga evidenziata):
# ...
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 di http_access
le regole sono importanti. Assicurati di aggiungere la riga prima di http_access deny all
.
Il http_access
La direttiva 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 apporti modifiche al file di configurazione è necessario riavviare il servizio Squid affinché le modifiche abbiano effetto:
sudo systemctl restart squid
Autenticazione calamaro #
Squid può utilizzare diversi back-end, inclusi Samba, LDAP e l'autenticazione di base HTTP per gli utenti autenticati.
In questo esempio, configureremo Squid per utilizzare l'autenticazione di base. È un semplice metodo di autenticazione integrato nel protocollo HTTP.
Useremo il openssl
per generare le password e aggiungere il username:password
accoppiare a /etc/squid/htpasswd
file con il tee
comando come mostrato di seguito:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Ad esempio per creare un utente chiamato “mike” con password “Pz$lPk76
” correresti:
printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo
Il passaggio successivo consiste nel configurare Squid per abilitare l'autenticazione di base HTTP e utilizzare il file.
Apri la configurazione principale e aggiungi quanto segue:
/etc/squid/squid.conf# ...
auth_param basic program /usr/lib64/squid/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
Con le prime tre righe evidenziate stiamo creando una nuova ACL denominata authenticated
. L'ultima riga evidenziata consente l'accesso agli utenti autenticati.
Riavvia il servizio Squid:
sudo systemctl restart squid
Configurazione del firewall #
Se stai eseguendo un firewall dovrai aprire la porta 3128
. Per farlo, esegui i seguenti comandi:
Se Squid è in esecuzione su un'altra porta non predefinita, dovrai consentire il traffico su quella porta con.sudo firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
Configurazione del 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.
-
Nell'angolo in alto a destra, fai clic sull'icona dell'hamburger
☰
per aprire il menu di Firefox: -
Fai clic su
⚙ Preferences
collegamento. -
Scorri verso il basso fino a
Network Settings
sezione e fai clic suSettings...
pulsante. -
Si aprirà una nuova finestra.
- Seleziona
Manual proxy configuration
pulsante di opzione. - Inserisci l'indirizzo IP del tuo server Squid nel
HTTP Host
campo e3128
nelPort
campo. - Seleziona
Use this proxy server for all protocols
casella di controllo. - Fai clic su
OK
pulsante per salvare le impostazioni.
- Seleziona
A questo punto il tuo Firefox è configurato e puoi navigare in Internet tramite il proxy Squid. Per verificarlo, apri google.com
, digita "qual è il mio ip" e dovresti vedere l'indirizzo IP del tuo server Squid.
Per ripristinare le impostazioni predefinite, vai su Network Settings
, seleziona Use system proxy settings
pulsante di opzione e salva le impostazioni.
Ci sono anche diversi plugin che possono 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 connetterti al server Squid, utilizza il seguente comando:
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"
Finestre :
"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 verificare che il server proxy funzioni correttamente, apri google.com
e digita "qual è il mio ip". L'IP mostrato nel tuo browser dovrebbe essere l'indirizzo IP del tuo server.