VSFTP 配置详解,附带例子

版权声明:Firewine 的博客,想要转载请标明出处 https://blog.csdn.net/xyjworkgame/article/details/89388855

VSFTP服务

一、FTP简介与原理

FTP简介

  1. FTP 为文件传输协议 ,用于Internet 上的控制文件的双向传输

模式

  1. 主动模式 : 服务端 从20端口 主动向客户端发起连接

在这里插入图片描述

  1. 被动模式 :服务端在指定范围内某个端口被动等待客户端连接

在这里插入图片描述

端口

  1. 控制连接 : TCP 21 ,用户发送FTP命令信息
  2. 数据连接 :TCP 20 , 用户上传 ,下载数据

二、FTP相关文件

常见的FTP服务器程序

  • IIS 、Serv-U
  • wu-ftpd 、 Proftpd
  • vsftpd

安装

vsftpd

相关文件

  1. 主配置文件
    1. /etc/vsftpd/vsftpd.conf
  2. 用户控制列表文件
    1. /etc/vsftpd/ftpusers
    2. /etc/vsftpd/user_list

FTP相关用户

  1. 匿名
    1. anonymous 或ftp
  2. 本地用户
    1. 使用Linux系统用户和密码
  3. 虚拟用户
    1. 管理员自定义的模拟用户

注意事项

  1. 关闭防火墙(或者放行关于这个服务)
  2. 关闭SELinux

三、配置文件详解

默认配置文件

  1. anonymous_enable = YES
    1. 容许匿名用户登陆
  2. local_enable = YES
    1. 容许本地用户登录
  3. write_enable=YES
    1. 容许本地用户上传
  4. local_umask =022
    1. 本地用户上传umask值
  5. dirmessage_enable =YES
    1. 用户进入目录,显示.message文件中的信息
  6. message_file=.message
    1. 指定信息文件
  7. xferlog_enabel = YES
    1. 激活记录日志
  8. connect_from_port_20 = YES
    1. 主动模式数据传输接口
  9. xferlog_std_format=YES
    1. 使用标准的ftp日志格式
  10. ftpd_banner
    1. 登录欢迎信息
  11. listen=YES
    1. 容许被监听
  12. pam_service_name= vsftpd
    1. 设置PAM 外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd 文件
  13. userlist_enable = YES
    1. 用户登录限制
  14. tcp_wrappers=YES
    1. 使用使用tcp_wrappers作为主机访问控制方式

常用全局配置

  1. listen_address=192.168.1.1
    1. 设置监听的IP地址
  2. list_port=21
    1. 设置监听FTP服务的端口号
  3. download_enable = YES
    1. 是否容许下载文件
  4. max_clients=0
    1. 限制并发客户端连接数
  5. max_per_ip = 0
    1. 限制同一IP 地址的并发连接数

被动模式

  1. pasv_enable =YES
    1. 开启被动模式
  2. pasv_min_port=24500
    1. 被动模式最小端口
  3. pasv_max_port=24600
    1. 被动模式最大端口

常用安全配置

  1. accept_timeout = 60
    1. 被动模式,连接超时时间
  2. connect_timeout = 60
    1. 主动模式,连接超时时间
  3. idle_session_timeout=600
    1. 600秒没有任何操作就端口连接
  4. data_connection_timeout=500
    1. 资料传输时,超过500秒没有完成,就断开传输

四、客户端使用

  1. 命令行连接

    1. ftp IP

      help 获取帮助
      get 下载
      mget 下载一批文件
      put 上传
      mput 上传一批文件
      exit 退出
  2. winSCP

  3. win直接从使用ftp://IP

五、匿名用户访问

基本配置

  1. anonmous_enable
    1. 容许匿名用户访问
  2. anon_upload_enable
    1. 容许匿名用户上传
  3. anon_mkdir_write_enable=YES
    1. 容许匿名用户建立目录
  4. anon_umask
    1. 设置上传的默认文件权限(默认600)

注意事项

  1. 默认上传目录 : /var/ftp/pub
  2. 如果容许上传,需要服务权限和系统目录同时容许
  3. Vsftpd 服务的伪用户是ftp

六、本地用户访问

