阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux入门教程:ftp的企业应用级的配置

410次阅读
没有评论

共计 17557 个字符,预计需要花费 44 分钟才能阅读完成。

1.ftp 简介

(1) 生活中的 ftp

在互联网中我们需要传输数据,尤其是要传输大型数据。有一个服务是要着重去介绍的:ftp。其实我们以前很早就接触它了。只是大家可能不怎么关注,迅雷的基本模型就是 ftp,不过是要高级的多。
事实上 ftp 应该是一种传输协议,之前它采用的是明文传输,如果在复杂的网络环境这样使用的话是非常危险的。为了更安全的使用这个协议,现在我们要采取更安全的软件 vsftpd 来提供服务。

(2)ftp 的功能介绍

1. 它有着不同等级的用户身份: 服务器本地用户;访客;匿名用户
2. 命令记录与日志记录;
3. 限制用户的家目录;

以上三点将会在我们接下来的实验中体现出来,总之是一个宗旨:我们的服务器功能尽量单一,给客户提供功能的同时要保证服务器的安全。

(3)ftp 的工作流程

首先我们要知道 ftp 使用的协议是 TCP 协议,因为大型数据的传输是要建立起稳定的链接的。ftp 的服务器使用两个链接,分别是 命令管道和数据管道 ,这样做是非常正确的,因为即使是在计算机的操作系统上也是把代码段和数据段分开的,这会非常的高效。

命令管道端口:21
数据传输端口:20

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

vsftpd 的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

2.ftp 服务器的搭建

(1)首先我们来看看 ftp 服务器的安装包:
Linux 入门教程:ftp 的企业应用级的配置

安装完了之后我们要清楚两个东西:

1.ftp 服务器的配置文件目录:/etc/vsftpd
2.ftp 服务器的默认发布目录: /var/ftp/pub (这个是可以修改的)

(2)这次我们要体现 ftp 服务器配置的安全意识,所以把 selinux 打开,修改配置文件/etc/sysconfig/selinux :
Linux 入门教程:ftp 的企业应用级的配置

(3)我们直接开启服务看看能够提供什么功能��
Linux 入门教程:ftp 的企业应用级的配置

另外一台客户机去访问该服务器:
Linux 入门教程:ftp 的企业应用级的配置

访问是不被允许的,难道是我们服务器的防火墙没有刷:
Linux 入门教程:ftp 的企业应用级的配置

再次访问试试:
Linux 入门教程:ftp 的企业应用级的配置

这次就可以登录了,遇到这种问题一般是火墙没有刷掉。关于服务器所开放的功能,我们要去看看 vsftpd 的配置文件 vsftpd.conf。但是大家要注意的是:我们刚刚使用的是匿名用户登录,这其实是不太好的。如果每个人都可以去下载你的数据,带宽很容易被耗尽,最关键的是太不安全。所以一般情况下我们是不会开放匿名用户登录的,这里是为了实验。

Linux 入门教程:ftp 的企业应用级的配置
这个是配置文件的一部分,我们要配置一定的服务就是要设置这些关键字的值,例如 12 行的 anonymous_enable = YES 就是代表所有人都可以访问 ftp。

ftp 的配置文件比较复杂(这个是列举网友总结下来的):

1.登录和对匿名用户的设置

write_enable=YES // 是否对登录用户开启写权限。属全局性设置。默认 NO
local_enable=YES // 是否允许本地用户登录 FTP 服务器。默认为 NO
anonymous_enable=YES // 设置是否允许匿名用户登录 FTP 服务器。默认为 YES
ftp_username=ftp // 定义匿名用户的账户名称,默认值为 ftp。
no_anon_password=YES // 匿名用户登录时是否询问口令。设置为 YES,则不询问。默认 NO
anon_world_readable_only=YES // 匿名用户是否允许下载可阅读的文档,默认为 YES。
anon_upload_enable=YES // 是否允许匿名用户上传文件。只有在 write_enable 设置为 YES,该配置项才有效。而且匿名用户对相应的目录必须有写限。
anon_mkdir_write_enable=YES // 是否允许匿名用户创建目录。只有在 write_enable 设置为 YES 时有效。且匿名用户对上层目录有写入的权限。
anon_other_write_enable=NO // 若设置为 YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为 NO。

2.设置欢迎信息

