在 Apache 中,最好的方法是什么,只向以下用户授予访问权限:通过两个以下测试:
- 用户未出现在黑名单中(或者出现在白名单中)
- 用户拥有有效的 LDAP 用户帐户
我已经进行了第二次测试,但现在我需要禁止一些有效的 LDAP 用户。请注意,我不能创建一个 AD 组来代表我的黑/白名单。
答案1
出现在白名单中很容易 - 只需使用 require ldap-user(或 2.0 中的 require user)而不是“require valid-user”列出单个用户。
如果不编写一个简短的模块或做一些花哨的事情(例如上下文中的 mod_rewrite + 黑名单的重写映射),黑名单是不可能实现的。然后您只需查看登录的用户名即可。
答案2
我已经成功地做到了这一点
- mod_auth_ldap 验证有效用户
- mod_authz_host 将 IP 范围列入黑名单
配置看起来类似于:
<Location /blacklisted >
AuthType Basic
AuthName "PAM"
AuthBasicProvider ldap
Require valid-user
AuthLDAPURL ldap://ldap.example.com/?sAMAccountName?sub
AuthzLDAPAuthoritative off
AuthLDAPBindDN [email protected]
AuthLDAPBindPassword verySecurePasswd
Order allow,deny
Deny from 192.168.1
Allow from all
</Location>
但是,我仍然不知道如果我想将 LDAP 用户名而不是 IP 地址列入黑名单是否可行。(科文纳似乎建议一些复杂的配置可以做到这一点,但我还没有尝试过)。