270 likes | 444 Views
FTP 服务器的设置. FTP 协议. FTP 概述 FTP 就是 File Transport Protocol 文件传输协议的缩写, FTP 服务器能够在网络上提供文件传输服务。 FTP 最初与 WWW 服务和邮件服务 一起被列为因特网的三大应用,可见其在网络应用中的地位举足轻重。 FTP 服务器根据服务对象的不同可分为 匿名服务器 ( Anonymous Ftp Server )和 系统 FTP 服务器 。前者是可以让任何人登录上去获取文件的 FTP 服务器,后者就只能是在 FTP 服务器上有合法账号的人才能使用。. FTP 协议. FTP 工作原理:
E N D
FTP协议 • FTP概述FTP就是File Transport Protocol文件传输协议的缩写,FTP服务器能够在网络上提供文件传输服务。FTP最初与WWW服务和邮件服务一起被列为因特网的三大应用,可见其在网络应用中的地位举足轻重。 • FTP服务器根据服务对象的不同可分为匿名服务器(Anonymous Ftp Server)和系统FTP服务器。前者是可以让任何人登录上去获取文件的FTP服务器,后者就只能是在FTP服务器上有合法账号的人才能使用。
FTP协议 FTP工作原理: 建立一个ftp会话包括五个软件元素的交互: 用户接口(UI):提供了一个用户接口并使用客户端协议解释器的服务 客户端协议解释器(CPI):向远程服务器协议机发送命令并且驱动客户 数据传输过程 服务端协议解释器(SPI):响应客户协议机发出的命令并且驱动服务器端数据 传输过程 客户端数据传输协议(CDTP):负责完成和服务器数据传输过程及客 户端本地文件系统的通信 服务端数据传输协议(SDTP):负责完成和客户数据传输过程及服务器端文件 系统的通信
FTP协议 • 控制连接:主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应(服务器监听21号端口) • 数据连接:用来传输用户的数据。
FTP协议 • FTP的数据传输模式: 主动传输模式:ftp服务器使用一个标准的端口(20)作为服务器端的数据连接端口与客户建立数据连接。 被动传输模式:ftp服务器在非20端口的其他数据传输端口上监听客户的请求。 单端口传输模式:ftp服务器就会使用ftp协议的数据传输端口(20)和客户端的控制连接源端口建立一个数据传输连接。
FTP协议 • ftp的典型消息 • 在用于ftp客户程序与ftp服务器进行通信时,经常会看到一些由ftp服务器发送消息,这些消息是ftp协议所定义的。下面列出典型的ftp消息: • 消息号 • 125:数据连接打开,传输开始 • 200:命令OK • 226:数据传输完毕 • 331:用户名OK • 425:不能打开数据连接 • 426:数据连接被关闭,传输被中断 • 452:错误写文件 • 500:语法错误,不可识别的命令
FTP服务器的设置 • 目前在UNIX和LINUX下常用的免费FTP服务器软件主要是Wu-FTP和ProFTP这两种。Wu-FTP广泛应用在众多的Unix和Linux系统中,曾经是RedHat Linux默认的FTP服务器软件,其全称是Washington University FTP。 • Wu-FTP软件的特性: • 1、让用户在下载文件的同时可以对文件做自动的压缩或解压缩操作; • 2、可以对不同网络的机器做不同的存取限制和存取时间; • 3、可以记录文件上传和下载的时间; • 4、可以显示传输时的相关信息,以便让用户知道目前的传输状态; • 5、可以设定连接的数量限制,以提高工作效率。
FTP服务器的设置 • 这些功能都适于吞吐量较大的FTP服务器的管理要求。 • 但是,Wu-FTP最致命的弱点是安全性比较差。由于推出的时间比较早,所以在功能上和安全性上,都不能满足现在的需求。所以,在Red Hat Linux 8.0中,默认的FTP服务器已经改成了vs-ftpd这个软件
vsftpd 简介 • vsftpd 是一个基于GPL 发布的类UNIX 系统上使用的FTP 服务器软件。其中的vs 是“Very Secure”的缩写,从此名称缩写可以看出,编制者的初衷就是代码的安全性。
Vsftpd 的特性 • 安全性是编写vsftpd 代码的初衷,除了与生俱来的安全性能之外,高速、稳定的性能是vsftpd 的两个特性。 • 在速度方面:使用ASCII 模式下载数据时,vsftpd 的速度是WU-FTPd 的两倍;如果Linux的主机使用2.4.X 版本的内核,在千兆以太网上的下载速度可达86Mbytes/sec。 • 在稳定性方面:vsftpd 可以在单机(非集群)上支持4000 个以上的并发用户同时连接。据ftp.redhat.com 的数据,vsftpd 可以支持15000 个并发用户。 • 除了安全、高速、稳定之外,vsftpd 还具有如下的特性: • 支持基于IP 的虚拟FTP 服务器 • 支持虚拟用户 • 支持PAM 或xinetd/tcp_wrappers 的认证方式 • 支持两种运行方式:独立和Xinetd • 支持每个虚拟用户具有独立的配置 • 支持带宽限制等
谁在使用vsftpd • 由于vsftpd 具有上述的特性,现在越来越多的FTP 服务器使用vsftpd。例如: • ftp.redhat.com • ftp.suse.com • ftp.debian.org • ftp.gnu.org • ftp.gnome.org • ftp.openbsd.org • rpmfind.net
配置vsftpd • Redhat 8.0自带了vsftpd,在安装时如果选择了FTP服务的话,已经安装好了如下的部分软件:vsftpd-1.1.0-1.i386.rpm,anonftp-4.0-12.i386.rpm。 • 其中: • vsftpd包用于创建一个安全的FTP服务器。 • anonftp 包用于创建匿名FTP服务器目录。若要架设匿名FTP服务器就应该安装此包。anonftp 包安装的匿名FTP服务器目录是/var/ftp,匿名下载目录为/var/ftp/pub。
vsftpd的配置文件 • 在RedHat9.0中vsftpd的默认配置文件有三个,分别是: • /etc/vsftpd.conf • /etc/vsftpd.ftpusers • /etc/vsftpd.user_list • 其中,/etc/vsftpd.conf 是主配置文件。/etc/vsftpd.ftpusers 中指定了哪些用户不能访问FTP服务器。/etc/vsftpd.user_list 中指定的用户默认情况( 即在/etc/vsftpd.conf 中设置了userlist_deny=YES)下也不能访问FTP 服务器,当在/etc/vsftpd.conf 中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list 中指定的用户访问FTP 服务器。
默认配置文件 • 默认的配置文件如下:
默认配置文件 • 这个默认的配置文件达到的效果是: • (1)允许匿名用户和本地用户登录; • (2)匿名用户的登录名为ftp 或anonymous,口令为一个Email地址; • (3)匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传; • (4)本地用户的登录名为本地用户名,口令为此本地用户的口令; • (5)本地用户可以离开自家目录切换至有权访问的其他目录,并在权限允许的情况下进行上传/下载; • (6)写在文件/etc/vsftpd.ftpusers 中的本地用户禁止登录。
进一步配置vsftpd • 启用ASCII 传输方式 • 默认情况下,vsftpd 为了提高传输效率,禁止了ASCII 传输方式。虽然在ftp 客户软件中可以使用asc命令,但是传输文件时仍然使用二进制传输方式。 • 可以分别启用上传和下载的ASCII 传输方式,方法是编辑/etc/vsftpd 配置文件,将如下两行前的#去掉即可启用。 • #ascii_upload_enable=YES • #ascii_download_enable=YES
进一步配置vsftpd • 设置连接服务器后的欢迎信息 • 为了使用户连接服务器后显示信息,vsftpd 提供了两个选项,分别是: • ftpd_banner • banner_file • 例如:可以设置如下的ftpd_banner 选项的值: • ftpd_banner=Welcome to wnt FTP service. • 即:用户连接服务器后显示信息“Welcome to wnt FTP service.”。 • 也可以设置如下的banner_file 选项的值: • banner_file=/var/vsftpd_banner_file • 即:用户连接服务器后显示文件/var/vsftpd_banner_file 中的信息。
进一步配置vsftpd • 配置基本的性能和安全选项 • 1. 设置空闲的用户会话的中断时间 • 例如下面的配置: • idle_session_timeout=600 • 将在用户会话空闲10 分钟后被中断。 • 2. 设置空闲的数据连接的的中断时间 • 例如下面的配置: • data_connection_timeout=120 • 将在数据连接空闲2 分钟后被中断。 • 3. 设置客户端空闲时的自动中断和激活连接的时间 • 例如下面的配置: • accept_timeout=60 • connect_timeout=60 • 将使客户端空闲1 分钟后自动中断连接,并在中断1 分钟后自动激活连接。
进一步配置vsftpd • 设置最大传输速率限制 • 例如下面的配置: • local_max_rate=50000 • anon_max_rate=30000 • 将使本地用户的最大传输速率为50kbytes/sec,匿名用户的传输速率为30kbytes/sec。 • 5. 设置客户端连接时的端口范围 • 例如下面的配置: • pasv_min_port=50000 • pasv_max_port=60000 • 将使客户端连接时的端口范围在50000 和60000 之间。这提高了系统的安全性。
进一步配置vsftpd • 6. 设置chroot • 在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP 服务器来说是不安全的。 • 如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot 选项,涉及如: • chroot_local_user • chroot_list_enable • chroot_list_file • 有两种设置chroot 的方法: • (1)设置所有的本地用户执行chroot • 只要将chroot_local_user 的值设为YES 即可,即: • chroot_local_user=YES • (2)设置指定的用户执行chroot • 需要如下的设置: • chroot_local_user=NO • chroot_list_enable=YES • chroot_list_file= /etc/vsftpd.chroot_list • 这样,只有/etc/vsftpd.chroot_list 文件中指定的用户才执行chroot。
进一步配置vsftpd • 配置基于本地用户的访问控制 • 要配置基于本地用户的访问控制,可以通过修改vsftpd 的主配置文件/etc/vsftpd.conf 来进行,有如下两种限制方法: • 1. 限制指定的本地用户不能访问,而其他本地用户可访问 • 例如下面的设置: • userlist_enable=NO • userlist_deny=YES • userlist_file= /etc/vsftpd.user_list • 使文件/etc/vsftpd.user_list 中指定的本地用户不能访问FTP 服务器,而其他本地用户可访问FTP服务器。
进一步配置vsftpd • 2. 限制指定的本地用户可以访问,而其他本地用户不可访问 • 例如下面的设置: • userlist_enable= YES • userlist_deny=NO • userlist_file= /etc/vsftpd.user_list • 使文件/etc/vsftpd.user_list 中指定的本地用户可以访问FTP 服务器,而其他本地用户不可以访问FTP服务器。
进一步配置vsftpd • 配置基于主机的访问控制 • 由于vsftpd 有两种运行方式,即:由xinetd 启动和独立启动。这两种运行方式的主机访问控制配置是不同的,下面介绍的是由xinetd 启动的vsftpd 的主机访问控制的配置。显然,要配置这种主机访问控制,需要修改配置文件/etc/xinetd.d/vsftpd。 • 1. 只允许指定的主机访问 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • only_from <主机表> • 例如:only_from 166.111.219.0 • 表示只允许166.111.219.0网段内的主机访问。
进一步配置vsftpd • 2. 指定不能访问的主机 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • no_access <主机表> • 例如:no_access 202.106.138.0 • 表示202.106.138.0网段内的主机不能访问。 • 3. 配置每个客户机的最大连接数 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • per_source = 数值 • 例如:per_source = 5 • 表示每个客户机的最大连接数为5。
进一步配置vsftpd • 4. 配置服务器总的并发连接数 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • instances = 数值 • 例如:instances = 200 • 表示FTP 服务器总共支持的最高连接数为200。 • 5. 配置访问时间限制 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • access_time = hour:min-hour:min • 例如:access_time = 18:00-23:59 • 表示只有在下午6 点到午夜0 点之前才能访问此FTP 服务器; • 又如:access_time = 8:30-11:30 13:00-18:00 • 表示只有在上午8 点半到11 点半和下午1 点到下午6 点才能访问此FTP 服务器。
进一步配置vsftpd • 6. 指定连接失败时显示的信息 • 在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句: • banner_fail = 文件名 • 例如:banner_fail = /etc/vsftpd.busy_banner • 表示当连接失败时显示文件/etc/vsftpd.busy_banner 中的内容。
仅仅更改vsftpd.conf这个主配置文件是不够的,还要更改/etc/xinetd.d/vsftpd这个文件,来控制vsftpd的一些启动参数。仅仅更改vsftpd.conf这个主配置文件是不够的,还要更改/etc/xinetd.d/vsftpd这个文件,来控制vsftpd的一些启动参数。 • [root@linux8 /etc]# cat /etc/xinetd.d/vsftpd • service ftp • { • disable = no • socket_type = stream • wait = no • user = root • server = /usr/sbin/vsftpd • nice = 10 • per_source = 5 • instances = 200 • banner_fail = /etc/vsftpd.busy_banner • log_on_success += PID HOST DURATION • log_on_failure += HOST • } • 这种近乎偏执的配置会大大增加FTP服务器的安全性,使得vsftpd可以应用在Internet上而不用担心其安全性与稳定性。