rhces 发表于 2015-11-6 13:25:58

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 requiredpam_userdb.so db=/etc/vsftpd/account
  注意,64位os,pam相关so存放在/lib64/security/目录下,32位os,pam相关so存放在/lib/security/目录下
  源码编译vsftp时,需要安装pam-devel,否则生成的vsftp不支持pam认证。
  可以lddvsftpd | 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客户端命令测试,即使用quotePASV修改ftp的数据连接方向,也不能建立数据连接,后来测试发现是win7自带的防火墙策略导致,windows server 2003测试则未出现上述问题。这也说明win7的防火墙策略默认是比较严格的。
  

  

  

  

  

  

  

         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: vsftp虚拟用户配置总结