centos6.5 安装ftp服务器搭建虚拟用户验证的FTP服务

  FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

  工作模式

  FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端并不总是20。这就是主动与被动FTP的最大不同之处。

  主要有两种工作模式:

  主动FTP

  即Port模式,客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端(20)连接到客户端指定的数据端口(N+1)。

  针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

  1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)

  2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)

  3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)

  4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

  被动FTP

  为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

  在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

  当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

  对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

  1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

  2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

  3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

  4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

  安装vsftpd

  查看是否已经安装vsftpd

  rpm -qa | grep vsftpd

  如果没有,安装,并设置开机启动

  yum -y install vsftpd

  chkconfig vsftpd on

  建立虚拟用户账号数据库

  vsftp服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号,使用db_load工具生成数据库文件。(若未安装,安装包在安装光盘1中,软件名为db4-utils)

  [root@localhost vsftpd]# vim ./vusers.list #新建一个虚拟用户账号密码列表文件

  zhangsan #虚拟用户zhangsan,密码123

  123

  [root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db

  [root@localhost vsftpd]# ls | grep *.db

  vusers.db

  [root@localhost vsftpd]# file vusers.db

  vusers.db: Berkeley DB (Hash, version 9, native byte-order)

  注意:db_load命令

  -T:允许非Berkeley的程序使用该数据库

  -t:指定算法(hash:哈希,散列)

  -f:指定源文件

  注意:生成的数据文件必须为“.db”格式

  [root@localhost vsftpd]# chmod 600 vusers.* #修改有关用户名密码文件的权限,增强安全性

  [root@localhost vsftpd]# ll vusers.*

  -rw-------. 1 root root 12288 5月 21 23:19 vusers.db

  -rw-------. 1 root root 13 5月 21 23:18 vusers.list

  添加虚拟映射账号,为FTP根目录修改权限

  [root@localhost vsftpd]# useradd -d /var/ftproot/ -s /sbin/nologin virtual

  [root@localhost vsftpd]# ll -d /var/ftproot/

  drwx------. 4 virtual virtual 4096 5月 22 00:02 /var/ftproot/

  [root@localhost vsftpd]# chmod 755 /var/ftproot/

  [root@localhost vsftpd]# ll -d /var/ftproot/

  drwxr-xr-x. 4 virtual virtual 4096 5月 22 00:02 /var/ftproot/

  增加PAM认证

  手动建立此pam认证文件

  [root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu

  此处不用加.db

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

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

  实现每个虚拟用户不同跟目录、不同权限的控制

  创建用户控制目录,并创建虚拟所对应的同名配置文件

  [root@localhost vsftpd]# mkdir ./vusers.dir

  [root@localhost vsftpd]# cd vusers.dir/

  [root@localhost vusers.dir]# touch zhangsan

  [root@localhost vusers.dir]# ls

  zhangsan

  修改zhangsan的配置文件,使其可以上传、建立目录、删除文件、重命名文件、最大传输速率1字节/秒、根目录为/var/zhangsan

  [root@localhost vusers.dir]# mkdir /var/zhangsan

  [root@localhost vusers.dir]# vim zhangsan

  anon_upload_enable=YES #开启上传权限

  anon_mkdir_write_enable=YES #当前虚拟用户创建目录权限

  anon_other_write_enable=YES #当前虚拟用户删除和重命名权限

  anon_max_rate=10000 #最大传输速率,一般不限制

  local_root=/var/zhangsan #当前虚拟用户目录

  添加系统用户到/var/zhangsan目录

  [root@localhost vsftpd]# chown virtual /var/zhangsan

  修改/etc/vsftp/vsftpd.conf配置文件,重启服务

  [root@localhost vsftpd]# vim vsftpd.conf

  anonymous_enable=YES #匿名用户

  local_enable=YES #允许本地用户登录

  write_enable=YES #让登录的用户有写权限(上传,删除)

  local_umask=022 #修改本地用户默认权限掩码

  anon_umask=022 #手动添加设置匿名用户权限掩码

  pam_service_name=vsftpd.vu #修改pam认证中模块(系统默认的是vsftpd)

  userlist_enable=YES #启用user_list列表文件

  tcp_wrappers=YES #启用TCP_wrappers主机访问控制

  guest_enable=YES #允许虚拟用户登录

  guest_username=virtual #映射虚拟用户的系统用户

  user_config_dir=/etc/vsftpd/vusers.dir #虚拟用户配置文件目录

  [root@localhost vsftpd]# service vsftpd restart

  关闭 vsftpd: [确定]

  为 vsftpd 启动 vsftpd: [确定]

  客户端测试

登录FTP服务器用户和密码
登录FTP服务器用户和密码

登录ftp服务器创建删除上传
登录ftp服务器创建删除上传


免责声明:本站内收录的所有文章与图片资源均来自于互联网,其版权均归原作者及其网站所有.如果您对本站文章、图片资源的归属存有异议,请立即通知帝一博客(QQ:17762131),情况属实,我们会第一时间予以删除,并同时向您表示歉意!


您可以还会对下面的文章感兴趣:

  • 关于视频网站内容标题设置的提醒
  • 百度搜索引擎基础知识
  • 做一个网站多少钱
  • Intel i9-9900K销售火爆,货源紧俏,4999元买8核完全不亏!
  • 未建好页面应返回503状态码,防止被删除
  • 如何选购稳定免备案服务器?
  • 新王牌.wang域名低价风暴
  • 企业选择什么品牌的服务器最好?
  • 每天逛DEDECMS论坛的那点事
  • 禁止搜索引擎收录的方法