Linux - Squid na máquina local para controlar o tráfego de saída

Linux - Squid na máquina local para controlar o tráfego de saída

Estou tentando configurar o squid no meu computador para controlar o tráfego de saída apenas do mesmo computador. Se meu entendimento estiver correto, o squid é executado como usuário "squid" na maioria das distribuições Linux (a minha é o Fedora, se for importante?).

Eu configurei o iptables para descartar todos os pacotes de saída, exceto aqueles do uid 0 e uid 23 (root e 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

Em seguida, quero inserir manualmente as informações do proxy do squid no navegador para cada conta de usuário local (então não acho que estou procurando uma configuração transparente). Se possível, eu gostaria que fosse necessário um usuário/senha para poder se conectar ao squid, para evitar que os usuários tenham acesso à Internet, exceto através do proxy do squid?

Meu squid.conf atual é o seguinte, mas não funciona e obviamente não incorpora um requisito de usuário/senha:

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 .   

O que estou tentando fazer é viável e estou fazendo isso da maneira certa?

O que fiz com o iptables funcionará?

Sei que isso não é algo que aprenderei a configurar corretamente em 10 minutos, portanto, qualquer ajuda/indicação para guias ou mesmo soluções alternativas sobre como conseguir isso é bem-vinda.

Responder1

Provavelmente, você precisará abrir acesso a pelo menos DNS para outros programas.

O Squid possui um módulo de autenticação, mas você não deve precisar dele no seu caso. Como apenas o squid pode acessar a web, todos os usuários serão forçados a usá-la.

Verifique as variáveis ​​de ambiente usadas para configurar proxies e configurá-los globalmente. Você deve definir http_proxypelo menos.

Existe um wpad.datmecanismo para configurar proxies, mas não o usei como você pretende.

Acho que você encontrará muitos serviços que usam portas não listadas e a experiência de navegação não será muito boa.

Como você não parece estar bloqueando nenhum site, pode ser mais simples apenas limitar as portas usando iptables.

informação relacionada