Active-Directory

SquidGuard 和 Active Directory 組

  • May 12, 2010

我正在使用 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))
}

引用自:https://serverfault.com/questions/139544