2024年4月19日发(作者:)

LDAP 作为 FTP 认证源

有很多群英汇公司的用户都提出把 LDAP 和内部的 FTP 服务器整合的需求。好吧,就说一说三

个主要的 FTP 服务器:vsftpd, Pure-FTPd 和 ProFTPD 和 LDAP 的整合。

FTP服务器选型

vsftpd 本身并不支持 LDAP 认证,而是通过 PAM 认证提供和 LDAP 的整合。PAM?如果搞

砸了,Linux 登录都会出现困难,还是不要这么干吧。所以首先将 vsftpd 排除。

Pure-FTPd 本身支持 LDAP 认证,在 Debian 中,甚至有 pure-ftpd-ldap 包是专门支持 LDAP

认证的 Pure-FTPd 编译。但是说实话,1.0.24 版本之后,PureFTPd 的 LDAP 支持就没见什么

实质的改进,其现有的 LDAP 支持非常之弱。

要求 LDAP 的用户帐号必须包含 posixAccount 作为 objectClass

也就是说必须在 LDAP 中指定用户的用户ID和组ID(数字形式)

必须在 LDAP 中设定用户主目录

现实中,这并不可行

系统帐号和LDAP的用户帐号,在实际应用中,绝对不是一一对应的

把Linux登录帐号和LDAP对应,没有太大意义,而且容易造成单点故障

为了安全计,往往需要将所有登录帐号映射为一个低权限的系统帐号。Pure-FTPd 的

LDAP认证不能实现。

而且,对 LDAP 中用户帐号强制设定 posixAccount,造成管理负担。

所以 Pure-FTPd 也被排除。

ProFTPD 的 LDAP 配置要点

ProFTPD 对 LDAP 的支持相当的完善,几乎堪称完美。而且也不对 LDAP 中的用户帐号有过多

的限制。

和 LDAP 整合的关键设置:

 编辑 /etc/proftpd/,启用 LDAP 配置文件 /etc/proftpd/ 的加载

Include /etc/proftpd/

 编辑 /etc/proftpd/,启用 LDAP 模组

LoadModule mod_ldap.c

 配置 LDAPServer,注意不要使用 URI 或者域名,直接使用 IP,否则可能连接失败

LDAPServer 127.0.0.1

 如果 LDAP 支持匿名绑定,下面配置中的绑定用户DN和口令设置为空

LDAPDNInfo "" ""

 BaseDN 以及 LDAP 查询的 filter 通过语句 LDAPDoAuth 提供

LDAPDoAuth on "dc=moon,dc=ossxp,dc=com"

"(&(uid=%u)(authorizedService=ftp)(ossxpConfirmed=TRUE))"

 使用用户提供的口令和搜索到的用户 DN 绑定 LDAP 服务器,来验证口令

LDAPAuthBinds on

ProFTPD 中和 LDAP 相关的其它重要设置:

 如果 LDAP 中没有用户ID和组ID,即没有 posixAccount 相关字段,使用缺省值。

注:下面的用户ID和组ID仅供参考,在我的机器上对应于 ftp:nogroup

LDAPDefaultGID 65534

LDAPDefaultUID 500

LDAPForceDefaultGID on

LDAPForceDefaultUID on

LDAPDoUIDLookups off

LDAPDoGIDLookups off

 设置用户的主目录。为了避免和系统用户主目录混淆,设置为 /data/ftp/home 作为

LDAP 用户登录的主目录

注意:要事先创建 /data/ftp/home 目录,并正确授权,以便 proftpd 服务进程能够在

其下创建子目录

LDAPGenerateHomedir on