🔗 常见安全陷阱
🔗 开放代理
Squid 的默认配置文件拒绝所有外部请求。管理员有责任配置 Squid,仅允许受信任的主机和/或用户访问。
如果您的代理允许不受信任的主机或用户访问,您可以肯定人们会找到并滥用您的服务。有些人会使用您的代理使他们的浏览半匿名。其他人会故意使用您的代理进行可能非法的交易(例如信用卡欺诈)。许多网站的存在就是为了向世界提供一个开放访问 HTTP 代理列表。您不想出现在这个列表中。
请务必仔细设计您的访问控制方案。您还应该不时地检查它,以确保它按预期工作。
🔗 邮件中继
SMTP 和 HTTP 的设计相当相似。不幸的是,这可能会允许某人通过您的 HTTP 代理中继电子邮件。为防止这种情况,您必须确保您的代理拒绝访问端口 25,即 SMTP 端口的 HTTP 请求。
Squid 默认配置就是这样。默认的 squid.conf 文件列出了少量受信任的端口。请参阅 squid.conf 中的 Safe_ports ACL。您的配置文件应始终在 http_access 列表的早期拒绝不安全端口。
http_access deny !Safe_ports
(additional http_access lines ...)
请勿将端口 25 添加到 Safe_ports(除非您的目标是进入 实时黑名单。您可能希望创建一个 cron 作业,定期验证您的代理是否阻止了对端口 25 的访问。
🔗 可劫持的代理
Squid 的默认配置文件拒绝所有外部请求。管理员有责任配置 Squid,仅允许受信任的主机和/或用户访问。
如果您的代理允许无限制地访问任何端口。有些人可能会使用您的代理使他们的网站匿名。垃圾邮件和网络钓鱼电子邮件中常见的许多网站都使用这种隐藏方法,并且在某些圈子里有软件支持自动检测这些部分开放的代理。
acl mycoolapp port 1234
...
http_access allow mycoolapp
请注意,此类配置行应保留在阻止公众访问您的 squid 的任何行之后。
acl mycoolapp port 1234
...
http_access deny !localnet
...
http_access allow mycoolapp
或者更好
acl mycoolapp port 1234
...
http_access allow localnet mycoolapp
🔗 X-Forwarded-For 篡改
X-Forwarded-For 头由 Squid 插入,用于识别发出请求的内部客户端。有些人错误地将其视为数据泄露,并将其从流量流中删除。
请理解,它在那里是为了保护您。许多安全系统使用它来识别任何泄露的真实来源,以进行防护和准确报告这些来源。考虑到互联网现在已经退化为大量的 NAT 系统和透明中间件,这一点尤其重要。
如果它在 Web 请求中不存在,中间件代理将被识别为问题源,管理员可能会因为单个用户的行为而导致整个网络被封锁。虽然简单地查找和阻止被盗用的代理可能很有用,但跟踪源头则更为重要,而且被盗用的代理反正可以清楚地识别为流量中转。
Squid 提供的配置控件适用于加速器设置。
🔗 Safe_Ports 和 SSL_Ports ACL
这些 ACL 控件在默认的 squid.conf 中以非常特定的方式列出,以保护 Squid 免受安全问题的影响,例如上面概述的 SMTP 问题。
- Safe_Ports 可防止人们向 Squid 无法代理和过滤协议的任何注册协议端口发出请求。
- SSL_Ports 结合 CONNECT ACL,可防止任何人对不需要的、否则安全的端口建立未经过滤的隧道。
备注
在任何标准的正向代理配置中,它们应该保留在 **最顶部** 的访问控制行。
只有反向代理配置需要放在它们上面。
默认用法
http_access deny !Safe_ports
http_access deny CONNECT !SSL_Ports
...
# Place your own access controls here. Between them.
...
http_access deny all
🔗 Manager ACLs
这些 ACL 控制对 Squid 缓存管理器的访问。管理器可以执行许多强大的操作。包括关闭您的 Squid、显示配置文件、显示当前登录的用户或显示您的网络布局。
可以想象,允许随机的互联网访问者查看这些详细信息不是好事。因此,Squid 中的 **最顶部** 访问控制将管理器访问限制为仅对特殊的 localhost IP 可用。
acl manger url_regex -i ^cache_object:// /squid-internal-mgr/
http_access allow localhost manager
http_access deny manager
在此 ACL 之前放置任何类型的重大 **允许** 权限都会破坏它。只有反向代理配置可以放在它上面。
您可以随意将 **localhost** 部分更改为更安全或更具体的内容,以便仅允许您的网络管理访问。但请注意,更改会阻止常规访问者。
回到 FAQ 索引
导航: 网站搜索、网站页面、分类、🔼 向上