用户登录 FTP 服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcome to my FTP server.
// 该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用 banner_file 配置项。
banner_file=/etc/vsftpd/banner
// 设置用户登录时,将要显示输出的文件。该设置项将覆盖 ftpd_banner 的设置。
dirmessage_enable=YES
// 设置是否显示目录消息。若设置为 YES,则当用户进入特定目录(比如 /var/ftp/linux)时,将显示该目录中的由 message_file 配置项指定的文件(.message)中的内容。
message_file=.message // 设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如 /var/ftp/linux)下

3.设置用户登录后所在的目录

local_root=/var/ftp
// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录 FTP 服务器后,所在的目录为该用户的主目录,对于 root 用户,则为 /root 目录。
anon_root=/var/ftp
// 设置匿名用户登录后所在的目录。若未指定,则默认为 /var/ftp 目录。

4.控制用户是否允许切换到上级目录

在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为 /var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录 /var,若继续执行该命令,则可进入 Linux 系统的根目录,从而可以对整个 Linux 的文件系统 进行操作。

若设置了 write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到 Linux 的根目录,相关的配置项如下:
chroot_list_enable=YES
// 设置是否启用 chroot_list_file 配置项指定的用户列表文件。设置为 YES 则除了列在 j /etc/vsftpd/chroot_list 文件中的的帐号外,所有登录的用户都可以进入 ftp 根目录之外的目录。默认 NO
chroot_list_file=/etc/vsftpd/chroot_list
// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到 FTP 站点根目录的上级目录。
chroot_local_user=YES
// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认 NO
注意:要对本地用户查看效果,需先设置 local_root=/var/ftp

具体情况有以下几种:
1)当 chroot_list_enable=YES,chroot_local_user=YES 时,在 /etc/vsftpd/chroot_list 文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当 chroot_list_enable=YES,chroot_local_user=NO 时,在 /etc/vsftpd/chroot_list 文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当 chroot_list_enable=NO,chroot_local_user=YES 时,所有用户均不能切换到上级目录。
4)当 chroot_list_enable=NO,chroot_local_user=NO 时,所有用户均可以切换到上级目录。
5)当用户不允许切换到上级目录时,登录后 FTP 站点的根目录“/”是该 FTP 账户的主目录,即文件的系统的 /var/ftp 目录。

5.设置访问控制

(1)设置允许或不允许访问的主机(见 TBP14)
tcp_wrappers=YES 用来设置 vsftpd 服务器是否与 tcp wrapper 相结合,进行主机的访问控制。默认设置为 YES,vsftpd 服务器会检查 /etc/hosts.allow 和 /etc /hosts.deny 中的设置,以决定请求连接的主机是否允许访问该 FTP 服务器。这两个文件可以起到简易的防火墙功能。
比如,若要仅允许 192.168.168.1~192.168.168.254 的用户,可以访问连接 vsftpd 服务器,则可在 /etc/hosts.allow 文件中添加以下内容:
vsftpd:192.168.168.0/255.255.255.0:allow
all:all:deny

(2)设置允许或不允许访问的用户
对用户的访问控制由 /etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers 文件来控制实现。相关配置命令如下:
userlist_enable=YES
// 决定 /etc/vsftpd/user_list 文件是否启用生效。YES 则生效,NO 不生效。
userlist_deny=YES
// 决定 /etc/vsftpd/user_list 文件中的用户是允许访问还是不允许访问。若设置为 YES,则 /etc/vsftpd/user_list 文件中的用户将不允许访问 FTP 服务器;若设置为 NO,则只有 vsftpd.user_list 文件中的用户,才能访问 FTP 服务器。

6.设置访问速度

anon_max_rate=0
// 设置匿名用户所能使用的最大传输速度,单位为 b /s。若设置为 0,则不受速度限制,此为默认值。
local_max_rate=0
// 设置本地用户所能使用的最大传输速度。默认为 0,不受限制。

7.定义用户配置文件

在 vsftpd 服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。
user_config_dir=/etc/vsftpd/userconf // 用于设置用户配置文件所在的目录。
设 置了该配置项后,当用户登录 FTP 服务器时,系统就会到 /etc/vsftpd/userconf 目录下读取与当前用户名相同的文件,并根据文件中的配置 命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义 local_max_rate 配置,以决定该用户允许的访问速度。

8.与连接相关的设置

listen=YES
// 设置 vsftpd 服务器是否以 standalone 模式运行。以 standalone 模式运行是一种较好的方式,此时 listen 必须设置为 YES,此为 默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为 NO,则 vsftpd 不是以独立的服务运行,要受 xinetd 服 务的管理控制,功能上会受限制。

