Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)

一、 vsftp服务简介

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

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。另外,高速与高稳定性也是VSFTP的两个重要特点。

在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。

在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器的数据,VSFTP服务器可以支持15000个并发用户。

当然也有缺点,在vsftp ,没有处理文件编码转换windows客户端访问时有乱码现象。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。

二、vsftpd的安装

[root@localhost ~]# mount /dev/sr0 /mnt    将光盘镜像挂载到/mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -Th              查看挂载情况
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.1G   49G    3% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  146M  869M   15% /boot
/dev/mapper/centos-home xfs        46G   33M   46G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm     安装vsftpd服务
警告:/mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:vsftpd-3.0.2-25.el7              ################################# [100%]
[root@localhost ~]# rpm -q vsftpd     查看vsftpd是否安装
vsftpd-3.0.2-25.el7.x86_64
[root@localhost ~]# cd /etc/vsftpd/     到vsftp的配置文件所在目录
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# grep -v "#" vsftpd.conf    筛选过滤掉配置文件中带“#”的行
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@localhost vsftpd]# setenforce 0      关闭核心防护
[root@localhost vsftpd]# systemctl stop firewalld    关闭防火墙
[root@localhost vsftpd]# systemctl start vsftpd      启动服务

三、 vsftp使用与配置

3.1 匿名用户对文件的下载、上传与删除

我们用一台win7虚拟机使用ftp连接我们的centos7
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第1张图片
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第2张图片
这里的pub文件并不是我们centos7根目录下的文件,而是vsftpd服务的一个站点,这个站点路径在/var/ftp/

[root@localhost vsftpd]# ls /var/ftp/
pub
[root@localhost vsftpd]# echo "hello world" > /var/ftp/hello.txt  在站点目录里下新建一个hello.txt文件,并写入内容"hello world"

在win7虚拟中查看
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第3张图片
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第4张图片
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第5张图片
我们在这个目录下新建一个文件,实现上传到centos7
在这里插入图片描述
在这里插入图片描述
我们在centos7中对配置文件进行修改,使得上传能够成功
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第6张图片

Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第7张图片

[root@localhost vsftpd]# systemctl restart vsftpd    重启服务

但是这时候我们还是不能上传,原因是因为站点目录的权限没有到最大,如果我们将权限调到最大,一旦调到最大,就会自动断开远程连接,vsftpd服务的安全性就能体现出来。

[root@localhost vsftpd]# chmod 777 /var/ftp   将ftp目录的权限设置为777,最高
[root@localhost vsftpd]# ll /var/
总用量 8
drwxr-xr-x.  2 root root    6 4  11 2018 adm
drwxr-xr-x.  5 root root   44 7   6 20:40 cache
drwxr-xr-x.  2 root root    6 11  5 2018 crash
drwxr-xr-x.  3 root root   34 7   6 20:40 db
drwxr-xr-x.  3 root root   18 7   6 20:40 empty
drwxrwxrwx.  3 root root   34 7  19 21:27 ftp
drwxr-xr-x.  2 root root    6 4  11 2018 games

我们到win7查看
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第8张图片
所以我们只能将pub的权限放到最大

[root@localhost vsftpd]# chmod 755 /var/ftp/    恢复ftp目录的权限为755
[root@localhost vsftpd]# chmod 777 /var/ftp/pub/   将pub目录的权限提升到最高
[root@localhost vsftpd]# ll /var/ftp/
总用量 4
-rw-r--r--. 1 root root 12 7  19 21:27 hello.txt
drwxrwxrwx. 2 root root  6 10 31 2018 pub

我们再到win7查看是否可以上传,上传成功
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第9张图片
centos7查看上传文件

[root@localhost vsftpd]# ls /var/ftp/pub/
bbq.txt

我们在win7中删除刚刚上传的文件
在这里插入图片描述
查看文件是否被删除
在这里插入图片描述

3.2 本地用户身份ftp远程登录管理

3.2.1 安全控制

