Squid Proxy Server installeren op Ubuntu 20.04

Squid is een volwaardige Linux-gebaseerde proxy toepassing die vooral gebruikt wordt voor het filteren van verkeer, beveiliging, en DNS opzoekingen. Het wordt ook gebruikt om de prestaties van de webserver te verbeteren door bronnen te cachen. Eenvoudig gezegd is een Squid server een computer die als tussenpersoon tussen een desktop computer en het internet fungeert en inkomende verzoeken van cliënten doorstuurt naar een server waar gegevens worden opgeslagen om ze gemakkelijker te kunnen opvragen. Hij ondersteunt verschillende protocollen, waaronder, HTTP, FTP, TLS, SSL, Internet Gopher en HTTPS.

In deze handleiding laten we je zien hoe je Squid proxy server installeert en instelt op Ubuntu 20.04 server.

Vereisten

  • Een server waarop Ubuntu 20.04 draait.
  • Een root wachtwoord is de server geconfigureerd.

Aan de slag

Voor je begint moet je je systeempakketten bijwerken naar de nieuwste versie. Je kunt ze bijwerken met het volgende commando:

apt-get update -y

Als alle pakketten zijn bijgewerkt, herstart je je systeem om de veranderingen toe te passen.

Installeer Squid Proxy

Standaard is het Squid pakket beschikbaar in de Ubuntu 20.04 standaard repository. Je kunt het installeren met het volgende commando:

apt-get install squid -y

Als Squid geïnstalleerd is, kun je de status van de Squid dienst controleren met het volgende commando:

systemctl status squid

Je zou de volgende uitvoer moeten krijgen:

? squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago
       Docs: man:squid(8)
    Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
    Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
   Main PID: 49283 (squid)
      Tasks: 4 (limit: 2353)
     Memory: 16.4M
     CGroup: /system.slice/squid.service
             ??49283 /usr/sbin/squid -sYC
             ??49285 (squid-1) --kid squid-1 -sYC
             ??49287 (logfile-daemon) /var/log/squid/access.log
             ??49288 (pinger)

Aug 23 12:00:24 ubuntu2004 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubuntu2004 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubuntu2004 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubuntu2004 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubuntu2004 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubuntu2004 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubuntu2004 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubuntu2004 squid[49285]: storeLateRelease: released 0 objects

Standaard luistert Squid op poort 3128. Je kunt het controleren met het volgende commando:

netstat -plunt | grep 3128

Je zou de volgende uitvoer moeten zien:

tcp6       0      0 :::3128                 :::*                    LISTEN      50017/(squid-1)

Als je klaar bent, kun je verder gaan met de volgende stap.

Instellen van IP gebaseerde authenticatie

Er zijn verschillende manieren waarop je de toegang van de cliënt tot het internet kunt beperken. In dit onderdeel zullen we Squid instellen om te authenticeren op basis van het IP adres van de client.

Je kunt dit doen door het standaard configuratiebestand van Squid te bewerken:

nano /etc/squid/squid.conf

Voeg de volgende regel toe aan het begin van het bestand:

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2

Sla het bestand op en sluit het als je klaar bent. Herstart dan de Squid dienst om de veranderingen toe te passen:

systemctl restart squid

Waar:

  • client1 en client2 is de naam waarmee de client computers geïdentificeerd zijn.
  • 192.168.10.10 en 192.168.10.11 is het IP adres van de client computer.

Nu kunnen alleen computers die ingesteld zijn met IP 192.168.10.10 en 192.168.10.11 het internet op.

Stel gebruikersgebaseerde authenticatie in

Je kunt Squid ook instellen om te authenticeren op basis van gebruiker en wachtwoord. Om dat te doen moet je het Apache utils pakket in je systeem installeren.

Voer het volgende commando uit om het Apache utils pakket te installeren:

apt install apache2-utils -y

Maak, eenmaal geïnstalleerd, een eerste gebruiker aan met het volgende commando:

htpasswd /etc/squid/passwd client1

Je wordt gevraagd een wachtwoord in te stellen zoals hieronder:

New password: 
Re-type new password: 
Adding password for user client1

Maak vervolgens een tweede gebruiker aan met het volgende commando:

htpasswd /etc/squid/passwd client2

Stel een wachtwoord in zoals hieronder getoond:

New password: 
Re-type new password: 
Adding password for user client2

Vervolgens kun je beide gebruikers verifiëren met het volgende commando:

cat /etc/squid/passwd

Je zou de volgende uitvoer moeten krijgen:

client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/
client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0

Open vervolgens het Squid standaard configuratiebestand:

nano /etc/squid/squid.conf

Verwijder de eerste drie regels die je in de vorige paragraaf hebt toegevoegd en voeg de volgende regels toe aan het begin van het bestand:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Sla het bestand op en sluit het. Herstart dan de Squid proxy dienst om de veranderingen toe te passen:

systemctl restart squid

Nu moet je gebruikersnaam en wachtwoord opgeven om het internet op te kunnen.

Gecombineerde Authenticatie instellen

Je kunt Squid ook instellen om een cliënt te authenticeren op basis van het IP adres en de gebruikersnaam / het wachtwoord.

Open het Squid standaard configuratiebestand:

nano /etc/squid/squid.conf

Zoek de volgende regels die je in de vorige paragraaf toegevoegd hebt:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

En vervang ze door de volgende regels:

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users

Bewaar en sluit het bestand als je klaar bent en herstart dan de Squid dienst om de veranderingen toe te passen:

systemctl restart squid

Squid instellen om verkeer te anonimiseren

Vervolgens moet je enkele regels toevoegen om client IP adressen te maskeren voor de servers die verkeer ontvangen van je Squid HTTP proxy.

Je kunt dat doen door het standaard configuratiebestand van Squid te bewerken:

nano /etc/squid/squid.conf

Voeg de volgende regels toe aan het begin van het bestand:

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

Bewaar en sluit het bestand als je klaar bent en herstart dan de Squid service om de veranderingen toe te passen:

systemctl restart squid

Verifieer Squid Proxy

Vervolgens moet je je Proxy server definiëren in je Mozilla web browser.

Ga naar het client systeem, open de Mozilla web browser, en klik op Bewerken => Voorkeuren zoals hieronder:

Controleer squid proxy

Klik op de sectie Netwerkinstellingen en klik op de Instellingen. Je zou de volgende pagina moeten zien:

Proxy server configuratie

Kies het keuzerondje Handmatige proxy configuratie, vul het IP adres van je Squid server in in het HTTP Host veld en 3128 in het Port veld en vink het vakje Gebruik deze proxyserver voor alle protocollen aan en klik op de OK knop om de instellingen op te slaan.

Nu is je browser ingesteld om via de Squid proxy over het Internet te surfen.

Om dit te verifiëren typ je de URL https://www.whatismyip.com/. Je wordt gevraagd een gebruikersnaam en wachtwoord op te geven zoals hieronder:

Authenticeren bij proxyserver

Geef je Squid proxy server gebruikersnaam en wachtwoord op die je eerder gemaakt hebt en klik op de OK knop. Je zou de volgende pagina moeten zien:

Axxess website via squid proxy

Op de bovenstaande pagina zou je het IP adres van je Squid server moeten zien in plaats van het IP adres van je client computer.

Conclusie

Gefeliciteerd! Je hebt met succes de Squid proxy server op Ubuntu 20.04 server geïnstalleerd en ingesteld. Je kunt Squid proxy ook instellen om de specifieke website te beperken op basis van het woord, domein en IPs. Voor meer informatie kun je de officiële documentatie van Squid raadplegen.