max_clients=0
// 设置 vsftpd 允许的最大连接数,默认为 0,表示不受限制。若设置为 150 时,则同时允许有 150 个连接,超出的将拒绝建立连接。只有在以 standalone 模式运行时才有效。

max_per_ip=0
// 设置每个 IP 地址允许与 FTP 服务器同时建立连接的数目。默认为 0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以 standalone 模式运行时才有效。

listen_address=IP 地址
// 设置在指 定的 IP 地址上侦听用户的 FTP 请求。若不设置,则对服务器所绑定的所有 IP 地址进行侦听。只有在以 standalone 模式运行时才有效。对于只绑定了 一个 IP 地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个 IP 地址,则应通过该配置项,指定在哪个 IP 地址上 提供 FTP 服务,即指定 FTP 服务器所使用的 IP 地址。
注意:设置此值前后,可以通过 netstat -tnl 对比端口的监听情况

accept_timeout=60
// 设置建立被动(PASV)数据连接的超时时间,单位为秒,默认值为 60。
connect_timeout=60
// PORT 方式下建立数据连接的超时时间,单位为秒。
data_connection_timeout=300
// 设置建立 FTP 数据连接的超时时间,默认为 300 秒。

idle_session_timeout=600
// 设置多长时间不对 FTP 服务器进行任何操作,则断开该 FTP 连接,单位为秒,默认为 600 秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
pam_service_name=vsftpd
// 设置在 PAM 所使用的名称,默认值为 vsftpd。

setproctitle_enable=NO|YES
// 设置每个与 FTP 服务器的连接,是否以不同的进程表现出来,默认值为 NO,此时只有一个名为 vsftpd 的进程。若设置为 YES,则每个连接都会有一个 vsftpd 进程,使用“ps -ef|grep ftp”命令可查看到详细的 FTP 连接信息。安全起见,建议关闭。

9.FTP 工作方式与端口设置

(1)FTP 工作方式简介
FTP 的工作方式有两种,一种是 PORT FTP,另一种是 PASV FTP。下面介绍其工作方式。
二者的区别在于 PORT FTP 的数据传输端口是由 FTP 服务器指定的,而 PASV FTP 则是由 FTP 客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在 CuteFTP 等 FTP 客户端软件中,其连接类型设置项中有 PORT 和 PASV 两种选择。

当 FTP 服务器设置为 PASV 工作模式时,客户端也必须设置为 PASV 连接类型。若客户端连接类型设置为 PORT,则能建立 FTP 连接,但在执行 ls 或 get 等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

(2)与端口相关的配置
listen_port=21
// 设置 FTP 服务器建立连接所侦听的端口,默认值为 21。
连接非标准端口示例:ftp
www.sunflower.org 7000
connect_from_port_20=YES
// 默认值为 YES,指定 FTP 数据传输连接使用 20 端口。若设置为 NO,则进行数据连接时,所使用的端口由 ftp_data_port 指定。

ftp_data_port=20
// 设置 PORT 方式下 FTP 数据连接所使用的端口,默认值为 20。
pasv_enable=YES|NO
// 若设置为 YES,则使用 PASV 工作模式;若设置为 NO,使用 PORT 模式。默认为 YES,即使用 PASV 模式。
pasv_max_port=0
// 设置在 PASV 工作方式下,数据连接可以使用的端口范围的上界。默认值为 0,表示任意端口。
pasv_mim_port=0
// 设置在 PASV 工作方式下,数据连接可以使用的端口范围的下界。默认值为 0,表示任意端口。

10.设置传输模式

FTP 在传输数据时,可使用二进制(Binary)方式,也可使用 ASCII 模式来上传或下载数据。
ascii_download_enable=YES // 设置是否启用 ASCII 模式下载数据。默认为 NO。
ascii_upload_enable=YES // 设置是否启用 ASCII 模式上传数据。默认为 NO。

11.设置上传文档的所属关系和权限

(1)设置匿名上传文档的属主
chown_uploads=YES
// 用于设置是否改变匿名用户上传的文档的属主。默认为 NO。若设置为 YES,则匿名用户上传的文档的属主将被设置为 chown_username 配置项所设置的用户名。
chown_username=whoever
// 设置匿名用户上传的文档的属主名。只有 chown_uploads=YES 时才有效。建议不要设置为 root 用户。但系统默 root

(2)新增文档的权限设定
local_umask=022
// 设置本地用户新增文档的 umask,默认为 022,对应的权限为 755。umask 为 022,对应的二进制数为 000 010 010,将其取反为 111 101 101,转换成十进制数,即为权限值 755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022 适合于大多数情 况,一般不需要更改。若设置为 077,则对应的权限为 700。
anon_umask=022 // 设置匿名用户新增文档的 umask。默认 077
file_open_mode=0755 // 设置上传文档的权限。权限采用数字格式。默认 0666

