我配置 squid 使用 win AD 进行身份验证,但用户可以从不同的 ip 地址连接,并且我无法为不同的用户设置基于 ip 的策略。
有什么方法可以根据用户名设置 acl 吗?
我发现ident
http://www.visolve.com/squid/squid24s1/access_controls.php
它对我的测试用例有用吗?
答案1
您需要proxy_auth
根据链接的页面定义和使用 ; 类型的 ACL:
Acl 类型:proxy_auth
描述通过外部进程进行用户身份验证。proxy_auth 需要一个外部身份验证程序来检查用户名/密码组合(参见 authenticate_program )。
使用 acl aclname proxy_auth 用户名...
使用 REQUIRED 而不是用户名来接受任何有效的用户名
示例 acl ACLAUTH proxy_auth usha venkatesh balu deepa
此 acl 用于通过外部程序对用户 usha、venkatesh、balu 和 deepa 进行身份验证。
这样,Squid 将使用您选择的任何身份验证方法对用户进行身份验证(您说这已经到位,因此这里应该没有问题),然后您将能够根据用户名过滤访问权限。
示例配置:
acl Good_Users user1 user2 user3
http_access allow Good_Users
http_access deny all
这将仅允许用户 1、用户 2 和用户 3 访问网络。
答案2
您需要注意,通过 ident 提供虚假凭证相对容易(除非客户端被很好地锁定)。它还需要在客户端机器上安装软件。我以前曾在企业局域网上对多个客户端使用过这种方法,效果不错 - 但我在 Microsoft 开始使用 LDAP 之前很久就设置了该系统。
据我所知,虽然您也可以使用 NTLM,但在 Microsoft 领域之外,它的安全性仅与 ident 一样。
活动目录方法(假设您正在执行类似这而不是 NTLM)应该更安全。但如果是的话,那么 IP 地址和它有什么关系?听起来你有一个非常糟糕的解决方案,它依赖于 IP 地址(错误)身份验证。(IP 地址很容易被伪造)。
它对我的测试用例有用吗?
我不知道你的测试用例是什么。