Linux: Squid en la máquina local para controlar el tráfico saliente

Linux: Squid en la máquina local para controlar el tráfico saliente

Estoy intentando configurar Squid en mi computadora para controlar el tráfico saliente únicamente desde la misma computadora. Si tengo entendido que es correcto, squid se ejecuta como usuario "squid" en la mayoría de las distribuciones de Linux (la mía es Fedora, si es importante).

He configurado iptables para descartar todos los paquetes salientes excepto los de uid 0 y uid 23 (root y squid).

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -m owner --uid-owner 0 -j ACCEPT
-A OUTPUT -m owner --uid-owner 23 -j ACCEPT
-A OUTPUT -j DROP
COMMIT

Luego quiero tener que ingresar manualmente la información del proxy de Squid en el navegador para cada cuenta de usuario local (por lo que no creo que busque una configuración transparente). Si es posible, me gustaría que se requiera un usuario/pase para poder conectarme a Squid, para evitar que los usuarios tengan acceso a Internet excepto a través del proxy de Squid.

Mi squid.conf actual es el siguiente, pero no funciona en absoluto y obviamente no incorpora un requisito de usuario/contraseña:

acl ssl_ports port 443
acl safe_ports port 80      # http
acl safe_ports port 21      # ftp
acl safe_ports port 443     # https
acl safe_ports port 70      # gopher
acl safe_ports port 210     # wais
acl safe_ports port 1025-65535  # unregistered ports
acl safe_ports port 280     # http-mgmt
acl safe_ports port 488     # gss-http
acl safe_ports port 591     # filemaker
acl safe_ports port 777     # multiling http
acl CONNECT method CONNECT
http_access deny !safe_ports
http_access deny CONNECT !ssl_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .   

¿Es alcanzable lo que estoy tratando de hacer? ¿Lo estoy haciendo de la manera correcta?

¿Funcionará lo que he hecho con iptables?

Me doy cuenta de que esto no es algo que voy a aprender a configurar correctamente en 10 minutos, por lo que cualquier ayuda/consejos sobre guías o incluso soluciones alternativas sobre cómo lograrlo son bienvenidos.

Respuesta1

Probablemente necesitarás abrir el acceso al menos a DNS para otros programas.

Squid tiene un módulo de autenticación, pero no debería necesitarlo en su caso. Como sólo Squid puede acceder a la web, todos los usuarios se verán obligados a utilizarla.

Verifique las variables de entorno utilizadas para configurar servidores proxy y configúrelos globalmente. Deberías configurar http_proxyal menos.

Existe un wpad.datmecanismo para configurar servidores proxy, pero no lo he usado como pretendes.

Creo que encontrará que muchos servicios utilizan puertos que no figuran en la lista y la experiencia de navegación no será muy buena.

Como no parece estar bloqueando ningún sitio, puede ser más sencillo limitar los puertos usando iptables.

información relacionada