vsftp虚拟用户配置总结

     工作中用到ftp传输文件,选择比较流行的vsftp,由于vsftp默认用系统用户登录,在外网环境传输数据,存在很大的安全隐患,原因是ftp明文传输,可以轻易抓包得出用户名和密码。如果vsftp用到的系统用户,登录shell设置为/bin/nologin,则vsftp也不能登录(测试过一次,大概是这样)。

      鉴于之前tomcat默认管理页面被利用的惨痛教训,下决心配置vsftp的虚拟用户,杜绝安全隐患。

      以下总结下流程和遇到的几个问题:

vsftp-3.0.2 的虚拟用户配置:

1. 生成虚拟用户的账号和密码

account.txt 奇数行为用户名,偶数行为密码

内容:

virtual_user1

paswd1

virutal_user2

paswd2

生成伯克利DB格式的数据库文件:db_load -T -t hash -f account.txt  /etc/vsftpd/account.db

2. 增加pam认证的支持

# vi /etc/pam.d/ftp 插入如下两行

auth required   pam_userdb.so db=/etc/vsftpd/account

account required  pam_userdb.so db=/etc/vsftpd/account

注意,64位os,pam相关so存放在/lib64/security/目录下,32位os,pam相关so存放在/lib/security/目录下

源码编译vsftp时,需要安装pam-devel,否则生成的vsftp不支持pam认证。

可以ldd  vsftpd | grep libpam查看是否支持pam认证。

如果想取消虚拟用户功能,需要卸载pam-devel,重新编译vsftp。

本人测试时,编译支持了pam认证,即使注释掉配置文件vsftpd.conf中pam相关配置,也不能使用系统用户登录。

3. 增加虚拟用户配置(必需)

vim /etc/vsftpd/vuser/virtual

内容如下:

local_root=/mnt/virtual_ftpdata

write_enable=YES

download_enable=NO

anon_upload_enable=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

anon_world_readable_only=NO

4.修改vsftpd.conf

增加:

guest_enable=yes           #开启虚拟用户功能

guest_username=root    #系统用户,虚拟用户的根目录对应于系统用户的根目录,不推荐root

pam_service_name=ftp   #此处的名字对应于/etc/pam.d/目录下ftp配置的文件名

user_config_dir=/etc/vsftpd/vuser   #虚拟用户配置目录

5. 重启vsftpd


以上是大致流程和关键节点操作,具体各配置项涵义略去不表,网上教程多,不容易出错,下面总结下本人配置时遇到的几个容易出错,且费时的问题。

1. pam认证支持,需要ldd vsftpd 查看是否有libpam,有则支持,无则不支持。

2. 根据测试结论:vsftpd一旦支持pam,系统用户就不能登录vsftp,如需取消pam,则需要在卸载pam-devel的情况下编译vsftpd。

3. vsftpd的根目录不能有写属性,否则vsftpd报错,chmod -w /mnt/virtual_ftpdata  去掉ftp目录的写属性,建议在去掉写熟悉前建立子目录,在子目录内存放数据。

4. 本人测试时,使用win7自带的ftp客户端命令测试,即使用quote  PASV修改ftp的数据连接方向,也不能建立数据连接,后来测试发现是win7自带的防火墙策略导致,windows server 2003测试则未出现上述问题。这也说明win7的防火墙策略默认是比较严格的。








阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

vsftp虚拟用户配置总结

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