1.本地用户基本设置

  1. 本地用户基本配置

    local_enable = YES 容许本地用户登录
    write_enable=YES 容许本地用户上传
    local_umask=022 本地用户上传umask值
    local_root = /var/ftp 设置本地用户的FTP根目录
    local_max_rate = 0 限制最大传输速率
  2. 把用户限制在目录

    1. chroot_local_user = YES
      1. 开启用户目录限制
    2. chroot_local_user=YES
    3. chroot_list_enable=YES
    4. chroot_list_file=/etc/vsftpd/chroot_list
      1. 写入这个文件中的用户可以访问任何目录,其他用户限制在用户主目录

2. 用户访问控制

1. FTP相关文件

  1. 用户控制列表文件
    1. /etc/vsftpd/ftpusers
    2. /etc/vsftpd/user_list

2. 访问控制

  1. userlist_enable=YES
    1. 开启用户访问控制
  2. userlist_deny=YES
  3. Userlist_file=/etc/vsftpd/user_list
    1. 写入这个文件中的用户不能访问ftp服务器,
  4. userlist_enable =YES
  5. userlist_deny=NO
    1. 当userlist_enable为YES,userlist_deny为NO时,FTP服务器仅允许user_list中的用户访问
  6. userlist_file=/etc/vsftpd/user_list
    1. 写入这个文件中的用户可以访问ftp,没有写入的用户不能访问
  7. 不要把限制用户主目录和用户访问限制搞混
    1. chroot_local_user=YES 用户把用户禁锢在主目录中
    2. userlist_enable =YES 用户访问控制

七、虚拟用户访问

1. 配置虚拟用户访问

步骤!!!

* 添加虚拟用户口令文件
vi /etc/vsftpd/vuser.txt
	cangle#用户名
	123 #密码
	bols #用户名
	123#密码
* 生成虚拟用户口令认证文件
  1. yum install db4-utils
  2. db_load-T-t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db(把文本文档转变为认证的数据库)
* 编辑vsftpd的PAM认证文件
  1. vi /etc/pam.d/vsftpd

    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
    

    注释其他,加入这两行

    注释掉其他,可以禁止本地用户登陆,因为本地用户依赖这个文件

* 建立本地映射用户并设置宿主目录权限
  1. useradd -d /home/vftproot -s /sbin/nologin vuser
    1. 不需要登陆,,映射用户
    2. 用户名保持一致
  2. chmod 755 /home/vftproot
* 修改配置文件
vi /etc/vsftpd/vsftpd.conf
	guest_enable =YES
	# 开启虚拟用户
	guest_username = vuser
	#FTP 虚拟用户对应的系统用户
	pam_service_name=vsftpd
	#PAM认证文件(默认存在)
* 重启服务

systemctl vsftpd restart

此时,虚拟用户可以登陆,查看,下载,不能上传

权限使用的是匿名用户权限进行管理

* 调整虚拟用户权限
vi /etc/vsftpd/vsftpd.conf
	anonymous_enable = NO
	# 关闭匿名用户登录,
	anon_upload_enable=YES
	anon_mkdir_write_enable=YES
	anon_other_writer_enable=YES
	# 给虚拟用户设定权限,容许所有虚拟用户上传

2. 为每个虚拟用户建立自己的配置文件,单独定义权限

可以给每个虚拟用户单独建立目录,并建立自己的配置文件。这样方便单独配置权限,并可以单独制定上传目录

1. 修改配置文件

vi /etc/vsftpd/vsftpd.conf
	user_config_dir=/etc/vsftpd/vusers_dir
	#指定保存虚拟用户配置文件的目录

2. 手工建立目录

  1. mkdir /etc/vsftpd/vusers_dir

3. 为每个虚拟用户建立配置文件

vi /etc/vsftpd/vusers_dir/cangls
	annon_upload_enable=YES
	anon_mkdir_wirte_enable=YES
	anon_other_write_anable = YES
	# 容许此用户上传
	local_root=/tmp/vcangls
	#给cangls指定堵路的上传目录

4. 建立上传目录

  1. mkdir /tmp/vcangls
  2. chown vuser:vuser /tmp/vcangls
  3. 如果不给bos指定单独的配置文件,则遵守主配置文件(/etc/vsftpd/vsftpd.con)的权限

5. 配置完效果如下:

  1. 禁止匿名用户登录(配置文件修改)
  2. 禁止本地系统用户登录(pam文件修改)
  3. 容许虚拟用户登录(配置文件修改)
  4. cangls的上传目录是/tmp/vcangls ,并且容许查看,下载,上传
  5. bols 的上传目录是虚拟用户的默认目录 /home/vftproot ,不能上传,能下载,查看

猜你喜欢

转载自blog.csdn.net/xyjworkgame/article/details/89388855