温馨提示×

centos ftpserver怎样集成ldap

小樊
42
2026-09-11 23:03:17
栏目: 智能运维

在 CentOS 上搭建 FTPServer(vsftpd + SSL/TLS)并集成 LDAP 认证,常见做法是:

  • vsftpd 作为 FTP/FTPS 服务
  • 通过 PAM + nslcd/sssd 对接 LDAP
  • vsftpd 本身不支持直接 LDAP,必须通过系统用户(LDAP 用户映射为系统用户)认证

下面给你一套可落地的 CentOS 实操方案(CentOS 7/8 通用思路)。


一、整体架构说明

客户端
  |
FTPS (vsftpd)
  |
PAM
  |
nslcd / sssd
  |
LDAP Server

vsftpd 只认“系统用户”,LDAP 用户通过 nsswitch + PAM 变成系统可认证用户。


二、安装基础软件

# CentOS 7
yum install -y vsftpd pam_ldap nss-pam-ldapd openssl

# CentOS 8
dnf install -y vsftpd pam_ldap nss-pam-ldapd openssl

三、配置 LDAP 客户端(系统级)

1. 配置 /etc/nslcd.conf

vi /etc/nslcd.conf

示例:

uid nslcd
gid ldap

uri ldap://ldap.example.com
base dc=example,dc=com
binddn cn=admin,dc=example,dc=com
bindpw your_ldap_password

ssl no
tls_reqcert never

启动服务:

systemctl enable --now nslcd

2. 配置 NSS

编辑 /etc/nsswitch.conf

passwd: files ldap
group:  files ldap
shadow: files ldap

测试:

getent passwd ldapuser1

✅ 能看到用户信息说明 LDAP 已接入系统


四、配置 PAM 使用 LDAP

编辑 vsftpd 的 PAM 文件:

vi /etc/pam.d/vsftpd

内容示例(保留原内容,追加 LDAP):

auth    required pam_ldap.so
account required pam_ldap.so

⚠️ 如果只允许 LDAP 登录,可注释掉 pam_unix.so


五、配置 vsftpd 支持 LDAP 用户

1. 修改 vsftpd 配置

vi /etc/vsftpd/vsftpd.conf

关键配置:

anonymous_enable=NO
local_enable=YES
write_enable=YES

# 允许 LDAP 用户登录
pam_service_name=vsftpd

# 限制用户主目录
chroot_local_user=YES
allow_writeable_chroot=YES

# 日志
xferlog_enable=YES

六、配置 FTPS(SSL/TLS)

1. 生成证书

openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.crt

2. vsftpd 启用 TLS

vsftpd.conf 中添加:

ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES

rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key

重启服务:

systemctl restart vsftpd

七、LDAP 用户目录问题(重点)

LDAP 用户通常 没有本地 home 目录

方案 1:自动创建

session required pam_mkhomedir.so skel=/etc/skel umask=0077

加到 /etc/pam.d/vsftpd

方案 2:统一根目录

local_root=/data/ftp

八、常见问题排查

1. 登录失败

journalctl -xe
tail -f /var/log/secure

2. LDAP 用户查不到

getent passwd ldapuser

3. FTP 500 OOPS

  • 检查 chroot 权限
  • home 目录不能写权限过高

九、可选增强方案

  • ✅ 使用 sssd 替代 nslcd(更稳定)
  • ✅ LDAP + 虚拟用户(pure-ftpd 更合适)
  • ✅ 限制 LDAP 用户组访问 FTP

十、如果你想要更简单

如果你愿意,Pure-FTPd 对 LDAP 支持更原生:

yum install pure-ftpd
pure-ftpd -l ldap:/etc/pure-ftpd/ldap.conf

如果你告诉我:

  • CentOS 版本
  • 用的 OpenLDAP 还是 Active Directory
  • 是否必须 vsftpd

我可以给你 精确到行的配置文件

0