为了集中上网管控,领导要求架设一台squid服务器并且要求通过域来验证,上网查了一下,大部分都是需要和samba绑定,觉得很麻烦,所以不想采用,经过努力查找了大量的资料,终于成功实现了squid通过LDAP来与域认证上网。总结如下:
环境:操作系统:LINUX AS5
             SQUID :squid-2.7.STABLE5.tar.gz
             LDAP:openldap-2.4.13.tgz
             域操作系统:windows server 2003
安装LINUX操作系统就不说了!!!安装SQUID也不说了!!!从安装openldap说起。操作如下:
./configure  --without-kerberos --without-cyrus-sasl --without-tls  --without-threads --disable-slapd --disable-slurpd --disable-debug --disable-shared
然后:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

make depend
make
make install
测试ldap是否正常
修改/usr/local/etc/openldap/ldap.conf,
BASE DC=gncsnc,DC=com
URI ldap://your.gncsnc.com
注释:your.gncsnc.com为域控制器名称。
测试ldap与域之间连线是否正常。
 /usr/local/bin/ldapsearch -x -W -D "cn=Ning Hao,ou=Bj_Users,dc=gncsnc,dc=com" -b "cn=A,ou=BJ_Users,dc=gncsnc,dc=com" -h your.gncsnc.com
注释:这是通过绑定CN=Ning Hao来查询域帐号A,查询谁都无所谓。
会提示输入LDAP password:此处输入的是Ning Hao的域用户密码
如果没问题,会显示大量的域用户信息。
然后配置SQUID 。
有资料说在编译安装SQUID的时候多加一个 --enable-auth-modules=LDAP,但是我个人认为不需要。
修改squid.conf,
找到:auth_param basic program
在后面加上:/usr/lib/squid/squid_ldap_auth -R -b "dc=gncsnc,dc=com" -D "cn=Ning Hao,ou=Bj_Users,dc=gncsnc,dc=com" -w "password" -f sAMAccountName=%s -h gncsnc.com
其中password为用户Ning Hao的密码,sAMAccountName 是你想验证用户信息的类型,具体可以查看域用户的各种属性。
同时可以测试是否可以通过认证,方法如下:
[root@proxy logs]# /usr/lib/squid/squid_ldap_auth -R -b "dc=gncsnc,dc=com" -D "cn=Ning Hao,ou=Bj_Users,dc=gncsnc,dc=com" -w "password" -f sAMAccountName=%s -h your.gncsnc.com
然后输入你想查询的用户名 空格 密码,如果提示OK 则证明LDAP与域认证没有问题。
设置访问列表,acl ldap proxy_auth REQUIRED
设置访问规则,http_access allow ldap
至此,基本的认证方式就建立起来
通过查询/usr/local/squid/var/logs里面的log信息可以查看squid的工作状态。
最后简单的介绍一些命令的参数:
squid_ldap_auth命令:
  • The -b 选项显示了基于LDAP区别于我们域的名称。例如:your.domain.com 将是 dc=your,dc=domain,dc=com
  • The -D 选项显示了用户通常是执行 LDAP 的质寻。此实例使用的是内置的管理员用户。然而您也可以使用另一个您选择的用户。
  • The -w 选项的密码适用于用户的the -D选项。对于安全的改进您可以在文件里使用 -W /path/to/password_file 的语法来代替密码的存储。
  • The -h 选项通常显示了LDAP服务器的连接。
  • The -R 选项要求Squid连接到Windows的现行目录。
  • The -f 选项通常是LDAP质寻来查找用户的。在以上的例子里, sAMAccountName=%s,当Squid提示输入用户名时,将要与用户登录Windows上网输入的名称匹配。任何LDAP质寻都可以使用。一个LDAP质寻搜索工具可以有利于帮助获取正确的语法并确保质寻工作的正确性。
  • The %s 代替用户输入他们自己的用户名。
记得重新启动Squid使得这些改变生效。然后测试因特网的访问并确保Squid用户名和密码的提示及如期的鉴定工作。 确保用户名立刻出现在Squid日志文件里