配置Squid Proxy

Squid proxy是一个非常受欢迎的开放源Internet proxy,它适用于Unix和Windows两大操作系统。它有一个大的配置文件可能很难为不熟悉的人们所编辑。此附录的要点是需要使用PaperCut NG配置Squid。然而这并不是一个完整的配置向导,相关联的信息您可以阅读Squid Proxy文件来了解。

使用LDAP/Active Directory鉴定Squid

当Squid是在Unix/Linux上运行时,它都使用LDAP目录或Microsoft现行目录(也是一个LDAP v3目录)共同鉴定用户。

Squid LDAP鉴定助手通常是与LDAP服务器相结合的。此指南假定proxy是Squid 2.5或更高级的版本(使用LDAP助手)。有关 LDAP助手的信息可以在:http://www.die.net/doc/linux/man/man8/squid_ldap_auth.8.htm

如果LDAP助手包含了您的Squid装置,那么ldap_auth(或有时被命名为 squid_ldap_auth) 将被在 /var/lib/squid (或相同的Squid安装地址)中找到。

第一步是配置Squid用LDAP/现行目录鉴别用户名/密码。您将需要打开您的Squid配置文件(squid.conf)及做以下的更改:

找到auth_param 章节的配置文件(标签:auth_param),并以类似的做法更改auth param basic program行。

auth_param basic program /usr/lib/squid/ldap_auth -R 
    -b "dc=vm-domain,dc=mydomain,dc=com" 
    -D "cn=Administrator,cn=Users,dc=your,dc=domain,dc=com"
    -w "password" -f sAMAccountName=%s -h 192.168.1.75
auth_param basic children 5
auth_param basic realm Your Organisation Name
auth_param basic credentialsttl 5 minutes
            

这些设置表明了Squid是用LDAP/现行目录来鉴定名称和密码的。

  • 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日志文件里

限制金额不足的用户对Internet的访问

PaperCut NG包括了一个Squid ACL助手通常可以定义访问的规则以便仅有资金的用户可以使用访问因特网。ACL助手位于:

  • Linux - [app-path]/providers/net/bin/linux-i686/squid-acl-helper

  • Apple Mac - [app-path]/providers/net/bin/mac/squid-acl-helper

配置ACL助手以打开文本编辑器里的Squid 配置文件(如:/etc/squid.conf ),并使按照以下的描述更改。

第一步是定义ACL助手配置。这是通过添加以下的行来完成外部ACL类型选项的配置文件(标签:external_acl_type)。(注意:这仅是单个的一行,并且以格式化分开了多行)。

external_acl_type papercut_credit ttl=60 %LOGIN 
       [app-path]/providers/net/bin/[platform]/squid-acl-helper -s [server]
            

Where [app-path] 是被PaperCut NG安装的。-s [server] 选项设置是机构或应用服务器的 IP 地址。如果the -s 选项是未指定localhostttl是许多 Squid 高速缓冲器的资金支票。此设置太低将减缓proxy和PaperCut NG的速度。设置此值太高意味着一旦他们的资金用完以后的访问将会被拒绝。被推荐的设置值ttl的时间在将在60到300秒之间。

下一步是定义一个ACL适合于以上所定义的新的外部ACL的类型。在ACL区域里添加下列行(标签:acl)。

acl papercut_allow external papercut_credit
            

最后一步是配置Squid以便仅有资金的用户可以访问因特网。通过以下添加的行添加ACL并以HTTP的形式访问(标签:http_access) 。规则应该在上面的http_access deny all行里被添加。

http_access allow papercut_allow
            

重要的一点是添加ACL以便与其它所定义的ACLs一样如期工作。以上的ACL正确的工作将仅默认是Squid ACLs。如果使用其它的规则定制Squid ACL,那么以上所使用的行将不能如期的工作。

首先要决定找到与Squid工作相匹配的ACL规则以便遇到(从上到下)使用的指定行为(允许/拒绝的),那么其它的ACL是无法被测试的。如果使用以上的规则,那么它将与所有客户所使用的PaperCut NG金额是相符的,并且允许访问因特网而其它的规则将不起作用。例如:查看 “Squid ACL的实例”部分.

记得重新启动Squid以使其生效。重新启动测试之后,访问控制将如期工作:

  • 使用Squid proxy访问因特网。当提示时,以用户的身份登录便可利用PaperCut NG的使用资金。确保访问是允许的。

  • 使用PaperCut NG编辑用户的余额进入到Squid以便他们资金不足而设置用户的“权限”。用户应该不再访问因特网。注意:依赖于ttl 的值设置外部ACL助手,如果用户有可利用的资金那么要尽可能的花一些时间重新核查一下Squid。

Squid ACL的使用实例

配置Squid ACL规则可以使复杂的问题根据您的需要定义不同的规则。重要的是了解Squid是如何处理ACL规则的,否则,很难达到正确的结果。Squid从头到尾都按照ACL规则处理的,并且首先要应用允许/拒绝的行为与规则相符。Squid文件及一些复杂的ACL实例可以在: http://www.visolve.com/squid/squid24s1/access_controls.php#http_access

使用默认的ACL规则安装新的Squid

如果使用默认的squid配置及未定义的ACL规则那么PaperCut NG ACL应该已经添加定义了下列大部分默认的ACLs而不是上面的 http_access deny all行。例如:

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow papercut_allow

http_access deny all
                    

此配置意味着Squid将允许管理员访问请求的本地主机,而拒绝其他所有的管理员访问,拒绝访问不安全的端口及仅允许PaperCut NG里有资金的用户进行访问。

总是允许访问本地内网

在PaperCut NG里即使用户没有资金,也允许访问本地内网,那么可以使用下列的规则。使用dstdstdomain ACL类型假定intranet ACL是定义了包括所有内部网络的主机。

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow intranet
http_access allow papercut_allow

http_access deny all
                    

此配置意味着Squid将允许访问内网不管他们在PaperCut NG里有没有可利用的资金。这样做是因为它与http_access allow intranet 规则将相符,并且将允许被访问而不更多的处理其规则。

允许用户访问不在“被拒绝的内网用户”的组并且他们要有可利用的资金

一些学校有用户因为某些规则或其它原因被拒绝访问因特网。这些用户被添加到域里的“被拒绝访问因特网的用户”组。这些学生即使在PaperCut NG里没有可利用的资金也不应该被拒绝访问因特网。这可以使用以下的规则来完成。假定被拒绝的组ACL定义了成员“被拒绝访问因特网的用户”测试。

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access deny denied_group
http_access allow papercut_allow

http_access deny all
                    

在PaperCut NG里,不管用户是否有可利用的资金,此配置意味着Squid将拒绝访问在“被拒绝访问因特网的用户”组里的用户。