企尚网络论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1920|回复: 6

Centos vsftpd 安装使用

  [复制链接]

182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
发表于 2016-4-21 11:46:54 | 显示全部楼层 |阅读模式

FTP最初在4.2BSD中实现,它在Linux的快速传播中起到了关键的作用,这个协议/程序经常用来发布自由软件。术语FTP站点(FTP site)指的是连接到网络(通常是Internet)上的FTP服务器。FTP公开站点允许匿名用户登录和下载软件和文档。相反,私有FTP站点需要用户提供用户名和口令才能登录。有些站点允许用户上传程序。

ftp和vsftpd

尽管大多数FTP客户端比较类似,但是各种FTP服务器之间的差别却比较大。本章在描述ftp客户端时参考的是sftp,它是一种安全的FTP客户端。本章还将涵盖FTP服务器vsftpd(very secure FTP,非常安全的FTP),它在Red Hat内部使用,并作为它的发行版的一部分提供给用户使用。

安全

FTP并不是一种安全的协议。在建立FTP连接过程中交换的所有用户名和口令数据都是以明文形式发送,在FTP连接上交换的数据并未经过加密,而且连接容易受到劫持攻击。FTP最好用于下载公开文件。在大多数情况下,OpenSSH客户端(ssh、scp和sftp)均能够作为FTP的安全替代品。

安全:仅使用FTP下载公开信息

FTP并不安全。除不允许匿名用户下载信息外,可以使用scp来完成绝大多数FTP功能。因为scp使用加密连接,所以用户口令和数据不可能遭到窃听。有关scp的更多信息,请参见1.3.5节。

vsftpd服务器不能让用户名、口令、数据和连接更加安全。vsftpd服务器的安全性体现在,恶意用户直接攻击运行该服务器的系统的难度更大,即使vsftpd实现得比较糟糕。使vsftpd比ftpd更加安全的一个特征是:vsftpd不是以root特权身份运行的。还可以参见2.4.2节的"安全"部分。

实用工具ftp

实用工具ftp是文件传输协议(File Transfer Protocol,FTP)的用户界面,这套标准协议用来在可通过网络进行通信的系统之间传输文件。

实用工具sftp

sftp属于OpenSSH套件的一部分,它是ftp的安全替代品。要了解更多信息请参见1.3.6节。

FTP连接

FTP使用两个连接:一个连接用于控制(在登录到FTP服务器时建立该连接),一个连接用于数据传输(当要求FTP传输文件时建立该连接)。默认情况下,FTP服务器在端口21上监听入站连接,并处理用户身份验证和文件交换。

被动连接和主动连接

客户端可以要求FTP服务器建立一条PASV(passive,被动,默认值)连接或PORT(active,主动)连接用于数据传输。有些服务器只限于使用一种类型的连接。被动FTP连接和主动FTP连接的区别在于是由客户端还是服务器发起数据连接。在被动模式中,客户端发起到服务器的连接(默认是在端口20上);而在主动模式中,服务器发起连接(不存在默认端口,有关决定使用哪些端口的参数,请参见2.4.5节的"连接参数"部分)。本质上,两种方式的安全性没有任何差别。被动连接更常用,这是因为位于NAT 后面的客户端能够连接到被动服务器,并且编程实现一个可扩展的被动服务器要更加简单一些。

182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:54:32 | 显示全部楼层
vsftpd.conf:vsftpd配置文件(1)

vsftpd的配置文件/etc/vsftpd/vsftpd.conf列出了布尔、数值和字符串类型的"名称-值"对形式的配置参数,它们被称为指令。每一个"名称-值"对通过等号连接起来,等号两边没有空格。Red Hat Linux提供了一份注释翔实的配置文件/etc/vsftpd/vsftpd.conf,它能够改变很多编译内置默认值。本节讨论大多数选项,请留意它们的默认值以及Red Hat Linux提供的vsftpd.conf文件中指定的值。

