LOGOftp服务器本章目标理解FTP的相关概念1.掌握vsftpd服务器的配置方法2.FTP服务FTP服务:跨平台传送文件的一种方式,可实现将web站点所需的文件上传到远程得web服务器,或者从服务器下载到本地。支持断点续传功能两种连接方式:控制连接•控制连接主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。数据连接•数据连接是等到传输文件时才临时建立的,FTP的数据传输模式主动传输模式(ActiveFTP)FTP的数据连接和控制连接的方向是相反的。也就是说,当客户机发出请求之后,是服务器向客户端发起一个用于数据传输的连接。被动传输模式(PassiveFTP)FTP的数据连接和控制连接的方向是一致的。也就是说,当客户机发出请求之后,是客户端向服务器发起一个用于数据传输的连接。被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。FTP服务的使用者本地用户(real用户)本地用户既可以登录Shell,又可以FTP登录。本地用户可以通过输入自己的账号和口令来进行授权登录。当授权访问的本地用户登录系统后,其登录目录为用户自己的家目录($HOME)。虚拟用户(guest用户)如果用户在远程FTP服务器上拥有账号,且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。虚拟用户可以通过输入自己的账号和口令来进行授权登录。当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录。eg:adduser-s/sbin/nologin-gftpusername匿名用户(anonymous用户)如果用户在远程FTP服务器上没有账号,则称此用户为匿名用户。若FTP服务器提供匿名访问功能,则匿名用户可以通过输入账号(anonmous或ftp)和口令(用户自己的E-Mail地址)来进行登录。当匿名用户登录系统后,其登录目录为匿名FTP服务器的根目录(/var/ftp)。RedHat9的FTP服务器vsftpdRedHat9自带了一个高安全性的FTP服务器vsftpd。vsftpd的特点是一个安全、高速、稳定的FTP服务器。匿名FTP服务更是十分容易。匿名ftp的根目录不需要任何特殊的目录结构,或系统程序或其他系统文件。不执行任何外部程序,从而减少了安全隐患。支持虚拟用户,且支持每个虚拟用户具有独立的配置。可以设置为从inetd启动,或者是独立ftp服务器两种运行方式。支持PAM或xinetd/tcp_wrappers的认证方式。支持带宽限制等。vsftpd的安装和启动vsftpd的安装(第三张安装盘中)#rpm–ivhvsftpd-1.1.3-8.i386.rpmvsftpd的启动和停止#servicevsftpdstart#servicevsftpdstop#servicevsftpdrestartvsftpd的配置文件vsftpd的主配置文件/etc/vsftpd/vsftpd.confvsftpd的PAM配置文件/etc/pam.d/vsftpdvsftpd的用户访问控制配置文件/etc/vsftpd.ftpusers/etc/vsftpd.user_listRedHat9中vsftpd默认的主配置文件允许匿名用户和本地用户登录。匿名用户的登录名为ftp或anonymous,口令为一个Email地址。匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传。本地用户的登录名为本地用户名,口令为此本地用户的口令。本地用户可以离开自家目录切换至有权访问的其他目录,并在权限允许的情况下进行上传/下载。写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。要使用户在下载文件时能够续传文件,必须保证文件对其他用户有读的权限。否则,当续传时不能读取已传的服务器上的文件。vsftpd的性能和安全选项关于被动模式的数据连接pasv_enable=Yes/NO(默认值为yes,处于被动模式下)设置用户类型的访问local_enable=YES/NOguest_enable=YES/NOanonymous_enable=YES/NO设置PAM模块的名称pam_service_name=vsftpd运行方式listen=yes(采用独立运行方式)设置欢迎信息dirmessage_enable=YES设置是否显示目录消息,若为yes,当用户登陆时,则显示文件.message中的内容。设置用户登陆后所在目录local_root=/var/ftp(设置本地用户登陆所在目录,默认为该用户的用户主目录)anon_root=/var/ftp(匿名用户登陆所在目录)配置vsftpd匿名用户上传配置指令write_enable=yes(是否对登陆用户开启写权限,全局设置)anon_upload_enable=Yesanon_world_readable_only=yes(是否允许匿名用户下载)anon_mkdir_write_enable=Yesanon_other_write_enable=no注意事项用户对上传目录必须具有写权限。anon_upload_enable=YES仅能上传。anon_mkdir_write_enable=YES仅能创建目录。anon_other_write_enable=YES同时开放文件更名、删除文件等权限。配置最大传输速率限制和每客户的连接数限制设置访问速度local_max_rate(单位B/s,默认值为0,即不受限制)anon_max_ratemax_per_ip(限制每个客户机的连接数)max_clients(限制服务器的连接数)设置访问控制对不同的本地用户实施不同的配置•user_config_dir=/etc/vsftpd/userconf(其中userconf为自建目录)•将不同用户实施不同配置的文件保存在制定目录下,并且以用户名命名练习:本地用户user1最大传输率为250kb/s,最大连接数为5本地用户user2最大传输率为500kb/s,最大连接数为20其他本地用户最大传输率为50kb/s,匿名用户为30kb/s,每个客户机最大连接数为5设置访问控制设置允许和不允许访问的用户•用户访问列表主要由/etc下得vsftpd.user_list和vsftpd.ftpusers(否定列表)文件来控制•userlist_enable=yes(决定vsftpd.user_list文件是否有效)•userlist_deny=yes(决定vsftpd.user_list文件中的用户被允许访问还是不允许访问,默认为yes,即文件中的用户不允许访问ftp服务器)配置基于本地用户的访问控制限制/etc/vsftpd.user_list中的本地用户不能访问,而其他本地用户可访问userlist_enable=YESuserlist_deny=YES限制/etc/vsftpd.user_list中的本地用户可以访问,而其他本地用户不可访问userlist_enable=YESuserlist_deny=NO练习不允许user1用户访问设置允许和不允许访问的主机tcp_wrappers=YES(允许设置按主机访问)由文件/etc/hosts.allow和/etc/hosts.deny实现访问控制•/etc/hosts.allow是一个许可表•/etc/hosts.deny是一个拒绝表•由于在/etc/hosts.allow中也可以使用DENY,所以通常可以只使用/etc/hosts.allow来实现访问控制配置基于主机的访问控制Vsftpd从版本1.1.3以后内置了对TCP_wrappers的支持,为独立启动的vsftpd提供基于主机的访问控制的配置。TCP_wrappers使用两个配置文件实现访问控制。/etc/hosts.allow是一个许可表/etc/hosts.deny是一个拒绝表由于在/etc/hosts.allow中也可以使用DENY,所以通常可以只使用/etc/hosts.allow来实现访问控制。/etc/hosts.allow的配置语法vsftpd:主机表vsftpd:主机表:DENYvsftpd:主机表:setenvVSFTPD_LOAD_CONF配置文件名/etc/hosts.allow文件中的三种语法形式:vsftpd:主机表vsftpd:192.168.2.56vsftpd:主机表:DENYvsftpd:192.168.2.0/24:DENYveftpd:主机表:setenvVSFTPD_LOAD_CONF配置文件名veftpd:192.168.1.0/24:setenvVSFTPD_LOAD_CONF/etc/vsftpd/filename练习拒绝192.168.2.0/24访问对192.168.1.0/24内的所有主机不做连接限制和最大传输率限制登陆和访问ftp服务器Linux的文本模式和windows平台的ms-dos方式下使用ftp命令连接:•$ftpftp服务器ip地址浏览器中的访问格式:•ftp://用户名@网站地址试验配置ftp服务器,要求:两人一组配置服务器地址为192.168.n+1.254,客户机地址192.168.n+1.2和192.168.n+1.3(注意:客户机为两台windows主机)允许匿名登陆、虚拟用户和本地用户登陆,开放匿名用户对指定目录(/var/ftp/incoming)的写权限,即允许匿名用户向服务器新建及上传文件设置本地用户tom的最大传输率为50KB/s,最大连接数为5,其他用户不设限制限制ip为192.168.n+1.2的主机访问ftp服务器新建虚拟用户user1和user2,设置允许user1登陆服务器,user2不允许登陆服务器