-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
143 lines (102 loc) · 3.56 KB
/
README
File metadata and controls
143 lines (102 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# squid.conf — Squid 5.7 con autenticación OpenLDAP y TLS - Debian 12
Configuración de proxy Squid 5.7 para *Debian 12* con autenticación contra OpenLDAP via LDAPS y cifrado TLS entre cliente y proxy.
## Características
- Proxy HTTP transparente en puerto 3128
- Proxy HTTPS cifrado (TLS) en puerto 13129
- Autenticación Basic contra OpenLDAP via LDAPS (puerto 636)
- Caché con política LFUDA
- Listas negras de dominios y palabras clave
- Dominios con acceso directo sin caché
## Requisitos
### Paquetes
```bash
apt install squid-openssl
```
> El paquete `squid` estándar no incluye soporte SSL. Es imprescindible `squid-openssl`.
### Certificados
Squid necesita leer el certificado y la clave privada:
```bash
mkdir -p /etc/squid/ssl
cp /etc/ssl/certificado.crt /etc/squid/ssl/
cp /etc/ssl/certificado.key /etc/squid/ssl/
chown root:proxy /etc/squid/ssl/certificado.key
chmod 640 /etc/squid/ssl/certificado.key
chmod 644 /etc/squid/ssl/certificado.crt
```
El fichero `.crt` debe contener la cadena completa (certificado + intermedios). Verificar:
```bash
grep -c "BEGIN CERTIFICATE" /etc/squid/ssl/certificado.crt
# Debe devolver 3 o 4
```
### OpenLDAP
Se requiere una cuenta de servicio con permisos de lectura sobre `ou=People`:
```
DN: cn=ldap-reader,ou=Service,dc=domain,dc=com
```
Verificar que el helper de autenticación funciona antes de arrancar Squid:
```bash
echo "usuario password" | /usr/lib/squid/basic_ldap_auth \
-H ldaps://127.0.0.1 \
-b "ou=People,dc=domain,dc=com" \
-D "cn=ldap-reader,ou=Service,dc=domain,dc=com" \
-w "PASSWORD" \
-f "uid=%s"
# Debe devolver: OK
```
## Ficheros de configuración
| Fichero | Descripción |
|---|---|
| `/etc/squid/squid.conf` | Configuración principal |
| `/etc/squid/denydomains` | Dominios bloqueados (regex) |
| `/etc/squid/denywords` | URLs bloqueadas por palabras clave (regex) |
| `/etc/squid/sincache` | Dominios con acceso directo sin caché (regex) |
## Instalación
```bash
# Verificar sintaxis
squid -k parse
# Iniciar servicio
systemctl enable --now squid
# Verificar puertos
ss -tlnp | grep squid
```
## Gestión del servicio
```bash
# Recargar configuración sin interrumpir conexiones activas
systemctl reload squid
# Reinicio completo (interrumpe conexiones activas)
systemctl restart squid
# Estado
systemctl status squid
# Logs en tiempo real
tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log
```
## Configuración del cliente
El puerto 13129 usa TLS, por lo que el cliente debe soportar **proxy HTTPS explícito**.
### Firefox
El cliente nativo de Firefox **no soporta proxy HTTPS**. Usar la extensión [FoxyProxy](https://addons.mozilla.org/es/firefox/addon/foxyproxy-standard/):
```
Proxy HTTPS: proxy.dominio.com
Puerto: 13129
```
### curl
```bash
curl -x https://proxy.dominio.com:13129 \
--proxy-user usuario:password \
https://example.com
```
### Variables de entorno
```bash
export https_proxy=https://usuario:password@proxy.dominio.com:13129
export http_proxy=https://usuario:password@proxy.dominio.com:13129
```
## Logs
| Fichero | Contenido |
|---|---|
| `/var/log/squid/access.log` | Registro de accesos |
| `/var/log/squid/store.log` | Registro de objetos en caché |
| `/var/log/squid/cache.log` | Registro del sistema y errores |
## Notas
- El puerto 13129 está expuesto a Internet. Restringir mediante firewall a las IPs de los clientes si es posible.
- El certificado de OpenLDAP debe estar vigente. Verificar con `openssl s_client -connect 127.0.0.1:636`.
- La directiva `cache_access_log` usa el prefijo `stdio:` requerido por Squid 5.x.