Squid 与 3128 端口
3128 是 Squid 及大量 HTTP 代理软件的默认监听端口。企业内网用它做统一出口、缓存加速与上网行为审计:客户端把请求交给代理,由代理代为访问并按策略记录。Squid 默认只允许本机使用,但一旦自行放开来源网段又没加认证,很快会被扫描器找到并当作免费代理使用,既消耗出口带宽,也会让你的 IP 出现在第三方的攻击日志里。
基本信息
| 服务 | Squid、各类正向 HTTP 代理 |
|---|---|
| 协议 | TCP(对 HTTPS 使用 CONNECT 隧道) |
| 配置文件 | /etc/squid/squid.conf |
| 认证方式 | 基础认证、外部认证程序、Kerberos 等 |
| 日志 | /var/log/squid/access.log 与 cache.log |
| 安全等级 | 禁止无认证对公网开放 |
典型使用场景
- 统一出口:所有终端经代理出网,便于按账号审计访问行为
- 缓存加速:重复访问的静态资源由代理直接返回,节省带宽
- 访问控制:按域名分类或时间策略限制可访问范围
- 日志留存:满足合规对内网访问记录的留存要求
- 临时排障:让特定客户端经代理出网,观察请求与响应
验证代理可用性与行为
验证代理可用性与行为
curl -x http://proxy.example.com:3128 -s https://example.com/ -o /dev/null -w '%{http_code}\n' # 确认代理是否放行
curl -v -x http://proxy.example.com:3128 https://example.com/ 2>&1 | grep -i connect # 观察 CONNECT 隧道结果
nc -vz proxy.example.com 3128 # 网络层连通性
# 日志侧实时观察
# tail -f /var/log/squid/access.log日志标签判读
| 标签 | 含义 | 关注点 |
|---|---|---|
| TCP_MISS | 未命中缓存,回源取回 | 正常;比例过高说明缓存策略需要调整 |
| TCP_HIT | 命中缓存直接返回 | 越高越省带宽 |
| TCP_DENIED | 被访问策略拒绝 | 集中出现说明策略收紧或有人在试探 |
| TCP_TUNNEL | CONNECT 隧道 | HTTPS 流量,只能看到目标域名与端口 |
| NONE_NONE | 既未放行也未被拒绝 | 多为认证或配置异常 |
访问控制与认证(squid.conf)
访问控制与认证(squid.conf)
acl localnet src 10.0.0.0/8 # 定义内网网段
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd # 基础认证
auth_param basic realm 'proxy'
acl auth proxy_auth REQUIRED
http_access allow localnet auth # 内网且认证通过才放行
http_access deny all # 其余一律拒绝
access_log /var/log/squid/access.log squid对公网开放且不做认证的 3128 属于典型被滥用配置:几小时内就会被当作免费代理刷满带宽,出口 IP 也会被第三方安全设备记录。
透明代理与显式代理的差别:透明拦截下客户端无感知,但 HTTPS 只能看到目标域名与证书名称;显式代理能在日志中关联到具体账号,适合审计,代价是客户端要正确配置代理与根证书信任。
排查访问被拒时按顺序确认:来源网段是否命中 acl、认证是否通过、目标域名或分类是否被策略拒绝;三项都能在访问日志的标签上体现,改配置前先看日志能避免盲目放开策略。