转载:https://blog.csdn.net/weixin_44626569/article/details/89842319
CentOS7 搭建vsftp详细教程
FTP 介绍
FTP传输模式
VSFTP 服务器简介
Vsftpd 安装
Vsftpd 配置详解
Vsftpd 的主配置文件 /etc/vsftpd/vsftpd.conf说明(修改前先备份)
限制最大连接数 和传输速率
指定用户的权限设置
修改默认端口
设置用户组
连接超时
日志
常见FTP命令及其功能
FTP 介绍
文件传输协议(File Transfer Protocol,FTP),基于该协议 FTP 客户端与服务端可以实现共享文件、上传文件、下载文件。FTP 基于 TCP 协议生成一个虚拟的连接,主要用于控制 FTP 连接信息,同时再生成一个单独的TCP 连接用于 FTP 数据传输。用户可以通过客户端向 FTP服务器 上传、下载、删除文件,FTP 服务器端可以同时提供给多人共享使用。

FTP 服务是 Client/Server(简称 C/S)模式,基于FTP协议实现 FTp 文件对外共享及传输的软件称之为 FTP 服务器源端,客户端的程序基于 FTP 协议,则称之为 FTP 客户端,FTP 客户端可以向 FTP 服务器上传、下载文件。

FTP传输模式
FTP 基于 C/S 模式,FTP 客户端与服务器端有两种传输模式,分别是 FTP 主动模式、FTP 被动模式,主被动模式均是 以 FTP服务器端为参照。

主被动模式详细区别如下:

FTP 主动模式:客户端从一个任意的端口 N(N>1024)连接到FTP 服务器的 port 21 命令端口,客户端开始监听端口 N + 1,并发送 FTP 命令 “port N+1”到FTP服务器,FTP 服务器以数据端口 (20)连接到客户端指定的数据端口 (N+1)。
FTP 被动模式:客户端从一个任意的端口 N (N>1024)连接到 FTP 服务器的 port 21 命令端口,客户端开始监听端口 N+1,客户端提交 PASV 命令,服务器会开启一个任意的端口 (P>1024),并发送 PORT P 命令客户端,客户端发起从本地端口 N + 1到服务器的端口 P 的连接用来传送数据。
在企业实际环境中,如果 FTP 客户端与 FTP 服务端 均 开启防火墙,FTP需以 主动模式工作,这样只需要在 FTP 服务器端防火墙规则中开放 20、21端口即可。

VSFTP 服务器简介
目前主流的FTP 服务器软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。

非常安全的FTP 服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd 在 Unix/Linux 发行版中最主流的FTP 服务器程序,优点小巧轻快,安全易用,稳定高效,满足企业跨部门、多用户的使用(1000用户)等。

Vsftpd 基于 GPL 开源协议发布,在中小企业中得到广泛的使用,Vsftpd 可以快速上手,基于 Vsftpd 虚拟用户方式,访问验证更加安全。Vsftpd 还可以基于Mysql 数据库做安全验证,多重安全防护。

Vsftpd 安装
Vsftpd 配置详解
/etc/vsftpd/vsftpd.conf

主配置文件

/usr/sbin/vsftpd

Vsftpd的主程序

/etc/rc.d/init.d/vsftpd

启动脚本

/etc/pam.d/vsftpd

PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)

/etc/vsftpd/ftpusers

禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)

/etc/vsftpd/user_list

禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)

/var/ftp

匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录

/var/ftp/pub

匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)

/etc/logrotate.d/vsftpd.log

Vsftpd的日志文件

Vsftpd 的主配置文件 /etc/vsftpd/vsftpd.conf说明(修改前先备份)
限制最大连接数 和传输速率
在FTP服务器的管理中,无论对本地用户还是匿名用户,对于 FTP 服务器资源的使用都需要进行控制,避免由于负担过大造成FTP 服务器运行异常,可以添加以下配置项对 FTP 客户机使用 FTP 服务器资源进行控制:

max_client 设置项 ,用于设置 FTP 服务器所允许的最大客户端连接数,值为0时表示不限制。例如:max_client=100 表示 FTP 服务器的所有客户端最大连接数不超过100个

max_per_ip 设置项 ,用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如 :max_per_ip=5 表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。

local_max_rate 设置项, 用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如:local_max_rate=500000 表示FTP服务器的本地用户最大传输速率设置为 500KB/s

anon_max_rate 设置项, 用于设置匿名用户的最大传输速率,单位为 B/s,值为0时表示不限制。例如: anon_max_rate=200000,表示FTP 服务器的匿名用户最大传输速率设置为 200KB/s。

指定用户的权限设置
userlist_deny和userlist_enable选项限制用户登录FTP服务器(使用userlist_deny选项和user_list文件一起能有效阻止root,apache,www等系统用户登录FTP服务器,从而保证FTP服务器的分级安全性)。以下是两个选项的具体表现形式和两种搭配使用方式的效果:

Userlist_enable=YES

Ftpusers中用户允许访问
User_list中用户允许访问

Userlist_enable=NO

Ftpusers中用户禁止访问
User_list中用户允许访问

Userlist_deny=YES

Ftpusers中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问)
user_list 中用户禁止访问

Userlist_deny=NO

ftpusers中用户禁止访问
user_list中用户允许访问

Userlist_enable=YES 并且
Userlist_deny=YES

Ftpusers中用户禁止访问
User_list中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝)

Userlist_enable=YES 并且
Userlist_deny=NO