12.日志文件

xferlog_enable=YES // 是否启用上传 / 下载日志记录。默认为 NO
xferlog_file=var/log/vsftpd.log // 设置日志文件名及路径。需启用 xferlog_enable 选项
xferlog_std_format=YES // 日志文件是否使用标准的 xferlog 日志文件格式(与 wu-ftpd 使用的格式相同)。默认为 NO

13.其他设置

text_userdb_names=NO
// 设置在执行 ls 命令时,是显示 UID、GID 还是显示出具体的用户名或组名称。默认为 NO,以 UID 和 GID 方式显示,若希望显示用户名和组名称,则设置为 YES。
ls_recurse_enable=YES
// 若设置为 YES,则允许执行“ls –R”这个命令,默认值为 NO。在配置文件中该配置项被注释掉了,与此类似的还有一些配置,需要启用时,将注释符去掉并进行 YES 或 NO 的设置即可

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-07/104451p2.htm

4. 匿名用户家目录的修改

有的时候我们并不想让匿名用户访问默认发布目录,而是让它访问我们另外设置的目录,要做如下修改:
(1)首先我们要创建新的默认发布目录,并且创建了 5 个文件:


(2)修改配置文件:


(3)但是我们发现它的安全上下文并不是 ftp 的,这样即使开放服务匿名用户也是看不到的,所以我们要修改他们的安全上下文:


看到这里并不能算结束,因为我们把 selinux 也打开了,所要还要查看 ftp 选项的布尔值,当它允许匿名登录时才可以:


重启服务看看效果:


显示的刚好就是我们传见的五个文件,说明此时 ftp 的匿名发布目录已经更改为了 /ftp/pub。

通知:

因为 ftp 的配置示例挺复杂的,分几个帖子讲解。但是我尽量会把示例讲的清楚,所有的示例运用自如的话,是可以满足企业的工作要求的。

1.ftp 简介

(1) 生活中的 ftp

在互联网中我们需要传输数据,尤其是要传输大型数据。有一个服务是要着重去介绍的:ftp。其实我们以前很早就接触它了。只是大家可能不怎么关注,迅雷的基本模型就是 ftp,不过是要高级的多。
事实上 ftp 应该是一种传输协议,之前它采用的是明文传输,如果在复杂的网络环境这样使用的话是非常危险的。为了更安全的使用这个协议,现在我们要采取更安全的软件 vsftpd 来提供服务。

(2)ftp 的功能介绍

1. 它有着不同等级的用户身份: 服务器本地用户;访客;匿名用户
2. 命令记录与日志记录;
3. 限制用户的家目录;

以上三点将会在我们接下来的实验中体现出来,总之是一个宗旨:我们的服务器功能尽量单一,给客户提供功能的同时要保证服务器的安全。

(3)ftp 的工作流程

首先我们要知道 ftp 使用的协议是 TCP 协议,因为大型数据的传输是要建立起稳定的链接的。ftp 的服务器使用两个链接,分别是 命令管道和数据管道 ,这样做是非常正确的,因为即使是在计算机的操作系统上也是把代码段和数据段分开的,这会非常的高效。

命令管道端口:21
数据传输端口:20

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

vsftpd 的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

2.ftp 服务器的搭建

(1)首先我们来看看 ftp 服务器的安装包:
Linux 入门教程:ftp 的企业应用级的配置

安装完了之后我们要清楚两个东西:

1.ftp 服务器的配置文件目录:/etc/vsftpd
2.ftp 服务器的默认发布目录: /var/ftp/pub (这个是可以修改的)

(2)这次我们要体现 ftp 服务器配置的安全意识,所以把 selinux 打开,修改配置文件/etc/sysconfig/selinux :
Linux 入门教程:ftp 的企业应用级的配置

(3)我们直接开启服务看看能够提供什么功能��
Linux 入门教程:ftp 的企业应用级的配置

另外一台客户机去访问该服务器:
Linux 入门教程:ftp 的企业应用级的配置

访问是不被允许的,难道是我们服务器的防火墙没有刷:
Linux 入门教程:ftp 的企业应用级的配置

再次访问试试:
Linux 入门教程:ftp 的企业应用级的配置

