LinuxFTP配置详解.ppt
VSFTP,FTP协议,FTP概述FTP就是File Transport Protocol文件传输协议的缩写,FTP服务器能够在网络上提供文件传输服务。FTP最初与WWW服务和邮件服务一起被列为因特网的三大应用,可见其在网络应用中的地位举足轻重。FTP服务器根据服务对象的不同可分为匿名服务器(Anonymous Ftp Server)和系统FTP服务器。前者是可以让任何人登录上去获取文件的FTP服务器,后者就只能是在FTP服务器上有合法账号的人才能使用。,FTP协议,控制连接:主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应(服务器监听21号端口)数据连接:用来传输用户的数据。,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服务器的设置,但是,Wu-FTP最致命的弱点是安全性比较差。由于推出的时间比较早,所以在功能上和安全性上,都不能满足现在的需求。所以,在Red Hat Linux 8.0中,默认的FTP服务器已经改成了vs-ftpd这个软件 这些功能都适于吞吐量较大的FTP服务器的管理要求。,vsftpd 简介,vsftpd 是一个基于GPL 发布的类UNIX 系统上使用的FTP 服务器软件。其中的vs 是“Very Secure”的缩写,从此名称缩写可以看出,编制者的初衷就是代码的安全性。,Vsftpd 的特性,安全性是编写vsftpd 代码的初衷,除了与生俱来的安全性能之外,高速、稳定的性能是vsftpd 的两个特性。在速度方面:使用ASCII 模式下载数据时,vsftpd 的速度是WU-FTPd 的两倍;如果Linux的主机使用2.4.X 版本的内核,在千兆以太网上的下载速度可达86Mbytes/sec。在稳定性方面:vsftpd 可以在单机(非集群)上支持4000 个以上的并发用户同时连接。据 的数据,vsftpd 可以支持15000 个并发用户。除了安全、高速、稳定之外,vsftpd 还具有如下的特性:支持基于IP 的虚拟FTP 服务器支持虚拟用户支持PAM 或xinetd/tcp_wrappers 的认证方式支持两种运行方式:独立和Xinetd支持每个虚拟用户具有独立的配置支持带宽限制等,谁在使用vsftpd,由于vsftpd 具有上述的特性,现在越来越多的FTP 服务器使用vsftpd。例如:,配置vsftpd,Redhat 8.0自带了vsftpd,在安装时如果选择了FTP服务的话,已经安装好了如下的部分软件:,。其中:vsftpd包用于创建一个安全的FTP服务器。anonftp 包用于创建匿名FTP服务器目录。若要架设匿名FTP服务器就应该安装此包。anonftp 包安装的匿名FTP服务器目录是/var/ftp,匿名下载目录为/var/ftp/pub。,vsftpd的配置文件,在RedHat9.0中vsftpd的默认配置文件有三个,分别是:/etc/vsftpd/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_bannerbanner_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=60connect_timeout=60将使客户端空闲1 分钟后自动中断连接,并在中断1 分钟后自动激活连接。,进一步配置vsftpd,设置最大传输速率限制例如下面的配置:local_max_rate=50000anon_max_rate=30000将使本地用户的最大传输速率为50kbytes/sec,匿名用户的传输速率为30kbytes/sec。5.设置客户端连接时的端口范围例如下面的配置:pasv_min_port=50000pasv_max_port=60000将使客户端连接时的端口范围在50000 和60000 之间。这提高了系统的安全性。,进一步配置vsftpd,6.设置chroot在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP 服务器来说是不安全的。如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot 选项,涉及如:chroot_local_userchroot_list_enablechroot_list_file有两种设置chroot 的方法:(1)设置所有的本地用户执行chroot只要将chroot_local_user 的值设为YES 即可,即:chroot_local_user=YES(2)设置指定的用户执行chroot需要如下的设置:chroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list这样,只有/etc/vsftpd.chroot_list 文件中指定的用户才执行chroot。,进一步配置vsftpd,配置基于本地用户的访问控制要配置基于本地用户的访问控制,可以通过修改vsftpd 的主配置文件/etc/vsftpd.conf 来进行,有如下两种限制方法:1.限制指定的本地用户不能访问,而其他本地用户可访问例如下面的设置:userlist_enable=YESuserlist_deny=YESuserlist_file=/etc/vsftpd.user_list使文件/etc/vsftpd.user_list 中指定的本地用户不能访问FTP 服务器,而其他本地用户可访问FTP服务器。,进一步配置vsftpd,2.限制指定的本地用户可以访问,而其他本地用户不可访问例如下面的设置:userlist_enable=YESuserlist_deny=NOuserlist_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表示只允许网段内的主机访问。,进一步配置vsftpd,2.指定不能访问的主机在配置文件/etc/xinetd.d/vsftpd 的中添加如下的配置语句:no_access 例如:no_access表示网段内的主机不能访问。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的一些启动参数。rootlinux8/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上而不用担心其安全性与稳定性。,FTP协议,ftp的典型消息在用于ftp客户程序与ftp服务器进行通信时,经常会看到一些由ftp服务器发送消息,这些消息是ftp协议所定义的。下面列出典型的ftp消息:消息号125:数据连接打开,传输开始200:命令OK226:数据传输完毕331:用户名OK425:不能打开数据连接426:数据连接被关闭,传输被中断452:错误写文件500:语法错误,不可识别的命令,操作流程:安装vsftpd组件启动vsftpd系统服务:chkconfig vsftpd on编辑vsftpd.conf文件:vi/etc/vsftpd/vsftpd.conf启动vsftpd服务器:service vsftpd start 检查vsftpd进程:ps ef|grep vsftpd匿名用户访问所在:/var/ftp/pub文件夹中本地用户登录访问所在:/home/你创建的账户/如果文件或者程序无法下载:改变文件的权限:chmod go+wr 文件名,