布尔类型选项的值为YES或NO,数值类型选项的值为非负整数。八进制数(用来设置umask选项)必须以0(零)开头。如果起始处没有零的话,就会被视为十进制数字。下面是vsftpd.conf中设置每种选项类型的示例:

anonymous_enable=YES
local_umask=022
xferlog_file=/var/log/vsftpd.log

指令的描述划分为以下几组:

独立模式;

登录;

工作目录和chroot监牢;

文件下载与上传;

消息;

显示;

日志;

连接参数。

1. 独立模式

有关普通模式和独立模式的讨论,请参见2.4.2节。本节将描述影响独立模式的参数。

listen

若设置为YES,则会使vsftpd在独立模式下运行;而若设置为NO,则会使其在普通模式下运行。

默认值为:NO

Red Hat:YES

listen_address

在独立模式下,指定vsftpd用来监听入站连接请求的那个本地接口的IP地址。如果没有设置,vsftpd则使用默认的网络接口。

默认值:无

listen_port

在独立模式下,指定vsftpd用来监听入站连接请求的端口。

默认值:21

max_clients

在独立模式下,指定客户端的最大数目。零(0)表示客户端数目不受限制。

默认值:0

max_per_ip

在独立模式下,指定来自同一个IP地址的客户端最大数目。零(0)表示来自同一个IP地址的客户端数目不受限制。

默认值:0

2. 登录

共有3类用户能够登录到vsftpd服务器:匿名、本地和来宾(guest)。来宾用户很少用到,本章不予讨论。本地用户使用自己的系统用户名和口令登录。匿名用户使用anonymous或ftp登录,将自己的电子邮件地址作为口令。你可以控制各类用户能否登录服务器,以及登录之后能够执行哪些操作。还可以针对每个用户指定该用户能够做些什么,请参见下面的"其他"部分中的user_config_dir。

本地用户

userlist_enable

文件/etc/vsftpd/user_list或者由userlist_file指定的另一个文件含有一个由零个或者多个用户构成的列表。若设置为YES,服务器就会查询这个列表,并根据userlist_deny采取行动,要么授权列表中的用户登录服务器,要么拒绝列表中的用户登录。为了防止明文口令传输,在用户输入用户名之后立刻拒绝访问。如果设置为NO,服务器就不会咨询这个列表。要想增强系统的安全性,则将其设置为NO。

默认值:NO

Red Hat:YES

userlist_deny

若设置为YES,则阻止/etc/vsftpd/user_list中所列的用户登录服务器。若设置为NO,则只允许/etc/vsftpd/user_list所列用户登录服务器。使用userlist_file来改变这个参数所查询文件的文件名。只有当userlist_enable设置为YES时,才会检查这个参数。

默认值:YES

userlist_file

当userlist_enable设置为YES时所查询文件的文件名。

默认值:/etc/vsftpd/user_list

local_enable

若设置为YES,则允许本地用户(/etc/passwd列出的用户)登录服务器。

默认值:NO

Red Hat:YES

匿名用户

anonymous_enable

若设置为YES,则允许匿名用户登录。

默认值:YES

no_anon_password

若设置为YES,则跳过匿名用户的口令输入。

默认值:NO

deny_email_enable

若设置为YES,则检查匿名用户输入的口令(邮件地址)是否列在/etc/vsftpd/banned_emails中或者由banned_email_file指定的其他文件中。如果是的话,就不允许该用户登录系统。若设置为NO,则不进行此项检查。使用iptables来屏蔽特定主机要比使用这个参数更加有效。

默认值:NO

banned_email_file

在deny_email_enable设置为YES时所查询文件的名称。

默认值:/etc/vsftpd/banned_emails


182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:56:40 | 显示全部楼层

vsftpd.conf:vsftpd配置文件(2)

3. 工作目录和chroot监牢

当用户登录到vsftpd服务器上时,标准文件系统访问权限控制着用户能够访问哪些目录和文件以及如何访问这些目录和文件。有3个参数可以控制登录到vsftpd服务器的用户:

用户ID(UID);