这次就可以登录了,遇到这种问题一般是火墙没有刷掉。关于服务器所开放的功能,我们要去看看 vsftpd 的配置文件 vsftpd.conf。但是大家要注意的是:我们刚刚使用的是匿名用户登录,这其实是不太好的。如果每个人都可以去下载你的数据,带宽很容易被耗尽,最关键的是太不安全。所以一般情况下我们是不会开放匿名用户登录的,这里是为了实验。

Linux 入门教程:ftp 的企业应用级的配置
这个是配置文件的一部分,我们要配置一定的服务就是要设置这些关键字的值,例如 12 行的 anonymous_enable = YES 就是代表所有人都可以访问 ftp。

ftp 的配置文件比较复杂(这个是列举网友总结下来的):

1.登录和对匿名用户的设置

write_enable=YES // 是否对登录用户开启写权限。属全局性设置。默认 NO
local_enable=YES // 是否允许本地用户登录 FTP 服务器。默认为 NO
anonymous_enable=YES // 设置是否允许匿名用户登录 FTP 服务器。默认为 YES
ftp_username=ftp // 定义匿名用户的账户名称,默认值为 ftp。
no_anon_password=YES // 匿名用户登录时是否询问口令。设置为 YES,则不询问。默认 NO
anon_world_readable_only=YES // 匿名用户是否允许下载可阅读的文档,默认为 YES。
anon_upload_enable=YES // 是否允许匿名用户上传文件。只有在 write_enable 设置为 YES,该配置项才有效。而且匿名用户对相应的目录必须有写限。
anon_mkdir_write_enable=YES // 是否允许匿名用户创建目录。只有在 write_enable 设置为 YES 时有效。且匿名用户对上层目录有写入的权限。
anon_other_write_enable=NO // 若设置为 YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为 NO。

2.设置欢迎信息

用户登录 FTP 服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcome to my FTP server.
// 该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用 banner_file 配置项。
banner_file=/etc/vsftpd/banner
// 设置用户登录时,将要显示输出的文件。该设置项将覆盖 ftpd_banner 的设置。
dirmessage_enable=YES
// 设置是否显示目录消息。若设置为 YES,则当用户进入特定目录(比如 /var/ftp/linux)时,将显示该目录中的由 message_file 配置项指定的文件(.message)中的内容。
message_file=.message // 设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如 /var/ftp/linux)下

3.设置用户登录后所在的目录

local_root=/var/ftp
// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录 FTP 服务器后,所在的目录为该用户的主目录,对于 root 用户,则为 /root 目录。
anon_root=/var/ftp
// 设置匿名用户登录后所在的目录。若未指定,则默认为 /var/ftp 目录。

4.控制用户是否允许切换到上级目录

在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为 /var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录 /var,若继续执行该命令,则可进入 Linux 系统的根目录,从而可以对整个 Linux 的文件系统 进行操作。

若设置了 write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到 Linux 的根目录,相关的配置项如下:
chroot_list_enable=YES
// 设置是否启用 chroot_list_file 配置项指定的用户列表文件。设置为 YES 则除了列在 j /etc/vsftpd/chroot_list 文件中的的帐号外,所有登录的用户都可以进入 ftp 根目录之外的目录。默认 NO
chroot_list_file=/etc/vsftpd/chroot_list
// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到 FTP 站点根目录的上级目录。
chroot_local_user=YES
// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认 NO
注意:要对本地用户查看效果,需先设置 local_root=/var/ftp

具体情况有以下几种:
1)当 chroot_list_enable=YES,chroot_local_user=YES 时,在 /etc/vsftpd/chroot_list 文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当 chroot_list_enable=YES,chroot_local_user=NO 时,在 /etc/vsftpd/chroot_list 文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当 chroot_list_enable=NO,chroot_local_user=YES 时,所有用户均不能切换到上级目录。
4)当 chroot_list_enable=NO,chroot_local_user=NO 时,所有用户均可以切换到上级目录。
5)当用户不允许切换到上级目录时,登录后 FTP 站点的根目录“/”是该 FTP 账户的主目录,即文件的系统的 /var/ftp 目录。

5.设置访问控制

(1)设置允许或不允许访问的主机(见 TBP14)
tcp_wrappers=YES 用来设置 vsftpd 服务器是否与 tcp wrapper 相结合,进行主机的访问控制。默认设置为 YES,vsftpd 服务器会检查 /etc/hosts.allow 和 /etc /hosts.deny 中的设置,以决定请求连接的主机是否允许访问该 FTP 服务器。这两个文件可以起到简易的防火墙功能。
比如,若要仅允许 192.168.168.1~192.168.168.254 的用户,可以访问连接 vsftpd 服务器,则可在 /etc/hosts.allow 文件中添加以下内容:
vsftpd:192.168.168.0/255.255.255.0:allow
all:all:deny