Ftpusers中用户禁止访问
User_list中用户允许访问

修改默认端口
默认FTP 服务器端口号是21,出于安全目的,有时需修改默认端口号,修改 /etc/vsftpd/vsftpd.conf,添加语句(例):

语句指定了修改后 FTP 服务器的端口号,应尽量大于 4000。修改后访问

注意这里需加上正确的端口号,否则不能正常连接。

设置用户组
这里主要是简单的说明用户组的技术实现,至于具体如何应用,还是具体需求具体对待。

由于本地用户登录 FTP 服务器后进入自己主目录, 而try1,try2 try3对主目录/home/try分配的权限不同,所以通过FTP访问的权限也不同,try1访问权限为:上传,下载,建目录;try2,try3访问权限为下载,浏览,不能建目录和上传。实现了群组中用户不同访问级别,加强了对FTP服务器的分级安全管理。

连接超时
配置空闲的用户会话的中断时间:如下配置将在用户会话空闲5分钟后被中断,以释放服务器的资源

配置空闲的数据连接的中断时间:如下配置将在数据空闲连接1分钟后被中断,同样也是为了释放服务器的资源

配置客户端空闲的自动中断和激活链接的时间:如下配置将使客户端空闲1分钟后自动中断连接,并在30秒后自动连接

日志
在vsftpd.conf中有如下内容定义了日志的记录方式:

vsftpd的两个日志文件分析如下:

/var/log/xferlog

记录内容举例

/var/log/vsftpd.log

记录内容举例

/var/log/xferlog 日志文件中数据的分析和参数说明

记录数据

 参数名称
 参数说明

Thu Sep 6 09:07:48 2007

 当前时间
 当前服务器本地时间,格式为: 

DDD MMM dd hh:mm:ss YYY

7

 传输时间
 传送文件所用时间,单位为秒

192.168.57.1

 远程主机名称/IP
 远程主机名称/IP

4323279

 文件大小
 传送文件的大小,单位为byte

/home/student/phpMyadmin-
2.11.0-all-languages.tar.gz

 文件名
 传输文件名,包括路径

b

 传输类型
 传输方式的类型,包括两种:

a以ASCII传输 b以二进制文件传输

 特殊处理标志
 特殊处理的标志位,可能的值包括:

_ 不做任何特殊处理
C 文件是压缩格式
U 文件是非压缩格式
T 文件是tar格式

i

 传输方向
 文件传输方向,包括两种:

o 从FTP服务器向客户端传输
i 从客户端向FTP服务器传输

r

 访问模式
 用户访问模式,包括:

a 匿名用户
g 来宾用户
r 真实用户,即系统中的用户

student

 用户名
 用户名称

ftp

 服务名
 所使用的服务名称,一般为FTP

0

 认证方式
 认证方式,包括:

0 无
1 RFC931认证

*

 认证用户id
 认证用户的id,如果使用*,则表示无法获得该id

c

 完成状态
 传输的状态:

c 表示传输已完成
i 表示传输示完成

常见FTP命令及其功能
FTP命令

 功能
 FTP命令
 功能

ls

显示服务器上的目录

 ls [remote-dir][local-file]
 显示远程目录remote-dir,并存入本地文件local-file

get remote-file [local-file]

从服务器下载指定文件到客户端

 mget remote-files
 下载多个远程文件(mget命令允许用通配符下载多个文件)

put local-file [remote-file]

从客户端上传指定文件到服务器

 mput local-file
 将多个文件上传至远程主机(mput命令允许用通配符上传多个文件)

open

连接FTP服务器

 mdelete [remote-file]
 删除远程主机文件

close

中断与远程服务器的ftp会话(与open对应)

 mkdir dir-name
 在远程主机中创建目录

open host[port]

建立指定的ftp服务器连接,可指定连接端口

 newer file-name
 如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件

cd directory

改变服务器的工作目录

 rename [from][to]
 更改远程主机的文件名

lcd directory

在客户端上(本地)改变工作目录

 pwd
 显示远程主机的当前工作目录

bye

退出FTP命令状态

 quit
 同bye,退出ftp会话

ascii

设置文件传输方式为ASCII模式

 reget remote-file [local-file]
 类似于get,但若local-file存在,则从上次传输中断处续传

binary

设置文件传输方式为二进制模式

 rhelp [cmd-name]
 请求获得远程主机的帮助

![cmd [args]]

在本地主机中交互shell后退回到ftp环境,如:!ls *.zip

 rstatus [file-name]
 若未指定文件名,则显示远程主机的状态,否则显示文件状态

accout [password]

提供登录远程系统成功后访问系统资源所需的密码

 hash
 每传输1024字节,显示一个hash符号(#)

append local-file [remote-file]

将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名

 restart marker
 从指定的标志marker处,重新开始get或put,如restart 130

bye

退出ftp会话过程

 rmdir dir-name
 删除远程主机目录

case

在使用mget命令时,将远程主机文件名中的大写转为小写字母

 size file-name
 显示远程主机文件大小,如:

size idle 7200

cd remote-dir

进入远程主机目录

 status
 显示当前ftp状态

cdup

进入远程主机目录的父目录

 system
 显示远程主机的操作系统

delete remote-file

删除远程主机文件

 user user-name [password][account]
 向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email

dir remote-dir

显示远程主机目录,并将结果存入本地文件

 help [cmd]
 显示ftp内部命令cmd的帮助信息,如help get

标签: none

评论已关闭