初始工作目录;

根目录。

默认情况下,vsftpd服务器将本地用户的用户ID设置为该用户的用户名,将匿名用户的用户ID设置为ftp。本地用户从他的主目录开始,匿名用户从/var/ftp开始。

默认情况下,出于安全考虑,匿名用户被放置到一个chroot监牢中,本地用户则不会。举例来说,当某个匿名用户登录到vsftpd服务器时,他的主目录是/var/ftp。但是这个用户能够看到的是他的主目录为/。该用户看到的目录/var/ftp/upload为/upload。该用户看不到也无法处理(举例来说)/home、/usr/local或/tmp等目录。该用户位于chroot监牢中。更多信息请参见《基础篇》11.6.4节。

可以使用选项chroot_local_user,将每个本地用户放置到chroot监牢中,其根为该用户的主目录。可以使用chroot_list_enable将选中的本地用户放入到chroot监牢中。

chroot_list_enable

用户登录之后,若这个值设置为YES,则检查本地用户是否列在文件/etc/vsftpd/chroot_ list中或者由chroot_list_file指定的另一个文件中。

当该用户位于这个列表中,并且将chroot_local_user设置为NO时,该用户将被放入到以他的主目录为根的chroot监牢中。只有列在/etc/vsftpd/chroot_list中的用户才会被放入到chroot监牢中。

如果该用户位于这个列表中,并且chroot_local_user设置为YES,那么该用户就不会放入到chroot监牢中。未列在/etc/vsftpd/chroot_list中的用户将会被放入到chroot监牢中。

默认值:NO

chroot_local_user

参见chroot_list_enable。对于较为开放的系统而言,设置为NO,但是在向系统中添加用户时,记得要根据需要向chroot_list_file中添加这些新用户。要想增强系统安全性,请将其设置为YES。新用户会自动受到限制,除非将其添加到chroot_list_file文件中。

默认值:NO

chroot_list_file

当chroot_list_enable设置为YES时,它为所查询的文件的文件名。

默认值:/etc/vsftpd/chroot_list

passwd_chroot_enable

若设置为YES,则能够改变chroot监牢(chroot_list_enable和chroot_local_user设置强加到本地用户)的位置。

对于/etc/passwd中的用户,可以在主目录字符串中包含"/./",可以将chroot监牢的位置在目录结构中向上移动。这里的修改并不会影响到标准的系统登录,如同命令"cd ."不会对工作目录产生影响一样。

例如,修改/etc/passwd中Sam的主目录字段,将其由/home/sam改为/home/./sam,就可以让Sam在使用vsftpd登录之后通过cd命令进入/home。在授予适当的访问权限之后,Sam就能够查看文件,并且可能与另一位用户进行协作。

默认值:NO

secure_chroot_dir

用户ftp不能写入的空目录的名称。如果用户不需要访问文件系统,那么vsftpd服务器将这个目录用作安全的chroot监牢。

默认值:/usr/share/empty

local_root

当本地用户登录到服务器之后,这个目录就变成用户的工作目录。如果指定目录不存在的话,不会给出错误结果。

默认值:无

182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:57:31 | 显示全部楼层

 vsftpd.conf:vsftpd配置文件(3)

4. 文件下载与上传

默认情况下,任何用户(不管是本地用户还是匿名用户)都能够从vsftpd服务器上下载文件(假设拥有适当的文件系统访问权限)。必须将write_enable从NO(默认值)修改为YES,才能允许本地用户上传文件。默认情况下,local_umask被设置为022,上传文件的访问权限为644。

安全

允许本地用户上传文件会引入安全漏洞,相关信息请参见2.4.2节的"安全"部分。

下面的操作设置vsftpd,以允许匿名用户上传文件。

(1) 将write_enable设置为YES。

(2) 在目录/var/ftp下面建立一个子目录,让匿名用户能够写入但是不能读取(模式333)。不希望恶意用户看见、下载、修改和上传原来由另一位匿名用户所上传的文件。下面的命令创建目录/var/ftp/uploads,任何人都能够写入这个目录,但是不能读取。