(2)设置允许或不允许访问的用户
对用户的访问控制由 /etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers 文件来控制实现。相关配置命令如下:
userlist_enable=YES
// 决定 /etc/vsftpd/user_list 文件是否启用生效。YES 则生效,NO 不生效。
userlist_deny=YES
// 决定 /etc/vsftpd/user_list 文件中的用户是允许访问还是不允许访问。若设置为 YES,则 /etc/vsftpd/user_list 文件中的用户将不允许访问 FTP 服务器;若设置为 NO,则只有 vsftpd.user_list 文件中的用户,才能访问 FTP 服务器。

6.设置访问速度

anon_max_rate=0
// 设置匿名用户所能使用的最大传输速度,单位为 b /s。若设置为 0,则不受速度限制,此为默认值。
local_max_rate=0
// 设置本地用户所能使用的最大传输速度。默认为 0,不受限制。

7.定义用户配置文件

在 vsftpd 服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。
user_config_dir=/etc/vsftpd/userconf // 用于设置用户配置文件所在的目录。
设 置了该配置项后,当用户登录 FTP 服务器时,系统就会到 /etc/vsftpd/userconf 目录下读取与当前用户名相同的文件,并根据文件中的配置 命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义 local_max_rate 配置,以决定该用户允许的访问速度。

8.与连接相关的设置

listen=YES
// 设置 vsftpd 服务器是否以 standalone 模式运行。以 standalone 模式运行是一种较好的方式,此时 listen 必须设置为 YES,此为 默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为 NO,则 vsftpd 不是以独立的服务运行,要受 xinetd 服 务的管理控制,功能上会受限制。

max_clients=0
// 设置 vsftpd 允许的最大连接数,默认为 0,表示不受限制。若设置为 150 时,则同时允许有 150 个连接,超出的将拒绝建立连接。只有在以 standalone 模式运行时才有效。

max_per_ip=0
// 设置每个 IP 地址允许与 FTP 服务器同时建立连接的数目。默认为 0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以 standalone 模式运行时才有效。

listen_address=IP 地址
// 设置在指 定的 IP 地址上侦听用户的 FTP 请求。若不设置,则对服务器所绑定的所有 IP 地址进行侦听。只有在以 standalone 模式运行时才有效。对于只绑定了 一个 IP 地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个 IP 地址,则应通过该配置项,指定在哪个 IP 地址上 提供 FTP 服务,即指定 FTP 服务器所使用的 IP 地址。
注意:设置此值前后,可以通过 netstat -tnl 对比端口的监听情况

accept_timeout=60
// 设置建立被动(PASV)数据连接的超时时间,单位为秒,默认值为 60。
connect_timeout=60
// PORT 方式下建立数据连接的超时时间,单位为秒。
data_connection_timeout=300
// 设置建立 FTP 数据连接的超时时间,默认为 300 秒。

idle_session_timeout=600
// 设置多长时间不对 FTP 服务器进行任何操作,则断开该 FTP 连接,单位为秒,默认为 600 秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
pam_service_name=vsftpd
// 设置在 PAM 所使用的名称,默认值为 vsftpd。

setproctitle_enable=NO|YES
// 设置每个与 FTP 服务器的连接,是否以不同的进程表现出来,默认值为 NO,此时只有一个名为 vsftpd 的进程。若设置为 YES,则每个连接都会有一个 vsftpd 进程,使用“ps -ef|grep ftp”命令可查看到详细的 FTP 连接信息。安全起见,建议关闭。

9.FTP 工作方式与端口设置

(1)FTP 工作方式简介
FTP 的工作方式有两种,一种是 PORT FTP,另一种是 PASV FTP。下面介绍其工作方式。
二者的区别在于 PORT FTP 的数据传输端口是由 FTP 服务器指定的,而 PASV FTP 则是由 FTP 客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在 CuteFTP 等 FTP 客户端软件中,其连接类型设置项中有 PORT 和 PASV 两种选择。

当 FTP 服务器设置为 PASV 工作模式时,客户端也必须设置为 PASV 连接类型。若客户端连接类型设置为 PORT,则能建立 FTP 连接,但在执行 ls 或 get 等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

(2)与端口相关的配置
listen_port=21
// 设置 FTP 服务器建立连接所侦听的端口,默认值为 21。
连接非标准端口示例:ftp
www.sunflower.org 7000
connect_from_port_20=YES
// 默认值为 YES,指定 FTP 数据传输连接使用 20 端口。若设置为 NO,则进行数据连接时,所使用的端口由 ftp_data_port 指定。

