Samba4 / LDAP身份验证和nginx

时间:2016-06-17 11:53:09

标签: authentication nginx active-directory ldap samba

在我开始解决问题之前: 我有一个受反向代理(nginx)保护的网站。因此不允许客户直接连接到网站。它必须连接到nginx,然后nginx显示网站的内容。

现在我想添加更多“安全”功能。我安装了samba4,因为它可用作AD DC,并希望使用LDAP(包含在samba4中?)来验证试图访问该网站的客户端。 因此,在客户端实际看到网站之前,它必须连接到nginx,然后进行身份验证(使用LDAP凭据),然后才能查看网站内容。

我使用模块ldap_http_authentication(参见下面的配置)配置了nginx,它正在运行。当客户端尝试查看我需要使用某些LDAP凭据登录的网站时,但是当我尝试对客户端进行身份验证时,它就无法正常工作。它说LDAP凭据是错误的。 当LDAP附带samba时,如何添加LDAP用户?我只是不知道要使用哪些凭据。我将一些用户添加到像“test”这样的samba中,并试图使用他们的凭据进行身份验证,但是它们不能正常工作。 那么我必须使用哪些凭据用于“binddn”和“binddn_passwd”?我在哪里创建或获取它们?

我的nginx ldap配置:

def make_GET(url):
    ip_address = find_ip(url)
    if not ip_address:
        return False
    syn = IP(dst=ip_address) / TCP(dport=80, flags='S')
    syn_ack = sr1(syn, timeout=2)
    if not syn_ack:
        return False
    get_str = 'GET / HTTP/1.1\r\nHost: '+url+'\r\n\r\n'
    request = IP(dst=ip_address) / TCP(dport=80, sport=syn_ack[TCP].dport,
             seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / get_str
    request.show()
    reply = sr(request, timeout=2)
    if not reply:
        return False

谢谢!

编辑: 我尝试使用以下命令添加一些用户:

ldap_server adds {
    url "ldap://192.168.50.131/dc=test,dc=dom?sAMAccountName?sub?";
    binddn "TEST\\USERNAME";
    binddn_passwd "password";
    connect_timeout 5s;
    bind_timeout 5s;
    request_timeout 5s;
    require valid_user;
    satisfy any;
     }

但它只是返回: “输入LDAP密码:ldap_bind:需要强(呃)认证(8)附加信息:BindSimple:需要传输加密。”

顺便说一下:我从未设置过LDAP密码,我刚刚安装了samba4。这就是全部!

1 个答案:

答案 0 :(得分:1)

默认情况下,samba4需要start_tls。

首先,您应该尝试将网址切换为ldaps://

然后你需要:

  • 如果您没有认证证书

ssl_check_cert off

  • tls交易的证书

ssl_ca_file /etc/pki/tls/certs/whatever.crt

对于ldapXXXXX命令,您需要-Z开关

您还需要检查ldap.conf文件是否包含URI和BASE:

URI ldaps://ldap.server.com
BASE "dc=domain,dc=example,dc=com"

您还需要以下2个:

  • tls交易的客户证书

TLS_CACERT=/etc/pki/tls/certs/whatever.crt

  • 如果证书无效,该怎么办

TLS_REQCERT allow