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_smxutilitzant la subxarxa192.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