1. 简述
1.1 关于FTP
文件传输协议(FTP),能够让用户在互联网中上传或下载文件的文件协议,FTP服务器即可支持FTP传输协议的主机
用户使用使用FTP客户端向FTP服务端发起链接并发送指令,服务器收到用户指令后将结果返回客户端即可完成文件传输
FTP协议占用两个端口
20端口:数据传输,用于文件上传与下载
21端口:命令控制,用于接收客户端的FTP命令
数据传输类型:主动模式和被动模式
1.2 关于Vsftp
Vsftp是一个在Linux操作系统上的运行的FTP服务端程序,具有完全开源及免费、速率高、安全性好,支持IPv6、虚拟用户等其他FTP服务端软件不具有的功能
2. 安装
2.1 安装 Vsftpd服务程序
我们修改为root用户,这样可以避免一些root权限问题
[root@Hoster130 Hoster]# yum -y install vsftpd
出现下图即表示安装成功
查看一下vsftpd的状态,确定服务是否启动
[root@Hoster130 Hoster]# systemctl status vsftpd
发现 显示为dead,说明服务没有启动
我们需要手动开启服务,并且可设置为开机启动(自己所需要的都可设置为开机启动)
[root@Hoster130 Hoster]# systemctl start vsftpd\\开启服务
[root@Hoster130 Hoster]# systemctl enable vsftpd\\设置为开机启动
再次查看状态,发现显示为running,说明服务成功开启
2.2 关闭防火墙
因为Linux系统默认是有防火墙的,要先关闭防火墙
[root@Hoster130 Hoster]#systemctl stop firewalld.service\\关闭防火墙
[root@Hoster130 Hoster]#systemctl disable firewalld.service\\禁止防火墙开机启动
[root@Hoster130 Hoster]#firewall-cmd --reload\\重启防火墙
3. 设置用户登录的不同方式
3.1 介绍
Vsftpd程序提供的FTP服务分为三种登录认证方式,分别为匿名访问、本地用户和虚拟用户
匿名访问:任何用户无需验证即可登录FTP服务端
本地用户:需要使用FTP服务器中的用户、密码信息
虚拟用户:创建独立的FTP账号信息
安全程度由前到后依次递增,虚拟用户是最安全的
3.2 匿名访问模式
配置Vsftpd.conf文件
[root@Hoster130 Hoster]# vi /etc/vsftpd/vsftpd.conf
因为要开启匿名用户的上传和写入权限,写入以下参数
#允许匿名访问
anonymous_enable=YES
#匿名用户上传文件的umask值
anon_umask=022
#允许上传文件
anon_upload_enable=YES
#允许创建目录
anon_mkdir_write_enable=YES
#允许修改或删除目录
anon_other_write_enable=YES
保存以后重启vsftpd服务,并设置为开机自启动
[root@Hoster130 Hoster]# systemctl restart vsftpd
[root@Hoster130 Hoster]# systemctl enable vsftpd
安装ftp命令
[root@Hoster130 Hoster]# yum install ftp -y
接下来就可以在客户端中登入FTP服务了,后面两个登录模式均在客户端中测试(可再另一台虚拟机下载,并测试连接)
ftp [参数] [ FTP主机地址],Name输入anonymous,password敲回车
这时我们创建一个文件,发现创建失败,为pub设置777权限
[root@Hoster140 Hoster]# chmod 777 /var/ftp/pub
重新创建,对files进行修改删除操作
3.3 本地用户模式
配置vsftpd.conf文件(注意:各个模式下的vsftpd.conf文件内容都不一样,需重新配置,避免因配置文件冲突而报错),写入以下参数
#禁止匿名访问
anonymous_ enable=NO
#允许本地用户模式
local_ enable=YES
#设置可写入权限
write_ enable=YES
#本地用户模式创建文件的umask值
local_ umask=022
#禁止的用户表为YES,允许的用户表为NO
userlist_ deny=YES
#允许“禁止登陆名单”,名单文件为ftpusers和user_listuserlist_ enable=YES
userlist_ enable=YES
保存以后重启vsftpd服务,并设置为开机自启动
[root@Hoster130 Hoster]# systemctl restart vsftpd
[root@Hoster130 Hoster]# systemctl enable vsftpd
查看用户禁止名单
[root@Hoster130 ~]# more /etc/vsftpd/ftpusers
因为默认禁止root用户,所以我换成普通用户Hoster,登录成功
进行测试,操作成功
3.4 虚拟用户模式
(1)建立虚拟FTP用户数据库文件
创建生成数据库的原始账号密码
进入/etc/vsftpd的目录下
[root@Hoster130 vsftpd]# vi vuser.list
使用db_load命令用HASH算法生成数据库文件
[root@Hoster130 vsftpd]# db_load -T -t hash -f vuser.list vuser.db
授予权限,提高安全性
[root@Hoster130 vsftpd]# chmod 600 vuser.db
删除原始账号密码
[root@Hoster130 vsftpd]# rm -f vuser.list
查看一下,发现数据库文件vuser.db已经存在了
(2)创建FTP根目录及虚拟用户映射的系统用户
创建用户virtual,设置为禁止登陆系统,并定义该用户的家目录
[root@Hoster130 vsftpd]# useradd -d /var/ftproot -s/sbin/nologin virt
查看家目录权限
[root@Hoster130 ftproot]# ls -ld /var/ftproot/
为保证其他用户可以访问,给予rwxr-xr-x权限
[root@Hoster130 ftproot]# chmod -Rf 755 /var/ftproot/
(3)建立支持虚拟用户的PAM认证文件
[root@Hoster130 ~]# vi /etc/pam.d/vsftpd.vu
(4)配置vsftpd.conf文件
[root@Hoster130 ~]# vi /etc/vsftpd/vsftpd.conf
写入以下参数
#禁止匿名访问
anonymous_ enable=NO
#允许本地用户模式
local_ enable=YES
#开启虚拟用户模式
guest_ enable=YES
#指定虚拟用户账号
guest_ username=virt
#指定pam文件
pam_ service_ name=vsftpd.vu
#允许禁止的FTP根目录可写而不拒绝用户登入请求
allow_ writeable_ chroot=YES
(5)给虚拟用户设置权限
添加独立权限配置文件存放目录
[root@Hoster130 ~]# vi /etc/vsftpd/vsftpd.conf
创建独立权限配置文件存放目录
[root@Hoster130 ~]# mkdir /etc/vsftpd/vusers_dir
在该目录中创建空白linuxprobe配置文件(原始账号文件中的第一个账号)
[root@Hoster130 vusers_dir]# touch linuxprobe
指定blackshield用户的具体权限(原始账号文件中的第二个账号)
[root@Hoster130 vusers_dir]# vi blackshield
(6)重启vsftpd服务,验证实验效果
[root@Hoster130 Hoster]# systemctl restart vsftpd
[root@Hoster130 Hoster]# systemctl enable vsftpd
进行虚拟用户测试,登录blackshield用户
[root@Hoster140 ~]# ftp 192.168.161.130
声明:此文章通过阅读学习书籍以及查找网上资源所写,部分内容存在引用