设为首页 收藏本站
查看: 1191|回复: 0

[经验分享] debian vsftpd配置

[复制链接]

尚未签到

发表于 2018-5-15 11:47:27 | 显示全部楼层 |阅读模式
  VSFTPD是一种Linux中非常安全且快速的FTP服务器,目前已经被许多大型站点所采用。VSFTPD支持将用户名和口令保存在数据库文件或数据库服务器中。VSFTPD称这种形式的用户为虚拟用户。相对于FTP的本地(系统)用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。
  本文介绍在debian上如何实现VSFTPD的虚拟用户名和密码保存在数据库文件和MySQL数据库服务器中。并达到不同用户(以三个为例)不同权限,不同目录:
  wordpress用户,本地目录是:/var/www/wordpress,可以上传下载,可以新建文件夹,可以删除文件和文件夹;
  download用户,本地目录是:/home/ftp,只能浏览和下载;
  admin用户 ,本地目录是:/home/ftp,可以上传下载,可以新建文件夹,可以删除和更改文件和文件夹名。
  三个帐号均不能登录系统,并且用ftp连接时锁定在自己的家目录(每个用户可以不同目录),而不能进入系统文件夹。
  基本思路:用虚拟用户访问FTP,为每个虚拟用户建立一个独立的配置文件,使不同的虚拟用户具有不同的主目录,不同的权限。
  
基本流程:ftp用户访问→PAM配置文件(由vsftpd.conf中pam_service_name指定)→PAM论证→区别用户读取配置文件(由vsftpd.conf中user_config_dir指定配置文件路径,文件名即用户名)

  具体步骤如下:以下步骤由于要分方法来写,所以并没有按照流程的步骤来写,所以看上去条理不是太清晰,建议做完后自己按照流程理一理思路)
  1、首选安装vsftpd:
#apt-get install vsftpd
  2、建立本地虚拟用户:
#useradd -d /home/ftp virtual
  3、在/home/ftp/创建目录并改变其属性和它的宿主
#chown virtual /home/ftp
#chmod 700 /home/ftp
  4、改变web发布页所在目录(/var/www)属性和它的宿主
#chown virtual /var/www/wordpress
#chmod 775 /var/www/wordpress (可根据具体情况修改这个权限)
  5、创建ftp用户配制文件目录:/etc/vsftpd/user_conf
#mkdir /etc/vsftpd/user_conf
  6、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件web、download、admin
  “download”文件内容如下:
local_root=/home/ftp (当然,你高兴也可以设置成其它,但要注意virtual用户对此目录的权限)
anon_world_readable_only=NO (使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)
  注意:以下文件的每项配置后不能带多余的空格
  “admin”文件内容如下:
local_root=/home/ftp
anon_world_readable_only=NO
write_enable=YES (写权限)
anon_mkdir_write_enable=YES (新建目录权限)
anon_upload_enable=YES(上传权限)
anon_other_write_enable=YES(删除/重命名的权限)
  “wordpress”文件内容如下:
local_root=/var/www
anon_world_readable_only=NO
anon_umask=022 (由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)
write_enable=YES (写权限)
anon_mkdir_write_enable=YES (新建目录权限)
anon_upload_enable=YES(上传权限)
anon_other_write_enable=YES(删除/重命名的权限)
  7、在/etc/vsftpd.conf加入或者更改以下配置语句:
anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)
local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)
guest_enable=YES(启用虚拟用户)
guest_username=virtual(将虚拟用户映射为本地virtual用户)
pam_service_name=ftp.vu(指定PAM配置文件为ftp.vu)
user_config_dir=/etc/vsftpd/user_conf(指定不同虚拟用户配置文件的存放路径)
  以下步骤方法一和方法二略有不同,具体如下:
  方法一(帐号和密码保存在数据库文件中) :
  8、建立用户列表logins.txt 内容如下
  wordpress(帐号)
wordpress(用户密码)
  download (帐号)
download (用户密码)
  admin (帐号)
admin (用户密码)
  9、安装: libdb3-util,目的:可以使用db3_load
#apt-get install libdb3-util
  注意:在debian 6中,libdb3-util包已经被移除,现在是:
  aptitude install db4.6-util (db4.6-util、db4.7-util、db4.8-util 都可以)
  10、建立访问者数据文件
#db3_load –T –t hash –f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db
  注意:在debian6中应该将db3_load更换为db4.6_load或者第九步安装的版本
  11、在/etc/pam.d/中创建文件ftp.vu, 添加如下内容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  方法二(帐号写入MySQL数据库):
  8、安装Mysql:
#apt-get install mysql-server mysql-client
  为了安全,请给Mysql设置密码:
#mysqladmin password ***** (****就是你新设的Mysql的密码)
  9、将虚拟用户帐号和密码保存在Mysql数据库中:
  我们建立数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加三个虚拟用户download、admin 、web。
  
  #mysql –p
   mysql>create database vsftpdvu;
   mysql>use vsftpdvu;
   mysql>create table users(name char(16) binary,passwd char(16) binary);
   mysql>insert into users (name,passwd) values ("download",password("****"));(此下的***是download用户的密码)
   mysql>insert into users (name,passwd) values ("admin",password("*****"));(此处的***是admin用户的密码)
mysql>insert into users (name,passwd) values ("web",password("*****")); (此处的***是web用户的密码)
   mysql>quit
  
10、授权virtual可以读vsftpdvu数据库的users表。
  #mysql -u root mysql -p
   mysql>grant select on vsftpdvu.users to virtual@localhost identified by "*****"; ((****并非步骤8中的密码)
   mysql>quit
  
  如果要验证刚才的操作是否成功可以执行下面命令:
  #mysql -u virtual –p**** vsftpdvu (****是步骤10中设的密码)
  mysql>select * from users;
  如果成功,将会列出download、web、apollo和加密后的密码。
  11、安装MySQL的PAM验证
#apt-get install libpam-mysql
  12、我们要设置vsftpd的PAM验证文件。新建开/etc/pam.d/ftp.vu文件,加入以下内容:
  auth required pam_mysql.so user=virtual passwd=**** host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
(****是步骤10中设的密码)
account required pam_mysql.so user=virtual passwd=**** host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
(****是步骤10中设的密码)
  crypt表示口令字段中口令的加密方式:
crypt=0,口令以明文方式(不加密)保存在数据库中;
crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;
crypt=2,口令经过MySQL的password()函数加密后保存。
  最后,重新启动VSFTPD
#/etc/init.d/vsftpd restart
  用filezilla 连接时可能会报 服务器发回了不可路由的地址。使用服务器地址代替 的错误
解决方法:更改Filezilla设置,编辑-设置-连接-FTP-被动模式,将“使用服务器的外部ip地址来代替”改为“回到主动模式”即可。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-460520-1-1.html 上篇帖子: debian服务器ip配置 下篇帖子: 我知道的关于Debian网络接口配置文件参数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表