# mkdir /var/ftp/uploads
# chmod 333 /var/ftp/uploads

出于安全方面的考虑,如果匿名用户(ftp)能够写入/var/ftp,那么vsftpd会阻止匿名连接。

(3) 将anon_upload_enable设置为YES。

(4) 查看本节中的其他选项。

本地用户的下载和上传

local_umask

本地用户的umask设置。

默认值:077

Red Hat:022

file_open_mode

本地用户的上传文件权限。这个值应用于umask命令。改为0777会让上传文件可执行。

默认值:0666

write_enable

若设置为YES,则允许用户创建和删除文件以及目录(假设有适当的文件系统访问权限)。若设置为NO,则阻止用户修改文件系统。

默认值:NO

Red Hat:YES

匿名用户

anon_mkdir_write_enable

若设置为YES,则当"write_enable=YES"且匿名用户有权写入父目录时,允许匿名用户创建新目录。

默认值:NO

anon_other_write_enable

若设置为YES,则匿名用户不仅具有写入权限,还具有anon_mkdir_write_enable和anon_upload_enable授予的权限。比如,若设置为YES,则允许匿名用户删除和重命名文件(假设拥有写入父目录的权限)。不推荐对安全站点使用这样的设置。

默认值:NO

anon_root

在匿名用户登录到服务器上去之后,这个目录就成为该用户的工作目录。如果指定目录不存在,则不会返回错误结果。

默认值:无

anon_umask

匿名用户的umask设置。默认设置只让匿名用户访问由匿名用户上传的文件。如果设置为022,则任何人都能够读取这些文件。

默认值:077

anon_upload_enable

若设置为YES,则当"write_enable=YES"并且匿名用户有写入该目录的权限时,允许匿名用户上传文件。

默认值:NO

anon_world_readable_only

若设置为YES,则将用户能够下载的文件限制为文件所有者、文件相关联的组的成员以及其他用户能够读取的文件。允许一个匿名用户下载另一个匿名用户上传的文件可能并不是想要的结果。如果将这个参数设置为YES,则可以避免这种情形。

默认值:YES

ascii_download_enable

若设置为YES,则允许用户使用ASCII模式下载文件。将这个参数设置为YES,会构成安全威胁。

默认值:NO

ascii_upload_enable

若设置为YES,则允许用户使用ASCII模式上传文件。

默认值:NO

chown_uploads

若设置为YES,则导致匿名用户上传的文件的所有者为root(或者chown_username指定的另一个用户)。

默认值:NO

chown_username

参见chown_uploads。

默认值:root

ftp_username

匿名用户的用户名。

默认值:ftp

nopriv_user

具有最小特权的用户(由vsftpd使用)的用户名。为了增强安全性,考虑到其他程序会使用nobody,应将nobody替换成专用用户的用户名,比如ftp。

默认值:nobody


182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:58:16 | 显示全部楼层

vsftpd.conf:vsftpd配置文件(4)

5. 消息

可以将标准问候语(当用户登录系统时vsftpd显示的消息)替换掉(banner_file和ftpd_banner)。还可以在用户每次进入目录时显示一条消息(dirmessage_enable和message_file)。如果设置dirmessage_enable=YES,则每次用户使用cd进入目录时,vsftpd都会显示这个目录中.message文件(或由message_file指定的其他文件)的内容。

dirmessage_enable

若设置为YES,则当ftp用户通过输入cd命令进入一个新的目录时,会显示.message或由message_file指定的另一个文件。

默认值:NO

Red Hat:YES

message_file

参见dirmessage_enable。

默认值:.message

banner_file

它是一个文件的绝对路径名,当用户连接到服务器上时会显示该文件的内容。它可覆盖ftpd_banner。

默认值:无

ftpd_banner

这个字符串可将标准的vsftpd问候语(当用户连接到服务器时显示)覆盖。

默认值:none。使用标准的vsftpd问候语。

