介绍
Squid 是一款强大的代理服务器,主要设计用于 HTTP 和 HTTPS 流量代理,此外也支持一些其他的协议,如WebSocket(基于 HTTP 协议的实时通信)、 SSL 隧道(CONNECT 方法)等。
使用方法
使用宿主机安装squid
参考文章
使用docker容器
建议先参考宿主机安装squid中的一些操作步骤,需要检查的一些事项
docker volume create squid_data
docker run -dit \
--restart=unless-stopped \
-p 3128:3128 \
--name squid \
-v squid_data:/etc/squid \
registry.cn-hangzhou.aliyuncs.com/zhqing/squid:latest
# volume suqid_data 挂载容器的/etc/squid ,方便之后进行squid配置的修改
等待容器启动后,配置文件进行一些必要的修改。
容器内位置:/etc/squid/squid.conf
volume中:${dockerDir}/volume/squid_data/_data/squid.conf
- vim打开squid.conf,找到
http_access deny all
修改为http_access allow all
- 然后再配置文件中搜索 443 ,可以找到下面的配置。
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 SSL_ports port 443
acl SSL_ports port 1025-65535 # 指定https协议使用的端口
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
# 在上面配置的端口或者在1025-65535范围的端口(http、https协议)就都可以通过代理进行访问了
然后再客户端配置上代理,就可以了。
Squid 的典型应用场景
- 企业环境:
- 限制员工访问某些网站。
- 提高网络性能,减少带宽开销。
- 教育机构:
- 管理学生访问互联网的权限。
- 提供内容过滤功能。
- ISP 和数据中心:
- 通过缓存加速访问,提高用户体验。
- 个人用途:
- 搭建家庭网络代理,管理设备的访问流量。
注意事项
上面的配置http_assess allow all
在做测试或者安全性需求不高的环境中使用,如果重视网络安全需要进行颗粒度更为细致的配置。
可能带来的问题
- 安全风险:
- 外部滥用:如果代理服务器暴露在公共网络中,
http_access allow all
可能导致你的服务器被用作开放代理,成为攻击者中继工具。 - 内部滥用:用户可以通过代理访问受限制的资源或发送大量请求。
- 外部滥用:如果代理服务器暴露在公共网络中,
- 隐私问题:
- 所有用户请求都会被代理服务器记录(如
access.log
),敏感信息可能被泄露。
- 所有用户请求都会被代理服务器记录(如
- 带宽消耗:
- 没有限制的访问规则可能导致服务器带宽被耗尽。
更安全的替代方案
如果不想允许所有访问,可以使用访问控制列表(ACL)进行精细化的规则配置。例如:
1. 仅允许特定网段访问
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
- 仅允许来自
192.168.1.0/24
的客户端访问。
2. 限制访问时间
acl work_hours time MTWHF 09:00-17:00
http_access allow work_hours
http_access deny all
- 仅允许在工作时间访问。
3. 限制目标域名
acl allowed_sites dstdomain .example.com .trusted-site.com
http_access allow allowed_sites
http_access deny all
- 仅允许访问指定的域名。
参考文章
https://bu1.github.io/2021/12/04/%E4%BD%BF%E7%94%A8Squid%E6%90%AD%E5%BB%BAHTTP%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/