iptables 的 owner 匹配可以识别由本地进程套接字创建的报文。例如,-m owner --uid-owner 1234 指的是属于 UID 1234 的本地套接字;它并不能识别 HTTP 代理的用户名。

在运行 Squid 的机器上,要区分这几条路径:

流量相关区别
客户端连接到本机上的 Squid进入代理监听端口的连接
Squid 打开到目标地址的连接本地创建的出站套接字
LAN 客户端直接经本机路由没有本地创建者套接字的转发流量

该扩展在 OUTPUT 和 POSTROUTING 中有效。转发报文没有与该匹配关联的本地套接字,因此 FORWARD 规则无法通过查询 Squid 的 UID 来发现远程计算机的用户。

因此,只放行 Squid 自身出站套接字的策略只覆盖了纯代理网络设计的一部分。网关转发、监听端口访问、其他被允许的服务以及实际的代理服务账户,都必须在各自合适的范围内处理。

应使用配置好的运行时身份,而不要假设 Squid 以 nobody 运行。多个进程可能共用一个 UID,因此基于 UID 的放行只是账户边界,并不能证明是某个特定可执行文件创建了每一条被允许的连接。

相关文章