[root@localhost vsftpd]# useradd zhangsan    新建用户zhangsan
[root@localhost vsftpd]# passwd zhangsan      设置密码
更改用户 zhangsan 的密码  
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost vsftpd]# useradd lisi         新建用户lisi
[root@localhost vsftpd]# passwd lisi          设置密码
更改用户 lisi 的密码 
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost vsftpd]# 

我们用win7使用本地用户登录,我们发现普通用户的身份可以自由切换目录,这就给系统的安全带来了威胁。
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第10张图片
在centos7中对配置文件进行修改

[root@localhost vsftpd]# vi /etc/vsftpd/vsftpd.conf 

Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第11张图片

[root@localhost vsftpd]# systemctl restart vsftpd    重启服务

Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第12张图片

3.2.2 用户列表控制

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vi user_list 

Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第13张图片

[root@localhost vsftpd]# systemctl start vsftpd

用户列表功能能使用的前提是在vsftpd.conf文件中,列表功能要开启,这个功能在行尾
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第14张图片

在win7中用张三登录,失败
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第15张图片
在centos7虚拟机中

在这里插入图片描述

vi /etc/vsftpd/vsftpd.conf
shift+G跳到行尾
pam_service_name=vsftpd
userlist_enable=YES     开启用户列表功能
tcp_wrappers=YES
userlist_deny=NO            仅允许列表中的用户进行访问,也就是zhnagsan可以访问,而lisi不可以         
[root@localhost vsftpd]# systemctl start vsftpd

我们在win7中测试
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第16张图片

3.2.3 虚拟用户的配置

首先新建一个vuser文件,文件中写入虚拟用户的账户名和密码

[root@localhost vsftpd]# vi vuser

Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第17张图片

[root@localhost vsftpd]# db_load -T -t hash -f vuser vuser.db    使用hash算法将vuser转换成数据库文件vuser.db ,-T是转换、-t是类型、-f是指定文件
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vuser  vuser.db   
[root@localhost vsftpd]# chmod 600 vuser    为了安全,虚拟用户只能管理员可见
[root@localhost vsftpd]# chmod 600 vuser.db 

接下来创建一个真实用户

[root@localhost vsftpd]# useradd -d /opt/vuser -s /sbin/nologin vuser   创建一个用户为vuser,只当家目录为/opt/vuser,而且不能使用shell登录
[root@localhost vsftpd]# id vuser
uid=1003(vuser) gid=1003(vuser) =1003(vuser)

编辑pam认证模块

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser    这里的两个vuser文件是刚刚创建的数据库文件
account required pam_userdb.so db=/etc/vsftpd/vuser

编辑vsftpd.conf配置文件

[root@localhost vsftpd]# vi vsftpd.conf
#pam_service_name=vsftpd    将原来vsftpd的pam认证注释掉
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES            开启来宾访问
guest_username=vuser        来宾访问的用户名为vuser
pam_service_name=vsftpd.vu   vsftp.vu的pam认证开启
[root@localhost vsftpd]# systemctl restart vsftpd   重启服务

在win7中进行测试
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第18张图片
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第19张图片
在centos7中查看上传文件

[root@localhost vsftpd]# ll /opt/vuser/     找到了上传文件
总用量 0   
-rw-------. 1 vuser vuser 0 7  20 09:58 123.txt    文件的属主、属组都是vuser

3.2.4 单独用户配置

[root@localhost vsftpd]# vi vsftpd.conf    编辑配置文件
user_config_dir=/etc/vsftpd/happy          将这条写进去,为单独用户配置文件夹
[root@localhost vsftpd]# mkdir happy
[root@localhost vsftpd]# cd happy/
[root@localhost happy]# vi tom
anon_umask=022    #指定上传文件的权限
[root@localhost happy]# systemctl restart vsftpd    重启服务

在win7中测试
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第20张图片
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第21张图片
在centos7中查看文件权限值
Linux网络系列--vsftp服务( vsftp使用与配置、安全控制、用户列表功能、虚拟用户登录、单独用户配置)_第22张图片

你可能感兴趣的:(Linux网络,vsftp,linux,centos7)