6. 显示

本节将描述一些参数,它们通过控制vsftpd如何显示信息,能够提高安全性和性能。

hide_ids

若设置为YES,则可在目录列表信息中将所有用户和组信息显示为ftp。若设置为NO,则会列出真实的所有者。

默认值:NO

setproctitle_enable

若设置为NO,则会使ps将运行vsftpd的进程显示为vsftpd。若设置为YES,则会使ps显示vsftpd正在执行的动作(诸如上传之类)。若设置为NO,则能够增强系统的安全性。

默认值:NO

text_userdb_names

若设置为NO,则通过在目录列表信息中显示数字UID和GID来提高性能。若设置为YES,则显示名称。

默认值:NO

use_localtime

若设置为NO,则会使ls、mls和modtime等FTP命令显示UTC。若设置为YES,则会使这些命令显示本地时间。

默认值:NO

ls_recurse_enable

若设置为YES,则允许用户输入"ls -R"命令。将这个参数设置为YES,可能会导致安全风险,这是因为在大型目录层次中的顶层使用"ls -R"命令可能会消耗大量系统资源。

默认值:NO


182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:58:42 | 显示全部楼层

vsftpd.conf:vsftpd配置文件(5)

7. 日志

默认情况下,日志功能被关闭。但Red Hat Linux发布的vsftpd.conf文件会将其开启。本节描述的是控制日志细节和位置的参数。

log_ftp_protocol

若设置为YES,则可以记录FTP请求和响应(假设xferlog_std_format设置为NO)。

默认值:NO

xferlog_enable

若设置为YES,则在/var/log/vsftpd.log中(或者由xferlog_file指定的另一个文件)维护传输日志。若设置为NO,则不建立日志。

默认值:NO

Red Hat:YES

xferlog_std_format

若设置为YES,则只要对xferlog_file进行了显式设置,就按照标准的xferlog格式(wu-ftpd所用的格式)写入传输日志(没有涵盖连接信息)。默认的vsftpd日志格式的可读性比xferlog格式好,但是那些用来生成xferlog文件的统计性总结信息的程序并不能处理这种格式。要查看更多信息,请在Internet上搜索"xferlog"。

默认值:NO

Red Hat:YES

xferlog_file

参见xferlog_enable和xferlog_std_format。

默认值:/var/log/vsftpd.log

8. 连接参数

可以让客户端建立被动连接或者主动连接。设置超时时间和最大传输速率可以提高服务器的安全性和性能。本节描述的是类参数:它们控制着客户端能够建立的连接类型、vsftpd在建立连接期间等待的时间以及不同类型用户的连接速度。

被动连接(PASV)

pasv_enable

若设置为NO,则阻止使用PASV连接。

默认值:YES

pasv_promiscuous

若设置为NO,则让PASV进行安全检查,确保数据连接和控制连接来自同一个IP。若设置为YES,则禁止此项检查。出于系统安全考虑,不推荐这样做。

默认值:NO

pasv_max_port

vsftpd分配用于PASV数据连接的最高端口号。在设置防火墙时比较有用。

默认值:0(使用任何端口)

pasv_min_port

vsftpd分配用于PASV数据连接的最低端口号。在设置防火墙时比较有用。

默认值:0(使用任何端口)

pasv_address

使用一个非客户端使用的IP地址来联系服务器。

默认值:无。该地址就是客户端使用的IP地址

主动连接(PORT)

port_enable

若设置为NO,则阻止使用PORT连接。

默认值:YES

port_promiscuous

若设置为NO,则让PORT执行安全检查,以确保出站数据连接只连接到客户端。若设置为YES,则禁用该项检查。出于系统安全考虑,不推荐这项操作。

默认值:NO

connect_from_port_20

若设置为YES,则指定服务器上的端口20(ftp-data,这是一个特权端口)用于PORT连接,正如有些客户端所要求的那样。若设置为NO,则允许vsftpd以较少的特权运行(在某个非特权端口上运行)。

