Alberto Garcia

Configurar un proxy per la navegació web dels clients

El primer que farem serà instal·lar el servei Squid i realitzar una còpia de seguretat del fitxer de configuració original per poder revertir canvis si fos necessari.

sudo apt update && sudo apt install squid -y
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Abans de configurar el fitxer principal, crearem un fitxer de text on posarem els dominis que volem bloquejar. Això ens permet tindre llistes negres externes, que és molt més útil així no hem de tocar com tal el arxiu de configuració principal.
Dins del fitxer afegim els dominis (el punt inicial serveix per bloquejar també els subdominis):

# Creem el fitxer de bloqueig
sudo vim /etc/squid/blacklist.txt
.facebook.com
.instagram.com
.tiktok.com

Abans de procedir amb la configuració, detallarem les decisions preses per complir amb els objectius de seguretat i optimització:

  • Segmentació de Xarxa: S’ha definit l’ACL xarxa_smx utilitzant la subxarxa 192.168.100.0/28. Això limita l’ús del proxy exclusivament als 14 hosts de la meva VLAN, evitant accessos no autoritzats des d’altres segments, aquesta subxarxa es cambiara a cada membre del grup per que funcioni en tots els routers.

  • Control de Continguts (Filtratge): Per dotar el sistema de flexibilitat, s’ha implementat una Llista Negra externa (blacklist.txt). Aquesta configuració permet actualitzar els dominis prohibits sense necessitat de modificar el codi principal del servei.

  • Seguretat de Ports: S’aplica una política de “Deny by Default”. Només es permet el trànsit a través dels ports segurs (80 HTTP i 443 HTTPS), bloquejant qualsevol altre protocol que pugui suposar un risc.

  • Optimització de l’Amplada de Banda: S’ha configurat una memòria caché combinada:

    • RAM (cache_mem): Per a una resposta immediata dels objectes més consultats.

    • Disc (cache_dir): Per emmagatzemar fins a 100MB de contingut web, reduint el consum de dades de la nostra sortida a Internet.

sudo mv /etc/squid/squid.conf /etc/squid/squid.conf.bak
sudo vim /etc/squid/squid.conf
# CONFIGURACIÓ PROXY 

# --- Definició de Xarxes i Fitxers ---
acl xarxa_smx src 192.168.100.0/28
acl webs_bloquejades dstdomain "/etc/squid/blacklist.txt"

# --- Secció de Seguretat (Ports) ---
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT

# --- Regles Accés ---
http_access deny !Safe_ports
http_access deny webs_bloquejades
http_access allow xarxa_smx
http_access allow localhost
http_access deny all

# --- Paràmetres del Servei ---
http_port 3128

# --- Secció d'Optimització (Caché) ---
cache_mem 128 MB
cache_dir ufs /var/spool/squid 100 16 256

Abans de reiniciar, és neceseari assegurar-se que no hi ha errors de sintaxi. Si aquest comandament no diu res, és que tot està perfecte:

sudo squid -k parse
vagrant@debian:~$ sudo squid -k parse
2026/03/16 09:36:53| Startup: Initializing Authentication Schemes ...
2026/03/16 09:36:53| Startup: Initialized Authentication Scheme 'basic'
2026/03/16 09:36:53| Startup: Initialized Authentication Scheme 'digest'
2026/03/16 09:36:53| Startup: Initialized Authentication Scheme 'negotiate'
2026/03/16 09:36:53| Startup: Initialized Authentication Scheme 'ntlm'
2026/03/16 09:36:53| Startup: Initialized Authentication.
2026/03/16 09:36:53| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2026/03/16 09:36:53| Processing: acl xarxa_smx src 192.168.100.0/28
2026/03/16 09:36:53| Processing: acl webs_bloquejades dstdomain "/etc/squid/blacklist.txt"
2026/03/16 09:36:53| Processing: acl Safe_ports port 80
2026/03/16 09:36:53| Processing: acl Safe_ports port 443
2026/03/16 09:36:53| Processing: acl CONNECT method CONNECT
2026/03/16 09:36:53| Processing: http_access deny !Safe_ports
2026/03/16 09:36:53| Processing: http_access deny webs_bloquejades
2026/03/16 09:36:53| Processing: http_access allow xarxa_smx
2026/03/16 09:36:53| Processing: http_access allow localhost
2026/03/16 09:36:53| Processing: http_access deny all
2026/03/16 09:36:53| Processing: http_port 3128
2026/03/16 09:36:53| Processing: cache_mem 128 MB
2026/03/16 09:36:53| Processing: cache_dir ufs /var/spool/squid 100 16 256
2026/03/16 09:36:53| Initializing https:// proxy context

Ara reiniciarem el servei per activar la teva nova configuració i comprovarem que estigui “Running”

sudo systemctl restart squid
sudo systemctl status squid
vagrant@debian:~$ sudo systemctl restart squid
vagrant@debian:~$ sudo systemctl status squid
● squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-03-16 09:38:19 CET; 1s ago
       Docs: man:squid(8)
    Process: 2182 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
   Main PID: 2186 (squid)
      Tasks: 5 (limit: 487)
     Memory: 40.5M
        CPU: 162ms
     CGroup: /system.slice/squid.service
             ├─2186 /usr/sbin/squid --foreground -sYC
             ├─2188 "(squid-1)" --kid squid-1 --foreground -sYC
             ├─2189 "(logfile-daemon)" /var/log/squid/access.log
             ├─2190 "(unlinkd)"
             └─2191 "(pinger)"

