CONFIGURAR UN PROXY PER LA NEAVEGACIÓ WEB DELS CLIENTS I PROXY TRANSAPENT
INSTALACIÓ
sudo apt update
sudo apt install squid -y
COPIA DE SEGURETAT DE LA CONFIGURACIÓ ORIGINAL:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup
CONFIGURACIÓ SQUID:
sudo nano /etc/squid/squid.conf
# ============================================
# CONFIGURACIÓ PROXY TRANSPARENT – SQUID
# Passarel·la: 10.0.0.1
# ============================================
# ============================================
# PORTS
# Puerto 3128: Port estàndard de Squid
# Puerto 3129: Port per a proxy transparent
# ============================================
http_port 3128
http_port 3129 intercept
# ============================================
# DEFINICIÓ DE XARXES
# ============================================
acl xarxa_servidors src 10.0.10.0/27
acl xarxa_clients src 10.0.20.0/24
acl xarxa_interna src 10.0.10.0/27 10.0.20.0/24
acl localhost src 127.0.0.1/32
# ============================================
# DEFINICIÓ DE PORTS PERMESOS
# ============================================
acl ports_segurs port 80 443 8080 8443
acl ports_ssl port 443
# ============================================
# DEFINICIÓ DE PROTOCOLS
# ============================================
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 8080
acl CONNECT method CONNECT
# ============================================
# LLISTA DE DOMINIS BLOQUEJATS
# Justificació: Bloquejar llocs web que no
# corresponen a l’ús professional de l’empresa.
# ============================================
acl llocs_bloquejats dstdomain “/etc/squid/llocs_bloquejats.txt”
# ============================================
# LLISTA DE DOMINIS PERMESOS
# Justificació: Llista blanca de dominis
# sempre permesos independentment de les
# altres restriccions.
# ============================================
acl llocs_permesos dstdomain “/etc/squid/llocs_permesos.txt”
# ============================================
# HORARI DE NAVEGACIÓ
# Justificació: Restringir la navegació web
# a l’horari laboral (8:00 – 20:00)
# ============================================
acl horari_laboral time MTWHF 08:00-20:00
# ============================================
# REGLES D’ACCÉS
# L’ordre de les regles és important:
# Squid aplica la primera regla que coincideix.
# ============================================
# Bloquejar ports no segurs
http_access deny !Safe_ports
# Bloquejar CONNECT a ports no SSL
http_access deny CONNECT !SSL_ports
# Permetre accés al gestor de Squid des de localhost
http_access allow localhost manager
http_access deny manager
# Permetre sempre llocs de la llista blanca
http_access allow llocs_permesos xarxa_interna
# Bloquejar llocs de la llista negra
http_access deny llocs_bloquejats
# Permetre xarxa de clients en horari laboral
http_access allow xarxa_clients horari_laboral
# Permetre servidors sempre (necessiten accés per actualitzacions)
http_access allow xarxa_servidors
# Denegar la resta
http_access deny all
# ============================================
# CONFIGURACIÓ DE CACHÉ
# Justificació: La caché emmagatzema pàgines
# visitades freqüentment, reduint l’ús
# d’ample de banda i millorant la velocitat.
# ============================================
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 50 MB
minimum_object_size 0 KB
cache_replacement_policy lru
# Directori de caché
cache_dir ufs /var/spool/squid 1000 16 256
# ============================================
# CONFIGURACIÓ DE LOGS
# Justificació: Registra tota la navegació
# per a auditoria i control de seguretat.
# ============================================
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
# Format del log
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
# ============================================
# CONFIGURACIÓ GENERAL
# ============================================
# Nom del servidor proxy
visible_hostname proxy.localhost.local
# DNS
dns_nameservers 8.8.8.8 8.8.4.4
# Temps màxim de connexió
connect_timeout 30 seconds
read_timeout 300 seconds
request_timeout 30 seconds
# Mida màxima de descàrrega (100MB)
reply_body_max_size 100 MB all
# Ocultar informació del servidor intern
forwarded_for off
via off
# Capcaleres a eliminar per privacitat
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
CREAR LLISTA DE LLOCS BLOQUEJATS:
sudo nano /etc/squid/llocs_bloquejats.txt
LLISTA DE LLOCS PERMESOS:
sudo nano /etc/squid/llocs_permesos.txt
INICI I VERIFICACIÓ:
sudo squid -z
sudo squid -k parse
RESULTAT ESPERAT:
REINICIAR:
sudo systemctl restart squid
sudo systemctl enable squid
sudo systemctl status squid
CONFIGURAR IPTABLES AL PROXY TRANSAPARENT:
sudo nano /usr/local/bin/proxy_redirect.sh
#!/bin/bash
# ============================================
# REDIRECCIÓ DE TRÀFIC CAP AL PROXY TRANSPARENT
# Passarel·la: 10.0.0.1
# ============================================
# Variables
LAN_CLI=”eth2″ # Interfície VLAN 20 Clients
LAN_SERV=”eth1″ # Interfície VLAN 10 Servidors
RED_CLI=”10.0.20.0/24″ # Xarxa clients
RED_SERV=”10.0.10.0/27″ # Xarxa servidors
PROXY_PORT=”3129″ # Port proxy transparent
echo “[*] Configurant redirecció de tràfic cap al proxy transparent…”
# Redirigir tràfic HTTP (port 80) dels clients cap al proxy
iptables -t nat -A PREROUTING -i $LAN_CLI -p tcp –dport 80 -j REDIRECT –to-port $PROXY_PORT
# Redirigir tràfic HTTP dels servidors cap al proxy
iptables -t nat -A PREROUTING -i $LAN_SERV -p tcp –dport 80 -j REDIRECT –to-port $PROXY_PORT
# Permetre tràfic cap al proxy des de xarxes internes
iptables -A INPUT -s $RED_CLI -p tcp –dport 3128 -j ACCEPT
iptables -A INPUT -s $RED_CLI -p tcp –dport 3129 -j ACCEPT
iptables -A INPUT -s $RED_SERV -p tcp –dport 3128 -j ACCEPT
iptables -A INPUT -s $RED_SERV -p tcp –dport 3129 -j ACCEPT
echo “[OK] Redirecció configurada correctament”
# Desar regles
netfilter-persistent save
DONAR PERMISOS I EXECUTAR:
sudo chmod +x /usr/local/bin/proxy_redirect.sh
sudo /usr/local/bin/proxy_redirect.sh
SCRIPT VERIFICACIÓ DEL PROXY
sudo nano /usr/local/bin/check_proxy.sh
#!/bin/bash
echo “=========================================”
echo ” VERIFICACIÓ PROXY SQUID”
echo ” Passarel·la: 10.0.0.1″
echo ” $(date ‘+%Y-%m-%d %H:%M:%S’)”
echo “=========================================”
echo “”
echo “1. ESTAT DEL SERVEI:”
echo “——————–“
if systemctl is-active –quiet squid; then
echo “[OK] Squid actiu i funcionant”
systemctl status squid –no-pager | grep “Active:”
else
echo “[ERROR] Squid no està actiu”
fi
echo “”
echo “2. PORTS EN ESCOLTA:”
echo “——————–“
if ss -tuln | grep -q “:3128”; then
echo “[OK] Port 3128 en escolta”
else
echo “[ERROR] Port 3128 no disponible”
fi
if ss -tuln | grep -q “:3129”; then
echo “[OK] Port 3129 (transparent) en escolta”
else
echo “[ERROR] Port 3129 no disponible”
fi
echo “”
echo “3. VERIFICACIÓ DE CONFIGURACIÓ:”
echo “——————————–“
if sudo squid -k parse > /dev/null 2>&1; then
echo “[OK] Configuració correcta sense errors”
else
echo “[ERROR] Errors a la configuració:”
sudo squid -k parse 2>&1
fi
echo “”
echo “4. ESTADÍSTIQUES DE CACHÉ:”
echo “————————–“
squidclient -h 127.0.0.1 mgr:info 2>/dev/null | grep -E “Number of|Hits|Misses|KB” | head -10
echo “”
echo “5. ÚLTIMES CONNEXIONS (access.log):”
echo “————————————“
sudo tail -10 /var/log/squid/access.log 2>/dev/null | awk ‘{print $3, $7, $9}’ | column -t
echo “”
echo “6. LLOCS BLOQUEJATS:”
echo “——————–“
echo “Total llocs bloquejats: $(grep -c “.” /etc/squid/llocs_bloquejats.txt 2>/dev/null)”
echo “Total llocs permesos: $(grep -c “.” /etc/squid/llocs_permesos.txt 2>/dev/null)”
echo “”
echo “7. ESPAI DE CACHÉ:”
echo “——————“
du -sh /var/spool/squid 2>/dev/null
echo “”
echo “8. REDIRECCIÓ IPTABLES ACTIVA:”
echo “——————————-“
if iptables -t nat -L PREROUTING | grep -q “3129”; then
echo “[OK] Redirecció transparent activa”
else
echo “[ERROR] Redirecció transparent no configurada”
fi
echo “”
echo “=========================================”
echo ” FI DE LA VERIFICACIÓ”
echo “=========================================”
DONAR PERMISOS I EXECUTAR:
sudo chmod +x /usr/local/bin/check_proxy.sh
sudo /usr/local/bin/check_proxy.sh
RESUM DE LA CONFIGURACIÓ
| Element | Valor | Justificació |
|---|---|---|
| Port estàndard | 3128 | Port per defecte de Squid |
| Port transparent | 3129 | Intercepta tràfic sense configuració al client |
| Caché RAM | 256 MB | Millora la velocitat de navegació |
| Caché disc | 1000 MB | Emmagatzema contingut freqüent |
| Mida màxima descàrrega | 100 MB | Evita descàrregues massives |
| Horari navegació clients | 08:00-20:00 | Restringit a horari laboral |
| Servidors | Sempre permesos | Necessiten accés per actualitzacions |
| Llocs bloquejats | Xarxes socials, streaming, jocs | Ús professional |
| Logs | Activats | Auditoria i control de seguretat |