Active-Directory
SquidGuard 和 Active Directory 組
我正在使用 Squid 和 SquidGuard 配置 Linux 代理來過濾 Internet 流量。
我知道如何根據 Squid 中的 Active Directory 對使用者進行身份驗證,然後知道如何使用 SquidGuard 過濾使用者的訪問權限。
問題:如何在 SquidGuard 中使用 Active Directory 組而不是普通使用者名?
我的目標是能夠配置諸如“該組的成員可以去任何地方”或“該組的成員只能訪問某些站點”之類的規則。
我知道 SquidGuard 不能直接管理組成員,但它可以自己進行 LDAP 搜尋;但是查找使用者是否是給定組成員的語法似乎很神秘,我找不到任何好的文件。
解決了。
假設如下:
- Domain name: "domain.com" - Group name: "Internet Users" - User name: "UserName" - Path to group: "domain.com\OU1\OU2\Internet Users"
檢查使用者是否是該組成員的查詢將是:
(&(memberOf=CN=Group Name,OU=OU2,OU=OU1,DC=domain,DC=com)(SAMAccountName=UserName))
因此,您必須將以下內容添加到 squidGuard.conf 以辨識該組的成員(“%s”是 squidGuard.conf 中“客戶端的使用者名”的佔位符):
src Internet_Users { ldapusersearch ldap://dc.domain.com/DC=domain,DC=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=Internet Users,OU=OU2,OU=OU1,DC=domain,DC=com)) }
警告:如果按上述方式編寫,它將不起作用,給您一個簡潔的“語法錯誤”消息;這是因為(部分)語句被視為 URL,因此您必須轉義特殊字元,例如逗號和空格;因此,正確的形式是這樣的:
src Internet_Users { ldapusersearch ldap://dc.domain.com/DC=domain,DC=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=Internet%20Users%2cOU=OU2%2cOU=OU1%2cDC=domain%2cDC=com)) }
此外,為了避免 Active Directory 引用出現問題(有時 DC 只會將您重定向到另一個,即使您在它管理的同一域中),查詢全域目錄可能很有用:
src Internet_Users { ldapusersearch ldap://gc.domain.com:3268/DC=domain,DC=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=Internet%20Users%2cOU=OU2%2cOU=OU1%2cDC=domain%2cDC=com)) }