默认值:NO

Red Hat:YES

ftp_data_port

若connect_from_port_20设置为NO,则它指定vsftpd用于PORT连接的端口。

默认值:20

超时时间

accept_timeout

服务器等待客户端建立PASV数据连接的时间,单位为秒。

默认值:60

connect_timeout

服务器等待客户端响应PORT数据连接的时间,单位为秒。

默认值:60

data_connection_timeout

服务器在断开连接之前等待被中断的数据连接恢复的时间,单位为秒。

默认值:300

idle_session_timeout

会话超时时间,单位为秒。在一条FTP命令之后,如果没有输入另一条FTP命令,那么服务器在等待这段时间之后,就将连接断开。

默认值:300

local_max_rate

本地用户的最大数据传输速率,单位为字节每秒。零(0)表示没有限制。

默认值:0

anon_max_rate

匿名用户的最大数据传输速率,单位为字节每秒。零(0)表示没有限制。

默认值:0

one_process_model

若设置为YES,则为每个连接建立一个进程,这样会提高性能,但是也会降低安全性。若设置为NO,则每个连接可以有多个进程。对于安全性要求较高的系统,推荐将其设置为NO。

默认值:NO


182

主题

237

帖子

2743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2743
 楼主| 发表于 2016-4-21 11:59:16 | 显示全部楼层

vsftpd.conf:vsftpd配置文件(6)

9. 其他

本节将描述在别处尚未讨论的参数。

pam_service_name

vsftpd使用的PAM服务的名称。

默认值:ftp

Red Hat:vsftpd

tcp_wrappers

若设置为YES,则会让入站连接使用tcp_wrappers(如果vsftpd编译时带有tcp_wrappers支持的话)。如果tcp_wrappers设置了环境变量VSFTPD_LOAD_CONF,那么vsftpd会加载由这个变量所指定的配置文件,从而允许为每个IP地址加载不同的配置。

默认值:NO

Red Hat:YES

user_config_dir

指定一个目录,该目录包含一些以本地用户的用户名来命名的文件。每一个这样的文件(模仿vsftpd.conf)都包含着一些参数,这些参数覆盖(根据每个用户)默认参数以及在vsftpd.conf中指定的参数。举例来说,假设user_config_dir设置为/etc/vsftpd/user_conf。如果默认的配置文件(/etc/vsftpd/vsftpd.conf)设置了idlesession_timeout=300,而Sam的个人配置文件(/etc/vsftpd/user_conf/sam)设置了idlesession_timeout=1200,那么除了Sam之外,所有用户的会话无活动超时时间都为300秒,而Sam的会话超时时间为1 200秒。

默认值:无

10. 文件

除了/etc/vsftpd/vsftpd.conf之外,下面的这些文件也控制着vsftpd的功能。user_config_dir所指向的目录层次并没包含在这个列表中,该目录层次没有默认的名称。

/etc/vsftpd/ftpusers

列出用户,每行一个用户,不管userlist_enable如何设置,也不管user_list文件所列出的用户是谁,这些用户都不允许登录到FTP服务器。默认文件列出了root、bin、daemon和其他用户。

/etc/vsftpd/user_list

要么只列出能够登录到服务器的用户,要么只列出不能登录到服务器的用户。要想让vsftpd检查这个文件中的用户列表,必须将userlist_enable选项设置为YES。将userlist_enable设置为YES,同时将userlist_deny设置为YES(或者不设置),会阻止所列用户登录到服务器。将userlist_enable设置为YES,同时将userlist_deny设置为NO,这会只允许所列用户登录到服务器。

/etc/vsftpd/chroot_list

根据chroot_list_enable和chroot_local_user的设置,这个文件列出的用户要么是强制置入chroot监牢(各自的主目录),要么是不被放入到chroot监牢的用户。

/var/log/vsftpd.log


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|企尚网络论坛 ( 陕ICP备15000158号-1

GMT+8, 2019-11-13 17:43 , Processed in 0.099061 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表