vsftp+openldap做集中身份认证
https://blog.51niux.com/?id=70
https://blog.51niux.com/?id=71
这两篇文章已经对vsftp做了一个详细的讲解,我们也看到了如果一个ftp服务器相对很多人开放的话,这个用户管理这块是很麻烦的,要涉及到经常的用户变更,这就涉及到要频繁的登录服务器进行操作。那么可不可以用集中身份管理认证的思想来搞一搞呢?答案是肯定的,而且很简单。
第一步:部署vsftp服务器,https://blog.51niux.com/?id=71按照这个操作,假设我们的vsftpd服务的匿名用户已经操作完毕。
第二步:部署ldap服务器,我们还是假设我们的ldap服务器为192.168.1.111
第三步:vsftpd服务器的操作,也就是作为ldap客户端的操作。
#yum install vsftpd pam_ldap
#vi /etc/pam_ldap.conf
base dc=51niux,dc=com #修改这一行
uri ldap://192.168.1.111/ #ldap服务器的地址
pam_password md5 #末尾加上这句话
注意:在使用SSL加密的时候,uri中指定的服务器地址必须和证书中的CN名称匹配。
若LDAP服务器不允许匿名绑定,则需要配置binddn和bindpw。
若开启ssl加密的话,还要添加下面的配置:
tls_cacertfile /etc/openldap/cacerts/myca.crt #指定的CA公钥
博文来自:www.51niux.com
第四步:配置vsftpd使用pam
# cat /etc/pam.d/vsftpd #只保留下面的两行,如果你只需要ldaptest认证的话
auth sufficient /lib64/security/pam_ldap.so
account sufficient /lib64/security/pam_ldap.so
博文来自:www.51niux.com
第五步:重启vsftpd服务
# /etc/init.d/vsftpd restart
第六步:测试
我们vsftpd服务器没有ldaptest9这个用户
# lftp 192.168.1.111 #
lftp 192.168.1.111:~> login ldaptest9 123456
lftp ldaptest9@192.168.1.111:~> ls #可以登录,但是提示我/ftp1/下面没有ldaptest9这个目录,好的到此说明我们ldap的用户已经给ftp所识别了。
ls: Login failed: 500 OOPS: cannot change directory:/ftp1/ldaptest9
下面我们在ftp服务器上面创建/ftp1/ldaptest9这个目录并授权ftpuser属主属组继续测试。
lftp ldaptest9@192.168.1.111:~> ls #查看已经没问题了,下面是空的还没有任何东西
lftp ldaptest9@192.168.1.111:/> mkdir test9 #创建一个test9的目录,创建成功
mkdir ok, `test9' created
lftp ldaptest9@192.168.1.111:/> cd test9/ #进入到test9目录,没有问题
lftp ldaptest9@192.168.1.111:/test9> put /root/1.sh #上传/root目录下面的1.sh文件到/ftp1/test9/下面
5100 bytes transferred
lftp ldaptest9@192.168.1.111:/test9> get 1.sh #再将1.sh下拉到本地
5100 bytes transferred
lftp ldaptest9@192.168.1.111:/test9> lpwd #客户端的当前用户为/tmp
/tmp
然后我们查看客户端的/tmp目录1.sh被下载下来了
然后再到ftp服务器端,进行查看:
经过测试,ldap结合vsftpd做身份验证可以了。
根据需求,如果大家都用同一个共享目录。那就不用再每次有新用户,就去创建对应的用户目录并授权了。如果非要每个用户自己一个目录的话。那也可以用脚本之类的来实现也是很方便的。都不是多麻烦的事情。