ftp_data_port=20
// 设置 PORT 方式下 FTP 数据连接所使用的端口,默认值为 20。
pasv_enable=YES|NO
// 若设置为 YES,则使用 PASV 工作模式;若设置为 NO,使用 PORT 模式。默认为 YES,即使用 PASV 模式。
pasv_max_port=0
// 设置在 PASV 工作方式下,数据连接可以使用的端口范围的上界。默认值为 0,表示任意端口。
pasv_mim_port=0
// 设置在 PASV 工作方式下,数据连接可以使用的端口范围的下界。默认值为 0,表示任意端口。

10.设置传输模式

FTP 在传输数据时,可使用二进制(Binary)方式,也可使用 ASCII 模式来上传或下载数据。
ascii_download_enable=YES // 设置是否启用 ASCII 模式下载数据。默认为 NO。
ascii_upload_enable=YES // 设置是否启用 ASCII 模式上传数据。默认为 NO。

11.设置上传文档的所属关系和权限

(1)设置匿名上传文档的属主
chown_uploads=YES
// 用于设置是否改变匿名用户上传的文档的属主。默认为 NO。若设置为 YES,则匿名用户上传的文档的属主将被设置为 chown_username 配置项所设置的用户名。
chown_username=whoever
// 设置匿名用户上传的文档的属主名。只有 chown_uploads=YES 时才有效。建议不要设置为 root 用户。但系统默 root

(2)新增文档的权限设定
local_umask=022
// 设置本地用户新增文档的 umask,默认为 022,对应的权限为 755。umask 为 022,对应的二进制数为 000 010 010,将其取反为 111 101 101,转换成十进制数,即为权限值 755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022 适合于大多数情 况,一般不需要更改。若设置为 077,则对应的权限为 700。
anon_umask=022 // 设置匿名用户新增文档的 umask。默认 077
file_open_mode=0755 // 设置上传文档的权限。权限采用数字格式。默认 0666

12.日志文件

xferlog_enable=YES // 是否启用上传 / 下载日志记录。默认为 NO
xferlog_file=var/log/vsftpd.log // 设置日志文件名及路径。需启用 xferlog_enable 选项
xferlog_std_format=YES // 日志文件是否使用标准的 xferlog 日志文件格式(与 wu-ftpd 使用的格式相同)。默认为 NO

13.其他设置

text_userdb_names=NO
// 设置在执行 ls 命令时,是显示 UID、GID 还是显示出具体的用户名或组名称。默认为 NO,以 UID 和 GID 方式显示,若希望显示用户名和组名称,则设置为 YES。
ls_recurse_enable=YES
// 若设置为 YES,则允许执行“ls –R”这个命令,默认值为 NO。在配置文件中该配置项被注释掉了,与此类似的还有一些配置,需要启用时,将注释符去掉并进行 YES 或 NO 的设置即可

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-07/104451p2.htm

上篇最后我们讲到了匿名用户家目录的修改,今天来看看匿名用户还可以做什么操作。

1. 匿名用户创建和删除目录

其实所有的功能都是上篇所列举的那些参数所控制的,通常大家在记不清的时候都可以查看 man 手册(man vsftpd.conf),里面列举了所有可以修改的参数。关于匿名用户创建和删除目录的参数如下所示:

把这两个参数设置为 YES,匿名用户就可已创建目录了,记得每次修改完配置文件都要重新启动 /etc/init.d/vsftpd 服务。

发现还是无法创建,怎么回事?其实我们考虑问题一定要全面。虽然配置文件修改了,但是查看默认发布目录可发现目录对于匿名用户没有写的权限,而且上图的错误提示也已经告诉了我们,所以我们还要更改目录的权限再重启服务。

这里我们不仅要修改目录的权限,还要修改目录的安全上下文,如果有疑惑来看看以前的安全上下文是 public_content_t,并没有写的权限,所以我们要对它进行修改。

此时匿名用户就可以创建目录了,但是现实中我们一定要慎重选择这个选项。

既然可以传见目录,那我们也可以让匿名用户上传和下载文件,修改配置文件:

然后我们发现匿名用户就可以上传文件了。。

然后我们来删除文件:

这样看来基本功能似乎都有了,我们来进行一些细节的讨论。大家在用迅雷下载东西的时候有时候会发现速度总是快不起来。但事实上你的带宽非常的大,所以很有可能是服务器端对匿名用户的上传下载速度做了限制。今天我们来看看对上传的限制:

