我的 Debian-Gnu-Linux 笔记本电脑上有一个 squid 代理,配置为阻止某些网站。我可以设置浏览器以使用此代理,但我也可以将其配置为不使用它。因为我用它来阻止一些网站。我不希望应用程序能够绕过代理。是否可以配置防火墙来阻止传出流量,除非由代理应用程序或用户发送?
如果可能的话,我想要一个简单的配置器。
注意:我使用的是单台机器。
答案1
你可以用以下两种模式之一运行 squid 代理:
- 透明模式:使用 netfilter 规则将流量透明地发送到 squid。转发所有发往端口 80 的流量。在此模式下,您需要丢弃除 http 之外的所有流量。
- 正常模式:用户必须将浏览器配置为使用代理服务器。在此模式下,您需要丢弃除 http 和发往代理服务器的所有流量。在这种情况下,用户将无法直接与任何外部 Web 服务器建立任何 http 连接。
不要忘记也允许 DNS 流量 (UDP/53)。
如果您允许其他端口,有人可能会找到一些外部代理并使用它来绕过您的代理。
答案2
首先设置 squid,然后让它作为用户代理运行(这是安装程序为我完成的)。然后:
sudo iptables -A OUTPUT -o lo -j ACCEPT # can access all local
sudo iptables -A OUTPUT -m owner --uid-owner proxy -j ACCEPT # proxy can do anything
sudo iptables -A OUTPUT -p udp --destination-port 53 -j ACCEPT #all can access dns, (could restrict more)
sudo iptables -A OUTPUT -j DROP #drop everything else
这只是监管,您仍需在浏览器中设置代理。可能还可以添加重定向规则。
我需要
sudo iptables -F OUTPUT
率先摆脱旧规则