利用 LDAP 为 Squid 提供用户认证服务
前言
Squid cache,简称 Squid,是一款高性能的代理缓存软件。Squid 本身支持包括 HTTP、HTTPS、FTP、SSH 在内的多种协议,且采用一个单独的、非模块化的、I/O 驱动的进程来处理所有的客户端请求,从而提供主动缓存加速的功能。除此之外,Squid 还可以提供应用层过滤控制的功能,也可与其他的防病毒软件一起使用。在一些大公司、学校、研究机构内部,一般采用 Squid 代理上网的方式,可以过滤危险内容或操作、节省网络带宽、提升访问速度。
但实际上 Squid 代理也可用于正向代理,即为外来用户访问内网应用提速。这也是 CDN(内容分发网络)的加速原理,利用位于全球网络边缘的节点提供服务,而实际上的应用内容则通过边缘节点间的内网来缓存提速。
虽然 Squid 一般部署在团队或公司网络内部,但是由于用户的权限不同可能需要应用不同的规则,所以能够与 LDAP 认证服务结合就变得非常重要了。
实践
环境要求
在进行正式的实践之前,务必确保已有以下环境:
- Docker
- docker-compose
启动实例
笔者已经编译并公开了在多种体系架构上可用的 Docker 镜像 zhonger/squid。这里直接使用以下 docker-compose.yml 配置文件和 docker-compose up -d
命令启动实例。
# docker-compose.yml
version: '3.2'
services:
squid:
image: zhonger/squid
container_name: squid
hostname: squid
ports:
- "3128:3128"
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- SQUID_SSH=true
- SQUID_RSYNC=false
- LDAP_ENABLE=true
- LDAP_HOST=yourldap.domain.com
- LDAP_PORT=389
- LDAP_BindDN="cn=admin,dc=yourdomain,dc=com"
- LDAP_BindPass="********"
- LDAP_DN="ou=Users,dc=yourdomain,dc=com"
- LDAP_ATTRIBUT="uid=%s"
- PROXY_NAME="Proxy Display Name"
restart: always
上面有关的配置变量及其含义可以访问 zhonger/squid 了解更多。
测试
通过浏览器访问 http://ip:3128 并输入对应的用户名和密码可以看到类似下面的内容。
客户端连接
由于我们未指定实际需要访问的地址,Squid 会直接报错。一般使用时,需要使用操作系统的网络设置中的代理来配置好 Squid。如下图所示,勾选“网页代理(HTTP)”并填写相关的 IP、端口、用户名及密码。如果想要同样应用在访问 HTTPS 站点,则还需要勾选“安全网页代理(HTTPS)”及填写相关信息。然后点击保存生效。
这样一来就可以将访问的流量完全交给 Squid 来控制了。当然,如果不确定客户端连接是否成功,可以通过访问 ip.sb 来确认当前客户端流量出口 IP 是否为 Squid 服务器 IP。
参考资料
版权声明: 如无特别声明,本文版权归 仲儿的自留地 所有,转载请注明本文链接。
(采用 CC BY-NC-SA 4.0 许可协议进行授权)
本文标题:《 LDAP 集成之 Squid 篇 》
本文链接:https://lisz.me/tech/webmaster/ldap-squid.html
本文最后一次更新为 天前,文章中的某些内容可能已过时!