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
发布评论