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Ó

ElementValorJustificació
Port estàndard3128Port per defecte de Squid
Port transparent3129Intercepta tràfic sense configuració al client
Caché RAM256 MBMillora la velocitat de navegació
Caché disc1000 MBEmmagatzema contingut freqüent
Mida màxima descàrrega100 MBEvita descàrregues massives
Horari navegació clients08:00-20:00Restringit a horari laboral
ServidorsSempre permesosNecessiten accés per actualitzacions
Llocs bloquejatsXarxes socials, streaming, jocsÚs professional
LogsActivatsAuditoria i control de seguretat