我们先来看看修改之前的速度,对比起来会非常明细:

速度非常的快,来不及截图,基本是 30M 每秒。然后我们来限制匿名用户的上传速度:

修改配置文件(这个速度的单位是 KB):

Linux 入门教程:ftp 的企业应用级的配置
发现速度确实变慢了,才 10K 每秒,呵呵。这样别人带宽再快也会像蜗牛一样下载东西了。2. 本地用户设置

上面的配置是针对匿名用户进行的,通常我们也要对本地用户进行限制,首先把之前所有的配置恢复原样。

以服务器的本地用户 test 为例登录:

此刻它进入的是 test 的家目录,我们可以对本地用户的默认发布目录进行修改.

再次登录试试:

此刻就进入了 /var/ftp 目录了,并且也可以进行上传和下载:

小结:

上述两个帖子分别设置了匿名用户和本地用户的登录及操作,但是这些功能还是不够全面。下节将会介绍黑名单和白名单,以及内网用户和外网用户访问 ftp 时的一些限制。下次再说。这次我们来讲解黑名单,白名单以及内网和外网的 ftp 的访问的不同设置。

1. 黑名单
有的时候我们不想让某些本地用户登录,这个时候就要设置黑名单了,它在 /etc/vsftpd 下:

如何添加一个用户到黑名单:

(1)首先我们把一个用户(westos)添加到 ftpusers:
Linux 入门教程:ftp 的企业应用级的配置
重启服务(并且刷掉火墙)后看是否可以登录:
Linux 入门教程:ftp 的企业应用级的配置
Linux 入门教程:ftp 的企业应用级的配置
westos 登录需要输入密码,但是不能登录,此刻为黑名单。

(2)我们在把 westos 添加到 user_list 中看看:

看到上面的那个提示了么,当 userlist_deny=NO 时,只允许写入的用户登录 ftp,即为白名单,当它的值为 YES 的时候,永远不允许写入的用户登录 ftp,即为黑名单。系统默认为 YES,我们等会儿会进行修改。

再次启动服务,然后查看是否可以登录:

依然是无法登录,看来 westos 真的是添加到了黑名单中了。

接下来我们尝试白名单,按照刚才所说,要修改配置文件 vsftpd.conf:

此刻就可以登录成功了。

2. 内网访问和外网访问:

对于 ftp 服务,有的时候我们既想对内部人员开放,又想对外部人员开放,并且希望他们的权限是不一样的。这样才更符合实际应用,接下来我们要考虑这些问题:

(1)首先是对于内网和外网要有不同的网卡:

添加另外一块网卡:

配置两块网卡对应的配置文件,其中我们把 eth1 对应的网为外网:

vsftpd.conf;
Linux 入门教程:ftp 的企业应用级的配置
vsftpd1.conf:

为了安全期见我们不能让用户更改目录,这样做是很好的。既然我们提供的 ftp 服务,那么用户就只能访问 ftp 所提供的目录,如果可以任意跳转到系统的其他目录会非常的危险。我们要设置配置文件:

3. 虚拟用户

什么是虚拟用户,对于外网的用户,它当然不知道我们服务器上的本地用户有什么,如果是以前的配置,显然就不能让外网的人员访问 ftp 服务。所以我们为他们设置了虚拟用户。

在 vsftpd 目录下添加虚拟用户:

Linux 入门教程:ftp 的企业应用级的配置

虚拟用户分别为 user1 和 user2,密码都是 123.

生成 hash 加密文件

在 /etc/pam.d 目录下生成密码检测文件 ftpps:

上面是密码检测,下面是用户名检测:

给外部用户登录时的检测:

允许匿名用户登录:

前面的权限和虚拟用户以及密码设置完后,我们先看看服务是否能够打开:

创建虚拟用户的访问目录:

我们的 selinux 开启,仔细看看安全上下文是不对的,要进行修改:

然后我们修改配置文件:

创建权限目录:/etc/vsftpd/config,
在其下创建文件 user1。

user1 的权限:

修改 user1 所在默认发布目录的上下文:

重启服务:

然后就可以用虚拟用户 user1 登录,进入服务之后服务器让它以 westos 的什么运行,但是却具有 user1 的权限。类似了还可以 user2 的身份及权限登录。这样就大大的增强了 ftp 服务的功能。

总结:

最后这个讲得有些复杂,希望大家多多练习。我也得再温习一下了。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计17557字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7982316
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...