Mar 16 09:38:19 debian squid[2188]:         0 Objects expired.
Mar 16 09:38:19 debian squid[2188]:         0 Objects cancelled.
Mar 16 09:38:19 debian squid[2188]:         0 Duplicate URLs purged.
Mar 16 09:38:19 debian squid[2188]:         0 Swapfile clashes avoided.
Mar 16 09:38:19 debian squid[2188]:   Took 0.04 seconds (  0.00 objects/sec).
Mar 16 09:38:19 debian squid[2188]: Beginning Validation Procedure
Mar 16 09:38:19 debian squid[2188]:   Completed Validation Procedure
Mar 16 09:38:19 debian squid[2188]:   Validated 0 Entries
Mar 16 09:38:19 debian squid[2188]:   store_swap_size = 0.00 KB
Mar 16 09:38:20 debian squid[2188]: storeLateRelease: released 0 objects

Ara que farem serà una prova bàsica, per fer-ho utilitzarem tant la màquina de router amb el proxy amb una comanda, que farà que vagi sortint tot el contingut de  l’arxiu de log, on es veu el trànsit de la xarxa, també utilitzarem una altra màquina Ubuntu per busca  alguna pàgina bloquejada per veure es bloqueja, i per últim buscarem google.com per veure com podem accedir.

Petició a un domini prohibit. Es veu el codi 403 Forbidden, confirmant que el Proxy denega.

vagrant@ubuntu:~$ curl -I http://www.facebook.com
HTTP/1.1 403 Forbidden
Server: squid/5.7
Mime-Version: 1.0
Date: Mon, 16 Mar 2026 10:46:14 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3070
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from debian
X-Cache-Lookup: NONE from debian:3128
Via: 1.1 debian (squid/5.7)
Connection: keep-alive

Petició a un domini permès. El codi 200 OK indica que el trànsit flueix correctament a través del servidor.

vagrant@super-VirtualBox:~$ curl -I http://www.google.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Content-Security-Policy-Report-Only: object-src 'none';base-uri 'self';script-src 'nonce-0YqOu5E-MU2rgqxpZM9Fog' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
Reporting-Endpoints: default="//www.google.com/httpservice/retry/jserror?ei=GeC3afX2Bczy7M8Piq-L8Ag&cad=crash&error=Page%20Crash&jsel=1&bver=2397&dpf=Ng6uYl74jlEq2r7cbHIWJj-t0bOpZPEednZknlLPizE"
Date: Mon, 16 Mar 2026 10:48:57 GMT
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Expires: Mon, 16 Mar 2026 10:48:57 GMT
Cache-Control: private
Set-Cookie: AEC=AaJma5vGUrkejT4msm-p_t8aPrnjb1ZhZdv1S6qkW1x_5WpLLlZD6TC7GfM; expires=Sat, 12-Sep-2026 10:48:57 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
X-Cache: MISS from debian
X-Cache-Lookup: MISS from debian:3128
Via: 1.1 debian (squid/5.7)
Connection: keep-alive

I el registre d’activitat al servidor Squid. Es pot veure la traça de les dues peticions anteriors amb els estats TCP_DENIED/403 i TCP_MISS/200

vagrant@router:~$ sudo tail -f /var/log/squid/access.log
1773656493.172   3035 192.168.100.9 TCP_MISS_ABORTED/000 0 GET http://detectportal.firefox.com/canonical.html - HIER_NONE/- -
1773656529.827  39624 192.168.100.9 NONE_NONE/500 0 CONNECT ads.mozilla.org:443 - HIER_NONE/- -
1773656529.827  39620 192.168.100.9 NONE_NONE/500 0 CONNECT ads.mozilla.org:443 - HIER_NONE/- -
1773656529.827  39480 192.168.100.9 NONE_NONE/500 0 CONNECT www.google.com:443 - HIER_NONE/- -
1773656529.827  36857 192.168.100.9 NONE_NONE/500 0 CONNECT www.google.com:443 - HIER_NONE/- -
1773656529.827  39423 192.168.100.9 NONE_NONE/500 0 CONNECT firefox.settings.services.mozilla.com:443 - HIER_NONE/- -
1773656529.827  39359 192.168.100.9 NONE_NONE/500 0 CONNECT safebrowsing.googleapis.com:443 - HIER_NONE/- -
1773656529.827  39014 192.168.100.9 NONE_NONE/500 0 CONNECT push.services.mozilla.com:443 - HIER_NONE/- -
1773656529.827  38874 192.168.100.9 NONE_NONE/500 0 CONNECT incoming.telemetry.mozilla.org:443 - HIER_NONE/- -
1773656529.827  37251 192.168.100.9 NONE_NONE/500 0 CONNECT www.reddit.com:443 - HIER_NONE/- -
1773657974.044      0 192.168.100.10 TCP_DENIED/403 362 HEAD http://www.facebook.com/ - HIER_NONE/- text/html
1773658137.397    353 192.168.100.10 TCP_MISS/200 964 HEAD http://www.google.com/ - HIER_DIRECT/142.251.29.106 text/html