那么如何在Linux中设置Squid的用户认证存取控制呢?Squid用access control list(缩写为acl)来管理规则。例如:
acl aclname acltype string1 ...
acl aclname acltype "file"
aclname为用户定义规则的名字,acltype是可被Squid识别的类别(主要有src、dst、proxy_auth、port和time...),string为用户的设置,可以用"file"从外部文件调入设置。
1.如果用户喜欢弹出输入用户名及密码的方式,首先需要安装认证
程序。Squid的源文件包自带了几种认证程序,都在/tmp/squid-2.3.STABLE4/auth_modules目录下。
(1)$ cd /tmp/squid-2.3.STABLE4/auth_modules/NCSA
$ make ncsa_auth
(2)将生成的执行文件ncsa_auth拷贝到squid执行文件目录中。
$ cp ncsa_auth /usr/local/squid/bin
(3)用htpasswd_plus生成供Squid利用的用户名和密码认证数据文件。
$htpasswd_plus -c /usr/local/squid/etc/passwd
passwd的格式如下。
username1:SilykvIBT46C.:977867617:*
username2:tV.8XcR8tgIqw:*:192.168.1.0
username3:密码:失效时间:可以登录的IP
若为*,则说明任何项都能与其匹配。另外还可以增加其他更多的用户。
$ htpasswd_plus /usr/local/squid/etc/passwd newusername
(4)修改squid.conf设置
authenticate program /usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd指定认证身份的内部程序。添加规则如下。
acl alloweduer proxy_auth username1 username2或者
acl alloweduser proxy_auth REQUIRED http access allow alloweduser
关键字REQUIRED意味着任何合法的用户都可以认证身份,在其他的acltype中也起同样的作用。