proftpd.conf

proftpd.conf

Active Directory 위에서 ProFTPD-LDAP 인증을 수행하려고 합니다. LDAP 쿼리 실행이 ldapsearch괜찮은 것 같기 때문에 구성에 어떤 문제가 있는지 아직도 알 수 없습니다.

proftpd.conf

/etc/proftpd.conf

# This is the ProFTPD configuration file
ServerName                      "FTP and Ldap"
ServerType                      standalone
ServerAdmin                     [email protected]
AuthOrder                       mod_ldap.c
LoadModule                      mod_ldap.c
DefaultServer                   on
ShowSymlinks                    on
RootLogin                       off
UseIPv6                         off
AllowLogSymlinks                on
IdentLookups                    off
UseReverseDNS                   off
Umask                           077
User                            ftp
Group                           ftp
DefaultRoot                     /home/ftp/%u/
DefaultChDir                    ftp
RequireValidShell               off
UseFtpUsers                     off
SystemLog                       /var/log/proftpd/proftpd.log
TransferLog                     /var/log/proftpd/xferlog
DefaultTransferMode             binary

<IfModule mod_ldap.c>
        LDAPServer                      domaincontroller.domain.net
        LDAPAttr                        uid sAMAccountName
        LDAPDNInfo                      cn=linux.ldap,ou=users,ou=resources,dc=domain,dc=net password
        LDAPAuthBinds                   on
        LDAPDoAuth                      on "dc=domain,dc=net" (&(sAMAccountName=%v)(objectclass=User))
        LDAPQueryTimeout                15

        LDAPGenerateHomedir             on
        LDAPGenerateHomedirPrefix       /home/ftp

        #uid e guid of the local global user
        LDAPDefaultUID                  14
        LDAPDefaultGID                  50
        LDAPForceDefaultUID             on
        LDAPForceDefaultGID             on
</IfModule>

<Directory /*>
        AllowOverwrite                  on
</Directory>

proftpd -nd10 -> "검색 실패"

디버그 레벨 10으로 proftpd를 실행합니다 . 내 사용자( )로 nicolas인증할 때 다음 로그를 받았습니다 .

proftpd -nd10


dispatching CMD command 'PASS (hidden)' to mod_auth
mod_ldap/2.8.22: generated filter dc=domain,dc=net from template dc=domain,dc=net and value nicolas
mod_ldap/2.8.22: generated filter (&(sAMAccountName=nicolas)(objectclass=User)) from template (&(sAMAccountName=%v)(objectclass=User)) and value nicolas
mod_ldap/2.8.22: attempting connection to ldap://domaincontroller.domain.net/
mod_ldap/2.8.22: set protocol version to 3
mod_ldap/2.8.22: connected to ldap://domaincontroller.domain.net/
mod_ldap/2.8.22: successfully bound as cn=linux.ldap,ou=users,ou=resources,dc=domain,dc=net password
mod_ldap/2.8.22: set dereferencing to 0
mod_ldap/2.8.22: set query timeout to 15s
mod_ldap/2.8.22: pr_ldap_search(): LDAP search failed: Operations error

LDAP 검색이 작동합니다

그러나 ldapsearch다른 한편으로는 꽤 잘 작동합니다.

[root@ftp2 ~]# ldapsearch -x -W -D "cn=linux.ldap,ou=users,ou=resources,dc=domain,dc=net" -h domaincontroller.domain.net -b "dc=domain,dc=net" -LLL "(SAMAccountName=nicolas)"
Enter LDAP Password: 

dn: CN=Nicolas XXXXXXX,OU=XXXXXXX,OU=XXXXXXX,OU=XXXXXXX,DC=XXXXXXX,DC=XXXXXXX
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Nicolas XXXXXXX
sn: XXXXXXX
description:XXXXXXX
givenName: XXXXXXX
distinguishedName:

어떤 단서가 있나요?

답변1

이를 달성하려면 URL이 다음과 같아야 합니다.RFC 2255호환 가능하며 Proftpd를 사용한 쿼리는 OU별로 필터링할 때만 작동합니다. 이러한 쿼리는 LDAP 루트 수준에서는 작동하지 않습니다.

LDAPServer ldap://domaincontroller.domain.net:389/??sub

조직의 단결:

LDAPDoAuth on "OU=OFFICE,dc=domain,dc=net" (&(sAMAccountName=%v)(objectclass=User))

디렉토리 내의 Umask. 제한은 단지 안전을 위한 것입니다.

<Directory />
Umask 022 022
AllowOverwrite on
        <Limit MKD XMKD CDUP XCUP CWD XCWD RMD XRMD>
        DenyAll
        </Limit>
</Directory>

관련 정보