vsftp服务介绍与相关实验

一、VSFTP服务简介

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,用于 Internet 上的文件的双向传输。使用 FTP 来传输时,是具有一定程度的危险性, 因为数据在因特网上面是完全没有受到保护的明文传输方式!VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP, 从名称定义上基本可以看出,这是为了解决 ftp 传输安全性问题的。

1.1、vsftp特点
  • vsftp 程序的运行者一般是普通用户,降低了相对应进程的权限,提高了安全性。
  • 任何需要执行较高权限的指令都需要配置许可。
  • ftp 所需要使用的绝大多数命令都被整合到了 vsftp 中,基本不需要系统额外提供命令。
  • 拥有 chroot 功能,可以改变用户的根目录,限制用户只能在自己的家目录。
1.2、VSFTP连接类型
  • 控制连接(持续连接) → TCP 21(命令信道) → 用户收发FTP命令
  • 数据连接(按需连接) → TCP 20(数据信道) → 用于上传下载数据
1.3、vsftp工作模式
1)主动模式

FTP 客户端首先和服务器的 TCP 21 端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送 PORT 命令。PORT 命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的 TCP 20 端口连接至客户端的指定端口发送数据。

2)被动模式

FTP 客户端首先和服务器的 TCP 21 端口建立连接,用来建立控制通道发送命令,但建立连接后客户端发送 Pasv 命令。 服务器收到 Pasv 命令后,打开一个临时端口(端口大于 1023 小于 65535)并且通知客户端连接这个端口进行传送数据,客户端进而连接 FTP 服务器的临时端口进行数据传输。

1.4、VSFTP 传输模式
  • Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等
  • ASCII模式:进行文本传输时,自动适应目标操作系统的结束符,如回车符等

Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用 。
切换方式:在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。

1.5、VSFTP 相关软件名
服务端软件名:vsftpd  
客户端软件名:ftp  
服务名:vsftpd 
端口号:20、21、指定范围内随机端口 配置文件:/etc/vsftpd/vsftpd.conf
1.6、VSFTP 登陆方式
1、匿名用户验证:

用户账号名称:ftp或anonymous
用户账号密码:无密码
工作目录:/var/ftp
默认权限:默认可下载不可上传,上传权限由两部分组成(主配置文件和文件系统,配置文件中配置上传权限,对该目录具有写权限。)

2、本地用户验证:

用户账号名称:本地用户(/etc/passwd)
用户账号密码:用户密码(/etc/shadow)
工作目录:登录用户的宿主目录
权限:最大权限(drwx------)

3、虚拟用户验证:

创建虚拟用户用来代替本地用户,减少本地用户曝光率
使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制
能够设置严格的权限

二、相关实验

1、匿名用户实验

匿名用户相关配置参数

1、安装服务
yum install vsftpd -y
2、匿名用户相关配置 
/etc/vsftpd/vsftpd.conf 
pasv_enable=YES #设置连接模式
pasv_min_port=3000 #随机最小端口范围
pasv_max_port=5000 #随机最大端口范围
anonymous_enable=YES   #启用匿名访问  
anon_umask=022     #匿名用户所上传文件的权限掩码  
anon_root=/var/ftp/anno     #匿名用户的 FTP 根目录  
anon_upload_enable=YES   #允许上传文件  
anon_mkdir_write_enable=YES  #允许创建目录  
anon_other_write_enable=YES  #开放其他写入权(删除、覆盖、重命名)  
anon_max_rate=0     #限制最大传输速率(0 为不限速,单位:bytes/秒)
3、实现文件上传
a. 修改配置文件
   anon_upload_enable=YES
   anon_root=/var/ftp 
b. 在/var/ftp/下创建上传目录
     mkdir /var/ftp/anon
c. 修改上传目录的权限或所有者,让匿名用户有写入权限
    chown ftp:ftp /var/ftp/anon
d. 客户机登录
ftp> [ ~]# ftp 100.100.100.103
Name (100.100.100.103:root): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> cd anon
ftp> put install.log
28529 bytes sent in 0.0821 secs (347.54 Kbytes/sec)

4、实现创建目录和文件其他操作 添加如下配置。
anon_mkdir_write_enable=YES  #允许创建目录 
anon_other_write_enable=YES  #删除文件、文件改名、文件覆盖 

5、进入到目录弹出信息
在对应目录下创建 .message 文件,并写入相应内容 
确认dirmessage_enable=YES

6、下载上传的文件权限
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限
anon_umask=022
2、本地用户实验

本地用户相关配置

local_enable=YES   #是否启用本地系统用户  
local_umask=022   #本地用户所上传文件的权限掩码  
local_root=/var/ftp   #设置本地用户的 FTP 根目录  默认在当前用户的家目录下
chroot_local_user=YES  #只能自己的家目录,
chroot_list_enable=YES  #开启允许切换目录用户文件 
chroot_list_file=/etc/vsftpd/chroot_list #写入该文件中的用户可以随意切换目录
local_max_rate=0   #限制最大传输速率  
ftpd_banner=Welcome to blah FTP service  #用户登录时显示的欢迎信息  
userlist_enable=YES & userlist_deny=YES  #禁止/etc/vsftpd/user_list 文件中出现的用户名登录 FTP (默认) 
userlist_enable=YES & userlist_deny=NO  #仅允许/etc/vsftpd/user_list 文件中出现的用户名登录 FTP  

配置文件:/etc/vsftpd/ftpusers 
/etc/vsftpd/ftpusers 文件中出现的用户名登录 FTP,权限比 user_list 更高,即时生效

a. useradd -s /sbin/nologin huahua  #服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP) 
b. passwd huahua  #密码
c. 客户机登录
[ ~]# ftp 100.100.100.103
Connected to 100.100.100.103 (100.100.100.103).
Name (100.100.100.103:root): huahua
331 Please specify the password.
Password:
230 Login successful.
3、虚拟用户实验
  1. 建立 FTP 的虚拟用户的用户数据库文件 在/etc/vsftpd目录下
vim /etc/vsftpd/vsftpd.user(单数行用户名,偶数密码)
    zs 
    123456

2、将上一步建立的vsftpd.user文件转成数据库密码文件

db_load  -T  -t  hash  -f  vsftpd.user  vsftpd.db
chmod 600 vsftpd.db  #修改权限,保证安全性

3、创建 FTP 虚拟用户的映射用户,并制定其用户家目录

useradd  -d  /var/ftp_virtual_root  -s  /sbin/nologin  virtual

4、建立支持虚拟用户的 PAM 认证文件,添加虚拟用户支持

cp  /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.pam
vim /etc/pam.d/vsftpd.pam(清空源文件内容,加入下面两条)
    auth       required     pam_userdb.so  db=/etc/vsftpd/vsftpd
    account    required     pam_userdb.so  db=/etc/vsftpd/vsftpd
在 vsftpd.conf 文件中添加支持配置
修改: 
    pam_service_name=vsftpd.pam  
添加: 
    guest_enable=YES
    guest_username=virtual
    user_config_dir=/etc/vsftpd/dir/ #指定用户配置目录

5、为虚拟用户建立独立的配置文件,启动服务并测试

a、修改配置文件,将主配置文件中自定义的匿名用户相关设置注释掉,防止主配置覆盖用户配置
cd dir/
vim zs
anon_upload_enable=YES   #用户可以上传
anon_mkdir_write_enable=YES  #允许创建目录 用户可以修改文件名
anon_other_write_enable=YES  #允许重名和删除文件、覆盖

b、给映射用户的家目录,设置让虚拟用户有读权限
chmod a+r /var/ftp_virtual_root

相关推荐