Fedora和CentOS配置LDAP认证的vsftpd

 公司内部的软件研发没有一个合适的发布方式向测试部门发布待测的软件版本,由于IT部门太土,自己又不太会搭建很复杂的持续集成系统,只好采用ftp服务器发布待测软件。目前软件研发部门拥有内部服务器一枚,是我向IT申请假设在VMware虚拟服务器内的一个Fedora14,上面装好了vsftpd服务,公司内网也有一台现成的LDAP认证服务器,不过配置非常简单。

现在需求就是在这台Fedora上面配置vsftpd,能够让用户使用windows域帐号登录,并且实现不同目录的不同权限管理。本人对LDAP认证不甚了解,只知道以前实习的时候Intel内部办公采用的就是微软一整套集成协作系统,用起来超级爽,几经尝试把现在公司里面的Notes邮件客户端用thunderbird替换掉了,而且为了方便联系人管理,成功添加了LDAP服务器作为联系人地址簿。

现在需要让vsftpd也使用这个东西认证,有点没头绪,先去网上搜了一下,大致的结果就是,70%的搜索结果内容和标题不吻合,完全没用;剩下20%的内容基本上都是作者也在尝试的过程中遇到奇怪的错误,导致认证不成功,属于求助贴,所以贴出来的配置也没啥参考价值;最后这10%的内容,作者倒是颇为笃定,也没说会出错啥的,就直接贴出配置文件内容,说明配置哪些服务,就结束了。要命的是,最后这些配置基本上都是在Ubuntu上完成的,fedora上面屡试不过阿- -#

搜索的时候加上了关键字fedora,结果更要命,所有人都说fedora上面配置不能,一不小心系统不能登录了……我了个去,有这么恐怖。回头想想,管他呢,反正是虚拟机,于是就按照unbuntu的步骤上去实验了,后果果然很严重,搞了半天ftp认证不通过,网络断了一次,再登录,我擦阿,本地帐号的认证全都拒绝了,悲了个剧阿……

幸好是虚拟机,找IT打开VMware的控制台,用我自己的帐号进去查看了一下log,发现原因了,因为看网上的帖子,认证的时候让配置一个nsswitch的东西,虽然不知道是啥,就配了,后来发现就是这个东西搞的鬼,相关配置的目的是把本地帐号也采用LDAP认证去了,而我本地帐号的LDAP配置还没写好,于是悲剧了。后来也是做好了重装虚拟机的心理准备之后,猛然发现,先前打开的一个ssh连接,当时一致连着却始终没有走到登录成功的地方,却也没说连不上,就没去管他,原来这货去尝试认证LDAP之后一致卡在哪里,试过各自配置文件里指定的认证方式之后,终于failover到本地帐号passwd文件认证了,于是成功登入系统,果断把那些做错的配置改回来……虚惊一场阿

为了不把服务器上的wiki废掉,我还是自己装个CentOS先搞搞吧,于是自己装虚拟机搞起来,经过反复尝试,逐一把网上的配置筛选,不断的打开关闭某个配置项,删掉没用的配置,终于得出了系统装好之后,在默认配置下进行最小修改能够成功通过认证的配置方式。其中如果出现什么差错,失败的记录尽量去翻log,比如/var/log/messages,/var/log/secure等等,如果是登入认证失败,通常是secure文件会记录下来,登入之后的操作失败可以去看message或者/var/log/vsftpd或是其他你的ftp服务器指定的log文件。

下面是配置方法。

首先简要说明,vsftpd服务器的认证方式可以选用第三方认证插件替代自带的机制,这里采用PAM模块,所以需要让vsftpd配置为采用PAM认证。

第二,PAM认证方式因为是插件模式,其支持为许多软件提供第三方认证,所以其配置文件和是和调用PAM发起认证的软件一一对应,针对每个软件的不同需要,给PAM插件指定不同的后续认证方式,这里PAM的vsftpd配置就要指定成LDAP,这样就是告诉PAM当vsftpd服务器来发起认证的时候,你PAM就应该拿ftp服务器传递给你的帐号信息去做LDAP认证。

以下配置验证过的系统:Fedora14及以上,Centos6.0及以上

1. 完成配置所需的软件组件 

   在最小安装系统的基础上安装vsftpd和pam_ldap.so,或者在安装系统时勾选指定组件:

Base System -> Directory Client -> pam_ldap
Servers -> Ftp Server

2. 关闭防火墙以简化配置

    安装完成后进入系统,为了方便起见,首先关闭防火墙,配置完成后根据需要修改防火墙配置再启动防火墙

service iptables stop #effective immediately
chkconfig iptables off #maintain off

3. 关闭SElinux以简化配置

    如果安装了SElinux,且不懂配置的,建议将其关闭。方法是修改/etc/selinux/config文件的如下内容

host 10.0.1.1
base cn=users,dc=server,dc=embedway,dc=com
binddn cn=ldap,cn=users,dc=server,dc=embedway,dc=com
bindpw 123456@E
pam_login_attribute sAMAccountName

5. 配置vsftpd服务使用PAM的方式

   设置vsftpd的pam认证配置,修改/etc/pam.d/vsftpd,添加如下两行

auth    sufficient pam_ldap.so #keep this as the first 'auth' item
account sufficient pam_ldap.so #keep this as the first 'account' item

6. 配置vsftpd服务

   设置vsftpd,启用guest用户以便配合ldap认证。在/etc/vsftpd/vsftpd.conf文件最下面添加如下内容(如果不是新安装的系统,则可能要适当修改其他选项)

   前提是你的默认vsftpd配置文件内已经存在一项“pam_service_name=vsftpd

guest_enable=YES
guest_username=ftp

7. 启动ftp服务

   执行如下命令启动ftp服务器

相关推荐